1. 程式人生 > 其它 >多測師肖老師_mysql之外來鍵(10.3)

多測師肖老師_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"