SQL語(yǔ)句之如何用JOIN連接多個(gè)表
SQL語(yǔ)句 用JOIN連接多個(gè)表
連接兩個(gè)數(shù)據(jù)表的用法 :
SELECT * FROM actor INNER JOIN film_actor ON actor.actor_id = film_actor.actor_id ;
語(yǔ)法格式可以概括為:
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;
語(yǔ)法格式可以概括為:
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;
語(yǔ)法格式可以概括為:
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);
語(yǔ)法格式概括為:
FROM 表1 INNER JOIN 表2 USING(同名字段名);
SQL語(yǔ)句多表連接查詢語(yǔ)法
總結(jié):內(nèi)連接就是兩個(gè)表的交集 ,左外連接就是左邊表加兩表交集 ,右外連接就是右邊表加兩表交集
一、外連接
1.左連接 left join 或 left outer join
SQL語(yǔ)句:select * from student left join score on student.Num=score.Stu_id;
2.右連接 right join 或 right outer join
SQL語(yǔ)句:select * from student right join score on student.Num=score.Stu_id;
3.完全外連接 full join 或 full outer join
SQL語(yǔ)句:select * from student full join score on student.Num=score.Stu_id;
通過(guò)上面這三種方法就可以把不同的表連接到一起,變成一張大表,之后的查詢操作就簡(jiǎn)單一些了。
交叉連接查詢,這種查詢方式基本不會(huì)使用,原因就是這種查詢方式得到的是兩個(gè)表的乘積(笛卡兒集)
語(yǔ)法就是select * from a,b;則盡量不使用此語(yǔ)句,產(chǎn)生的結(jié)果過(guò)于繁瑣。
內(nèi)連接查詢,可以有效的去除笛卡爾集現(xiàn)象
內(nèi)連接查詢分為兩類:
二、內(nèi)連接
join 或 inner join
SQL語(yǔ)句:select * from student inner join score on student.Num=score.Stu_id;
此時(shí)的語(yǔ)句就相當(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,沒(méi)有where指定查詢條件的子句的交叉聯(lián)接將產(chǎn)生兩表的笛卡爾積。
SQL語(yǔ)句:select * from student cross join score;
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL 使用事件(Events)完成計(jì)劃任務(wù)
事件(Events) 是在 MySQL 5.1后引入的,有點(diǎn)類似操作系統(tǒng)的計(jì)劃任務(wù)(cron),但是周期性任務(wù)是內(nèi)置在 MySQL 服務(wù)端執(zhí)行的。本文講述MySQL如何用事件完成計(jì)劃任務(wù)2021-05-05mysql多表join時(shí)候update更新數(shù)據(jù)的方法
如果item表的name字段為''就用resource_library 表的resource_name字段前面加上字符串Review更新它,他們的關(guān)聯(lián)關(guān)系在表resource_review_link中。2011-03-03Win 8或以上系統(tǒng)下MySQL最新版5.7.17(64bit ZIP綠色版)安裝部署教程
這篇文章主要為大家詳細(xì)介紹了Win 8或以上系統(tǒng)下MySQL最新版5.7.17 64bit ZIP綠色版安裝部署教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05MySQL千萬(wàn)級(jí)大數(shù)據(jù)SQL查詢優(yōu)化知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理的是一篇關(guān)于MySQL千萬(wàn)級(jí)大數(shù)據(jù)SQL查詢優(yōu)化知識(shí)點(diǎn)總結(jié)內(nèi)容,有需要的朋友們可以學(xué)習(xí)參考下。2019-12-12Mysql服務(wù)器的安裝配置與啟動(dòng)關(guān)閉方法詳解
MySQL 是最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),在 WEB 應(yīng)用方面 MySQL 是最好的 RDBMS(Relational Database Management System:關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng))應(yīng)用軟件之一2021-10-10MySQL優(yōu)化之對(duì)RAND()的優(yōu)化方法
這篇文章主要介紹了MySQL優(yōu)化之對(duì)RAND()的優(yōu)化方法,本文詳細(xì)分析了Mysql中對(duì)RAND()的幾種優(yōu)化方法,并最終得出一個(gè)結(jié)論,需要的朋友可以參考下2014-07-07