圖解SQL中連線查詢
阿新 • • 發佈:2022-05-16
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