你知道哪幾種MYSQL的連接查詢
前言
查詢信息的來(lái)源如果來(lái)自多張表,則必須對(duì)這些表進(jìn)行連接查詢。連接是把不同表的記錄連到一起的最普遍的方法,通過連接查詢可將多個(gè)表作為一個(gè)表進(jìn)行處理。連接查詢分為內(nèi)連接和外連接。
一,交叉連接
交叉連接,又稱“笛卡爾連接”或“叉乘”,它是所有類型的內(nèi)連接的基礎(chǔ)。
示例:實(shí)現(xiàn)線路表與車輛表,其語(yǔ)句如下:
`slelect*from line CROSS JOIN vehicle 等價(jià)于:select*from line,vehicle
二,內(nèi)連接
內(nèi)連接是應(yīng)用程序中非常常見的連接操作,它一般都是默認(rèn)的連接類型。
語(yǔ)法如下:
SElECT fieldlist FROM table1 【INNER】JOIN table2 ON table1.column1=table2.column2 【where condition】
三,自然連接
自然連接是一種特殊的內(nèi)連接,它要求相連的兩張表的依據(jù)列必須是相同字段(字段名相同,字段屬性相同)。
語(yǔ)法如下:
select fieldlist FROM table1 NATURAL JOIN table2 【where condition】
四,多表連接查詢
如果查詢的信息來(lái)源多張表,則可通過兩兩相連的反式建立多表連接查詢。
三表連接查詢語(yǔ)法如下:
SELECT fieldllist FROM table1 JOIN table2 ON tabke1.column1=table.column2_1 JOIN table3 on table2.column2_2=table.column3【where condition】
如果在FROM子句中,直接列出所有要連接的表,然后在WHERE子句中指定連接條件,此為簡(jiǎn)單多表查詢,它與內(nèi)連接功能相同。
使用兩表連接查詢語(yǔ)法格式如下:
SELECT fieldlist FROM table1, table2 HERE table1.column1=table2.column2 【and其他條件】
五,外連接
在內(nèi)連接查詢中,只有滿足連接條件的記錄才能出現(xiàn)在查詢結(jié)果中。但在實(shí)際血用中,如果秀望不滿足連接條件的記錄也在查詢結(jié)果中出現(xiàn),這時(shí)需要使用外連接查詢。外連接分左外連接和右外連接。
語(yǔ)法如下:
`SELECT字段名稱FROM表名1 LEFT|RIGHT|FULL [OUTER] JOIN 表名2 ON 表名1.字段名1=表名2.字段名2`
1,左外連接
在外連接的結(jié)果集包括左表的所有記錄和右表中滿足連接條件的記錄,結(jié)果集中那些不符合連接條件的來(lái)源于表的列值為nullo。
2,右外連接
右外連接是左外連接的反向連接。右外連接的結(jié)果集包括右表的所有記錄和左表中滿足連換條件的記象,結(jié)果集中那些不符合連接條件的來(lái)源于左表的列值為nullo。
作業(yè):
獲取所有非空調(diào)車的車牌號(hào)、型號(hào)和司機(jī)姓名、所屬線路的線路號(hào)、起點(diǎn)站和終點(diǎn)站信息;
SELECT v.plateNO 車牌號(hào), v.model 型號(hào), d. NAME 司機(jī)姓名, l.lineNo 線路號(hào), l.from_station 起點(diǎn)站, l.end_station 終點(diǎn)站 FROM line l, vehicle v, driver d WHERE v.type = '非空調(diào)車' AND l.lineID = v.lineID AND d.driverID = v.driverID;
獲取公交二公司所有司機(jī)信息。要求輸出司機(jī)姓名、身份證、性別和電話;
SELECT NAME 司機(jī)姓名, licenseNO 身份證, d.gender 性別, phone 電話 FROM vehicle v, driver d, line l WHERE v.driverID = d.driverID AND v.lineID = l.lineID AND company = '公交二公司' GROUP BY
查詢所有非空調(diào)車的車牌號(hào)、型號(hào)、線路號(hào)、起點(diǎn)站和終點(diǎn)站;
SELECT v.plateNO 車牌號(hào), v.model 型號(hào), l.lineNo 線路號(hào), l.from_station 起點(diǎn)站, l.end_station 終點(diǎn)站 FROM line l, vehicle v WHERE v.type = '非空調(diào)車' AND l.lineID = v.lineID;
顯示所有線路及其所配車輛基本信息,并查詢車輛所配司機(jī)相關(guān)信息,要求輸出司機(jī)姓名、性別、電話、車牌號(hào)、型號(hào)、線路號(hào)、起點(diǎn)站和終點(diǎn)站;
SELECT d.NAME 司機(jī)姓名, licenseNO 身份證, d.gender 性別, phone 電話, v.plateNO 車牌號(hào), v.model 型號(hào), l.lineNo 線路號(hào), l.from_station 起點(diǎn)站, l.end_station 終點(diǎn)站 FROM vehicle v, driver d, line l WHERE v.driverID = d.driverID AND v.lineID = l.lineID GROUP BY 司機(jī)姓名;
6.獲取訂單 ID 為 4 的訂購(gòu)明細(xì)信息,要求輸出商品名、單價(jià)和件數(shù)。
SELECT c.cName 客戶姓名, o.ordersDate 下單日期, g.goodsName 商品名, g.unitPrice 單價(jià), od.quantity 件數(shù) FROM ordersdetail od, goods g, orders o, customer c WHERE c.cName = '王傳華' AND c.customerID = o.customerID AND o.ordersID = od.ordersID AND od.goodsID = g.goodsID;
獲取客戶“王傳華”所下訂單詳細(xì)信息,要求顯示客戶姓名、訂單 ID、下單日期、商品名、單價(jià)和件數(shù)。
SELECT c.cName 客戶姓名, o.ordersDate 下單日期, g.goodsName 商品名, g.unitPrice 單價(jià), od.quantity 件數(shù) FROM ordersdetail od, goods g, orders o, customer c WHERE c.cName = '王傳華' AND c.customerID = o.customerID AND o.ordersID = od.ordersID AND od.goodsID = g.goodsID;
使用左接獲取所有客戶的基本信息以及訂購(gòu)信息,要求輸出客戶姓名、電話、訂單 ID 和下單時(shí)間。
SELECT c.cName 客戶姓名, c.phone 電話, o.ordersID 訂單ID, o.ordersDate 下單時(shí)間 FROM customer c LEFT JOIN orders o on c.customerID=o.customerID;
8.使用右接獲取所有客戶的基本信息以及訂購(gòu)信息,要求輸出客戶姓名、電話、訂單 ID 和下單時(shí)間。
SELECT c.cName 客戶姓名, c.phone 電話, o.ordersID 訂單ID, o.ordersDate 下單時(shí)間 FROM orders o right JOIN customer c on c.customerID=o.customerID;
總結(jié)
到此這篇關(guān)于MYSQL連接查詢的文章就介紹到這了,更多相關(guān)MYSQL連接查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Windows 10系統(tǒng)下徹底刪除卸載MySQL的方法教程
mysql數(shù)據(jù)庫(kù)的重新安裝是一個(gè)麻煩的問題,很難卸除干凈,下面這篇文章主要給大家介紹了關(guān)于在Windows 10系統(tǒng)下徹底刪除卸載MySQL的方法教程,對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-07-07Win2003服務(wù)器安裝及設(shè)置教程 MySQL安全設(shè)置圖文教程
Win2003服務(wù)器安裝及設(shè)置教程,一般腳本之家為客戶都是將MySQL運(yùn)行于普通用戶下,這樣才會(huì)盡量避免提權(quán),新建用戶什么的2012-05-05Mysql 5.6 "隱式轉(zhuǎn)換"導(dǎo)致的索引失效和數(shù)據(jù)不準(zhǔn)確的問題
這篇文章主要介紹了Mysql 5.6 “隱式轉(zhuǎn)換”導(dǎo)致的索引失效和數(shù)據(jù)不準(zhǔn)確的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12MySQL數(shù)據(jù)庫(kù)遷移data文件夾位置詳細(xì)步驟
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)遷移data文件夾詳細(xì)步驟,需要的朋友可以參考下2014-03-03MySQL的Replace into 與Insert into on duplicate key update真正的不同
今天聽同事介紹oracle到mysql的數(shù)據(jù)migration,他用了Insert into ..... on duplicate key update ...,我當(dāng)時(shí)就想怎么不用Replace呢,于是回來(lái)就仔細(xì)查了下,它們果然還是有區(qū)別的2014-02-02數(shù)據(jù)庫(kù)實(shí)現(xiàn)行列轉(zhuǎn)換(mysql示例)
最近突然玩起了sql語(yǔ)句,想著想著便給自己出了一道題目:“行列轉(zhuǎn)換”。起初瞎折騰了不少時(shí)間也上網(wǎng)參考了一些博文,不過大多數(shù)是采用oracle數(shù)據(jù)庫(kù)當(dāng)中的一些便捷函數(shù)進(jìn)行處理,比如”pivot”。那么,在Mysql環(huán)境下如何處理?下面通過這篇文章我們來(lái)一起看看吧。2016-12-12Mysql 5.7.18 解壓版下載安裝及啟動(dòng)mysql服務(wù)的圖文詳解
這篇文章主要介紹了Mysql 5.7.18 解壓版下載安裝及啟動(dòng)mysql服務(wù)的圖文詳解,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-05-05