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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 两张表合并查询_中级数据分析-多表查询

發布時間:2023/12/31 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 两张表合并查询_中级数据分析-多表查询 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 表的加法
  • 表的聯結
  • 聯結應用案例
  • case應用案例

一、表的加法

加法:union

表的加法是把兩個表的數據,按行合并在一起。

表的加法,會把兩個表里重復的數據刪除,只保留一個。

如果想保留重復數據,可以使用 union all

這樣就保留了全部的重復數據

二、表的聯結

  • 交叉聯結
  • 內聯結
  • 左聯結
  • 右聯結
  • 全聯結

(1)交叉聯結-cross join

交叉聯結也叫作 笛卡爾積

(2) 內聯結 - inner join

內聯結 是同時查找出存在于兩張表中的數據

內聯結步驟:根據條件,從兩張表中找出符合條件的行,再通過交叉聯結合并

寫法:

結果:

(3) 左聯結 - left join

左聯結是把左邊表中的數據,全部取出來

左聯結步驟:將左側的表作為主表,主表中的數據全部讀取出來。再根據條件,取出右邊表中符合條件的行,通過交叉聯結合并。

寫法:

結果:

下面我們來看個問題,下圖中,紅色的部份如何用SQL表示出來,

寫法:

結果:

(4) 右聯結 - right join

右聯結是把右邊表中的數據,全部取出來

右聯結步驟:將右側的表作為主表,主表中的數據全部讀取出來。再根據條件,取出左邊表中符合條件的行,通過交叉聯結合并。

寫法:

結果:

下面我們來看個問題,下圖中,紅色的部份如何用SQL表示出來,

寫法:

結果:

本次結果,因為右邊score表中,所有數據在左表中都存在,所以結果為空。

(5) 全聯結 - full join

全聯結步驟:返回左邊和右表所有的行。當條件匹配時,兩個行進行合并,如果不匹配,另一個表中對應的值用空值來填充。

需要注意下,mysql是不支持全聯結的,這里理解下概念即可。

三、總結-一張表記住所有聯結

四、聯結應用案例

  • 問題1:查詢所有學生的學號、姓名、選課數、總成績

寫法:

結果:

  • 問題2:查詢平均成績大于85分的所有學生的學號、姓名和平均成績

寫法:

結果:

  • 問題3:查詢學生的選課情況: 學號, 姓名, 課程號, 課程名稱

這里涉及到3張表的聯結了

寫法:

結果:

五、case表達式

案例:

下面我們要來看一下,查詢每門課程的及格和不及格人數。我們按照課程號分組,但是每門課程對應的不是一個值,而是兩個值:及格和不及格。相當于兩種情況,這樣的問題就可以用case表達式來實現。

寫法:

使用case表達式注意事項:

(1)else子句可以省略,會默認為空值但為了更好的書寫習慣,最好還是保留

(2)end不能省略不寫

(3) case表達式可以寫在sql語句的任意子句里

case表達式的作用:當有多種情況需要條件判斷時,就可以使用case表達式

下面我們再來看一個案例

  • 使用分段[100-85],[85-70],[70-60],[<60]來統計各科成績,分別統計:各分數段人數,課程號和課程名稱。

分析:這里要用到兩個表,課程表和成績表

寫法:

這里為什么要使用兩個列來分組呢。因為使用group by時,select子句里面的列名,只能是group by 里面的列名,或者使用聚合函數的。

總結

以上是生活随笔為你收集整理的mysql 两张表合并查询_中级数据分析-多表查询的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。