概述
SQL 字段的约束
是保证字段内容符合要求
的一种方法,有 六
大约束,MySQL 只支持其中 五种
,还有一种语法不报错,但没有实际的作用。
六大约束
primary key
(主键):唯一,不能为空。not null
(非空):不能为空。default
(默认值):字段默认值。unique
(唯一):唯一,能为空。foreign key
(外键):为了使两张表的数据更好的关联。check
(内容检查MySQL 不支持
):检查内容是否要求。
使用
本质是两种不同的写法,效果没有区别
列级约束
create table stuinfo.sinfo( id int primary key, # 主键 name varchar(20) not null, # 不能为空 sex enum("男","女") default "女", # 检查 & 默认值 stuid int unique, # 唯一值 skilltype int references stype(id) # 外键 ) # 类型表 用以外键关联 create table stuinfo.stype( id int, skill varchar(255) not null )
表级约束
在
表级约束
中,不能设置not null
、default
关键字
constraint
是可以省略的
create table stuinfo.sinfo( id int , name varchar(20) not null, sex enum("男","女"), stuid int, skilltype int, # constraint 别名 约束 constraint id_pk primary key(id), # 主键 constraint sec_ck check(sex in("男","女")), # 检查点 constraint stuid_un unique(stuid), # 唯一键 constraint st_fk foreign key(skilltype) references stype(id) # 外键 ) # 类型表 create table stuinfo.stype( id int, skill varchar(255) not null )
主键和唯一
关键字 | 唯一性 | 是否允许为空 | 一个表中是否能有多个 | 是否允许组合 |
---|---|---|---|---|
primary key | √ | × | × | √(不推荐) |
unique | √ | √ | √ | √(不推荐) |
设置
字段约束组合
需要表级约束
。create table stuinfo.sinfo( id int , name varchar(20) not null, sex enum("男","女"), /* 组合主键 两个字段组成唯一性 */ id_pk primary key(id,name), )
字段约束的修改
添加字段时加上约束
alter table 表名 modify column 字段名 约束;
修改约束
当新旧字段
名一样时,就是修改类型、约束。
alter table 表名 change column 旧字段名 新字段名 约束;
上一篇
SQL 标识列
SQL 标识列
下一篇
SQL 数据类型概述
SQL 数据类型概述