外鍵:外鍵是用來再兩個表的數據之間建立連接,他可以是一列也可以是多列。一個表中可以有一個或多個外鍵。
一個表的外鍵可以是空值,若不為空值,則每一個外鍵值必須等於另外一個表中的主鍵的某個值。
外鍵是一個表中的字段,他可以不是本表中的主鍵,但對應另外一個表的主鍵,外鍵的作用是保證數據引用的完整性。
定義完外鍵后,不允許刪除在另一表中具有關聯的行。列如:部門表tb_dept的主鍵是id,在員工表tb_emp5中有一個鍵deptId跟這個id關聯。
主表(父表):對於兩個有關聯的表而言,相關字段中主鍵所在的那個表為主表。
從表(子表):對於兩個有關聯的表而言,相關字段中的外鍵所在的那個表為從表。
外鍵名:定義外鍵約束的名稱,一個表中不能有相同名稱的外鍵。
字段名:表示從表需要添加外鍵約束的字段列。
主表名:即被從表外鍵所依賴的表的名稱
主鍵列:表示主表中定義的主鍵字段,或者字段組合。
ON DELETE 和 ON UPDATE :指定在發生刪除或更改的表中。
例子:
創建一個部門表tb_dept1,表結構SQL語句如下:
CREATE TABLE tb_dept1 ( id INT PRIMARY KEY, name VARCHAR(22) NOT NULL, location VARCHAR(50) NULL );
定義數據表tb_emp6,讓它的鍵deptId作為外鍵關聯到tb_dept1的主鍵id,SQL語句如下:
CREATE TABLE tb_emp6 ( id INT PRIMARY KEY, name VARCHAR(25), deptId INT, salary FLOAT, CONSTRAINT fk 員工部門編號 FOREIGN KEY(deptId) REFERENCES tb_dept1(id) );
在未設外鍵表中添加外鍵 可以使用ALTER語句將FOREIGN KEY約束添加到該表中,添加主鍵的ALTER語句語法格式如下
CREATE TABLE tb_emp6 ( id INT PRIMARY KEY, name VARCHAR(25), deptId INT, salary FLOAT )--創建表但未添加外鍵 后期添加外鍵SQL語法如下: GO ALTER TABLE tb_emp6 ADD CANSTRAINT fk 員工不猛編號 FOREIGN KEY(deptId) REFERENCES tb_dept1(id)
刪除外鍵約束
刪除tb_emp6表中創建的 “fk_員工部門編號”外鍵約束,輸入語句如下: ALTER TABLE tb_emp6 DROP CONSTRAINT fk_員工部門編號; 執行完成后將刪除tb_emp6的外鍵約束。