SQL连接查询

连接查询

同时涉及多个表的查询称为连接查询。
SQL中连接查询的主要类型
(1) 交叉连接(广义笛卡尔积)
(2) 等值连接
(3) 自身连接
(4) 内连接
(5) 外连接
1.交叉连接
使用笛卡尔积运算的连接方式
笛卡尔积运算:设A,B为一个集合,将A中的元素作为第一个元素,B中的元素作为第二个元素,形成有序对。
笛卡尔积:所有这些有序对都由一个称为a和B的笛卡尔积的集合组成,并被记录为AxB。
有序对: 形式为(a,b),不同的顺序意味着不同的有序对,(a,b)≠(b,a) 除非 a=b
2.等值连接
连接运算符为 = 的连接操作
[例] 查询每个学生及其选修课程的情况。
SELECT Student.*,SC.* FROM Student,SC
WHERE Student.Sno=SC.Sno;
注意:任何子句中引用表1和表2中同名属性时,都必须加表名前 缀
           引用唯一属性名时可以加也可以省略表名前缀

3.自身连接

 一个表与其自己进行连接,称为表的自身连接

注意: 需要给表起别名以示区别
           由于所有属性名都是同名属性,因此必须使用别名前缀
[例] 查询每一门课的直接先修课的课程名
SELECT a1.Cname,a2.Cname
FROM Course a1,Course a2
WHERE a1.Cpno=a2.Cno

 

 4.内连接:

合并具有同一列的两个以上的表的行, 结果集中不包含一个表与另一个表不匹配的行

上面的连接均属于内连接

可以用另一种表达方式(方便连接格式的统一)

SELECT Student.*,SC.* FROM Student JOIN SC

ON Student.Sno=SC.Sno;
5.外连接
两个表在连接过程中除了返回满足连接条件的行以外还返回左(或右)表中不满足条件的行 ,这种连接称为左(或右) 外连接。没有匹配的行时, 结果表中相应的列为空(NULL)。
它的功能就在于能够 查询所有的数据。
左连接
SELECT Student.*,SC.*
FROM Student LEFT JOIN SC
ON Student.Sno=SC.Sno;
右连接
SELECT SC.*,Course.*
FROM SC RIGHT JOIN Course
ON SC.Cno=Course.Cno;
全连接
SC.*,Course.*
FROM SC FULL JOIN Course
ON SC.Cno=Course.Cno;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值