一、 约束的含义和分类
1.1约束的含义:是一种限制,用于限制表中的数据,保证数据的完整性和一致性。
1.2约束的分类:
①not null:非空,保证字段不能为空。违反约束不会报错,但是会有警告,适用于说有的类型。
②default:默认约束,当数据插入的时候,指定的字段如果没有数据插入,即插入默认值。
③primary key:主键,保证字段具有唯一性,并且非空,等价于唯一+非空的组合。
④unique:唯一,用于保证字段的唯一性,可以为空。
⑤check:检查约束,mysql不支持。
⑥foreign key:外键约束,用于约束两个表的关系,用于保证该字段的值必须来自于主表的关联列的值。在从表的添加的外键约束,用于引用主表中某列的值。
1.3添加约束
列级约束:语法上六大约束都支持,但是外键约束没有效果。【mysql不支持检查约束】
表级约束:除了非空和默认,其他都支持。
添加时机:创建表时、修改表时。
二、 唯一约束和主键约束比较、外键解析
1.主键唯一键的比较
2.外键解析
①在从表设置外键关系
②从表的外键列的类型和主表的关联列类型要求一致或者兼容
③主表的关联列必须是一个key,主键或者是唯一键
④插入数据的时候,先插入主表,然后插入从表
⑤删除数据的时候,先删除从表,再删除主表
三、 创建表时添加约束
语法概述:
Create table 表名(
字段名 字段类型 列级约束,
字段名 字段类型,
表级约束
)
1.添加列级约束
①在字段类型之后直接添加,可以有多个直接加空格隔开
②支持:默认、主键、唯一、非空
列级约束不能将外键约束添加成功。
2.添加表级约束
【constraint 约束名】 添加约束名字,是可选的。
①主键的命名失效,主键名字只能是primary
②外键添加成功,别名也成功添加
③check 检查约束,mysql不支持
3.约束的通用写法
四、修改表时添加约束
1.添加列级约束
alter table 表名 modify column 字段名 字段类型 新约束
2.添加表级约束a
alter table 表名 add [constraint 约束名] 约束类型(字段名) [外键的引用]
[1]添加非空约束
alter table userchen modify column userchen varchar(20) not null;
[2]添加默认约束
[3]添加主键
[4]添加唯一约束
[5]添加外键【表级约束】
五、删除约束
[1]删除非空约束
[2]删除默认约束
[3]删除主键
[4]删除唯一键
[5]删除外键
六、级联删除
情况一、当删除父类数据时,对应从表的数据也将被删除
情况二、级联删除置null