06-MySQL非外键约束

196 阅读1分钟

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约束名称