当前位置: DB社区 > 02-mysql > 阅读正文

SQL 建表约束

2021.9.9.   410 次   1279字

建表约束,可以更好的保证数据的正确性,有效性,完整性。

基本建表约束有如下6种类型

主键、唯一、外键、非空、默认、自增

查看表结构语句查看表的约束:

desc 表名;

查看表的创建语句

show create table 表名;
1.主键约束(自带有自增约束 和 非空约束 ,可使用联合主键,任一条件非空)

创建表时,加入约束

  • primary key //在列字段追加添加
  • primary key(id) //单独做一列填写
  • primary key(id1,id2,…) //联合主键

若使用了联合主键:由多个id组成,组成唯一即可,任一不为空

追加主键约束:(假设列名为 id)

alter table 表名 add primary key(id);

删除主键约束:

alter table 表名 drop primary key;

修改表增加主键:

alter table 表名 modify id int primary key;
2.唯一约束
  • unique//列名后追加
  • unique(id)//在新一列填写
  • unique(id1,id2);//联合唯一约束

增加唯一约束

(简单的写法,unique(id) ,会自动把第一个属性作为键名)

alter table 表名 add unique key 键名(属性列表);

删除唯一约束:

(联合唯一约束,使用简单写法会取其中一个名称作为 key 的名字作为键名)

alter table 表名 drop index 键名;

修改增加唯一约束:

alter table 表名 modify 列名 数据类型 unique;
3.外键约束
  • foreign key(本表列) references 外表(列); //建表时增加(新一列)

在建表后增加 ( constraint 外键名称 可省略,会自动分配键名)

alter table 表名 add constraint 外键名称 foreign key (属性列表) references 外表(属性列表);

删除外键约束

alter table 表名 drop foreign key 外键名称;

注意:外键约束常见的问题如

  • 创建问题:被引用的列,必须是 主键,或唯一约束的字段(可以为 null)
  • 删除问题:必须先删除 “子表数据”,才可删除 “父表” 数据
  • 修改问题,在增加外键时,需要进行级联操作,(更新与删除可同时添加)

级联更新

(增加外键约束语句) on update cascade;

级联删除(比较危险)

(增加外键约束语句) on delete cascade;
4.非空约束
  • not null;
  • 不允许为空

修改增加非空约束

alter table 表名 modify 列名 not null;

修改删除非空约束

alter table 表名 modify 列名 属性类型;
5.默认约束
  • default value //在建表时增加

在建表后增加默认约束

alter table 表名 modify 列名 属性类型 default value;

删除默认约束

alter table 表名 modify 列名 属性类型;
6.自增约束
  • auto_increment //建表时自增约束
  • 对数值类型,每次自动加1

在创建表后追加自增约束

alter table 表名 modify 列名 数据类型 auto_increment;

删除自增约束

alter table 表名 modify 列名 数据类型;

本篇完,还有疑问?

加入QQ交流群:11500065636 IT 技术交流群