欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL連接查詢你真的學(xué)會(huì)了嗎?

 更新時(shí)間:2021年06月02日 10:20:55   作者:代碼魂  
日常使用數(shù)據(jù)庫查詢語句時(shí),單表查詢嘗嘗不能滿足項(xiàng)目的業(yè)務(wù)需求,在項(xiàng)目開發(fā)過程中,有很多需求都是要涉及到多表的連接查詢,這篇文章主要給大家介紹了關(guān)于MySQL連接查詢的相關(guān)資料,需要的朋友可以參考下

1.內(nèi)連接查詢概要

       內(nèi)連接是應(yīng)用程序中非常常見的連接操作,它一般都是默認(rèn)的連接類型。內(nèi)連接基于連接謂詞,它將兩張表(如A和B)的列組合在一起,產(chǎn)生新的結(jié)果表。內(nèi)連接查詢會(huì)將A表的每一行和B表的每一行進(jìn)行比較,并找出滿足連接謂詞的組合。當(dāng)連接謂詞被滿足,A和B中匹配的行會(huì)按列組合(并排組合)成結(jié)果集中的一行。

       內(nèi)連接查詢操作列出與連接條件匹配的數(shù)據(jù)行,它使用比較運(yùn)算符比較被連接列的列值。內(nèi)連接分3種:交叉連接相等連接和自然連接。

2.交叉連接(笛卡爾積)

       交叉連接(Cross Join) ,又稱“笛卡爾連接(Cartesian Join) "或“叉乘(Product) ",它是所有類型的內(nèi)連接的基礎(chǔ)。

       如果把表視為行記錄的集合,那么交叉連接即返回這兩個(gè)集合的笛卡爾積,返回到結(jié)果集合中的數(shù)據(jù)行數(shù)等于第一張表中符合查詢條件的數(shù)據(jù)行數(shù)乘以第二個(gè)表中符合查詢條件的數(shù)據(jù)行數(shù)。這其實(shí)等價(jià)于內(nèi)連接的連接條件為“永真” ,或連接條件不存在。如果A和B是兩個(gè)集合,它們的交叉連接就記為: A x B.

       定義線路表與車輛表的交叉連接(笛卡爾積) 。

示例:

實(shí)現(xiàn)線路表與車輛表笛卡爾積

SELECT COUNT(*)
FROM line 
CROSS JOIN vehicle

3.內(nèi)連接語法與示例

語法:

SELECT fieldlist
FROM table1 [INNER] JOIN table2 
  ON table1.column1=table2.column2
[WHERE condition]

示例1:

使用內(nèi)連接獲取車輛型號(hào)含有“DD”字樣的車輛信息和司機(jī)信息,要求車輛信息為全部列,司機(jī)信息中只需包含姓名和身份證

SELECT v.*,d.name,d.licenseNo
FROM vehicle v JOIN driver d
  ON v.driverID=d.driverID
WHERE model LIKE '%DD%'

示例2:

使用內(nèi)連接獲取年齡大于35歲的司機(jī)信息和該司機(jī)所駕駛的車輛信息,要求車輛信息為全部列,司機(jī)信息中只包含姓名、出生年月和電話

SELECT v.*,d.name,d.licenseNo,d.phone
FROM vehicle v INNER JOIN driver d
  ON v.driverID=d.driverID
WHERE CEIL(DATEDIFF(NOW(),birthday)/365)>35

4.自然連接

自然連接(Natural Join)是一種特殊的內(nèi)連接,它要求相連接的兩張表的連接依據(jù)列心須是相同的字段(字段온相同,字段屬性相同)。在自然連接中兩張表的所有名稱相同的列都將被比較,并且在結(jié)果集中把重復(fù)的列去掉,結(jié)果集中兩張表中名稱相同的列僅出現(xiàn)一次。而普通的內(nèi)連接并不去掉重復(fù)的列。(部分?jǐn)?shù)據(jù)庫不支持自然連接,saL Server等。)

自然連接的語法如下:

SELECT fieldlist
FROM table1 NATURAL JOIN table2
[WHERE condition]

示例:

使用自然連接獲取車輛型號(hào)含有“DD”字樣的車輛信息和司機(jī)信息,要求車輛信息為全部列,司機(jī)信息中只需包含姓名和身份證

SELECT v.*,d.name,d.licenseNo
FROM vehicle v NATURAL JOIN driver d
WHERE model LIKE '%DD%'

5.多表連接查詢

如果查詢的信息來源于多張表,則可通過兩兩相連的方式建立多表連接查詢。

以下為三表連接查詢的語法:

SELECT fieldlist 
FROM table1 JOIN table2 
  ON table1.column1=table2.column2_1
JOIN table3
  ON table2.column2_2=table3.column3
[WHERE condition]

說明:

(1)table2與table1和table3兩兩相連。

(2)三表以上連接查詢的方法與三表連接查詢的方法一樣,均是通過兩兩相連的方式實(shí)現(xiàn)。

示例1:

獲取所有非空調(diào)車的車牌號(hào)、型號(hào)和司機(jī)姓名、所屬線路的線路好、起點(diǎn)站和終點(diǎn)站信息

SELECT d.name,v.plateNo,v.model,l.lineNo,l.from_station,l.end_station
FROM vehicle v JOIN driver d
  ON v.driverID=d.driverID
JOIN line l
  ON v.lineID=l.lineID
WHERE type='非空調(diào)車'

示例2:

