5.6 操作表的約束 80
5.6.1 mysql支援的完整性約束 81
5.6.2 設定非空約束(not null,nk) 81
5.6.3 設定欄位的預設值(default) 82
5.6.4 設定唯一約束(unique,uk) 84
5.6.5 設定主鍵約束(primary key,pk) 85
5.6.6 設定字段值自動增加(auto_increment) 88
5.6.7 設定外來鍵約束(foreign key,fk) 89
一、外來鍵約束和要求
1.父表和子表必須使用相同的儲存引擎,而且禁止使用臨時表;
2.資料表的儲存引擎只能為innodb
3.外來鍵列和參照列必須有相似的資料型別。其中數字的長度或是否有符號位必須相同;而且字元的長度則可以不同;
4.外來鍵列和參照列必須建立索引。如果外來鍵列不存在索引的話,mysql將自動建立索引
*物理外來鍵和邏輯外來鍵
只有innodb才支援物理外來鍵,平時的設計中是很少定義物理外來鍵約束的,而是按照表與表之間的邏輯關係來定義邏輯外來鍵,不設定物理外來鍵
二、外來鍵約束的參照操作
1.cascade:從父表中刪除或者更新且自動刪除或更新子表中匹配的行
刪除:刪除主表時自動刪除從表。刪除從表,主表不變
更新:更新主表時自動更新從表。更新從表,主表不變
2.set null:從父表刪除或更新行,並設定了子表中的外來鍵列為null,如果使用該選項,必須保證子表列沒有指定not null
刪除:刪除主表時自動更新從表值為null。刪除從表,主表不變
更新:更新主表時自動更新從表值為null。更新從表,主表不變
3.restrict:拒絕對父表的刪除或更新操作
4.no action:標準sql的關鍵字,在mysql中與restrict相同
null、restrict、no action
刪除:從表記錄不存在時,主表才可以刪除。刪除從表,主表不變
更新:從表記錄不存在時,主表才可以更新。更新從表,主表不變
三、建立外來鍵命令
明確指定外來鍵的名稱:alter table book add constraint fk_book foreign key(pubid) references pub_com(id) on delete restrict(cascade,set null) on update restrict(cascade,set null) ;
mysql欄位約束
為了確保資料的完整性和唯 性,關係型數 據庫通過約束機制來實現目。一.unique 唯一性約束 值不可重複 二.not null 非空約束 值不可為空 三.default 預設值約束 當增加資料時沒有插 值時,會自動插 預設值 四.check 檢查約束 mysql不支援該約束,但寫入語句不會報錯 五...
mysql欄位約束
特點 唯一且不能為空!當主鍵為數值時,為了方便維護,可以設定主鍵為自增 auto increment 示例 建立user表,指定id為主鍵,並指定主鍵自增 第一種方式 主鍵自增和主鍵宣告放一起 create table user id int primary key auto increament,...
mysql 邏輯型字段 MySQL 字段約束
字段約束 mysql的字段約束共四種 約束名關鍵字 描述主鍵約束 primary key 字段值唯一,且不能為null 非空約束 not null 字段值不能為null 唯一約束 unique 字段值唯一,但可以為null 外來鍵約束 foreign key 保持關聯資料的邏輯性 關於主鍵約束 主鍵...