最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql多表連接查詢實(shí)例講解

 更新時(shí)間:2018年10月08日 08:37:06   投稿:laozhang  
本篇文章中給大家通過(guò)實(shí)例代碼講述了mysql多表連接查詢的方法,有需要的朋友們可以參考學(xué)習(xí)下。

實(shí)際的項(xiàng)目,存在多張表的關(guān)聯(lián)關(guān)系。不可能在一張表里面就能檢索出所有數(shù)據(jù)。如果沒(méi)有表連接的話,那么我們就需要非常多的操作。比如需要從A表找出限制性的條件來(lái)從B表中檢索數(shù)據(jù)。不但需要分多表來(lái)操作,而且效率也不高。比如書中的例子:

代碼如下:

SELECT FId
FROM T_Customer
WHERE FName='MIKE'

這個(gè)SQL語(yǔ)句返回2,也就是姓名為MIKE 的客戶的FId值為2,這樣就可以到T_Order中檢索FCustomerId等于2 的記錄:

代碼如下:

SELECT FNumber,FPrice
FROM T_Order
WHERE FCustomerId=2

下面我們?cè)敿?xì)來(lái)看看表連接。表連接有多種不同的類型,有交叉連接(CROSS JOIN)、內(nèi)連接(INNER JOIN)、外連接(OUTTER JOIN)。

(1)內(nèi)連接(INNER JOIN):內(nèi)連接組合兩張表,并且只獲取滿足兩表連接條件的數(shù)據(jù)。

代碼如下:

SELECT o.FId,o.FNumber,o.FPrice,
c.FId,c.FName,c .FAge
FROM T_Order o JOIN T_Customer c
ON o.FCustomerId= c.FId

注:在大多數(shù)數(shù)據(jù)庫(kù)系統(tǒng)中,INNER JOIN中的INNER是可選的,INNER JOIN 是默認(rèn)的連接方式。

在使用表連接的時(shí)候可以不局限于只連接兩張表,因?yàn)橛泻芏嗲闆r下需要聯(lián)系許多表。例如,T_Order表同時(shí)還需要連接T_Customer和T_OrderType兩張表才能檢索到所需要的信息,編寫如下SQL語(yǔ)句即可:

代碼如下:

SELECT o.FId,o.FNumber,o.FPrice,
c.FId,c.FName,c .FAge
FROM T_Order o JOIN T_Customer c
ON o.FCustomerId= c.FId
INNER JOIN T_OrderType
ON T_Order.FTypeId= T_OrderType.FId

(2)交叉連接(CROSS JOIN):交叉連接所有涉及的表中的所有記錄都包含在結(jié)果集中。可以采用兩種方式來(lái)定義交叉連接,分別是隱式和顯式的連接。

下面看看隱式的例子:

代碼如下:

SELECT T_Customer.FId, T_Customer.FName, T_Customer.FAge,
T_Order.FId, T_Order.FNumber, T_Order.FPrice
FROM T_Customer, T_Order

使用顯式的連接則需要使用CROSS JOIN,例子如下:

代碼如下:

SELECT T_Customer.FId, T_Customer.FName, T_Customer.FAge,
T_Order.FId, T_Order.FNumber, T_Order.FPrice
FROM T_Customer
CROSS JOIN T_Order

(3)外連接(OUTTER JOIN):內(nèi)部連接只獲取滿足連接條件的數(shù)據(jù),而對(duì)于外部連接來(lái)說(shuō),主要是解決這樣的一種場(chǎng)景。滿足條件的數(shù)據(jù)檢索出來(lái),這個(gè)沒(méi)有疑問(wèn),外部連接還會(huì)檢索另一部分?jǐn)?shù)據(jù),那就是將不滿足條件的數(shù)據(jù)以NULL來(lái)填充。先來(lái)看一下外連接的分類:左外部連接(LEFT OUTER JOIN)、右外部連接(RIGHT OUTER JOIN)和全外部連接(FULLOUTER JOIN)。

I、左外部連接(LEFT OUTER JOIN):前頭也說(shuō)了,將不滿足條件的數(shù)據(jù)以NULL來(lái)填充。那么具體是哪些需要以NULL來(lái)填充呢,對(duì)于左外連接來(lái)說(shuō)的話,連接條件當(dāng)中,如果出現(xiàn)滿足條件的左表的數(shù)據(jù)在右表中沒(méi)有相應(yīng)匹配時(shí),需要把相應(yīng)的右表字段填充NULL值。也就是說(shuō)左外部連接的主體是左表,右表來(lái)配合。

代碼如下:

SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
LEFT OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId

注:如果使用左外部連接的話,通過(guò)where語(yǔ)句能過(guò)濾其中不符合的數(shù)據(jù)

代碼如下:

SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
LEFT OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId
WHERE o.FPrice>=150

II、右外部連接(RIGHT OUTER JOIN):右外部連接與左外連部接相反,將會(huì)被填充NULL值的是左表的字段。也就是說(shuō)右外部連接的主體是右表,左表來(lái)配合。

代碼如下:

SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
RIGHT OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId

注:同左外連接一樣,可以使用where語(yǔ)句進(jìn)行過(guò)濾

III、全外部連接(FULLOUTER JOIN):全外部連接是左外部連接和右外部連接的合集。也就是既包括左外部連接的結(jié)果集,也包括右外部連接的結(jié)果集。

代碼如下:

SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
FULL OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId

其結(jié)果相當(dāng)于:

SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
LEFT OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId
UNION
SELECT o.FNumber,o.FPrice,o.FCustomerId,
c.FName,c.FAge
FROM T_Order o
RIGHT OUTER JOIN T_Customer c
ON o.FCustomerId=c.FId

