日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql多表查询(一口气解决掉:自连接 左右连接 满连接等)

發(fā)布時間:2023/12/14 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql多表查询(一口气解决掉:自连接 左右连接 满连接等) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

多表查詢,也稱為關(guān)聯(lián)查詢,指兩個或更多個表一起完成查詢操作。

前提條件:這些一起查詢的表之間是有關(guān)系的(一對一、一對多),它們之間一定是有關(guān)聯(lián)字段,這個關(guān)聯(lián)字段可能建立了外鍵,也可能沒有建立外鍵。比如:員工表和部門表,這兩個表依靠“部門編號”進(jìn)行關(guān)聯(lián)。

一個錯誤

#案例:查詢員工的姓名及其部門名稱 SELECT last_name, department_name FROM employees, departments;

這是多表查詢菜鳥經(jīng)常犯的錯誤和誤解的地方,如果employees有3條數(shù)據(jù),departements有3條數(shù)據(jù),最后查出來的是3*3的條數(shù)據(jù)

我們把上述多表查詢中出現(xiàn)的問題稱為:笛卡爾積的錯誤。

笛卡爾積的錯誤。

笛卡爾乘積是一個數(shù)學(xué)運算。假設(shè)我有兩個集合 X 和 Y,那么 X 和 Y 的笛卡爾積就是 X 和 Y 的所有可能組合,也就是第一個對象來自于 X,第二個對象來自于 Y 的所有可能。組合的個數(shù)即為兩個集合中元素個數(shù)的乘積數(shù)。

SQL92中,笛卡爾積也稱為交叉連接,英文是 CROSS JOIN。在 SQL99 中也是使用 CROSS JOIN表示交叉連接。它的作用就是可以把任意表進(jìn)行連接,即使這兩張表不相關(guān)

?

?

?

?

?阿里開發(fā)規(guī)范:

【強(qiáng)制】對于數(shù)據(jù)庫中表記錄的查詢和變更,只要涉及多個表,都需要在列名前加表的別名(或表名)進(jìn)行限定。

說明:對多表進(jìn)行查詢記錄、更新記錄、刪除記錄時,如果對操作列沒有限定表的別名(或表名),并且操作列在多個表中存在時,就會拋異常。

正例:select t1.name from table_first as t1 , table_second as t2 where t1.id=t2.id;

反例:在某業(yè)務(wù)中,由于多表關(guān)聯(lián)查詢語句沒有加表的別名(或表名)的限制,正常運行兩年后,最近在 某個表中增加一個同名字段,在預(yù)發(fā)布環(huán)境做數(shù)據(jù)庫變更后,線上查詢語句出現(xiàn)出1052 異常:Column 'name' in field list is ambiguous。



?自連接?

當(dāng)table1和table2本質(zhì)上是同一張表,只是用取別名的方式虛擬成兩張表以代表不同的意義。然后兩個表再進(jìn)行內(nèi)連接,外連接等查詢。

查詢出last_name為 ‘Chen’ 的員工的 manager 的信息。 employees員工表中只有manager的idSELECT m.* FROM employees e,employees m WHERE e.manager_id=m.employee_id AND e.last_name="chen"

?

?

?內(nèi)連接(INNER JOIN)的實現(xiàn)

?

?外連接(OUTER JOIN)的實現(xiàn)

?左外連接(LEFT OUTER JOIN)

?右外連接(RIGHT OUTER JOIN)

?. UNION的使用

?

?

?

?

#中圖:內(nèi)連接 A∩B SELECT employee_id,last_name,department_name FROM employees e JOIN departments d ON e.`department_id` = d.`department_id`; #左上圖:左外連接 SELECT employee_id,last_name,department_name FROM employees e LEFT JOIN departments d ON e.`department_id` = d.`department_id`; #右上圖:右外連接 SELECT employee_id,last_name,department_name FROM employees e RIGHT JOIN departments d ON e.`department_id` = d.`department_id`; #左中圖:A - A∩B SELECT employee_id,last_name,department_name FROM employees e LEFT JOIN departments d ON e.`department_id` = d.`department_id` WHERE d.`department_id` IS NULL

?

#右中圖:B-A∩B SELECT employee_id,last_name,department_name FROM employees e RIGHT JOIN departments d ON e.`department_id` = d.`department_id` WHERE e.`department_id` IS NULL

?

#左下圖:滿外連接# 左中圖 + 右上圖 A∪B SELECT employee_id,last_name,department_name FROM employees e LEFT JOIN departments d ON e.`department_id` = d.`department_id` WHERE d.`department_id` IS NULL UNION ALL ?#沒有去重操作,效率高 SELECT employee_id,last_name,department_name FROM employees e RIGHT JOIN departments d ON e.`department_id` = d.`department_id`; #右下圖#左中圖 + 右中圖 A ∪B- A∩B 或者 (A - A∩B) ∪ (B - A∩B) SELECT employee_id,last_name,department_name FROM employees e LEFT JOIN departments d ON e.`department_id` = d.`department_id` WHERE d.`department_id` IS NULL UNION ALL SELECT employee_id,last_name,department_name FROM employees e RIGHT JOIN departments d ON e.`department_id` = d.`department

?

?

