mysql連接查詢?cè)斀?/h1>
更新時(shí)間:2022年05月19日 10:07:47 作者:one?2?1?
這篇文章主要介紹了mysql連接查詢,當(dāng)查詢結(jié)果的列來(lái)源于多張表時(shí),需要將多張表連接成一個(gè)大的數(shù)據(jù)集,再選擇合適的列返回,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧
1.連接查詢
作用:當(dāng)查詢結(jié)果的列來(lái)源于多張表時(shí),需要將多張表連接成一個(gè)大的數(shù)據(jù)集,再選擇合適的列返回
2、連接類型
內(nèi)連接
定義:
內(nèi)連接查詢:查詢結(jié)果為兩個(gè)表匹配到的數(shù)據(jù)

語(yǔ)法1:
select * from 表1
inner join 表2 on 表1.列 = 表2.列
例:查詢學(xué)生信息及學(xué)生成績(jī)

語(yǔ)法2:
?select * from 表1,表2 on 表1.列 = 表2.列
注:通常不使用此語(yǔ)法,效率較低
3個(gè)表連接
-- 查詢學(xué)生信息及學(xué)生的課程對(duì)應(yīng)的成績(jī)

顯示指定列

左連接
定義:
查詢的結(jié)果為兩個(gè)表匹配到的數(shù)據(jù)加左表特有的數(shù)據(jù),對(duì)于右表中不存在的數(shù)據(jù)(匹配不到)使用null填充

語(yǔ)法:
select * from 表1
left join 表2 on 表1 .列 = 表2.列
例:
查詢所有學(xué)生的成績(jī),包括沒(méi)有成績(jī)的學(xué)生

例:
查詢所有學(xué)生的成績(jī),包括沒(méi)有成績(jī)的學(xué)生,需要顯示課程名

右連接
定義:
右連接查詢:查詢結(jié)果為兩個(gè)表匹配到的數(shù)據(jù)加右表特有的數(shù)據(jù),對(duì)于左邊中不存在的數(shù)據(jù)使用null填充

語(yǔ)法:
select * from 表1
right join 表2 on 表1 .列 = 表2.列
例:查詢所有學(xué)生的成績(jī),包括沒(méi)有成績(jī)的學(xué)生

例:
查詢所有學(xué)生的成績(jī),包括沒(méi)有成績(jī)的學(xué)生,需要顯示課程名

自關(guān)聯(lián)
定義
連接查詢的一種應(yīng)用,對(duì)同一個(gè)表查詢多次,把查詢多次得到的結(jié)果連接組成新的結(jié)果
主要應(yīng)用場(chǎng)景:數(shù)據(jù)有上下級(jí)關(guān)系,并且存于同一個(gè)表中
例:查詢河南省的所有城市

例:查詢鄭州市的所有區(qū)縣

例:查詢河南省所有區(qū)縣

子查詢
定義
在一個(gè)select 語(yǔ)句中,嵌入另外一個(gè)select語(yǔ)句,那么嵌入的那個(gè)select語(yǔ)句稱之為子查詢語(yǔ)句
主查詢
外城的select稱之為主查詢語(yǔ)句
主查詢和子查詢的關(guān)系
子查詢是嵌入到主查詢中子查詢是輔助主查詢的,要么充當(dāng)條件,要么充當(dāng)數(shù)據(jù)源子查詢是可以獨(dú)立存在的語(yǔ)句是一條轉(zhuǎn)正的select語(yǔ)句
子查詢充當(dāng)條件
以下例子中子查詢返回結(jié)果只有一個(gè)值(一行一列),這種稱之為標(biāo)量子查詢
例1:查詢大于平均年齡的學(xué)生
-- 查詢班里學(xué)生的平均年齡
SELECT AVG(age) FROM students --21.5833
-- 查詢大于平均年齡的學(xué)生
SELECT * from students where age > 21.5833
SELECT * FROM students where age >(SELECT AVG(age) FROM students);
以下例子返回?cái)?shù)據(jù)結(jié)果是一列數(shù)據(jù)(一列多行),這種稱之為列子查詢
例: 查詢18歲學(xué)生的成績(jī),要求顯示成績(jī)
-- 學(xué)生表中查詢18歲學(xué)生的學(xué)號(hào)
SELECT studentNo from students WHERE age = 18
-- 成績(jī)表中根據(jù)學(xué)號(hào)查詢成績(jī)
SELECT * FROM scores where studentNo in ('002','006' )
SELECT * FROM scores where studentNo in (SELECT studentNo from students WHERE age = 18 )
以下例子查詢的結(jié)果是一行(一行多列),這種稱之為行子查詢
例:查詢和王昭君同班、同齡的學(xué)生信息
SELECT class,age from students where name = '王昭君'
SELECT * from students where class = '1班' and age = 20
SELECT * from students where (class,age) = ('1班' , '20')
SELECT * from students where (class,age) = (SELECT class,age from students where name = '王昭君')
子查詢充當(dāng)數(shù)據(jù)源
以下例子子查詢返回的結(jié)果是多行多列(相當(dāng)于一個(gè)表),這種稱之為表級(jí)子查詢;
例:查詢數(shù)據(jù)庫(kù)和系統(tǒng)測(cè)試的課程成績(jī)

