连接(交叉连接、内连接、外连接、自连接)
本文非原創
?
?
可分為:交叉連接、內連接、外連接、自連接
1.使用交叉連接:
它是非限制連接,就是將兩個表格不加任何條件的組合在一起,
即第一個表格的所有記錄分別和第二個表格的每一條記錄相連接
組合成新的記錄,連接后結果集的行數是兩個表格的行數的乘積,
列為兩表列之和。
語法: (1)select 列名列表 from 表名1 cross join 表名2
(2)select 列名列表 from 表名1 (起別名) , 表名2
注意:當顯示某一些字段要用表名指定。
例:select a.book_name , b.book_num from table1 a , table2 b
2.使用內連接:
內連接是將兩個表中滿足條件的記錄顯示出來,就是在交叉連接的
基礎上加條件,一般采用“主鍵 = 外鍵”的形式。
語法:(1)select 列名列表 from 表名1 [inner] join 表名2 on 條件表達式
(2)select 列名列表 from 表名1 , 表名2 where 條件表達式
例:select * from table1 a join table2 b on a.book_name = b.book_name
?
3.使用外連接:
外連接分為:左外連接、右外連接、全外連接
(1)左外連接:
它是將左表中的所有數據分別與右表的每一條數據進行組合,
結果集中除了顯示內連接的記錄外,還顯示左表中不符合條
件的記錄,并在右表中相應的列上填 Null 值.
語法: select * from 表名1 left [outer] join 表名2 on 條件表達式
(2)右外連接:
它是將右表中的所有數據分別與左表的每一條數據進行組合,
結果集中除了顯示內連接的記錄外,還顯示右表中不符合條
件的記錄,并在左表中相應的列上填 Null 值.
語法: select * from 表名1 right [outer] join 表名2 on 條件表達式
?
(3)全外連接:
全外連接就是左表中的所有記錄分別與右表中的每一條進行組合,
結果集中除返回內部連接記錄之外,還要顯示出兩個表中不符合
條件的全部記錄,并在左表、右表中對應的位置添上Null 值。
語法: select * from 表名1 full join 表名2 on 條件表達式
4.使用自連接:
自連接就是一張表的兩個副本之間的連接,就是將同一個表的
不同行連接起來;使用自連接時,必須為本表指定兩個別名,
使其在邏輯上成為兩個表。
例: select a.biao_jia , a.biao_liang from qian a join qian b
on a.biao_jia = b.biao_jia and a.biao_liang <> b.biao_liang
5. 合并結果集:
使用union 語句可以把兩個以上的結果集合并為一個結果集。
語法: select …………
union
select …………
:
:
合并結果集時有以下三點限制:
(1)union 合并的結果集的兩個 select 語句的列數相同,
所使用列的數據類型要對應相同;
(2)最后結果集中的列名來自第一個 select 語句;
(3)在合并結果集時,默認將從最后結果集中刪除重復的行,
除非使用關鍵字。
例:select book_name , book_id into #new_1 from YI
go
select egg_name , egg_shu into #new_2 from egg
go
select * from #new_1
union all
select * from # new_2
轉載于:https://www.cnblogs.com/xieyuanzheng/p/5597089.html
總結
以上是生活随笔為你收集整理的连接(交叉连接、内连接、外连接、自连接)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 操作系统--用JavaScript实现银
- 下一篇: Finally 与 return