当前位置:主页 > 查看内容

数据库第六次 数据查询2

发布时间:2021-05-10 00:00| 位朋友查看

简介:文章目录 一.GROUP BY子句2 二.连接查询 1.等值与非等值连接查询 1.嵌套循环连接法 2.排序合并法 3.自然连接 2.自身连接 3.外连接 4.多表连接 一.GROUP BY子句2 WHERE 子句作用于基本表或者视图从中选择满足条件的元组 HAVING 子句作用于组从中选择满足条件……


一.GROUP BY子句(2)

WHERE 子句作用于基本表或者视图,从中选择满足条件的元组
HAVING 子句作用于组,从中选择满足条件的组

所以WHERE子句中不能用聚集函数作为条件表达式

查询 平均成绩大于等于86分的学生学号和平均成绩

错例(WHERE 后使用了聚集函数)

在这里插入图片描述
正确解法
在这里插入图片描述

二.连接查询

同时涉及两个以上的表的查询

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

连接条件:用来连接两个表的条件
连接字段:连接条件中的列名称

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

在这里插入图片描述
在这里插入图片描述
直接显示两表笛卡尔积结果
在这里插入图片描述
在这里插入图片描述

1.嵌套循环连接法

表一中第一个元组逐一与表二中元组匹配,匹配成功就将两元组拼接形成结果表中的一个元组,全部查找完成后,表一第二个元组重复此步骤,以此类推到最后一个元组

2.排序合并法

按连接属性对表排序
表一中第一个元组与表二中元组匹配(按照表二顺序从上至下),直到匹配失败即表一元组不能与表二元组满足连接条件,停止,开始表一第二个元组在上一次的断点处继续匹配,依次循环到表一最后一个元组

3.自然连接

自然连接:在等值连接中把目标列中的重复属性列去掉

用自然连接完成查询每个学生及其选修课程的情况
在这里插入图片描述
在这里插入图片描述

一条SQL语句可以同时完成选择和连接查询
查询选修二号课程且成绩在86以上的所有学生学号与姓名
在这里插入图片描述
执行过程:
1.从SC中选出Cno=2和Grade>8的元组形成中间关系
2.和Student中满足连接条件的元组进行连接

2.自身连接

一个表与自己进行连接(需要给表起别名以示区别)

查询每一门课的间接先先修课
在这里插入图片描述
在这里插入图片描述

3.外连接

以指定的表为连接主体 ,将主体不满足连接条件的元组一并输出
(在通常的连接操作中,只有满足连接条件的元组才能作为结果输出)

查询每个学生及其选修课程的情况(外连接)
在这里插入图片描述

左外连接(如本例)连接列出左边关系所有的元组
右外连接列出右边关系中所有的元组
(还可以用USING来去掉结果的重复值:FROM Student LEFT OUTER JOIN SC USING (Sno);😉)

在这里插入图片描述

4.多表连接

两个以上的表进行连接

查询每个学生的学号,姓名,选修的课程名 和成绩(涉及三个表)
在这里插入图片描述
在这里插入图片描述
多多练习,熟能生巧。

;原文链接:https://blog.csdn.net/weixin_45958258/article/details/115438381
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