使用過mysql的人都知道連線查詢在mysql查詢中使用頻率最高的,但是在使用過程中都或多或少地遇到一些疑惑,內連線和外連線的使用場景到底是怎樣的?這其中又暗藏著什麼樣的玄機?接著,讓我們以不同的角度來分析下內連線和外連線的區別吧!
眾所周知,驗證和探索某乙個問題時,首先要做的是做一些準備工作,就像在做數學證明題時,都需要準備一些證明過程的前提要點,而我的「前提要點」就是建立表,有了表,才好開始幹事!
建立表
學生表
課程表
分數表
表建好之後,首先我們需要從定義上先來初步了解下內連線和外連線—————
select * from student t1
inner
join sc t2 on t1.sid = t2.sid
inner
join course t3 on t2.cid = t3.cid
group
by t1.sid,t1.sname order
by t2.score;
查詢結果如下:
查詢結果如下:
查詢結果如下:
其實有時候內連線和外連線的查詢結果是一樣的,在本質上,兩者只是存在丟失資料方面存在一些差別,但是在大資料環境下,對於效能,兩者又存在著一些什麼區別呢?
在我翻看一些文章時,發現內連線和外連線的效能與不同的資料環境有關係,比如:
left jion優於innerjion的情形:
inner jion優於left jion的情形:
具體看情況:
內連線和外連線
在oracle的sql語句常用的連線有內連線 inner join 外連線 outer join 等,內連線又包括等值連線,非等值連線,自連線 而外連線又分為左連線和右連線。其中預設的是內連線的等值連線。內連線 利用內連線 等值 就可獲取公共部分c,圖中的資料集c.select from a inn...
內連線和外連線
在之前,我對mysql中的內連線和外連線所得出的資料集不是很清楚。這幾天重新溫習了一下 sql的書本,現在的思路應該是很清楚了,現在把自己的理解發出來給大家溫習下。希望和我一樣對 sql的連線語句不太理解的朋友能夠有所幫助。發這麼菜的教程,各位大大們別笑話偶了,呵 d 有兩個表a和表b 表a結構如下...
理解內連線和外連線
內連線 進行連線的兩個表對應的相匹配的字段完全相同的連線。join 外連線又分為左外連線和右外連線。左連線即left outer join 兩個表進行左連線時會返回左邊表中的所有的行和右邊表中與之相匹配的列值沒有相匹配的用空值代替。右連線即right outer join 兩個表進行右連線時會返回右...