mysql_建表

本文详细介绍SQL中创建表的技巧,包括字段设置多个默认值、联合唯一索引、复合主键、DELETE与TRUNCATE的区别,以及如何设置步长等。此外,还探讨了外键的多种关系类型,如多对一、多对多和一对一。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

建表

某字段多个默认值

  创建表时,对多选多的字段设置两个以上的默认值时,两个默认值之间用逗号','隔开,不能加空格。

create table student2(
    id int not null,
    name varchar(50) not null,
    age int(3) unsigned not null default 8,
    sex enum('male', 'female') default 'male',
    fav set('smoke', 'drink', 'tangtou') default 'drink,tangtou'
);

  当添加空格时就会报错,报错信息如下:

ERROR 1067 (42000): Invalid default value for 'fav'

第一个字段不能使用in

  在创建表的过程中,第一个字段(也就是原来的id字段,这里说in是因为手滑打错了)不能够使用in,否则会报错.

create table department0(
    in int,
    name char(10),
    unique(id),
    unique(name)
);

报错信息如下:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'in int,
name char(10),
unique(id),
unique(name)
)' at line 2

 联合唯一索引

  创建表时,设置联合唯一,意思就是表中的一条记录不能完全相同,其中的一个数据单元可以相同,但是被用来创建联合唯一索引的那几个字段的数据单元组合记录不能相同。

 复合主键

  复合主键,将其中的两列组合作为主键,组成复合主键的两个单元的组合完全相同时,报错。

delete from

  使用delete from 表名; 删除一个表时,删除的只是表中的数据,表的结构依然存在;当再次往表中添加数据时,这条数据的ID会接着删除之前的最后一条数据的ID往后增加。并且delete是逐条的删除记录,删除速度较慢。

truncate

  使用truncate 表名;  删除表时,同样也删除表中的数据,但是与delete不同的是,truncate删除过的表再次插入数据时,记录的ID会从1开始增加,truncate删除表是一下子清空表中的数据,删除速度快,删除数据时使用truncate比较多。

 步长

  show variables like 'auto_inc%';  查看可用的开头可自增步长;

  % 为通配符。

+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| auto_increment_increment | 1     |  # 步长
| auto_increment_offset    | 1     |  # 开头
+--------------------------+-------+

  设置步长,只在本次会话中有效,退出链接后失效。

 set session auto_increment_increment=5; 

  设置步长,全局有效。

set global auto_increment_increment=5;

  设置起始偏移量,全局有效。

set global auto_increment_offset=3;
  如果auto_increment_offset的值大于auto_increment_increment的值,则auto_increment_offset的值会被忽略。

外键
  外键的变种-三种关系
  多对一/一对多  需要建立两张表
    foreign key 一般建立在多条记录的一侧.
  多对多  需要建立三张表
    多对多建立的第三张表的主键为另外两张表的联合. 
  一对一  需要建立两张表
  
  

转载于:https://www.cnblogs.com/ZN-225/p/9678801.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值