sql基礎語法 聯接查詢

2022-06-06 06:33:06 字數 1922 閱讀 9988

交叉聯接

1.不帶where條件的,將返回兩個表的 行乘積

select c.*, e.*

from

sales.customers c

cross

join hr.employees e

2.帶where 條件的,交叉聯接不能使用on

select

e1.empid,e1.firstname,e1.lastname,

e2.empid,e2.firstname,e2.lastname

from hr.employees as

e1

cross

join hr.employees as e2 where e1.empid= e2.empid

內聯接內聯接先對兩個表做笛卡爾乘積,再用on進行篩選,inner join,預設inner可以忽略。

select

e.empid,e.firstname,e.lastname,o.orderid

from hr.employees as

e

join sales.orders as

o

on e.empid=o.empid

外聯接1)左外連線left [outer] join

顯示符合條件的資料行,同時顯示左邊資料表不符合條件的資料行,右邊沒有對應的條目顯示null

例如,以下查詢會查詢出,沒有訂單的客戶資訊,orderid 填充null

select

c.custid,c.companyname,o.orderid

from sales.customers as

c

left

outer

join sales.orders as

o

on c.custid=o.custid

2)右外連線right [outer] join

顯示符合條件的資料行,同時顯示右邊資料表不符合條件的資料行,左邊沒有對應的條目顯示null

例如,以下查詢會查出所有的訂單資訊,沒有訂單資訊的customer資訊不會被查出。

select

o.orderid,c.custid,c.companyname

from sales.orders as

o

left

outer

join sales.customers as

c

on o.custid=c.custid

3)全外連線full [outer] join

顯示符合條件的資料行,同時顯示左右不符合條件的資料行,相應的左右兩邊顯示null,即顯示左連線、右連線和內連線的並集。

例如以下**,返回的結果集行數相通,對於沒有訂單的customer同樣會返回資料。

select

c.custid,c.companyname,o.orderid

from sales.customers as

c

full

outer

join sales.orders as

o

on c.custid=

o.custid

select

o.orderid,c.custid,c.companyname

from sales.orders as

o

full

outer

join sales.customers as

c

on o.custid=c.custid

其他聯接-復合聯接

其他聯接-不等聯接

其他聯接-多聯接查查找

SQL聯接查詢

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

SQL聯接查詢

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

SQL基礎 聯接 join

理解關係表和關係表的設計。設計關係表的時候,將資訊分散到多個表中,避免在乙個表中存在太多重複資訊。關係錶能更好地擴充套件。當資訊存在多個表裡時,如何在一條查詢語句裡獲取來自不同表中的資訊。join就是一種機制,在同乙個條查詢語句中關聯多個表中的資訊。從關係運算的角度來說,連線運算是從兩個關係的笛卡爾...