從零開始學MySQL(十八):外鍵約束

學習目標

  • 掌握外鍵約束的添加方法
  • 知道外鍵約束字段的添加及刪除規則

1.多表查詢概述

l實際開發中,一個項目通常需要很多張表才能完成。

l例如:一個商城項目就需要分類表(category)、商品表(products)、訂單表(orders)等多張表。且這些表的數據之間存在一定的關系,接下來我們將在單表的基礎上,一起學習多表方面的知識。

一對多關系:

常見實例:客戶和訂單,分類和商品,部門和員工。

一對多建表原則:在從表(多方)創建一個字段,字段作為外鍵指向主表(一方)的主鍵。

2.外鍵約束

2.1外鍵約束的定義

現在我們有兩張表“分類表”和“商品表”

為瞭表明商品屬於哪個分類,通常情況下,==我們將在商品表上添加一列,用於存放分類cid的信息==,此列稱為:外鍵

此時“分類表==category”稱為:主表==,“cid”我們稱為主鍵。“商品表==products”稱為:從表==,category_id稱為外鍵。我們通過主表的主鍵和從表的外鍵來描述主外鍵關系,呈現就是==一對多關系==。

外鍵特點:

從表外鍵的值是對主表主鍵的引用。

從表外鍵類型,必須與主表主鍵類型一致。

舉例:

上述表中,product表中的兩條記錄中的商品,都屬於汽車分類。

category分類表,為唯一方,也就是主表,必須提供主鍵cid

products商品表,為多方,也就是從表,必須提供外鍵category_id

2.2綁定外鍵約束

為瞭我們可以更加清楚的體現商品表與分類表之間的聯系,我們準備以下兩張表,並建立外鍵關聯關系:

綁定外鍵約束的格式如下:

在創表語句後添加:CONSTRAINT FOREIGN KEY (外鍵字段) REFERENCES 主表名(主鍵)

# 創建分類表
CREATE TABLE category
(
cid VARCHAR(32) PRIMARY KEY,
cname VARCHAR(100) #分類名稱
);

# 商品表
CREATE TABLE products
(
pid VARCHAR(32) PRIMARY KEY,
name VARCHAR(40),
price DOUBLE,
category_id VARCHAR(32),
# CONSTRAINT 約束
# REFERENCES 參考
CONSTRAINT FOREIGN KEY (category_id) REFERENCES category (cid) # 添加約束
);

# 查看表結構
# 主表不需要進行任何操作,從表在表內設置外鍵字段,綁定主表主鍵即可
DESC products;
DESC category;

赞(0)