一、约束类型
- 非空约束(not null):该列不允许包含空值。
- 主键约束(primary key):唯一性,非空性。
- 唯一约束(unique):唯一性,可以空,但只能一个。
- 外键约束(foreign key() references table2()):需要建立两表间的关系并引用主表的列。
- show keys from emp;查询约束名。
二、创建表时定义约束
create table table_name(id int primary key auto_increment,name varchar(12) not null,salary float(8,2) unique); 在类型后面添加
create table table_name(id int primary key auto_increment);创建主键并且自动增长
create table table_name(id int,name varchar(12),salary float(8,2) not null,primary key(id),unique(name)); 在末尾添加(not null不支持)
三、表存在时添加约束
alter table table_name add unique(id);
alter table emp add(primary key(id),unique(name),foreign key(dept_id) references dept(id));
constraint table_pk 自定义约束名,省略则由系统生成
[unique] 唯一性约束
[primary key] 主键约束
[primary key(id,name)] 联合主键
[foreign key(id) references table_name1(id)) 外键约束
四、修改表时添加约束
alter table emp modify id int primary key; 定义单个
constraint table_nn 自定义约束名,省略则由系统生成
[not null] 非空约束
[unique] 唯一性约束
[primary key] 主键约束
五、删除约束
1.删除主键
alter table emp drop primary key;删除主键约束
alter table emp moidfy id int;当存在自动增长时需要去掉自动增长
alter table emp drop primary key;删除主键约束
2.删除非空约束
alter table emp moidfy naem varchar(30);不带not null
3.删除唯一性约束
alter table emp drop key name_uk;
4.删除外键约束
alter table emp drop foreign key depr_id_fk;
alter table emp drop index depr_id_fk;删除外键还需删除索引