查詢列名在哪張表_探索SQL-多表查詢

一、表的加法(Union)

1、用法:將兩個表合并成一個表

e7848aaa5349631f016d9b809da25fec.png

2、語句:

select 查詢結果
from 從哪張表查詢
union
select 查詢結果
from 從哪張表查詢

*需保留重復行*

select 查詢結果
from 從哪張表查詢
union all
select 查詢結果
from 從哪張表查詢

練習:

將課程表及課程表1合并在一起

課程表1:

a587dd05ea97f52f9e31ff70591603a3.png

課程表2:

ecf7623e881f659eb69e9991074ea5e1.png

合并結果:

1)不保留重復行

46dfbd5a60495f4069b8b88c2229041f.png

2)保留重復行

1f6f79a82d6d2cfc1225433bd966fb91.png

二、表的聯結

聯結:表和表之間是通過列產生關系,聯結就是通過表和表之間關系將兩個表合并在一起的操作。

表的聯結分為:交叉聯結(cross join)、內聯結(inner join)、左聯結(left join)、右聯結(right join)、全聯結(full join);內聯結、左聯結、右聯結這3種是較常用的聯結方法。

1、交叉聯結(cross join)

將表的每一行與另一個表的每一行聯結在一起,行數是兩個表行數的乘積;不常用,結果行數太多。

2、內聯結(inner join)

查找出同時存在于兩張表的數據。

語句:

select....
from 表1 as a 
inner join 表2 as b
on a.列名=b.列名;

41cb2aed0272f7161528e913af762f67.png

3、左聯結(left join)

將左側的表作為主表,主表中的數據全部讀取出來,右邊的表只選取與主表有相同列的表。

語句:

select....
from 表1 as a 
left join 表2 as b
on a.列名=b.列名;

34da0916c57febf3931a3687ed496ffd.png

*在左聯結基礎上去掉兩表共同的部分*

select....
from 表1 as a 
left join 表2 as b
on a.列名=b.列名
where b.列名 is null;

a1efc1b8c2dfba7b24b5194cc542a317.png

4、右聯結(right join)

將右表作為主表,主表中的數據全部讀取出來,左邊的表只選取與主表有相同列的表。

語句:

select....
from 表1 as a 
right join 表2 as b
on a.列名=b.列名;

5fff7dd338baf4c07bcd0cfc2c9eb2e6.png

*在右聯結基礎上去掉兩表共同的部分*

select....
from 表1 as a 
right join 表2 as b
on a.列名=b.列名
where b.列名 is null;

e2ffbc451c4ae63fc84f0d0c7a503ee1.png

5、全聯結(full join)

返回左表和右表中所有的行,當某行與另一表中有匹配的行,兩行會進行合并,當某行與另一表中無匹配行,另一表對應的行會填充成空值;mysql不支持全聯結。

bd8708cb43d7c1979338e2ae4167b8ef.png

練習:

1、用內聯結將學生和成績表合并在一起

8721310d2fc9253f6db91f83f8a25252.png

2、用左聯結將學生和成績表合并在一起

ea992131cc589d26871e38d709a76c6f.png

*在左聯結基礎上去掉兩表共同的部分*

78f20c5bd07cac899e0335f12013d728.png

3、用右聯結將學生和成績表合并在一起

877457184743b9d87088ed77226ad05c.png

*在右聯結基礎上去掉兩表共同的部分*

822737588367a8f2e294557adec9cd10.png
score表中的所有學號student表中都涵蓋了,因此去掉共同部分會顯示空值

三、聯結應用案例

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

362492e91c9d0b05b7a5520bdd7026e3.png

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

106f15e087ae4fe4bc9844a8248306e8.png

3、查詢學生的選課情況:學號、姓名、課程號、課程名稱

9d6cb58e314443460d52c61e162ba955.png

四、case表達式

使用case表達式可以幫助處理復雜的查詢問題,相當于一個條件判斷的函數,判斷每一行是不是滿足某一條件。

a51e3f7fae0e0428ed83753992ce1dbb.png

1、注意事項:

1)else可以省略不寫,默認為else為空值,最好不省略;

2)end不可以省略。

2、如何使用

當有多種情況需要條件判斷時使用,可以用于sql語句的任意語句中。

練習:

1、查詢出每門課程的及格人數和不及格人數

4f4c85194d139fec65716f5745446a23.png

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

7c00749c5504d0e31cce462553ef8e78.png

五、sqlzoo練習

JOIN

30c1b84ae8277bbaabf16e58221211af.png

48085b31975783a92539c00993b04c0f.png

9a6422d508d82d3b8a8bcaed83665558.png

82eabde0b8127574ee5f383ffb011b82.png

