前言:
经过两步的SQL语句学习,相信大家已经打牢了SQL基础知识体系的认知,这一期我们继续深入SQL,学习系统,学习全面才能学得好,学的优!当然也需要经常刷题,这样子才能熟练以及提升!
回顾与思考:
在S-C数据库中用SQL实现以下查询:
查询选修DB(数据库)课程的学生名单
连接查询
连接查询:同时涉及两个以上的表的查询
连接条件或连接谓词:用来连接两个表的条件
连接字段:连接谓词中的列名称
连接条件中的各连接字段类型必须是可比的,但名字不一定相同
1.等值与非等值查询
等值查询:连接运算符为=
非等值连接:使用其他运算符
查询每个学生及其选修课程的情况
SELECT Student.*,SC.*
FROM Student,SC
WHERE Student.Sno=SC.sno
一、等值连接
查询选修了DB课程的学生名单
SELECT S.Sno,Sname
FROM S,C,SC
WHERE
C.Cno=SC.Cno AND
S.Cno=SC.Sno AND
C.Cname='数据库'
自然连接:一种特殊的等值链接
一条SQL语句可以同时完成选择和连接查询,这时WHERE子句是由连接谓词和选择谓词组成的复合条件。
查询选修2号课程且成绩在90分以上的所有学生的学号和姓名
SELECT Student.Sno,Sname
FROM Student,SC
WHERE Student.Sno=SC.Sno AND
SC.Cno='2'AND SC.Grade>90
执行过程:
先从SC中挑选出Cno='2'并且Grade>90的元组形成一个中间的关系
再和Student中满足连接条件的元组进行连接得到最终的结果关系
二.自身连接
三、外连接
悬浮元组:两个关系在做自然连接时被舍弃的元组称为悬浮元组
外连接:如果把悬浮元组也保存在自然连接的结果关系中,而在其他属性上填空值,那么这种连接就叫做外连接
看完这个图,我们对外连接就能有一定的理解了
案例
四、多表连接
嵌套查询
带有IN谓词的子查询
比较运算符的子查询
带有ANY(SOME)或ALL谓词的子查询
带有EXISTS 谓词
不同形式的查询间的替换
集合查询
基于派生表的查询
SQL语句我们就学到这里啦,相信你一定有所收获。当然,想要熟练SQL还是要刷题的哦,有两个比较好的平台 leetcode和洛谷,希望大家能有所进步!制作不易,点赞关注给主包无穷无尽的动力!