約束
約束是作用于表中欄位上的規則,用于限制存盤在表中的資料,保證資料庫中資料的正確、有效和完整,
一. 常用的約束

- 約束作用于表中的欄位,可以在創建表或修改表的時候添加約束,
- AUTO_INCREMENT 約束關鍵字 自動增長:用于比如每次新添加一行資料,id就+1,
- 如果自增和主鍵一起使用時,插入了一行未按約束的資料(會顯示插入失敗),資料庫會申請一次主鍵,那么下一次插入正確的資料時,獲得的自增主鍵就會是資料庫中前一個自增主鍵+2的值,
- 一個欄位可以有多個約束,
- 創建表時添加約束:
create table {表名}(
欄位1 型別 [{約束}] [comment 注釋],
欄位2 型別 [{約束}] [comment 注釋],
...
欄位n 型別 [{約束}] [comment 注釋]
)[comment 表注釋];
- CHECK 檢查約束語法:
# 下面是創建表語法中的其中一行
# 如我們的目的是:創建一個age欄位,限制取值范圍為0-120
age int check ( age > 0 and age <= 120) comment '年齡',
- DEFAULT 默認約束語法:
# 下面是創建表語法中的其中一行
# 如我們的目的是:創建一個status欄位,默認取值為1
status char(1) default '1' comment '狀態',
二. 外鍵約束
外鍵約束用于兩張表之間建立連接,從而保證資料的一致性和完整性,

- 如上圖所示,箭頭的起點稱為“子表”,終點稱為“父表”,
- 主表與從表:主表存的是從北京到上海的高鐵資訊,從表則存的是:北京-天津;天津-河北....這種存在一定的主從關系,在資料庫中稱為主從表,
- 父表與子表:你定義了一個導航選單表(父表),然后每一個選單下的子選單定義了一張表(子表),這類資料稱為父表與子表,
1. 添加外鍵:
# 創建表時建立外鍵
create table {表名}(
{欄位名} {資料型別},
...
[constraint] [{外鍵名稱}] foreign key({外鍵欄位名}) references {主表}({主表列名})
);
# 修改表時建立外鍵
alter table {表名} add constraint {外鍵名稱} foreign key({外鍵欄位名}) references {主表}({主表列名});
2. 洗掉外鍵:
alter table {表名} drop foreign key {外鍵名};
3. 外鍵的洗掉/更新行為

# 添加外鍵時指定行為
alter table {表名} add constraint {外鍵名稱} foreign key({外鍵欄位名}) references {主表}({主表列名}) on update {在更新時的行為} on delete {在洗掉時的行為};
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/545372.html
標籤:MySQL
上一篇:詳解數倉的網路調度與隔離管控能力
