【SQL】SQL中笛卡爾積、內連接、外連接的數據演示


SQL的查詢語句中,常使用到內連接、外連接,以及連接的基礎--笛卡爾積運算。

在簡單的SQL中,也許我們還分辨清楚數據如何連接,一旦查詢復雜了,腦子也犯漿糊了,迷迷糊糊的。

本文,簡單以數據形式記錄連接的數據結果,在迷糊時可翻閱。

以MySQL運行。

 

> 原始的表

select * from t_user u;

 

select * from t_address a;

 

select * from t_phone p;

 

> 笛卡爾積

select * from t_user, t_address;
或
select * from t_user inner join t_address;

 

> 內連接

-- 例3.1
select * from t_user u, t_address a
where u.id = a.user_id;

-- 例3.2
select * from t_user u 
inner join t_address a
where u.id = a.user_id;

-- 例3.3
select * from t_user u
inner join t_address a on u.id = a.user_id;

 

-- 例3.4
select * from t_user u 
inner join t_address a
where u.id = a.user_id
and a.address like '%羅湖%';

-- 例3.5
select * from t_user u
inner join t_address a on u.id = a.user_id and a.address like '%羅湖%';

例3.4、例3.5雖結果集相同,按照其SQL語義看,執行過程應該有所不同。(我對其中原理也不了解,此處暫不作深究)

 

> 左外連接

select * from t_user u 
left outer join t_address a on u.id = a.user_id;

 

多層外連接

select * from t_user u 
left outer join t_address a on u.id = a.user_id
left outer join t_phone p on u.id = p.user_id;

 

select * from t_user u 
left outer join t_address a on u.id = a.user_id
left outer join t_phone p on u.id = p.user_id
left outer join t_phone p2 on u.id = p2.user_id;

 

> 右外連接

select * from t_user u 
right outer join t_address a on u.id = a.user_id;

 

獲取這樣查詢,效果更好看、明顯

select * from t_address a
right outer join t_user u on u.id = a.user_id;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM