一,約束以及修改數據表 約束的作用?1.約束保證數據的完整性、一致性;2.約束分為表級約束、列級約束;3.約束類型包括:NOT NULL(非空約束)、PRIMARY KEY(主鍵約束)、UNIQUE KEY(唯一約束)、DEFAULT(預設約束)、FOREIGN KEY(外鍵約束); 列級約束:只針 ...
一,約束以及修改數據表
約束的作用?1.約束保證數據的完整性、一致性;2.約束分為表級約束、列級約束;3.約束類型包括:NOT NULL(非空約束)、PRIMARY KEY(主鍵約束)、UNIQUE KEY(唯一約束)、DEFAULT(預設約束)、FOREIGN KEY(外鍵約束);
列級約束:只針對某一個欄位;表級約束:針對兩個或兩個以上的欄位;
1.外鍵約束的要求解析
外鍵約束作用:1.保持數據一致性、完整性;2.實現一對一或一對多關係;(這是也把MySQL稱之為“關係型”資料庫的一個根本性原因)
外鍵約束的要求:1.;2.;3.
;4.外鍵列和參照列必須創建索引,如果外鍵列不存在索引的話,MySQL將自動創建索引;
子表:具有外鍵列的表;父表:字表所參照的表;外鍵列:加過外鍵關鍵詞的列;參照列:外鍵列所參照的列;
查看數據表的屬性命令:SHOW CREATE TABLE tb_name,從下圖中可以看到,數據表provinces的存儲引擎為:InnoDB
下圖展示子表(users)、父表(provinces)具體的創建過程,其中子表中的pid為外鍵列,父表中的id為參照列,英文reference的意思為“參照”
查看數據表的索引命令:SHOW INDEXES FROM tb_name,命令結尾加‘\G’,可以將命令執行結果以網格的形式展示,從下圖中可以看到,id欄位上已經創建了索引,這是因為創建主鍵的時候會自動創建索引;而子表users中存在兩個索引,pid欄位上存在索引這也證明瞭‘‘如果外鍵列不存在索引的話,MySQL將自動創建索引”
2.外鍵約束的參照操作
;;
註意:插入記錄時,必須先在父表中插入記錄,才能在子表中插入記錄