SQL語句之如何用JOIN連接多個(gè)表
SQL語句 用JOIN連接多個(gè)表
連接兩個(gè)數(shù)據(jù)表的用法 :
SELECT * FROM actor INNER JOIN film_actor ON actor.actor_id = film_actor.actor_id ;
語法格式可以概括為:
FROM 表1 INNER JOIN 表2 ON 表1.字段號(hào)=表2.字段號(hào)
連接三個(gè)數(shù)據(jù)表的用法:
SELECT * FROM (actor INNER JOIN film_actor ON actor.actor_id = film_actor.actor_id) INNER JOIN film ON film_actor.film_id = film.film_id;
語法格式可以概括為:
FROM (表1 INNER JOIN 表2 ON 表1.字段號(hào)=表2.字段號(hào)) INNER JOIN 表3 ON 表1.字段號(hào)=表3.字段號(hào)
連接四個(gè)數(shù)據(jù)表的用法:
SELECT * FROM ((actor INNER JOIN film_actor ON actor.actor_id = film_actor.actor_id) INNER JOIN film ON film_actor.film_id = film.film_id) INNER JOIN film_category ON film_actor.film_id = film_category.film_id;
語法格式可以概括為:
FROM ((表1 INNER JOIN 表2 ON 表1.字段號(hào)=表2.字段號(hào)) INNER JOIN 表3 ON 表1.字段號(hào)=表3.字段號(hào)) INNER JOIN 表4 ON Member.字段號(hào)=表4.字段號(hào)
還可以使用 USING
USING要求,負(fù)責(zé)連接的兩個(gè)實(shí)體之間的字段名稱一致。
建議是,在兩個(gè)表中,有同名字段時(shí),使用USING;而在通用條件時(shí),使用ON。
SELECT * FROM actor INNER JOIN film_actor USING(actor_id);
語法格式概括為:
FROM 表1 INNER JOIN 表2 USING(同名字段名);
SQL語句多表連接查詢語法
總結(jié):內(nèi)連接就是兩個(gè)表的交集 ,左外連接就是左邊表加兩表交集 ,右外連接就是右邊表加兩表交集

一、外連接
1.左連接 left join 或 left outer join
SQL語句:select * from student left join score on student.Num=score.Stu_id;
2.右連接 right join 或 right outer join
SQL語句:select * from student right join score on student.Num=score.Stu_id;
3.完全外連接 full join 或 full outer join
SQL語句:select * from student full join score on student.Num=score.Stu_id;
通過上面這三種方法就可以把不同的表連接到一起,變成一張大表,之后的查詢操作就簡(jiǎn)單一些了。
交叉連接查詢,這種查詢方式基本不會(huì)使用,原因就是這種查詢方式得到的是兩個(gè)表的乘積(笛卡兒集)
語法就是select * from a,b;則盡量不使用此語句,產(chǎn)生的結(jié)果過于繁瑣。
內(nèi)連接查詢,可以有效的去除笛卡爾集現(xiàn)象
內(nèi)連接查詢分為兩類:
二、內(nèi)連接
join 或 inner join
SQL語句:select * from student inner join score on student.Num=score.Stu_id;
此時(shí)的語句就相當(dāng)于:select * from student,score where student.ID=course.ID;
內(nèi)連接查詢分為兩類:
隱式內(nèi)連接
select * from A,B where 條件 隱式連接使用別名:
select * from A 別名1,B 別名2 where 別名1.xx=別名2.xx;
顯示內(nèi)連接
select * from A inner join B on 條件 (inner可以省略) 顯示連接使用別名:
select * from A 別名1 inner join B 別名2 on 別名1.xx=別名2.xx
舉例:
三、交叉連接
cross join,沒有where指定查詢條件的子句的交叉聯(lián)接將產(chǎn)生兩表的笛卡爾積。
SQL語句:select * from student cross join score;
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
深入聊聊MySQL中各種對(duì)象的大小長(zhǎng)度限制
在使用mysql的過程中總會(huì)遇到或大或小的問題,這篇文章主要給大家介紹了關(guān)于MySQL中各種對(duì)象的大小長(zhǎng)度限制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-12-12
MySQL修改默認(rèn)存儲(chǔ)引擎的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄狹ySQL修改默認(rèn)存儲(chǔ)引擎的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03
MySQL數(shù)據(jù)更新操作的兩種辦法(數(shù)據(jù)可視化工具和SQL語句)
MySQL是最常用的數(shù)據(jù)庫(kù),在數(shù)據(jù)庫(kù)操作中,基本都是增刪改查操作,簡(jiǎn)稱CRUD,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)更新操作的兩種辦法,需要的朋友可以參考下2023-03-03
windows mysql 自動(dòng)備份的幾種方法匯總
本篇文章主要對(duì)windows mysql 自動(dòng)備份的幾種方法進(jìn)行整理,具有很好的參考價(jià)值,需要的朋友一起來看下吧2016-12-12
mysql5.7 新增的json字段類型用法實(shí)例分析
這篇文章主要介紹了mysql5.7 新增的json字段類型用法,結(jié)合實(shí)例形式分析了mysql5.7 新增的json字段類型具體功能、使用方法及操作注意事項(xiàng),需要的朋友可以參考下2020-02-02
MySQL使用SHOW PROCESSLIST的實(shí)現(xiàn)
本文主要介紹了MySQL使用SHOW PROCESSLIST的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03

