MySQL中有外键约束和非外键约束, 非外键约束又分为主键约束, 非空约束等, 详细看一下
约束条件 | 约束描述 |
---|---|
PRIMARY KEY | 主键约束,约束字段的值可唯一地标识对应的记录 |
NOT NULL | 非空约束,约束字段的值不能为空 |
UNIQUE | 唯一约束,约束字段的值是唯一的 |
CHECK | 检查约束,限制某个字段的取值范围 |
DEFAULT | 默认值约束,约束字段的默认值 |
AUTO_INCREMENT | 自动增加约束,约束字段的值自动递增 |
FOREIGN KEY | 外键约束,约束表与表之间的关系 |
-- 举例, 创建一个员工表, 有员工号, 姓名, 性别, 年龄, 邮箱, 列级约束
create table staff (
sno int ( 5 ) primary key auto_increment,-- 主键自增约束
sname varchar ( 10 ) not null,-- 非空约束
gender char ( 1 ) default '男' check ( gender = '男' || gender = '女' ),-- 默认约束和检查约束
age int ( 3 ) check ( age > 18 || age < 60 ),-- 检查约束
email varchar ( 50 ) unique -- 唯一性约束
);
-- 举例, 创建一个员工表, 有员工号, 姓名, 性别, 年龄, 邮箱, 表级约束
create table staff (
sno int ( 5 ) auto_increment,-- 自增只能是列级约束
sname varchar ( 10 ) not null,-- 非空只能是列级约束
gender char ( 1 ) default '男',
age int ( 3 ),
email varchar ( 50 ),
constraint pk_sno primary key ( sno ),-- pk_sno主键约束等名字
constraint ck_gender check ( gender = '男' || gender = '女' ),
constraint ck_age check ( age > 18 || age < 60 ),
constraint un_email unique ( email )
);
-- 给已经存在的表添加email唯一性约束约束, 其他同理
alter table staff add constraint un_email unique ( email ) -- un_email约束名称