多測師肖老師_mysql之外來鍵(10.3)
mysql之外來鍵
一、外來鍵
外來鍵的定義:
讓一張表記錄的資料不要太過於冗餘,在資料庫中對錶的關係進行解耦,儘量讓表的資料單一化。
二、外來鍵的作用?
保持資料的一致性和完整性
三、mysql 資料庫中的儲存引擎
myisam(預設)
innodb (外來鍵需要這種innodb儲存格式)
四、檢視儲存引擎
格式:show table status from 庫名 where name="表名"
案例:show table status from dcs where name="student"
==============================
外來鍵實戰
(1)建立engine=innodb 格式 的表格
(2)外來鍵,建立的表必須有主鍵
a、建表時建外來鍵
父表:create table s (sid int(10) PRIMARY key ,sname varchar(10)) engine=innodb;
子表:CREATE table c (id int(10) PRIMARY key ,name varchar(10),CONSTRAINT f foreign key(id) REFERENCES s1(sid) )engine=innod
CONSTRAINT 外來鍵名
foreign key(子表關聯欄位) id是子表字段 外來鍵
REFERENCES 父表(父表關聯欄位) 引用
b、表建好,在新建外來鍵
mm表:create table mm (sid int(10) PRIMARY key ,sname varchar(10)) engine=innodb;
nn 表:create table nn (id int(10) PRIMARY key ,name varchar(10)) engine=innodb;
格式:alter table nn add constraint 外來鍵名 FOREIGN key (子表關聯欄位 ) REFERENCES 父表(關聯欄位) ;
案例:alter table nn add constraint fk_wj FOREIGN key (id) REFERENCES mm(sid) ;
================================
查詢是有外來鍵:
方法一:
方法二:檢視建立的索引
格式:show create table 表名 ;
show create table nn ;
================================
刪除外來鍵:
格式:alter table 表名 drop foreign key 外來鍵名
alter table nn drop foreign key fk_wj
================================
外來鍵中的一些特性:
1、父表不存在的資料,子表無法插入資料
2、父表中存在的資料,子表就庫插入資料
3、父表和子表都是空資料,子表無法插入資料,父表可以插入資料
4、父表和子表都存在的資料,無法刪除父表
5、父表和子表都存在的資料,先刪除子表,在刪除父表
================================
總結:
1、如何建立外來鍵?
2、什麼是外來鍵?
3、外來鍵的作用?
4、外來鍵中子表和父表的關係?
5、公司中為什麼用外來鍵?
(1)儲存資料的一致性和完整性
(2)公司資料量大,造成資料重複新舊錶維護成本大,使用外來鍵讓公司資料進行分類和管理,讓基礎資料放在主表上,子表單一化,這樣可以避免資料的冗餘
show table status from dcs where name="student"