约束四类
- 主键约束
- 外键约束
- 非空约束
-
主键约束
非空且唯一
- 一张表只能有一个字段为主键
- 主键是表中的唯一标识 ``` 添加主键约束 create table student( id int primary key, name varchar(10) ); 删除主键,不用指定 alter table student drop primary key;
添加主键 alter table student id primary key
当多对多关系时,可以使用联合主键 primary key(uid,depid)
自动增长一般和主键一起用
create table student( id int primary key auto_increment, name varchar(10) );
insert into student values(null,’hahaha’) 删除自动增长 alter table student modify id int; 添加自动增长 alter table student modify id int auto_increment;
<a name="B9Vu8"></a># 外键约束让表和表产生关系
create table employee( id int primary key, name varchar(10), dep_id int,—外键对应主表的主键 constraint emp_dep_fk foreign key (dep_id) references department(id) ); constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称) 可以简写成 foreign key (外键列名称) references 主表名称(主表列名称)
一般为1对多关系使用外键,下面为1个对应的主表,上面为多个对应的表 create table department()
删除外键 alter table employee drop foreign key emp_dep_fk 添加外键 alter table employee add constraint emp_dep_fk foreign key (dep_id) references department(id)
外键级联
添加级联更新 alter table employee add constraint emp_dep_fk foreign key (dep_id) on update cascade; 添加级联删除 alter table employee add constraint emp_dep_fk foreign key (dep_id) on delete cascade;
<a name="vuGGY"></a># 非空约束
创建时添加 create table student( id int, name varchar(10) not null ); 删除 alter table student modify name varchar(20) 随时添加 alter table student modify name varchar(20) not null;
<a name="XiiaU"></a># 唯一约束
一列只有能唯一值,但是null可以有多个 创建时添加 create table student( id int, name varchar(10) unique ); 添加唯一约束: alter table student modify name varchar(20) unique;
删除唯一约束,下面的不行: alter table student modify name varchar(20); 下面的可以: alter table student drop index name; ```
