SQL JOIN操作详解:交叉、左连接、右连接、自连接
需积分: 10 16 浏览量
更新于2024-09-11
收藏 54KB DOC 举报
"SQL JOIN 用法"
在SQL中,JOIN是用于合并来自两个或更多个表的数据的关键操作。以下是对几种主要JOIN类型及其用法的详细解释:
1) 交叉连接(Cross Join): 交叉连接返回第一个表中的每一行与第二个表中的每一行的组合,产生笛卡尔乘积。例如,`SELECT au_lname, title FROM authors CROSS JOIN titles` 将返回authors和titles表中所有可能的行组合。
2) 外连接(Outer Join): 外连接分为左外连接(Left Join)、右外连接(Right Join)和全外连接(Full Join)。
- 左外连接(Left Join): 左表的数据完全保留,而右表的数据只有匹配时才显示。如果右表中没有匹配的记录,结果将填充NULL。例如,`SELECT a.cust_id, b.order_date, b.tot_amt FROM customers AS a LEFT JOIN sales AS b ON (a.cust_id = b.cust_id AND b.order_date > '1996/10/15')`。这里,即使在sales表中没有1996年10月15日之后的订单,所有客户信息仍会被返回。
- 右外连接(Right Join): 与左外连接相反,右表的数据完全保留,左表的数据只有匹配时才显示。如果左表中没有匹配的记录,结果将填充NULL。
3) 自连接(Self Join): 自连接是在同一个表中进行连接,通常用于比较同一表中不同行的数据。例如,`SELECT a.emp_no, a.emp_name, b.emp_no, b.emp_name, a.date_hired FROM employee AS a JOIN employee AS b ON (a.emp_no != b.emp_no AND a.date_hired = b.date_hired) ORDER BY a.date_hired` 可以用来找出同一日期雇佣的不同员工。
4) 全外连接(Full Join): 全外连接返回所有左表和右表的记录,即使在另一表中没有匹配项。如果没有匹配,相应的列将被填充为NULL。例如,`SELECT a.cust_id, b.tot_amt FROM customers AS a FULL JOIN sales AS b ON (a.cust_id = b.cust_id)` 将返回所有客户和所有销售记录,即使某些客户没有购买,或者有些销售没有关联的客户。
在上述示例中,如果需要排除重复数据,可以通过添加额外的条件来实现,如在自连接中添加 `AND a.emp_name > b.emp_name`,以确保只返回名字在字母顺序上不同的行。
理解并熟练掌握这些JOIN类型对于有效地处理和分析关系数据库中的数据至关重要。在实际应用中,根据具体需求选择合适的JOIN类型可以极大地优化查询性能和数据的准确度。
2020-09-01 上传
2010-11-06 上传
2021-01-30 上传
2020-09-11 上传
2012-09-12 上传
2021-02-24 上传
2022-09-23 上传
2021-04-08 上传
2009-10-31 上传
qq363762825
- 粉丝: 0
- 资源: 2
最新资源
- sicherheit_ws:安全概念讲习班
- Bregman Cookbook:此工具箱提供基于 Bregman Iterations 的信号/图像/3D 处理-matlab开发
- 下一个大学
- fccWebDesign:在此仓库内,有我为在线课程(在freeCodeCamp上进行的响应式Web设计认证)制作的项目
- dchr.host:端到端K8s CICD练习
- 4ampr-fj2021-paginas-web-semana-03:专业人士
- Accuinsight-1.0.36-py2.py3-none-any.whl.zip
- vicms:用于python-flask的迷你内容管理架构
- Atcoder
- Pure
- irawansyahh.github.io:我的个人网站
- ask:一种在 Node 或浏览器中构建 HTTP 请求的简单、可链接的方式
- Dark Crystals New Tab Game Theme-crx插件
- 库存-REST-API:REST APIのテスト
- JavascriptVerletAlgorithm
- antiwasm:Web程序集objdump