交叉聯接
1.不帶where條件的,將返回兩個表的 行乘積
select c.*, e.*from
sales.customers c
cross
join hr.employees e
2.帶where 條件的,交叉聯接不能使用on
selecte1.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可以忽略。
selecte.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
selectc.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資訊不會被查出。
selecto.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同樣會返回資料。
selectc.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就是一種機制,在同乙個條查詢語句中關聯多個表中的資訊。從關係運算的角度來說,連線運算是從兩個關係的笛卡爾...