今天主要的內容是要講解SQL中關于Join、Inner Join、Left Join、Right Join、Full Join、On、 Where區別和用法,不用我說其實前面的這些基本SQL語法各位攻城獅基本上都用過。但是往往我們可能用的比較多的也就是左右連接和內連接了,而且對于許多初學者而言不知道什么時候該用哪種語法進行查詢,并且對于左右,或者內連接查詢的時候關于ON 和Where 的作用也是模糊不清的,說不出其中的一個大概的差別,因此接下來請容我把它們好好描述一遍。
圖片
圖片
概念:用于兩表或多表之間數據聯立查詢。
select * from Students s,Class c where s.ClassId=c.ClassId
圖片
概念:與Join相同,兩表或多表之間聯立查詢數據,因此我們在使用多表join查詢的時候既可以使用where關聯,也可以是inner join關聯查詢。
select * from Students s inner join Class c on s.ClassId=c.ClassId
圖片
概念:以左表中的數據為主,即使與右表中的數據不匹配也會把左表中的所有數據返回。
select * from Students s left join Class c on s.ClassId=c.ClassId
圖片
概念:與Left Join的用法相反,是以右表中的數據為主,即使左表中不存在匹配數據也會把右表中所有數據返回。
select * from Students s right join Class c on s.ClassId=c.ClassId
圖片
概念:返回表中所有的數據數據,無論匹配與否。
select * from Students s Full JOIN Class c on s.ClassId=c.ClassId
圖片
select * from Students s inner JOIN Class c on s.ClassId=c.ClassId and s.Sex='男'
圖片
select * from Students s left join Class c on s.ClassId=c.ClassId and s.Sex='男'
圖片
--全連接select * from Students s full join Class c on s.ClassId=c.ClassId --全連接加on查詢select * from Students s full join Class c on s.ClassId=c.ClassId and s.Sex='男'
圖片
圖片
1、on條件是在生成臨時表時使用的條件,它不管on中的條件是否為真,都會返回左邊表中的記錄(以左連接為例)。
2、where條件是在臨時表生成好后,再對臨時表產生的數據進行過濾條件篩選。
結論:on用作于生成臨時表時的條件篩選,where用作于對臨時表中的記錄進行過濾。
最后我想說的是,有時候我們總認為概念性的東西很簡單而忽視了實踐。其實往往一些基礎性的東西才是為我們往后構建萬丈高樓的前提,堅持多實踐、多動手,你會發現其實這些問題并不難。
本文鏈接:http://www.tebozhan.com/showinfo-26-12443-0.htmlSQL中的各種連接的區別總結
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: 如何實現并部署自己的Npm解析服務