sqlserver中聯接查詢

2021-10-01 23:41:39 字數 1894 閱讀 6659

/*

聯接查詢 :當要同時顯示多個表資料的情況下

*//*

外聯接左外聯接

右外聯接*/

/*左外聯接:改變表出現的順序有影響,因

為前面出現的是左表

左外聯接

第1種說法

第1步顯示內聯接所有資料

第2步看左表中是否有沒匹配的,有的話原樣列出,右表部分用null補齊

第2種說法

第1步列出左表所有資料

第2步右表與之匹配的顯示,其它用null補齊

最好是用第一種說法,第二種說法容易被迷惑,因為左表中的同一條資料可能出現多次*/

select

* from

student as stu --左表

left join

exam exa --右表 可以省略as關鍵字

on (stu.stuid = exa.stuid)

select

* from

student as stu --左表

left join

exam exa --右表 可以省略as關鍵字

on (stu.stuid = exa.stuid) /*

右外聯接

第1種說法

第1步顯示內聯接所有資料

第2步看右表中是否有沒匹配的,有的話原樣列出,左表部分用null補齊

*/select

* from

student as stu --左表

left join

exam exa --右表 可以省略as關鍵字

on (stu.stuid = exa.stuid)

--可以調換下順序

select

* from

exam exa --左表

right join

student as stu--右表 可以省略as關鍵字

on (stu.stuid = exa.stuid)

/*內聯接 as可以省略,on後面的小括號()也可以省略,但是不建議省略小括號()

內聯接 顯示外來鍵表所有資料,並顯示主鍵表與之匹配的資料

內聯接:改變表出現順序沒有影響

*/select

stu.stuaddress,stu.stuname,exa.labexam, exa.writtenaxam, *

from

student as stu

inner join

exam exa --可以省略as關鍵字

on (stu.stuid = exa.stuid)

/*內聯接的另一種寫法,這種寫法不推薦使用,2個表沒啥問題,3個表或3個表以上就容

易出錯,沒出錯算你運氣好

*/select *

from

student as stu ,exam as exa

where

stu.stuid = exa.stuid /*

完全外聯接 = 左外聯接 + 右外聯接

*/select

* from

student as stu

full join

exam exa --可以省略as關鍵字

on (stu.stuid = exa.stuid)

/*交叉聯接(笛卡爾積)*/

select

student.*, exam.*

from

exam,student

--select

student.*, exam.*

from

student

cross join

exam

cross join

student2

SQL Server資料查詢之聯接查詢

四 聯接查詢 1.聯接 1.1內聯接 inner join 1.2外聯接 outer join 1.2.1左聯接 left join 1.2.2右聯接 right join 1.3交叉聯接 cross join 2.內聯接與自聯接 內聯接 作用於兩個表,一般通過兩個表中相同的字段的關係 建立聯絡 自...

SQL聯接查詢

舉例有兩表資訊如下 以上兩種查詢方式等價,如下圖所示內聯接inner join只取兩表存在關聯關係的資料 注 inner join與join相同,inner可省略不寫。查詢結果如下 如下圖所示,左聯接 左外聯接 左表 user表 資料將會完全展示,右表 dept表 只展示與左表存在關聯關係的資料。注...

SQL聯接查詢

聯接查詢 join表操作符對兩個輸入表進行了操作。聯結有三種基本型別 交叉連線,內連線,外鏈結。這三種連線的區別是它們採用的邏輯查詢處理步驟各部相同,每種連線都有一套不同的步驟。交叉連線只有乙個步驟 笛卡爾積 內連線有兩個步驟 笛卡爾積,過濾 外鏈結有三個步驟 笛卡爾積,過濾,新增外部行。交叉連線 ...