sql连接查询

本文详细介绍了SQL中的连接查询,包括等值连接处理冗余数据、自身连接的概念及实例,以及内连接(INNER JOIN)和外连接(LEFT JOIN, RIGHT JOIN)的使用方法。通过实际案例演示了多表连接和不同类型的连接操作,适合深入理解SQL连接原理。
摘要由CSDN通过智能技术生成

连接查询

​ SQL中的连接是用连接条件来表达的。

​ 连接条件或者连接谓语: 用来连接两个表的条件

​ 格式:

[<表名1>.] <列名1> <比较运算符>[<表名2>.] <列名2>

​ 连接字段:连接谓词中的列名称

1. 等值与非等值连接查询

​ 等值连接: 连接运算符为“=”

如查询每个学生及其选修课程的情况

SELECT student.*,sc.*
FROM student,sc
WHERE student.s_no = sc.s_no

​ 我们会发现有两个s_no属性,所以直接这样进行等值查询得到的数据是冗余的。

​ 我们可以在SELECT阶段的将我们需要的属性列出来,让这个连接成为一个自然连接。

SELECT student.sno,s_sex,s_age,s_dept,c_no,grade
FROM student,sc
WHERE student.s_no = sc.s_no

2.自身连接

自身连接:让一个表与其自己进行连接

需要给表起别名来进行区别

所有属性都为同名属性,必须使用别名前缀

在这里插入图片描述

例子:

SELECT t1.c_name,t2.c_name as pre
FROM course t1,course t2
WHERE t1.c_pno = t2.c_no

内连接与外连接

内连接 inner join,选出两表相同的部分

在这里插入图片描述

例子:

SELECT s.s_no,s.s_name,sc.c_no 
FROM 
student s 
INNER JOIN sc
ON s.s_no = sc.s_no

在这里插入图片描述

外连接 (outer join)

分为两种,left outer join (可简写问left join)和 right outer join (可简写问right join)

left join 以左表为主,右表不存在的对应的数据会填null

在这里插入图片描述

例子:

SELECT s.s_no,s.s_name,sc.c_no 
FROM 
student s 
LEFT JOIN sc
ON s.s_no = sc.s_no

在这里插入图片描述
在这里插入图片描述

left join 以右表为主,左表不存在的对应的数据会填null

SELECT s.s_no,s.s_name,sc.c_no 
FROM 
student s 
RIGHT JOIN sc
ON s.s_no = sc.s_no

在这里插入图片描述

多表连接

多表连接:两个以上的表进行连接

例子:

SELECT s.s_no,s.s_name,c.c_name,sc.grade
FROM 
student s ,sc ,course c
WHERE s.s_no = sc.s_no
AND sc.c_no = c.c_no

在这里插入图片描述

参考资料中国人民大学公开课

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值