MYSQL—— 完整性约束条件中primary key、auto_increment使用总结!

完整性约束条件主要有:primary key(主键), auto_increment(自增长), poreign key(外键), not null(非空), unique key(唯一), default(默认值)

一、primary key:

  设置主键的作用:作为一条数据的唯一标识,像每个人的身份证一样。

  1)一般加在无意义的字段上,如 id

  2)标主键字段的要求:值不重复且值具有唯一性。主键不能为空

  3)可以设置“单字段主键”和“多字段主键(复合主键)”,用多个字段确定唯一性

  4)primary书写时可省略

#设置单字段主键
create TABLE if not EXISTS student(      
id int PRIMARY key,   #设置主键
name varcahr(20)
)engine=innodb charset = utf8;

#设置多字段段主键
create TABLE if not EXISTS timez(
id int auto_increment,
atime year,
card char(18),
primary key(id,card) #将id与card同时设置为主键,设置后的结构图如下所示:
)engine=innodb charset = utf8;

desc timez; #用此3命令查看表结构


       注意点:当设置复合主键时,如设置2个字段为主键,可以允许2个字段中的某一个值可以与其他值重复,但是不可以2个值均重复,插入值进行验证:

insert into timez values("1",'2000','11111111111111111');
insert into timez values("1",'2000','11111111111111112'); #均可添加值成功

 

二、auto_increment:

  1)通过设置主键进行自增长,默认从1开始,每次+1

  2)一个表中只能有1个自增长字段,而且自增长的字段一定配合主键使用,也就是说“被标识为自增长的字段,一定是主键,但是主键不一定是自增长的”自增长只对整数类、整数列有效,对字符串无意义

#新建数据库
 create TABLE if not EXISTS timea(
 id int PRIMARY key auto_increment,  #将id设置为主键,并且为自增长
 atime year
)engine=innodb charset = utf8;

#向数据库插入值,验证auto_increment
insert into timea values(1,'2000'); #向timea表中自己给定自增长列的值为1
insert into timea(atime ) values('2000'); #直接插入atime的值,id自动填充值为2
insert into timea values(null,'2000'); #用null也可以,id自动填充3
insert into timea values(default,'2000');
#用default也可以,id自动填充4


#已创建的表,修改自增长开始的值
alter table timea auto_increment=9; #重新设定了自增长的值,则再次插入数据时,id的值为9,依次插入时+1

#开始创建表时,自定义 自增长开始的值
create TABLE if not EXISTS timea( id int PRIMARY key auto_increment, #将id设置为主键,并且为自增长 atime year )engine=innodb auto_increment=8 charset = utf8; #创建表时手动设定了自增长的值为8,则插入数据时,id的值不从1开始,而是8,依次插入时+1

 

        

 

#向timea表中自己给定自增长列的值为1
posted @ 2017-05-22 16:59  Syw_文  阅读(2361)  评论(0编辑  收藏  举报