-- 常见约束
/*
含义:用于限制表中的数据,保证数据的准确和可靠性
分类:
1.not null 非空
2.default="默认值" 默认,保障字段有默认值
3.primary key 主键,保证字段唯一且非空
4.unique 唯一约束,保证字段具有唯一性,但是可以为空(只允许一个为空)
5.check>80 检查约束【MySQL中不支持】,输入的值必须大于80
6.foreign key references 外键,用于限制两个表的关系。用于保证该字段的值必须来自主表的关联列的值
在从表中添加外键约束,用于引用主表中某列的值
primary key 和 unique的对比
保证唯一性 是否允许为空 一个表中允许的个数 是否允许组合
主键 1 0 1个 1
唯一 1 1 n个 1
外键:
1.要求在从表设置外键关系
2.从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称五要求
3.主表的关联列必须是一个key(一般是主键或唯-键)
4.插入数据时,先插如主表,在插入从表
5.删除数据时,先删除从表,再删除主表
添加约束的时机:(在添加数据之前)
1.在创建表时添加
2.在修改表时添加
约束的添加分类:
1.列级约束:(6大约束在语法上都支持,但是外键约束没有效果)
2.表级约束:(除了not null ,default,其他都支持)
*/
-- CREATE TABLE 表名(
-- 字段名 字段类型 约束
-- )
#创建表时添加约束
-- 1.添加列级约束
/*
CREATE TABLE test1(
id int PRIMARY KEY, #主键约束
sname VARIANCE(20) NO null, #非空约束
gender CHAR(1) CHECK(gender="男" or gender="女"), #检查约束(但是在MySQL没有效果)
seat int unique, #唯一约束
age int default 18,#默认约束
majorId INT foreign key references major1(id)#外键约束,majorId只能是major表中的id值(但是在MySQL没有效果)
);
CREATE table major1(
id int primary key,
majorName VARIANCE(20)
);
*/
-- 2.添加表级约束
-- 语法:constraint 【自定义的约束名】 约束类型(字段名)
/*
CREATE TABLE test2(
id int,
sname VARIANCE(20),
gender CHAR(1),
seat int,
age int,
majorId INT,
constraint pk primary key(id,sname),#主键约束(id,sname为一个组合主键)
constraint uq unique(seat),#唯一约束
constraint ck check(gender="男" or gender="女"),#检查约束(MySQL不支持)
constraint fk_tes2_major2 foreign key(majorId) references major2(id)#外键约束,majorId只能是major表中的id值(但是在MySQL没有效果)
);
CREATE table major2(
id int primary key,
majorName VARIANCE(20)
);
*/
#修改表时添加约束
/*
CREATE TABLE test3(
id int,
sname VARIANCE(20),
gender CHAR(1),
seat int,
age int,
majorId INT
)
CREATE table major3(
id int primary key,
majorName VARIANCE(20)
);
-- 1.添加非空约束
#给sname添加not null 约束
-- ①列级约束
alter table test3 modify column sname varchar(20) not null;
-- ②表级约束
alter table test3 add not null(aname);
#给majorId添加外键
alter table test3 add foreign key(majorId) references major3(id);
#删除约束
-- 修改表时删除not null约束
alter table test3 modify column sname varchar(20);
-- 修改表时删除主键约束
alter table test3 modify column id varchar(20);
alter table test3 drop primary key;
-- 修改表时删除外键约束
alter table test3 drop foreign key 外键名;
*/
20常见约束 ——MySQL
最新推荐文章于 2024-08-18 15:09:09 发布