e18b05d355ea48a3423d4ebbeedf27f6.png

441b34c72fbe8fc2e142e79a099ac600.png

215f0d163e922ce139be2e87feb4562c.png

14554dfc04d25cf0fd044213aee1fa95.png

4307b07e151135ed1e01af40c382d6e6.png

d3ad8294d6b2ccb2ec27f39bba6ffbf0.png

b7b78f69f4ae537277f01c88a154b292.png

913d663bf6cfe060eb932747e76fd0b3.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/532105.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/532105.shtml
英文地址,請注明出處:http://en.pswp.cn/news/532105.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用未初始化的內存是什么意思_他們都說JVM能實際使用的內存比-Xmx指定的少?這是為什么呢...

這確實是個挺奇怪的問題&#xff0c;特別是當最常出現的幾種解釋理由都被排除后&#xff0c;看來JVM并沒有耍一些明顯的小花招&#xff1a;-Xmx和-Xms是相等的&#xff0c;因此檢測結果并不會因為堆內存增加而在運行時有所變化。通過關閉自適應調整策略(-XX:-UseAdaptiveSizePo…

定義整型數組_C語言基礎-數組怎么用

到目前為止&#xff0c;我們了解到C語言中可以使用整型&#xff0c;浮點型和字符型的數據類型來描述我們人類世界的各種數據&#xff0c;但是這些還遠遠不夠……我們在IOT領域經常會遇到這樣一個數據使用場景&#xff1a;某天的固定時間內&#xff0c;會有多臺&#xff08;我們…

找出一個字符串中出現次數最多的字_海量數據中找出前k大數(topk問題)

在海量數據中找出出現頻率最好的前k個數&#xff0c;或者從海量數據中找出最大的前k個數&#xff0c;這類問題通常被稱為top K問題。針對top K類問題&#xff0c;通常比較好的方案是分治Trie樹/hash小頂堆&#xff08;就是上面提到的最小堆&#xff09;&#xff0c;即先將數據集…

crowd counting_[crowd_counting]-SFCN-CVPR2019amp;amp;GCC dataset

1.Contribution&#xff08;1&#xff09;主要是提出了基于GTA5的GCC數據集數據集下載地址&#xff1a;https://gjy3035.github.io/GCC-CL/?gjy3035.github.io&#xff08;2&#xff09;提出了在如何在GCC上train&#xff0c;然后在傳統的通用數據集上test的遷移學習方案&…

代碼更換ui圖片_用技術的方式,在UI設計稿中設置隨機碼,保證高清

本文首發于&#xff1a;行者AI 在工作中會遇到批量給圖片添加文字&#xff0c;隨機碼等需求&#xff0c;當數據碼數量較大時&#xff0c;UI的工作量就會非常大&#xff0c;這時候我們可以用python來幫我們提高工作效率。1. 需求分析我們有這樣一張圖片&#xff0c;我們需要將一…

hash地址_redis中的hash擴容、漸進式rehash過程

背景&#xff1a; redis字典&#xff08;hash表&#xff09;當數據越來越多的時候&#xff0c;就會發生擴容&#xff0c;也就是rehash對比&#xff1a;java中的hashmap&#xff0c;當數據數量達到閾值的時候(0.75)&#xff0c;就會發生rehash&#xff0c;hash表長度變為原來的二…

是什么牌子_水晶項鏈什么牌子好

閱讀本文前&#xff0c;請您先點擊上面的藍色字體&#xff0c;再點擊“關注”&#xff0c;這樣您就可以免費收到最新內容了。每天都有分享&#xff0c;完全是免費訂閱&#xff0c;請放心關注&#xff01; …

什么是機器人的五點校正法_機器人校正方法

機器人校正方法【專利說明】機器人校正方法[0001]本申請案主張于2012年9月18日申請之美國臨時專利申請案第61/702&#xff0c;377號的優先權&#xff0c;所述專利申請案的揭示完整結合于此以供參考。技術領域[0002]本發明涉及一種工件加工&#xff0c;尤其涉及一種用于工件加工…

stn算子_深度學習常用算子(二)

1、Tensor維度變換1)Flatten作用&#xff1a;將輸入tensor中從start_axis維度到end_axis維度合并為1維2)Reshape作用&#xff1a;將輸入Tensor描述轉換為新的shape3)FreespaceExtract作用&#xff1a;將h維變成1&#xff0c;其他維度不變&#xff0c;從而完成對h的采樣&#xf…

iframe異步加載_5種延遲加載圖像的方法以幫助你提升網站性能與用戶體驗

英文 | https://www.sitepoint.com/five-techniques-lazy-load-images-website-performance/翻譯 | web前端開發(ID&#xff1a;web_qdkf)由于圖像是Web上最流行也是必不可少的內容類型之一&#xff0c;因此網站上的圖片頁面加載時間很容易成為一個問題。即使進行了適當的優化&…