獲取公交二公司所有司機(jī)信息。要求輸出司機(jī)姓名、身份證、性別和電話。

SELECT d.name,d.licenseNo,d.gender,d.phone
FROM vehicle v JOIN driver d 
  ON v.driverID 
JOIN line l
  ON v.lineID=l.lineID
WHERE company='公交二公司'

6.簡單多表連接查詢

如果在FROM子句中,直接列出所有要連接的表,然后在WHERE子句中指定連接條件,此為簡單多表查詢,它與內(nèi)連接功能相同

使用兩表連接查詢語法格式如下:

SELECT fieldlist
FROM table1,table2
WHERE table1.column1=table2.column2
[AND 其他條件]

使用三表連接查詢語法格式如下:

SELECT fieldlist 
FROM table1,table2,table3
WHERE table1.column1=table2.column2_1 
  AND table2.column2_2=table3.colemn3
[AND 其他條件]

示例:

獲取所有非空調(diào)車的車牌號(hào)、型號(hào)和司機(jī)姓名、所屬線路的線路好、起點(diǎn)站和終點(diǎn)站信息

SELECT d.name,v.plateNo,v.model,l.lineNo,l.from_station,l.end_station
FROM vehicle v,driver d,line l
WHERE v.driverID=d.driverID
  AND v.lineID=l.lineID
AND type='空調(diào)車'

總結(jié)

到此這篇關(guān)于MySQL連接查詢的文章就介紹到這了,更多相關(guān)MySQL連接查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL數(shù)據(jù)庫的主從同步配置與讀寫分離

    MySQL數(shù)據(jù)庫的主從同步配置與讀寫分離

    這篇文章主要介紹了MySQL數(shù)據(jù)庫的主從同步配置與讀寫分離,需要的朋友可以參考下
    2018-01-01
  • MySQL慢查詢?nèi)罩局械腖ock_time由來解析

    MySQL慢查詢?nèi)罩局械腖ock_time由來解析

    這篇文章主要為大家介紹了慢查詢?nèi)罩局蠰ock_time的由來解析,以及Lock_time?包含哪些鎖等待時(shí)間、以及是怎么計(jì)算得到的,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2023-06-06
  • MySQL使用的常見問題解決與應(yīng)用技巧匯總

    MySQL使用的常見問題解決與應(yīng)用技巧匯總

    這篇文章主要給大家總結(jié)介紹了我們平時(shí)在使用MySQL遇到的常見問題解決與應(yīng)用技巧的相關(guān)資料,包括忘記MySQL的root密碼、如何處理 myisam 存儲(chǔ)引擎的表損壞、數(shù)據(jù)目錄磁盤空間不足的問題等等問題,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-11-11
  • memcached的學(xué)習(xí)過程

    memcached的學(xué)習(xí)過程

    本篇文章是對(duì)筆者學(xué)習(xí)memcached的經(jīng)歷進(jìn)行了介紹,需要的朋友參考下
    2013-06-06
  • 一條sql語句完成MySQL去重留一

    一條sql語句完成MySQL去重留一

    在使用mysql時(shí),有時(shí)需要查詢出某個(gè)字段不重復(fù)的記錄,雖然mysql提供 有distinct這個(gè)關(guān)鍵字來過濾掉多余的重復(fù)記錄只保留一條,但往往只用它來返回不重復(fù)記錄的條數(shù),而不是用它來返回不重記錄的所有值。
    2017-12-12
  • Mysql查看死鎖與解除死鎖的深入講解

    Mysql查看死鎖與解除死鎖的深入講解

    這篇文章主要給大家介紹了關(guān)于Mysql查看死鎖與解除死鎖的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 解決MySQL8.0安裝第一次登陸修改密碼時(shí)出現(xiàn)的問題

    解決MySQL8.0安裝第一次登陸修改密碼時(shí)出現(xiàn)的問題

    這篇文章主要介紹了解決MySQL8.0安裝第一次登陸修改密碼時(shí)出現(xiàn)的問題,在文章開頭給大家介紹了mysql 8.0.16 初次登錄修改密碼的方法,需要的朋友可以參考下
    2019-06-06
  • mysql不能啟動(dòng)報(bào)error2013錯(cuò)誤的多種解決方案

    mysql不能啟動(dòng)報(bào)error2013錯(cuò)誤的多種解決方案

    這篇文章主要介紹了mysql不能啟動(dòng)報(bào)error2013錯(cuò)誤的多種解決方案,需要的朋友可以參考下
    2014-07-07
  • Mysql的慢SQL優(yōu)化思路和規(guī)范詳解

    Mysql的慢SQL優(yōu)化思路和規(guī)范詳解

    這篇文章主要介紹了Mysql的慢SQL優(yōu)化思路和規(guī)范詳解,官方介紹索引是幫助MySQL高效獲取數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。更通俗的說,數(shù)據(jù)庫索引好比是一本書前面的目錄,能加快數(shù)據(jù)庫的查詢速度,需要的朋友可以參考下
    2023-05-05
  • MySQL 存儲(chǔ)過程中執(zhí)行動(dòng)態(tài)SQL語句的方法

    MySQL 存儲(chǔ)過程中執(zhí)行動(dòng)態(tài)SQL語句的方法

    這篇文章主要介紹了MySQL 存儲(chǔ)過程中執(zhí)行動(dòng)態(tài)SQL語句的方法,需要的朋友可以參考下
    2014-08-08

最新評(píng)論