2020-08-11

数据定义2 定义表

AUTO_INCREMENT
将字段设置为自增属性可以给记录一个唯一而又容易确定的ID号,该字段可以唯一标识表中的每条记录。在MySQL中,使用关键字AUTO_INCREMENT为列设置自增属性,只有整型列才能设置此属性。AUTO_INCREMENT默认的初始值为1,当往一个定义为AUTO_INCREMENT的列中插入NULL值或数字为0时,该列的值会被设置为value+1(默认为加1递增),其中value是当前表中该列的最大值。每个表只能定义一个AUTO_INCREMENT列,并且必须在该列上定义主键约束(PRIMARY KEY)或候选键约束(UNIQUE)。

mysql> create table tb_student1
    -> (
    ->    studentNo int(10)  not null unique auto_increment,
    ->    studentName VARCHAR(20) not null,
    ->   sex CHAR(2) ,
    ->    birthday DATE ,
    ->    native VARCHAR(20) ,
    ->    nation VARCHAR(10) ,
    ->    classNo CHAR(6)
    ->  ) ENGINE = InnoDB;
Query OK, 0 rows affected (0.06 sec)

上述语句执行成功后,会创建一个名为tb_student1的数据表。当往表中插入记录时,字段studentNo的值会自动增加,初始值为1,每插入一条新记录,该值自动加1。
注意:当一个列被指定为AUTO_INCREMENT后,其值是可以覆盖的,即可以简单地在数据插入语句(INSERT语句)中为该列指定一个值,只要该值是唯一的(至今尚未使用过),那么这个值将被用来替代系统自动生成的值,并且后续的增量将基于该手工插入的值。

DEFAULT
默认值是指在向数据表中插入数据时,如果没有明确给出某个字段所对应的值,则DBMS此时允许为此字段指定一个值。例如,如果汉族同学比较多,那么在学生表tb_student中可将字段“民族”设置默认值“汉”。当插入一条新的记录时,如没有给这个字段赋值,那么系统会自动给该字段赋值为“汉”。
在MySQL中,默认值使用DEFAULT关键字来指定。在下表的定义中,若要给字段“民族(nation)”定义默认值“汉”,则对应的SQL语句如下:

mysql> create table tb_student2
    -> (
    -> studentNo int(10)  not null unique,
    -> studentName VARCHAR(20) not null,
    -> sex CHAR(2) ,
    -> birthday DATE ,
    -> native VARCHAR(20) ,
    -> nation VARCHAR(10) DEFAULT '汉',
    -> classNo CHAR(6)
    -> ) ENGINE = InnoDB;
Query OK, 0 rows affected (0.09 sec)

上述语句执行成功后,表tb_student2上的nation字段则拥有了一个默认值“汉”。新插入的记录如果没有指定学生的民族,则该列的值将默认为"汉"族。
需要注意的是,如果没有为字段指定默认值,MySQL会自动地为其分配一个,即如果字段可以取NULL值,则默认值就是NULL,而如果字段被声明NOT NULL,那么默认值就取决于字段的类型:
·对于没有声明AUTO_INCREMENT属性的数值类型,默认值是0;对于一个AUTO_INCREMENT列,默认值是在顺序中的下一个值。
·对于除TIMESTAMP以外的日期和时间类型,默认值是该类型适当的“零"值;对于表中第一个TIMESTAMP列,默认值是当前的日期和时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值