多表查詢的多種sql寫法:(下面是從兩個(gè)表里查詢<也可以看成從三個(gè)表里查詢>,顯示表v_goods里的所有字段,顯示admin2表里的name字段作為添加人,顯示表admin2表的name字段作為操作人) 多個(gè)表的查詢都可按照下面三個(gè)例句進(jìn)行編寫sql

SELECT v.*,(SELECT a.name FROM admin2 a WHERE a.adminId=v.loadInId) AS aname,(SELECT a.name FROM admin2 a WHERE a.adminId=v.operatorId) AS uname FROM v_goods v where 1=1;
SELECT v.*,a.name aname,b.name uname FROM v_goods v,admin2 a,admin2 b WHERE a.adminId=v.loadInId AND b.adminId=v.operatorId ;
SELECT v.*,a.name aname,b.name uname FROM v_goods v LEFT JOIN admin2 a ON a.adminId=v.loadInId LEFT JOIN admin2 b ON b.adminId=v.operatorId ;

相關(guān)文章

  • MySQL中DELETE、DROP和TRUNCATE的區(qū)別與底層原理分析

    MySQL中DELETE、DROP和TRUNCATE的區(qū)別與底層原理分析

    MySQL中DELETE、DROP和TRUNCATE的區(qū)別:DELETE刪除數(shù)據(jù)行并保留表結(jié)構(gòu),支持條件和事務(wù);TRUNCATE清空表數(shù)據(jù),不支持條件但速度快;DROP徹底刪除表及結(jié)構(gòu),執(zhí)行速度為DROP>TRUNCATE>DELETE,存儲(chǔ)引擎影響空間釋放和自增計(jì)數(shù)器重置
    2025-07-07
  • mysql外鍵的三種關(guān)系實(shí)例詳解

    mysql外鍵的三種關(guān)系實(shí)例詳解

    這篇文章主要介紹了mysql外鍵的三種關(guān)系,結(jié)合實(shí)例形式詳細(xì)分析了mysql外鍵多對(duì)一、多對(duì)多、一對(duì)一3種關(guān)系及相關(guān)使用技巧,需要的朋友可以參考下
    2020-01-01
  • MySQL連接拋出Authentication Failed錯(cuò)誤的分析與解決思路

    MySQL連接拋出Authentication Failed錯(cuò)誤的分析與解決思路

    這篇文章主要給大家介紹了關(guān)于MySQL連接拋出Authentication Failed錯(cuò)誤的分析與解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • win10 mysql 5.6.35 winx64免安裝版配置教程

    win10 mysql 5.6.35 winx64免安裝版配置教程

    這篇文章主要為大家詳細(xì)介紹了win10 mysql 5.6.35 winx64免安裝版配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • MySQL btree索引與hash索引區(qū)別

    MySQL btree索引與hash索引區(qū)別

    這篇文章主要介紹了MySQL btree索引與hash索引區(qū)別,幫助大家更好的理解和學(xué)習(xí)MySQL索引的相關(guān)知識(shí),感興趣的朋友可以了解下
    2020-09-09
  • 使用MySQL實(shí)現(xiàn)select?into臨時(shí)表的功能

    使用MySQL實(shí)現(xiàn)select?into臨時(shí)表的功能

    這篇文章主要介紹了使用MySQL實(shí)現(xiàn)select?into臨時(shí)表的功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Mysql解決數(shù)據(jù)庫(kù)N+1查詢問(wèn)題

    Mysql解決數(shù)據(jù)庫(kù)N+1查詢問(wèn)題

    在本篇文章里小編給大家分享了關(guān)于Mysql解決數(shù)據(jù)庫(kù)N+1查詢問(wèn)題的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們參考下。
    2019-07-07
  • MySQL教程DML數(shù)據(jù)操縱語(yǔ)言示例詳解

    MySQL教程DML數(shù)據(jù)操縱語(yǔ)言示例詳解

    這篇文章主要為大家介紹了MySQL教程中DML數(shù)據(jù)操縱語(yǔ)言的示例詳解,要想學(xué)好MySQL最重要的是要先學(xué)好數(shù)據(jù)操縱語(yǔ)言DML,本文對(duì)其進(jìn)行了全面的講解
    2021-10-10
  • MySQL存儲(chǔ)過(guò)程中使用動(dòng)態(tài)行轉(zhuǎn)列

    MySQL存儲(chǔ)過(guò)程中使用動(dòng)態(tài)行轉(zhuǎn)列

    這篇文章主要為大家介紹了MySQL存儲(chǔ)過(guò)程中使用動(dòng)態(tài)行轉(zhuǎn)列的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • 一文帶你了解MySQL中觸發(fā)器的操作

    一文帶你了解MySQL中觸發(fā)器的操作

    觸發(fā)器,就是一種特殊的存儲(chǔ)過(guò)程。觸發(fā)器和存儲(chǔ)過(guò)程一樣是一個(gè)能夠完成特定功能、存儲(chǔ)在數(shù)據(jù)庫(kù)服務(wù)器上的SQL片段。本文將通過(guò)簡(jiǎn)單的實(shí)力介紹一下觸發(fā)器的操作,需要的可以參考一下
    2023-02-02

最新評(píng)論

玉山县| 开阳县| 息烽县| 高邑县| 南安市| 镇远县| 连州市| 十堰市| 法库县| 石城县| 瑞金市| 鄂尔多斯市| 长岛县| 莱芜市| 铜山县| 石泉县| 辽宁省| 台北市| 胶州市| 灵山县| 壶关县| 龙岩市| 北京市| 木兰县| 西贡区| 同江市| 清流县| 项城市| 丰城市| 延津县| 荣成市| 深州市| 女性| 景宁| 冕宁县| 社会| 怀远县| 巢湖市| 新宁县| 玉山县| 利辛县|