日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL笔记——外键约束和表关系(一对一,多对一,多对多)

發布時間:2023/12/10 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL笔记——外键约束和表关系(一对一,多对一,多对多) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、外鍵約束

概念:外鍵用來讓兩個表的數據之間建立鏈接,保證數據的一致性和完整性。語法:(1)添加約束-- 創建表是添加外鍵約束CREATE TABLE 表名(列名 數據類型,…[CONSTRAINT] [外鍵名稱] FOREIGN KEY(外鍵列名) REFERENCE 主表(主表列名));-- 建完表后添加外鍵約束ALTER TABLE 表名 ADD CONSTRAINT 外鍵名稱 FOREIGN KEY (外鍵字段名稱) REFERENCE 主表名稱(主表列名稱)(2)刪除約束ALTER TABLE 表名 DROP FOREIGN KEY 外鍵名稱;

案例

首先創建員工信息表和部門信息表,并在員工表中添加外鍵。(把員工表當作從表,部門表當作主表),員工表和部門表就是一個多對一的案例 -- 員工表 CREATE TABLE emp(id int PRIMARY KEY auto_increment, -- idname VARCHAR(20),-- 姓名age int, -- 年齡dep_id int, -- 部門-- 添加外鍵dep_id,關聯dept表的id主鍵CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id) );-- 部門表 CREATE TABLE dept(id int PRIMARY KEY auto_increment, -- 部iddep_name VARCHAR(20), -- 部門名稱addr VARCHAR(20) -- 地址 );INSERT INTO emp(NAME,age,dep_id) VALUES ('張三',20,1), ('李四',20,1), ('王五',20,1), ('趙六',20,2), ('田七',22,2), ('周八',18,2);INSERT INTO dept(dep_name,addr) VALUES ('研發部','廣州'), ('銷售部','深圳');-- 刪除外鍵 ALTER TABLE emp DROP FOREIGN KEY fk_emp_dept;

按照如下圖所示順序執行sql語句:部門表–>員工表–>部門信息–>員工信息



執行完畢后如下圖點擊對象選中這兩個表,點擊鼠標右鍵,選中‘逆向表到模型’。

可以看到這兩個表的模型中間有一條線,這條線代表外鍵。

此時我們執行刪除外鍵的語句

然后再次執行上述‘逆向表到模型’ 可以看到線消失了,表示我們刪除成功。

二、表關系之一對多

1、一對多(多對一)如:部門和員工,一個部門對應多個員工,一個員工對應一個部門2、實現方式:在多的一方建立外鍵,指向一的一方的主鍵3、具體實現參照上例,部門和員工。

三、表關系之多對多

1、多對多如:商品和訂單,一個商品對應多個訂單,一個訂單包含多個商品2、實現方式建立第三張中間表,中間表至少包含兩個外鍵,分別關聯兩方主鍵3、實現案例: -- 訂單表 CREATE TABLE tb_order(id int PRIMARY KEY auto_increment, -- idpayment double(10,2),payment_type TINYINT,status TINYINT );-- 商品表 CREATE TABLE tb_goods(id int PRIMARY KEY auto_increment,title VARCHAR(100),price DOUBLE(10,2) );-- 訂單商品中間表 CREATE TABLE tb_order_goods(id int PRIMARY KEY auto_increment,order_id int,goods_id int,count int );-- 添加外鍵,向訂單商品中間表添加兩個外鍵,關聯商品表和訂單表的主鍵。 ALTER TABLE tb_order_goods ADD CONSTRAINT fk_order_id FOREIGN KEY(order_id) REFERENCES tb_order(id); ALTER TABLE tb_order_goods ADD CONSTRAINT fk_goods_id FOREIGN KEY(goods_id) REFERENCES tb_goods(id); 如圖執行創建三個表

執行添加外鍵的語句

再次執行上述‘逆向表到模型’ 具體對應關系如圖標注。

四、表關系之一對一

1、一對一如:用戶信息和用戶詳情信息一對一關系多用于表拆分,將一個實體中經常使用的字段放一張表,不經常使用的字段放另一張表,用于提升查詢能力2、實現方式:在任意一方加入外鍵,關聯另一方主鍵,并且設置外鍵為唯一(UNIQUE)3、實現案例 -- 創建用戶表 CREATE TABLE tb_user(id int PRIMARY KEY auto_increment,photo VARCHAR(30),nickname VARCHAR(20),age int,sex char(2),desc_id int NOT NULL UNIQUE -- 設置關聯的用戶詳情表主鍵不為空且唯一 );-- 創建用戶詳情表CREATE TABLE tb_user_desc(id int PRIMARY KEY auto_increment,city VARCHAR(10),edu VARCHAR(10),income DOUBLE(7,2),status VARCHAR(10) );-- 添加用戶 INSERT INTO TABLE tb_user(photo,nickname,age,sex,desc_id) VALUES ('a.jpg','一場夢',23,'女',1), ('b.png','風清揚',35,'男',2), ('c.jpg','趙云',41,'男',3),-- 添加用戶詳情信息 INSERT INTO TABLE tb_user_desc(city,edu,income,status) VALUES ('廣州','碩士',300000,'單身'), ('湖北','本科',100000,'離異'), ('河南','本科',200000,'單身'),-- 添加外鍵 ALTER TABLE tb_user ADD CONSTRAINT fk_user_userdesc FOREIGN KEY(desc_id) REFERENCES tb_user_desc(id); 如圖執行語句創建用戶表和用戶詳情表

往兩張表中添加數據

添加外鍵

再次執行上述‘逆向表到模型’ 具體對應關系如圖。

總結

以上是生活随笔為你收集整理的MySQL笔记——外键约束和表关系(一对一,多对一,多对多)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。