【Mybatis之sql複習】多表關係
多表的關係介紹
- (1)專案中的多表
1:在實際的開發中,專案一定是有多張表組成的,這些表之間是有關係
2:表與表之間的關係分類:
一對一,一對多,多對多
(2)什麼是一對一?
A表的一行對應B表的一行,反之也成立,此時,兩張表可以合併成一張表
(3)什麼是一對多?
A表的一行對應B表的多行,反之不成立
(4)什麼是多對多?
A表的一行對應B表的多行,B的一行對應A表的多行
多表的關係-一對多關係
(1)初始化資料
(2)一對多的建立流程
》建立主表(分類表)
》建立從表(商品表)
》給主表和從表之間新增外來鍵約束
alter table 從表 add [constraint] [外來鍵名稱] foreign key (從表外來鍵欄位名) references 主表 (主表的主鍵);
》給主表新增資料(隨便新增)
》給從表新增資料(新增資料是必須依賴主表)
(3)一對多特點
新增資料: 主表:隨意新增,從表:受主表限制
刪除資料: 主表:如果某一行的資料受到從表的依賴,則不能刪除, 從表:可以隨意刪除
(4)類比
省和市
create database day13_2
use day13_2
》建立主表(分類表)
create table category(
cid int primary key auto_increment,
cname varchar(20)
)
》建立從表(商品表)
create table product(
pid int primary key auto_increment,
pname varchar(20),
price double,
cid int -- 外來鍵 表示屬於哪個分類
)
》給主表和從表之間新增外來鍵約束
`alter table 從表 add [constraint] [外來鍵名稱] foreign key (從表外來鍵欄位名) references 主表 (主表的主鍵);`
alter table product add foreign key (cid) references category(cid)
》給主表新增資料(隨便新增)
insert into category value(null,'電子')
insert into category value(null,'服裝')
》給從表新增資料(新增資料是必須依賴主表)
insert into product value(null,'聯想',2000,1)
insert into product value(null,'華為',4000,1)
insert into product value(null,'真維斯',100,2)
多表的關係-多對多關係
- (1)使用excel分析
- (2)多對多建立流程
》》建立訂單表(主表) order
》》建立中間表(從表) 儲存交叉線
》》給中間表建立外來鍵約束(2次)
》》給訂單表新增資料(隨意)
》》給中間表新增資料(受限)
》》建立訂單表(主表) order
create table orders(
oid int primary key auto_increment,
money double
)
》》建立中間表(從表) 儲存交叉線
create table orders_product(
oid int , -- 必須存在 外來鍵
pid int -- 必須存在 外來鍵
)
》》給中間表建立外來鍵約束(2次)
alter table orders_product add foreign key (oid ) references orders(oid);
alter table orders_product add foreign key (pid ) references product(pid);
》》給訂單表新增資料(隨意)
insert into product value(null,'LV',30000,2)
》》給中間表新增資料(受限)
insert into orders_product value(3,6)
練習-一對多
(1)分析 省表與市表關係
(2)建立表:一對多的關係(省表和市表)
》》 建立主表(省表)
》》 建立從表(市表)
》》建立外來鍵約束
》》給主表新增資料
》》給從表新增資料
# 練習1
》》 建立主表(省表)
create table province(
pid int primary key auto_increment,
pname varchar(20)
)
》》 建立從表(市表)
create table city(
cid int primary key auto_increment,
cname varchar(20),
pid_fk int
)
》》建立外來鍵約束
alter table city add foreign key (pid_fk ) references province(pid);
》》給主表新增資料
》》給從表新增資料
練習-多對多-演員和角色
(1)分析 演員表與角色表關係
》》 建立演員表(左側主表)
create table users(
uid int primary key auto_increment,
uname varchar(20)
)
》》 建立角色表(右側主表)
create table role(
rid int primary key auto_increment,
rname varchar(20)
)
》》 建立中間表(從表)
create table users_role(
rid int , -- 資料必須在role存在
uid int -- 資料必須在users存在
)
》》建立外來鍵約束(2次)
alter table users_role add foreign key (rid ) references role(rid);
alter table users_role add foreign key (uid) references users(uid);
》》給演員表新增資料
》》給角色表新增資料
》》給中間表新增資料
練習-角色表和許可權表
(1)分析 角色與許可權 表關係
(2)建立表:多對多的關係(角色與許可權)
》》 建立許可權表
》》 第二個中間表
》》建立外來鍵約束
》》給許可權表新增資料
》》給中間表新增資料
》》 建立許可權表
create table privilege(
pid int primary key auto_increment,
pname varchar(20)
)
》》 第二個中間表
create table privilege_role(
pid_fk int , -- 外來鍵
rid_fk int -- 外來鍵
)
》》建立外來鍵約束
alter table privilege_role add foreign key (pid_fk) references privilege(pid);
alter table privilege_role add foreign key (rid_fk) references role(rid);
》》給許可權表新增資料
》》給中間表新增資料
總結
(1)分析一對多·,還是多對多
(2)建表,加外來鍵
(3)不用所有題都做,只要選一道題精做
相關文章
- sql多表的關係介紹SQL
- 淺談Mybatis中是如何實現這種多表關係的對映MyBatis
- 關係型資料庫之SQL資料庫SQL
- Mybatis【15】-- Mybatis一對一多表關聯查詢MyBatis
- mybatis關聯關係對映MyBatis
- 資料庫多對多表關係資料資料庫
- Oracle\MS SQL Server Update多表關聯更新OracleSQLServer
- sql 多表關聯刪除表資料SQL
- SQL複習SQL
- MyBatis加強(1)~myBatis物件關係對映(多對一關係、一對多關係)、延遲/懶載入MyBatis物件
- OCP 複習筆記之PL/SQL (1)筆記SQL
- OCP 複習筆記之PL/SQL (3)筆記SQL
- OCP 複習筆記之PL/SQL (2)筆記SQL
- OCP 複習筆記之PL/SQL (4)筆記SQL
- OCP 複習筆記之PL/SQL (5)筆記SQL
- MyBatis複習筆記MyBatis筆記
- Mybatis20_mybatis的多表操作8MyBatis
- JavaScript 複習之 this關鍵字JavaScript
- Mybatis連線池_動態sql語句_多表查詢實現MyBatisSQL
- SQL優化之多表關聯查詢-案例一SQL優化
- MyBatis框架之SQL對映和動態SQLMyBatis框架SQL
- Python中的賦值與淺複製與深複製之間的關係Python賦值
- Mybatis介紹之 動態SQLMyBatisSQL
- 兩表關聯查詢:sql、mybatisSQLMyBatis
- 【學習】SQL基礎-006-多表連線查詢SQL
- sql運算元據庫(3)-->外來鍵約束、資料庫表之間的關係、三大正規化、多表查詢、事務SQL資料庫
- JavaScript 複習之 Object物件的相關方法JavaScriptObject物件
- SQL效能第1篇:關係優化SQL優化
- SQL與NoSQL(關係型與非關係型)資料庫的區別SQL資料庫
- 關於Mybatis中SQL語句的整理MyBatisSQL
- JPA的多表複雜查詢
- 資料結構-邏輯關係&物理關係、時間複雜度、空間複雜度、順序表資料結構時間複雜度
- 統計學三大相關係數之Pearson相關係數、Spearman相關係數
- 【MyBatis學習總結 (五),動態SQL】MyBatisSQL
- mybatis多表聯合查詢的寫法MyBatis
- SQL、Mysql、資料庫到底什麼關係MySql資料庫
- 阿里面試題:Mybatis中的Dao介面和XML檔案裡的SQL是如何建立關係的?阿里面試題MyBatisXMLSQL
- 【集合論】關係閉包 ( 關係閉包求法 | 關係圖求閉包 | 關係矩陣求閉包 | 閉包運算與關係性質 | 閉包複合運算 )矩陣