约束:约束是添加在列上的,用来约束列的!(主键、外键、非空、唯一、检查)
1.主键约束(primary key)(唯一标识)
非空:当表内设置了主键时,被设置为主键的列不能为空;
唯一:主键不允许出现重复值
指定id列为主键列,即为id列添加主键约束
create table user(
id char(5) primary key,
name varchar(5),
age int,
);
create table user(
id char(5),
name varchar(5),
age int,
primary key(id)
);
修改表时指定主键:alter tble user add primary ker(id);
删除主键:alter table user drop primary key;
2.主键自增长(auto_increment)
主键列的特性:必须唯一、不能为空,所以我们通常会指定主键类为整型,然后设置其自动增长,这样可以保证在插入数据时主键列的唯一和非空特性
修改表时设置主键自增长:alter table user change id id int auto_increment;
修改表时删除主键自增长:alter table user change id id int;
3.外键约束(foreign key)
外键约束:可以为空值(null),但是如果不为空,则这个值一定是在另一张表中(被引用的表)存在的值。
用来维护数据引用的完整性。
在emp表是的deptno列上创建外键,指向dept表的主键:
alter table emp add constraint fk_1 foreign key(deptno) references dept(deptno);
创建t_section表,指定sid为主键列,u_id为相对t_user表的uid列的外键:
create table t_section(
sid int primary key auto_increment,
sname varchar(10),
u_id int,
constraint fk_1 foreign key (u_id) references t_user(uid)
);
修改t_section表,指定u_id为相对t_user表的uid列的外键:
alter table t_section
add constraint fk_1
foreign key(u_id)
references t_user(uid);
修改t_section表,删除u_id的外键约束:
alter talbe t_section
drop foreign key fk_1;
4.非空约束(not null)
如此列定义为非空,则必须有值。
5.唯一约束(unique)
可以为null,如果不为null值,则不能存在重复值。
5,检查约束(MySQL不支持):
规定此列的值必须满足这个条件才能保存。
create table s1(
id int(11) primary key auto_increment,
name varchar(30),
age int(4) check (age>20)
);
网友评论