您現在的位置是:首頁 > 攝影首頁攝影

測牛學堂:軟體測試資料庫知識總結之sql外來鍵約束

由 測牛學堂 發表于 攝影2023-01-24
簡介例子:如果要設計一個員工表1)員工表:編號、姓名、年齡、性別、所在分公司、所在部門2)部門表:編號、部門名稱、部門經理、主要任務3)公司表:編號、分公司名,地址、電話、法人把公司和部門的資料抽取出來,形成一個單獨的表,並以公司表為主表,公司

sql外來鍵的值怎麼賦予

測牛學堂:軟體測試資料庫知識總結之sql外來鍵約束

mysql外來鍵總結

我們之前學習的都是針對一個表的操作。如果要進行多個表之間的操作,就要用到外來鍵把他們關聯起來。

外來鍵的作用:能夠讓多個表進行關聯,使表與表之間有聯絡,實現共性抽取。

應用場景

如果資料項比較多的情況下,把所有資料都存放在一個表中,如果

表太大

,影響操作效率。解決辦法就是把一個表拆分成多個表,

並且用外來鍵去關聯。

例子:

如果要設計一個員工表

1

)員工表:編號、姓名、年齡、性別、所在分公司、所在部門

2

)部門表:編號、部門名稱、部門經理、主要任務

3)公司表:編號、分公司名,地址、電話、法人

把公司和部門的資料抽取出來,形成一個單獨的表,並以公司表為主表,公司表關聯部門表,部門表關聯員工表,也就是用公司表的“編號”指向部門表“所在公司”,用部門表的“編號”指向員工表的“所在部門”

總結:

1 以上三個表的設計,就解決了欄位冗餘+表太大的問題☆(其實還可以把部門表名稱再次細分)

2一個表的外來鍵就是對應另一個表的主鍵(也可以是當前表的主鍵)

3外來鍵的設定最好是在建立表的時候,且對應的表型別是InnoDB型別,如果是其他型別,就沒有約束作用

4有外來鍵約束的表,一定是先建立主表(被指向的),後建立副表(有外來鍵的)

5外來鍵約束的兩個表,必須都是InnoDB型別

外來鍵設定

1

建立公司表

CREATE TABLE `company` ( `id` int NOT NULL AUTO_INCREMENT, `company_name` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL, `company_addr` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL, `company_tel` varchar(16) COLLATE utf8mb4_general_ci DEFAULT NULL, `company_person` varchar(32) COLLATE utf8mb4_general_ci DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ciINSERT INTO `company` VALUES (‘1’, ‘北京分公司’, ‘北京市朝陽區xxxx號’, ‘010-123456’, ‘李四111’);INSERT INTO `company` VALUES (‘2’, ‘上海分公司’, ‘上海市浦東區xx號’, ‘123-5678’, ‘李四222’);INSERT INTO `company` VALUES (‘3’, ‘深圳分公司’, ‘深圳市xxx號’, ‘789-111222’, ‘李四333’);

2 建立部門表

create table department ( id int primary key not null auto_increment, department_name varchar(32), department_leader varchar(32), worker varchar(128), company_fid int, constraint fk foreign key(company_fid) references company(id))engine=innodb;

3 建立員工表

create table staff ( id int primary key not null auto_increment, staff_name varchar(32), staff_age tinyint, staff_sex char(1), department_fid int, CONSTRAINT staff_fk foreign key(department_fid) REFERENCES department(id))engine=innodb

外來鍵總結

1外來鍵只能指向主鍵

2外來鍵和主鍵的欄位型別必須一致,通常用int型別

3外來鍵是一種約束,目的是為了方便管理資料,當有冗餘欄位時,可以提取出一個表進行關聯,簡化資料儲存

4一張表中可以有多個外來鍵,但主鍵只能是一個

5外來鍵和主鍵所在的表型別必須都是InnoDB

6

關係型資料庫的特點就是

資料之間有關聯

7如果一個表被另一個表關聯,它是無法被刪除的。