MySQL:外鍵及外鍵的使用

外鍵及外鍵的使用

如果公共關鍵字在一個關係中是主關鍵字,那麼這個公共關鍵字被稱爲另一個關係的外鍵。

由此可見,外鍵表示了兩個關係之間的相關聯繫。以另一個關係的外鍵作主關鍵字的表被稱爲主表,具有此外鍵的表被稱爲主表的從表。外鍵又稱作外關鍵字。

表間關係有一對一,一對多和多對多。

首先我們舉個簡單的栗子

學生表,老師表,班級表
一個學生屬於一個班級,一個班裏有多個學生。一個學生可以被多個老師授課,一個老師也可以教多個學生,因此是多對多的關係。

建表如下:

CREATE TABLE teachers (
	id INT PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR(20) NOT NULL
);

CREATE TABLE classes (
	id INT PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR(20) NOT NULL
);

CREATE TABLE students (
	id INT PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR(20) NOT NULL,
	class_id INT NOT NULL,
	FOREIGN KEY (class_id) REFERENCES classes(id)
);

插入數據:

INSERT INTO classes (name) VALUES ('1班'), (2班');
INSERT INTO students (name, class_id) VALUES
('小A', 2),
('小B', 1);

DELETE FROM classes WHERE name = '1班'; //會失敗,因爲有外鍵的約束

DELETE FROM students WHERE name = '小B';//先刪除小B同學
DELETE FROM classes WHERE name = '1班'; //此時刪除1班會成功,因爲沒有外鍵的約束了

小練習

在這裏插入圖片描述
根據上圖建立商品表
商品表

CREATE TABLE goods (
	id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '商品編號',
	name VARCHAR(30) NOT NULL COMMENT '商品名稱',
	price INT NOT NULL COMMENT '單價,單位是分',
	category VARCHAR(20) NOT NULL DEFAULT '' COMMENT '商品類別',
	provider VARCHAR(50) NOT NULL DEFAULT '' COMMENT '供應商'
) COMMENT '商品信息';

客戶表

CREATE TABLE customers (
	id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '客戶編號',
	name VARCHAR(20) NOT NULL COMMENT '姓名',
	address VARCHAR(100) COMMENT '地址',
	email VARCHAR(100) COMMENT '郵箱',
	gender TINYINT NOT NULL COMMENT '性別:0 保密 1 女 2 男',
	idcard CHAR(18) NOT NULL COMMENT '身份證號碼,實名制'
) COMMENT '客戶信息';

訂單表

CREATE TABLE purchases (
	id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT COMMENT '訂單號',
	customer_id INT UNSIGNED NOT NULL COMMENT '客戶編號',
	goods_id INT UNSIGNED NOT NULL COMMENT '商品編號',
	num INT NOT NULL DEFAULT 0 COMMENT '購買數量',
	FOREIGN KEY (customer_id) REFERENCES customers(id),//設置外鍵
	FOREIGN KEY (goods_id) REFERENCES goods(id)//設置外鍵
) COMMENT '訂單信息';
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章