?在正式開始講連接表的種類時,我們首先需要知道 SQL 存在不同版本的標(biāo)準(zhǔn)規(guī)范,因為不同規(guī)范下的表連接操作是有區(qū)別的。SQL 有兩個主要的標(biāo)準(zhǔn),分別是 SQL92 和 SQL99。92 和 99 代表了標(biāo)準(zhǔn)提出的時間,SQL92 就是 92 年提出的標(biāo)準(zhǔn)規(guī)范。

當(dāng)然除了 SQL92 和 SQL99 以外,還存在 SQL-86、SQL-89、SQL:2003、SQL:2008、SQL:2011 和 SQL:2016 等其他的標(biāo)準(zhǔn)。這么多標(biāo)準(zhǔn),到底該學(xué)習(xí)哪個呢?

實際上最重要的 SQL 標(biāo)準(zhǔn)就是 SQL92 和 SQL99。一般來說 SQL92 的形式更簡單,但是寫的 SQL 語句會比較長,可讀性較差。

而 SQL99 相比于 SQL92 來說,語法更加復(fù)雜,但可讀性更強(qiáng)。我們從這兩個標(biāo)準(zhǔn)發(fā)布的頁數(shù)也能看出,SQL92 的標(biāo)準(zhǔn)有 500 頁,而 SQL99 標(biāo)準(zhǔn)超過了1000 頁。

實際上從 SQL99 之后,很少有人能掌握所有內(nèi)容,因為確實太多了。就好比我們使用Windows、Linux 和 Office 的時候,很少有人能掌握全部內(nèi)容一樣。我們只需要掌握一些核心的功能,滿足日常工作的需求即可

。SQL92 和 SQL99 是經(jīng)典的 SQL 標(biāo)準(zhǔn),也分別叫做 SQL-2 和 SQL-3 標(biāo)準(zhǔn)。也正是在這兩個標(biāo)準(zhǔn)發(fā)布之后,SQL 影響力越來越大,甚至超越了數(shù)據(jù)庫領(lǐng)域。現(xiàn)如今 SQL 已經(jīng)不僅僅是數(shù)據(jù)庫領(lǐng)域的主流語言,還是信息

?

?

?

?

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的mysql多表查询(一口气解决掉:自连接 左右连接 满连接等)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 60分钟| 国产一区二区三区色淫影院 | 国产精品久久久久久久久久直播 | 亚洲清纯国产 | 裸体美女免费视频网站 | 国产精品.xx视频.xxtv | 91视频国产免费 | www超碰在线 | 精品久久久网站 | 久久久久久久蜜桃 | 亚洲一区高清 | 久久三级精品 | 国产日韩av一区二区 | 日韩欧美在线观看一区二区三区 | 第一宅男av导航入口 | 国产精品传媒视频 | 精品无人区无码乱码毛片国产 | 国产三级全黄 | 国产wwww| 国产精品一区二区三区免费在线观看 | 欧美卡一卡二卡三 | 激情视频在线免费观看 | videosex抽搐痉挛高潮 | 美女88av| 先锋影音色 | 日韩在线播放视频 | 久久久一| 成年人香蕉视频 | 精品国模一区二区三区欧美 | 免费在线观看日韩av | 俄罗斯av片 | 亚洲二区精品 | 五色天婷婷| 成人片黄网站色大片免费毛片 | 五月天婷婷社区 | 国产精品白浆一区二小说 | 亚洲毛茸茸 | 狠狠躁夜夜躁人人爽天天高潮 | 久草一区 | 天天操天天射天天爽 | 天天干夜夜干 | 九色porn| 亚洲av成人精品日韩在线播放 | 欧美激情久久久 | 亚洲视频不卡 | 国产精品三级视频 | 欧美久久久久久久 | 日韩一区二区影视 | 国产精品美女主播 | 哪里可以看免费毛片 | 致单身男女免费观看完整版 | 无遮挡在线观看 | 午夜不卡福利视频 | 变态另类丨国产精品 | 日批视频在线播放 | 亚色在线视频 | 爱乃なみ加勒比在线播放 | 五月天中文字幕在线 | 大地资源在线观看免费高清版粤语 | 日韩av毛片在线观看 | 一本加勒比波多野结衣 | 青青草香蕉| 三级影片在线免费观看 | 午夜色大片 | 欧美男女交配视频 | 欧美视频一二三 | a级在线视频 | 黄色网址www | 中文字幕一区在线播放 | 97精品人妻一区二区三区在线 | 日韩精品人妻中文字幕有码 | 国产精品69av| 误杀1电影免费观看高清完整版 | jizz在亚洲| 国产精品福利在线 | 中文精品在线 | 男同互操gay射视频在线看 | av中文字幕免费在线观看 | 大乳女喂男人吃奶视频 | 麻豆av免费看 | 男女互插视频 | 无码一区二区三区视频 | а√天堂资源在线 | 久久久精品国产免费爽爽爽 | 国产精品av久久久久久无 | 公侵犯人妻一区二区三区 | 亚洲资源网站 | 色综合久久精品亚洲国产 | 成人精品国产免费网站 | 日韩天堂一区 | 国产精品久久777777换脸 | 玖玖国产精品视频 | 亚洲女人被黑人巨大进入 | 玖玖999| 日本国产中文字幕 | 久久一区二区三区四区五区 | 国产又爽又黄无码无遮挡在线观看 | 韩国日本中文字幕 | 国产少妇一区二区 |