1. 程式人生 > 其它 >圖解SQL中連線查詢

圖解SQL中連線查詢

1、笛卡爾積

當兩個表自然連線,沒有附加任何條件的時候,就會產生笛卡爾積,產生的記錄為(n×m)行。

select * from student s,course c

 

依次連線,這樣就會產生30條記錄,如下:

 

2、內連線

內連線是指返回多表滿足條件的記錄。

 

select * from student s join course c on s.id = c.xid

 

3、外連線

①左連線

左連線是指返回左表的全部記錄行,返回右邊滿足條件的記錄行,不滿足則返回NULL。

 

select * from student s left join course c on s.id = c.xid

 

由於孫七沒有選擇課程,所以課程表的記錄為空。

右表條件為NULL的場景:

 

select * from student s left join course c on s.id = c.xid where c.xid is null;

 

②右連線

右連線是指返回右表的全部記錄行,返回左表滿足條件的記錄行,不滿足條件則返回NULL。

 

select * from student s right join course c on s.id = c.xid

 

由於English這門課,沒人選,則學生的資訊是為NULL。

左表條件為空的場景:

 

select * from student s right join course c on s.id = c.xid where s.id is null

 

到此就結束了,末尾給大家附上建表語句和資料

create table student(id int(5),name varchar(20))
create table course(cid varchar(5),xid int(5),cname varchar(20))
xid name
1 張三2 李四3 王五4 趙六5 孫七
kid xid cname
s1 1 pythons1 3 pythons2 1 javas3 2 phps1 4 pythons4 3 sqls5 English

 轉自:https://zhuanlan.zhihu.com/p/420975727