[資料庫][SQL]圖解各種連線join
mysql中的jion=inner jion
對於SQL的Join,在學習起來可能是比較亂的。我們知道,SQL的Join語法有很多inner的,有outer的,有left的,有時候,對於Select出來的結果集是什麼樣子有點不是很清楚。Coding Horror上有一篇文章(實在不清楚為什麼Coding Horror也被牆)通過 文氏圖 Venn diagrams解釋了SQL的Join。我覺得清楚易懂,轉過來。
假設我們有兩張表,Table A是左邊的表,Table B是右邊的表。
其各有四條記錄,其中有兩條記錄是相同的,如下所示:
下面讓我們來看看不同的Join會產生什麼樣的結果。
Inner join |
|||||||
Full outer join 產生A和B的並集。但是需要注意的是,對於沒有匹配的記錄,則會以null做為值。 |
|||||||
Left outer join 產生表A的完全集,而B表中匹配的則有值,沒有匹配的則以null值取代。 |
|||||||
產生在A表中有而在B表中沒有的集合。 |
|||||||
產生A表和B表都沒有出現的資料集。 |
還需要註冊的是我們還有一個是"交差集" cross join, 這種Join沒有辦法用文式圖表示,因為其就是把表A和表B的資料進行一個N*M的組合,即笛卡爾積。表示式如下:
這個笛卡爾乘積會產生 4 x 4 = 16 條記錄,一般來說,我們很少用到這個語法。但是我們得小心,如果不是使用巢狀的select語句,一般系統都會產生笛卡爾乘積然再做過濾。這是對於效能來說是非常危險的,尤其是表很大的時候。
相關文章
- 圖解 SQL 裡的各種 JOIN圖解SQL
- 各種資料庫連線資料庫
- SQL語句中不同的連線JOIN及SQL中join的各種用法SQL
- 各種連線資料庫的連線字串資料庫字串
- JDBC連線各種資料庫的字串JDBC資料庫字串
- jdbc獲取各種資料庫連線JDBC資料庫
- .NET中各種資料庫連線大全資料庫
- 各種資料庫連線程式碼(JSP)資料庫線程JS
- .NET中各種資料庫連線大全 (轉)資料庫
- JDBC連線各種資料庫的方法(經典)JDBC資料庫
- 【轉載】JDBC連線各種資料庫的字串JDBC資料庫字串
- jdbc獲取對各種資料庫的連線JDBC資料庫
- Java連線各種資料庫的例項 (轉)Java資料庫
- 各種資料庫的resin 連線池的寫法資料庫
- JDBC連線各資料庫大全JDBC資料庫
- 欄位連線的各種資料庫的寫法 (轉)資料庫
- java連線sql資料庫JavaSQL資料庫
- 資料庫連線的方法種種資料庫
- 各種資料庫的jdbc驅動下載及連線方式資料庫JDBC
- SQL資料庫連線語句SQL資料庫
- 一張圖看懂 SQL 的各種 join 用法SQL
- Powerdesigner連線Mysql資料庫配置圖解MySql資料庫圖解
- sql統計各種奇葩的資料庫表資料SQL資料庫
- [轉] 通過ADO連線各種資料庫的字串翠集資料庫字串
- JDBC連線三種資料庫例子JDBC資料庫
- c#連線SQL Server資料庫C#SQLServer資料庫
- Golang 全域性sql資料庫連線GolangSQL資料庫
- 關於java連線SQL資料庫JavaSQL資料庫
- SQL server資料庫連線不上SQLServer資料庫
- JSP連線SQL Server資料庫JSSQLServer資料庫
- Oracle資料庫中表的四種連線方式講解Oracle資料庫
- ASP.NET2.0連線SQL Server資料庫詳解ASP.NETSQLServer資料庫
- 透過ADO連線各種資料庫的字串翠集(一) (轉)資料庫字串
- 多表連線的三種方式詳解 hash join、merge join、 nested loopOOP
- 【ITOO】--SQL資料庫優化:切割、資料庫連線池SQL資料庫優化
- 瞭解資料庫連線池資料庫
- MySQL的各種joinMySql
- 各種資料庫的JDBC驅動下載及連線字串URL寫法資料庫JDBC字串