标签:join 笛卡尔 address 连接 user SQL outer id select
【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;
标签:join,笛卡尔,address,连接,user,SQL,outer,id,select 来源: https://www.cnblogs.com/wayne2018/p/15836470.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。