当前位置:网站首页>SQL三种连接:内连接、外连接、交叉连接
SQL三种连接:内连接、外连接、交叉连接
2022-07-05 06:15:00 【Ostrich5yw】
SQL三种连接:内连接、外连接、交叉连接
准备两张表并以PersonId相关联。
一、交叉连接(CROSS JOIN)
交叉连接返回被连接的两个表所有数据行的笛卡尔积。
// 这两句sql完全等价
select * from person CROSS JOIN address
select * from person, address
查询结果:
二、内连接(INNER JOIN)
内连接可以获取两表的公共部分的记录,即利用条件表达式来消除交叉连接的某些数据行。
// 这两句sql完全等价
select * from person INNER JOIN address ON person.PersonId = address.PersonId
select * from person, address WHERE person.PersonId = address.PersonId
查询结果:注意此处PersonId = 4的小孙并未输出
所以内连接只查询两表中都包合的数据
三、外连接(LEFT JOIN、RIGHT JOIN、FULL JOIN)
注意:外连接时,应注意where与on的区别
- on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
- where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉
1.左外连接
左向外联接的结果集包括指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值(null)
select * from person LEFT JOIN address ON person.PersonId = address.PersonId
查询结果:注意此处PersonId = 4的‘小孙’也输出并且由于‘小孙’不存在对应的address,所以address的数据置为null
2.右外连接
右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值(null)
select * from person RIGHT JOIN address ON person.PersonId = address.PersonId
查询结果:注意此处AddressId = 6的‘广东’也输出并且由于‘广东’不存在对应的person,所以preson的数据置为null
3.完整外连接
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值(null)Mysql中不支持FULL JOIN,所以这里用UNION联合查询代替
select * from person LEFT JOIN address ON person.PersonId = address.PersonId
UNION
select * from person RIGHT JOIN address ON person.PersonId = address.PersonId
查询结果:同时输出了'小孙'以及'广东'
边栏推荐
- Leetcode recursion
- LaMDA 不可能觉醒吗?
- Dynamic planning solution ideas and summary (30000 words)
- Appium foundation - use the first demo of appium
- 阿里新成员「瓴羊」正式亮相,由阿里副总裁朋新宇带队,集结多个核心部门技术团队
- wordpress切换页面,域名变回了IP地址
- [rust notes] 17 concurrent (Part 1)
- 【Rust 笔记】16-输入与输出(下)
- 2022 pole technology communication arm virtual hardware accelerates the development of Internet of things software
- One question per day 1020 Number of enclaves
猜你喜欢
The connection and solution between the shortest Hamilton path and the traveling salesman problem
MySQL advanced part 2: MySQL architecture
Data visualization chart summary (II)
1.14 - assembly line
Data visualization chart summary (I)
做 SQL 性能优化真是让人干瞪眼
[practical skills] technical management of managers with non-technical background
Matrixdb V4.5.0 was launched with a new mars2 storage engine!
可变电阻器概述——结构、工作和不同应用
Network security skills competition in Secondary Vocational Schools -- a tutorial article on middleware penetration testing in Guangxi regional competition
随机推荐
leetcode-1200:最小绝对差
MySQL advanced part 1: View
Daily question 2006 Number of pairs whose absolute value of difference is k
Traversal of leetcode tree
Leetcode-1200: minimum absolute difference
Open source storage is so popular, why do we insist on self-development?
1.15 - 输入输出系统
QQ computer version cancels escape character input expression
927. 三等分 模拟
中职网络安全技能竞赛——广西区赛中间件渗透测试教程文章
快速使用Amazon MemoryDB并构建你专属的Redis内存数据库
Daily question 1189 Maximum number of "balloons"
Erreur de connexion Navicat à la base de données Oracle Ora - 28547 ou Ora - 03135
Data visualization chart summary (I)
1.15 - input and output system
LeetCode 0108.将有序数组转换为二叉搜索树 - 数组中值为根,中值左右分别为左右子树
Leetcode-9: palindromes
WordPress switches the page, and the domain name changes back to the IP address
Doing SQL performance optimization is really eye-catching
Records of some tools 2022