SQL JOIN操作详解:交叉、左连接、右连接、自连接
需积分: 10 154 浏览量
更新于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类型可以极大地优化查询性能和数据的准确度。
2010-11-06 上传
2012-09-12 上传
2021-01-30 上传
2020-09-11 上传
2021-02-24 上传
2022-09-23 上传
2021-04-08 上传
2009-10-31 上传
2021-04-02 上传
qq363762825
- 粉丝: 0
- 资源: 2
最新资源
- NIST REFPROP问题反馈与解决方案存储库
- 掌握LeetCode习题的系统开源答案
- ctop:实现汉字按首字母拼音分类排序的PHP工具
- 微信小程序课程学习——投资融资类产品说明
- Matlab犯罪模拟器开发:探索《当蛮力失败》犯罪惩罚模型
- Java网上招聘系统实战项目源码及部署教程
- OneSky APIPHP5库:PHP5.1及以上版本的API集成
- 实时监控MySQL导入进度的bash脚本技巧
- 使用MATLAB开发交流电压脉冲生成控制系统
- ESP32安全OTA更新:原生API与WebSocket加密传输
- Sonic-Sharp: 基于《刺猬索尼克》的开源C#游戏引擎
- Java文章发布系统源码及部署教程
- CQUPT Python课程代码资源完整分享
- 易语言实现获取目录尺寸的Scripting.FileSystemObject对象方法
- Excel宾果卡生成器:自定义和打印多张卡片
- 使用HALCON实现图像二维码自动读取与解码