子查詢中特定關(guān)鍵字使用
in范圍
格式:主查詢where條件in(列子查詢)
any|some任意一個(gè)
格式:主查詢where 列 = any(列子查詢)
在條件查詢的結(jié)果中匹配任意一個(gè)幾個(gè),等價(jià)于in
all
格式:主查詢where列 = all(列子查詢):等價(jià)于里面所有
格式:主查詢where列<>all(列子查詢):不等于其中所有
到此這篇關(guān)于mysql連接查詢的文章就介紹到這了,更多相關(guān)mysql連接查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
-
mysql中使用sql命令將時(shí)間戳解析成datetime類型存入
這篇文章主要介紹了mysql中使用sql命令將時(shí)間戳解析成datetime類型存入,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教 2022-11-11
-
MySQL 那些常見(jiàn)的錯(cuò)誤設(shè)計(jì)規(guī)范,你都知道嗎
今天來(lái)看一看 MySQL 設(shè)計(jì)規(guī)范中幾個(gè)常見(jiàn)的錯(cuò)誤例子,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧 2021-07-07
-
mysql 5.7.20常用下載、安裝和配置方法及簡(jiǎn)單操作技巧(解壓版免安裝)
這篇文章主要介紹了mysql 5.7.20常用下載、安裝和配置方法及簡(jiǎn)單操作技巧(解壓版免安裝)的相關(guān)資料,需要的朋友可以參考下 2017-11-11
-
Mysql的timestamp時(shí)間戳詳解及2038問(wèn)題
本文主要介紹了Mysql的timestamp時(shí)間戳詳解及2038問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧 2023-04-04
-
mysql優(yōu)化取隨機(jī)數(shù)據(jù)慢的方法
mysql取隨機(jī)數(shù)據(jù)慢,怎么辦?下面小編與大家一起來(lái)看看mysql取隨機(jī)數(shù)據(jù)慢優(yōu)化的過(guò)程。
2013-11-11
-
MySQL數(shù)據(jù)庫(kù)如何克隆(帶腳本)
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)如何克隆(帶腳本)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教 2024-03-03
-
spark rdd轉(zhuǎn)dataframe 寫入mysql的實(shí)例講解
今天小編就為大家分享一篇spark rdd轉(zhuǎn)dataframe 寫入mysql的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧 2018-06-06
最新評(píng)論
1.連接查詢
作用:當(dāng)查詢結(jié)果的列來(lái)源于多張表時(shí),需要將多張表連接成一個(gè)大的數(shù)據(jù)集,再選擇合適的列返回
2、連接類型
內(nèi)連接
定義:
內(nèi)連接查詢:查詢結(jié)果為兩個(gè)表匹配到的數(shù)據(jù)
語(yǔ)法1:
select * from 表1 inner join 表2 on 表1.列 = 表2.列
例:查詢學(xué)生信息及學(xué)生成績(jī)
語(yǔ)法2:
?select * from 表1,表2 on 表1.列 = 表2.列
注:通常不使用此語(yǔ)法,效率較低
3個(gè)表連接
-- 查詢學(xué)生信息及學(xué)生的課程對(duì)應(yīng)的成績(jī)
顯示指定列
左連接
定義:
查詢的結(jié)果為兩個(gè)表匹配到的數(shù)據(jù)加左表特有的數(shù)據(jù),對(duì)于右表中不存在的數(shù)據(jù)(匹配不到)使用null填充
語(yǔ)法:
select * from 表1 left join 表2 on 表1 .列 = 表2.列
例:
查詢所有學(xué)生的成績(jī),包括沒(méi)有成績(jī)的學(xué)生
例:
查詢所有學(xué)生的成績(jī),包括沒(méi)有成績(jī)的學(xué)生,需要顯示課程名
右連接
定義:
右連接查詢:查詢結(jié)果為兩個(gè)表匹配到的數(shù)據(jù)加右表特有的數(shù)據(jù),對(duì)于左邊中不存在的數(shù)據(jù)使用null填充
語(yǔ)法:
select * from 表1 right join 表2 on 表1 .列 = 表2.列
例:查詢所有學(xué)生的成績(jī),包括沒(méi)有成績(jī)的學(xué)生
例:
查詢所有學(xué)生的成績(jī),包括沒(méi)有成績(jī)的學(xué)生,需要顯示課程名
自關(guān)聯(lián)
定義
連接查詢的一種應(yīng)用,對(duì)同一個(gè)表查詢多次,把查詢多次得到的結(jié)果連接組成新的結(jié)果
主要應(yīng)用場(chǎng)景:數(shù)據(jù)有上下級(jí)關(guān)系,并且存于同一個(gè)表中
例:查詢河南省的所有城市
例:查詢鄭州市的所有區(qū)縣
例:查詢河南省所有區(qū)縣
子查詢
定義
在一個(gè)select 語(yǔ)句中,嵌入另外一個(gè)select語(yǔ)句,那么嵌入的那個(gè)select語(yǔ)句稱之為子查詢語(yǔ)句
主查詢
外城的select稱之為主查詢語(yǔ)句
主查詢和子查詢的關(guān)系
子查詢是嵌入到主查詢中子查詢是輔助主查詢的,要么充當(dāng)條件,要么充當(dāng)數(shù)據(jù)源子查詢是可以獨(dú)立存在的語(yǔ)句是一條轉(zhuǎn)正的select語(yǔ)句
子查詢充當(dāng)條件
以下例子中子查詢返回結(jié)果只有一個(gè)值(一行一列),這種稱之為標(biāo)量子查詢
例1:查詢大于平均年齡的學(xué)生
-- 查詢班里學(xué)生的平均年齡 SELECT AVG(age) FROM students --21.5833 -- 查詢大于平均年齡的學(xué)生 SELECT * from students where age > 21.5833 SELECT * FROM students where age >(SELECT AVG(age) FROM students);
以下例子返回?cái)?shù)據(jù)結(jié)果是一列數(shù)據(jù)(一列多行),這種稱之為列子查詢
例: 查詢18歲學(xué)生的成績(jī),要求顯示成績(jī)
-- 學(xué)生表中查詢18歲學(xué)生的學(xué)號(hào) SELECT studentNo from students WHERE age = 18 -- 成績(jī)表中根據(jù)學(xué)號(hào)查詢成績(jī) SELECT * FROM scores where studentNo in ('002','006' ) SELECT * FROM scores where studentNo in (SELECT studentNo from students WHERE age = 18 )
以下例子查詢的結(jié)果是一行(一行多列),這種稱之為行子查詢
例:查詢和王昭君同班、同齡的學(xué)生信息
SELECT class,age from students where name = '王昭君' SELECT * from students where class = '1班' and age = 20 SELECT * from students where (class,age) = ('1班' , '20') SELECT * from students where (class,age) = (SELECT class,age from students where name = '王昭君')
子查詢充當(dāng)數(shù)據(jù)源
以下例子子查詢返回的結(jié)果是多行多列(相當(dāng)于一個(gè)表),這種稱之為表級(jí)子查詢;
例:查詢數(shù)據(jù)庫(kù)和系統(tǒng)測(cè)試的課程成績(jī)
子查詢中特定關(guān)鍵字使用
in范圍
格式:主查詢where條件in(列子查詢)
any|some任意一個(gè)
格式:主查詢where 列 = any(列子查詢)
在條件查詢的結(jié)果中匹配任意一個(gè)幾個(gè),等價(jià)于in
all
格式:主查詢where列 = all(列子查詢):等價(jià)于里面所有
格式:主查詢where列<>all(列子查詢):不等于其中所有
到此這篇關(guān)于mysql連接查詢的文章就介紹到這了,更多相關(guān)mysql連接查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql中使用sql命令將時(shí)間戳解析成datetime類型存入
這篇文章主要介紹了mysql中使用sql命令將時(shí)間戳解析成datetime類型存入,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11MySQL 那些常見(jiàn)的錯(cuò)誤設(shè)計(jì)規(guī)范,你都知道嗎
今天來(lái)看一看 MySQL 設(shè)計(jì)規(guī)范中幾個(gè)常見(jiàn)的錯(cuò)誤例子,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-07-07mysql 5.7.20常用下載、安裝和配置方法及簡(jiǎn)單操作技巧(解壓版免安裝)
這篇文章主要介紹了mysql 5.7.20常用下載、安裝和配置方法及簡(jiǎn)單操作技巧(解壓版免安裝)的相關(guān)資料,需要的朋友可以參考下2017-11-11Mysql的timestamp時(shí)間戳詳解及2038問(wèn)題
本文主要介紹了Mysql的timestamp時(shí)間戳詳解及2038問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04mysql優(yōu)化取隨機(jī)數(shù)據(jù)慢的方法
mysql取隨機(jī)數(shù)據(jù)慢,怎么辦?下面小編與大家一起來(lái)看看mysql取隨機(jī)數(shù)據(jù)慢優(yōu)化的過(guò)程。2013-11-11MySQL數(shù)據(jù)庫(kù)如何克隆(帶腳本)
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)如何克隆(帶腳本)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03spark rdd轉(zhuǎn)dataframe 寫入mysql的實(shí)例講解
今天小編就為大家分享一篇spark rdd轉(zhuǎn)dataframe 寫入mysql的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06