1. 簡(jiǎn)介
- 概念:約束時(shí)作用于表中子段上的規(guī)則,用于限制存儲(chǔ)在表中的shuju
- 目的:保證數(shù)據(jù)庫中數(shù)據(jù)的正確、有效性和完整性
- 分類:
約束 | 描述 | 關(guān)鍵字 |
---|---|---|
非空約束 | 限制該字段不能為null | NOT NULL |
唯一約束 | 保證該字段的所有數(shù)據(jù)都是唯一、不重復(fù)的 | UNIQUE |
主鍵約束 | 主鍵時(shí)一行數(shù)據(jù)的唯一標(biāo)識(shí),要求非空且唯一 | Primary key |
默認(rèn)約束 | 保存數(shù)據(jù)時(shí),如果未指定該字段的值,則采用默認(rèn)值 | Default |
檢查約束 | 保證字段值滿足某一個(gè)條件 | check |
外鍵約束 | 用來讓兩張表的數(shù)據(jù)之間建立連接,保證數(shù)據(jù)的一致性和完整性 | foreign key |
2. 代碼演示
create table user(
id int primary key auto_increment comment '主鍵',
name varchar(10) not null unique comment '姓名',
age int check(age>0 && age<=120) comment '年齡',
status char(1) default '1' comment '狀態(tài)'
)
3. 外鍵約束
用來讓兩張表的數(shù)據(jù)之間建立連接,從而保證數(shù)據(jù)的一致性和完整性文章來源地址http://www.zghlxwxcb.cn/news/detail-692809.html
alter table user add constraint f_id foreign key(dept_id) references dept(id)
#user表的dept_id字段外鍵引用dept表的id字段
4. 外鍵刪除和更新行為
- 刪除/更新行為
行為 | 說明 |
---|---|
no action | 當(dāng)在父表中刪除/更新對(duì)應(yīng)記錄時(shí),首先檢查該記錄是否有對(duì)應(yīng)的外鍵,如果有則不允許刪除/更新 |
restrict | 當(dāng)在父表中刪除/更新對(duì)應(yīng)記錄時(shí),首先檢查該記錄是否有對(duì)應(yīng)的外鍵,如果有則不允許刪除/更新 |
cascade | 當(dāng)在父表中刪除/更新記錄時(shí),首先檢查記錄是否存在外鍵,如果有,則也刪除/更新外鍵所在子表中的記錄 |
set null | 當(dāng)在父表中刪除對(duì)應(yīng)記錄時(shí),首先檢查記錄是否存在對(duì)應(yīng)外鍵,如果有則設(shè)置子表中該外鍵值為null(這就要求該外鍵允許取null) |
set default | 父表中有變更時(shí),子表將外鍵列設(shè)置成一個(gè)默認(rèn)的值(innodb不支持) |
alter table 表名 add constraint 外鍵名稱 foreign key references 主表名(主表名字段) on update cascade on delete cascade
文章來源:http://www.zghlxwxcb.cn/news/detail-692809.html
到了這里,關(guān)于數(shù)據(jù)庫約束的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!