ubuntu18安裝python3.6.8_ubuntu 18.04 + Python 3.6.8 更換軟件安裝源

國外的開源項目開展的是如火如荼&#xff0c;我們國內的當然也不甘落后。為了更好的玩轉 Python&#xff0c;我使用了 ubuntu Linux 來作為開發環境。但是由于國內網絡的限制&#xff0c;訪問國外的一些軟件源的時候&#xff0c;速度比較慢&#xff0c;這時我們需要更換成國內的…

springframework報錯_應對報錯信息的必殺技!

今天遇到了一個錯誤&#xff0c;一般的錯誤提示會很明顯&#xff0c;一看就知道是什么問題。今天遇到的這個說實話真的不好找原因&#xff0c;一般在這種情況下該怎么解決呢&#xff1f;分享下我的思路吧&#xff0c;不一定是最好的&#xff0c;至少有用。直接上圖吧&#xff0…

電腦運行卡頓怎么處理_【眾點學】電腦運行PS卡頓?可能是你的虛擬內存沒設置好!...

不少小伙伴都遇到過這樣的煩惱明明自己的電腦擁有大內存PS用著用著就卡頓了經過教體君的仔(bai)細(du)研(yi)究(xia)發現原來電腦的 虛擬內存 只有2G當我們用大型軟件或玩大型游戲電腦越用越卡時該怎么做&#xff1f;今天【眾點學】我們一起來看看Win7和Win10系統下分別如何設置…

線程池拒絕策略 開發中常用什么策略_面試官:說說你知道多少種線程池拒絕策略...

往期文章為什么阿里Java規約要求謹慎使用SimpleDateFormathttps://www.toutiao.com/i6696127929048367629/為什么我強烈推薦你用枚舉來實現單例模式https://www.toutiao.com/i6696861933687013901/為什么不要在MySQL中使用UTF-8編碼方式https://www.toutiao.com/i6697966437727…

css html 雙面打印_從 Linux 命令行進行打印 | Linux 中國

導讀&#xff1a;在 Linux 命令行進行打印的內容比單單一個 lp 命令多得多&#xff0c;讓我們來看一些可用選項。       本文字數&#xff1a;4305&#xff0c;閱讀時長大約&#xff1a;5分鐘https://linux.cn/article-13012-1.html作者&#xff1a;Sandra Henry-stocker譯…

python保存快捷鍵是什么_python常用快捷鍵

最重要的快捷鍵1. ctrlshiftA:萬能命令行2. shift兩次:查看資源文件新建工程第一步操作1. module設置把空包分層去掉,compact empty middle package2. 設置當前的工程是utf-8,設置的Editor-->File Encodings-->全部改成utf-8,注釋1. ctrl/:單行注釋光標操作1. ctrlaltent…

服務器內存超限問題_服務器內存爆滿最佳處置方案

內存爆滿截圖&#xff1a;分析&#xff1a;內存持續飆升&#xff0c;應該是有大量內存一直沒有釋放&#xff0c;考慮僵尸對象&#xff0c;僵尸進程&#xff0c;最簡單的就是重啟服務器&#xff0c;但是就無法找到罪魁禍首了。驗證&#xff1a;top命令查看活躍進程的資源使用情況…

js map對象遍歷_何時使用 Map 來代替變通的 JS 對象

JS 普通對象 {key: value} 用于存放結構化數據。但有一件事我覺得很煩:對象鍵必須是字符串(或很少使用的 symbol)。如果將數字用作鍵會怎樣&#xff1f;在這種情況下不會有錯誤&#xff1a;const names { 1: One, 2: Two,};Object.keys(names); // > [1, 2]JS 會隱式地將…

mysql怎么顯示結果窗口_mysql8中窗口函數

在以前的MySQL版本中是沒有窗口函數的&#xff0c;直到MySQL8.0才引入了窗口函數。窗口函數是對查詢中的每一條記錄執行一個計算&#xff0c;并且這個計算結果是用與該條記錄相關的多條記錄得到的。1.窗口函數與聚合函數窗口函數與聚合函數很像&#xff0c;他們都是在一組記錄而…

python控制臺輸入字符串作為參數_Python-如何將字符串傳遞到subprocess.Popen(使用stdin參數)?...

小編典典Popen.communicate() 說明文件&#xff1a;請注意&#xff0c;如果要將數據發送到進程的stdin&#xff0c;則需要使用stdin PIPE創建Popen對象。同樣&#xff0c;要在結果元組中獲得除None以外的任何內容&#xff0c;你還需要提供stdout PIPE和/或stderr PIPE。替換…