DDL之常见的约束

豆蔻梢头、 约束的含义和分类
1.1封锁的含义:是生机勃勃种范围,用于节制表中的数码,保险数据的完整性和大器晚成致性。
1.2封锁的归类:
①not
null:非空,保障字段无法为空。违反限定不会报错,不过会有警告,适用于说一些类别。
②default:私下认可约束,当数码插入的时候,钦命的字段若无数量插入,即插入私下认可值。
③primary
key:主键,保险字段具备唯意气风发性,并且非空,等价于唯黄金时代+非空的咬合。
④unique:唯生龙活虎,用于有限支撑字段的唯大器晚成性,可感到空。
⑤check:检查限制,mysql不扶持。
⑥foreign
key:外键节制,用于约束多个表的涉嫌,用于保障该字段的值必得来自于主表的关联列的值。在从表的充裕的外键约束,用于引用主表中某列的值。
1.3增加节制
列级约束:语法上六大封锁都支持,不过外键节制没有效果。【mysql不扶助检查限定】
表级节制:除了非空和暗中认可,其余都协理。
拉长时机:创设表时、改过表时。
二、 唯生龙活虎约束和主键限定比较、外键解析
1.主键唯朝气蓬勃键的相比
图片 1
2.外键深入深入分析
①在从表设置外键关系
②从表的外键列的品种和主表的涉嫌列类型供给生龙活虎律可能协作
③主表的关联列必得是四个key,主键也许是唯意气风发键
④插入数据的时候,先插入主表,然后插入从表
⑤剔除数据的时候,先删除从表,再删除主表
三、 创立表时增多限制
语法概述:
Create table 表名(
字段名 字段类型 列级限定,
字段名 字段类型,
表级限制
)
1.增加列级约束
①在字段类型之后间接助长,能够有三个向来加空格隔断
②支持:默认、主键、唯一、非空
图片 2
图片 3
列级限制无法将外键约束增多成功。
2.增添表级限制
【constraint 限定名】 增添约束名字,是可选的。
图片 4
图片 5
图片 6
①主键的命名失效,主键名字只好是primary
②外键增加成功,小名也不负职务增多
③check 检查限定,mysql不辅助
3.节制的通用写法
图片 7
图片 8
四、校勘表时拉长度大概束
1.增加列级约束
alter table 表名 modify column 字段名 字段类型 新节制
2.增添表级限定a
alter table 表名 add [constraint 约束名] 节制类型(字段名)
[外键的援用]
图片 9
图片 10
图片 11
[1]丰硕非空节制
alter table userchen modify column userchen varchar(20) not null;
图片 12
[2]增添暗许限制
图片 13
[3]增加主键
图片 14
[4]丰富唯大器晚成限制
图片 15
[5]累计外键【表级约束】
图片 16
五、删除限定
[1]去除非空约束
图片 17
[2]除去暗中同意限制
图片 18
[3]删除主键
图片 19
[4]剔除唯大器晚成键
图片 20
[5]除去外键
图片 21
六、级联删除
图片 22
图片 23
事态风流倜傥、当删除父类数据时,对应从表的数量也将被删去
图片 24
图片 25
景况二、级联删除置null
图片 26
图片 27

①、三个表至多有一个主键,但足以有多个唯大器晚成

constraint 约束名 foreign key references 主表

字段名 字段类型 default 值,#默认

)

除去唯大器晚成

删去唯生龙活虎

剔除主键

stuName VARCHAR NOT NULL UNIQUE,#非空

ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY REFERENCES
major ON DELETE SET NULL;

3、主表的被引用列须要是几个key

ALTER TABLE stuinfo DROP FOREIGN KEY fk_stuinfo_major;

增多私下认可约束

字段名 字段类型 not null,#非空

1、用于节制八个表的关联,从表的字段值援用了主表的某字段值

创办学子消息表,增加列级约束

ALTER TABLE stuinfo MODIFY COLUMN age INT ;

4、插入数据,先插入主表

加上国药中国科学技术大学学键

ALTER TABLE stuinfo ADD UNIQUE;

注意:

4、自拉长列必得为一个key

SHOW INDEX FROM stuinfo;

2、相同点

丰硕表级约束

去除暗许

ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY REFERENCES
major ON DELETE CASCADE;

图片 28

①列级约束

删除主键

加上非空节制

);

NOT NULL:非空,该字段的值必填

剔除暗中认可节制

累计非空

加多主键

ALTER TABLE stuinfo MODIFY COLUMN seat INT UNIQUE;

PHighlanderIMA科雷傲Y KEY:主键,该字段的值不得重复而且非空 unique+not null

加多唯生机勃勃

如若要转移步长:改良系统变量

CREATE TABLE major(id INT PRIMARY KEY,majorName VARCHAR;

列级限定可以在叁个字段上加码七个,中间用空格隔绝,未有种种供给

#格局二:级联置空

alter table 表名 drop index 索引名;

);

②、主键不容许为空,唯意气风发可感到空

创造数据库

1、不用手动插入值,能够活动提供连串值,暗中同意从1方始,步长为1

seat INT UNIQUE,#唯一

除去外键

ALTER TABLE stuinfo ADD PRIMARY KEY;

set auto_increment_increment=值;

auto_increment_increment

表级约束:除了非空和默许别的类型都援救,能够起限制名,但对主键无效。

alter table 表 modify column 字段名 字段类型 限定

ALTER TABLE stuinfo ADD CONSTRAINT fk_stuinfo_major FOREIGN KEY
REFERENCES major;

都帮助组合键,但不推荐

2、一个表至多有四个自增进列

发表评论

电子邮件地址不会被公开。 必填项已用*标注