约束四类

  1. 主键约束
  2. 外键约束
  3. 非空约束
  4. 唯一约束

    主键约束

  5. 非空且唯一

  6. 一张表只能有一个字段为主键
  7. 主键是表中的唯一标识 ``` 添加主键约束 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)

  1. 自动增长一般和主键一起用

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;

  1. <a name="B9Vu8"></a>
  2. # 外键约束
  3. 让表和表产生关系

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)

  1. 外键级联

添加级联更新 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;

  1. <a name="vuGGY"></a>
  2. # 非空约束

创建时添加 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;

  1. <a name="XiiaU"></a>
  2. # 唯一约束

一列只有能唯一值,但是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; ```