open 发表于 2021-2-20 09:17:10

大工21春《sql数据库系统及应用》复习资料七

SQL数据库系统及应用辅导资料七主    题:第四章数据的查询(二)
学习时间:2020年5月11日--5月17日“不忘初心、牢记使命”主题理论学习:
忠诚是共产党人必须具备的优秀品格。“忠诚印寸心,浩然充两间”的坚毅,“砍头不要紧,只要主义真”的无畏,腹中满是草根而宁死不屈的气节,食指钉入竹签而永不叛党的坚贞,无数先烈用鲜血诠释了对党的忠诚。对党忠诚必须是纯粹的、无条件的,是政治标准、更是实践标准,鲜明体现在坚决贯彻答案决策部署上。
摘选自《在第十九届中央纪律检查委员会第二次全体会议上的讲话》内    容:第四章数据的查询
这周我们将继续学习课件第四章(基本的多表查询、全面的多表查询)。本节的学习要求及需要掌握的重点内容如下:
1. 理解基于多个表的数据存储方式;
2. 掌握针对多个表的数据进行查询的基本方法;
3. 掌握不等值连接查询的方法
4. 掌握自身连接查询的思路和方法
5. 掌握基于JOIN运算符的连接查询方法
6. 掌握外连接的概念和查询方法引入:实际的数据库中不会只用一个表存储所有数据,而会将逻辑上紧密联系的数据(某实体的各个属性)存放在各自的表中(对应于关系模型的各个关系)。那么表和表之间如何连接呢?如何多表查询?
各个表中的数据行通过外码取值与其他表中的数据行“建立”联系。基本的多表查询
1、基于多个表的数据存储方式
/
多个表之间的数据行通过外码取值 “建立”的联系即为数据行之间的参照联系,应该满足参照完整性约束,只有这样才能保证数据库中的数据是正确有效的。
SQL数据库通过外码来实现参照完整性约束。
参照完整性规则:若属性(或属性组)F 是基本关系R 的外码,它与基本关系S 的主码Ks 相对应,则对于R 中的每个元组在F上的值必须是:
或者取空值(F 的每个属性均为空)
或者等于S 中某个元组的主码值。2、针对多个表的数据查询
操作环境设定:
假设我们现在使用4个表来存储单表查询中StudentInfo表的数据,如下所示:
/
问题:如何查询“段誉所属的系的名称”?
/
多表查询应该在笛卡尔积的基础上只保留满足一定条件的新生成数据行,然后在这些保留下来的数据行所形成的数据行集合的基础上再使用单表查询的方式进行查询操作。
select * from student,depart where student.dno=depart.dnoAND sname='段誉'
/连接:
“在笛卡尔积的基础上只保留满足一定条件的新生成数据行”这样的操作被称为连接(JOIN)
同时涉及多个表的查询称为连接查询
进行新生成数据行选择的条件被称为连接条件或连接谓词
一般格式:
/
比较运算符:=、>、<、>=、<=、!=
1)等值连接:连接运算符为 = 的连接操作
/
任何子句中引用表1和表2中同名属性时,都必须加表名前缀。引用唯一属性名时可以加也可以省略表名前缀
2)自然连接:等值连接的一种特殊情况,把目标列中重复的同名属性列去掉冗余,只保留一个列
示例:查询选修课程的各种成绩,显示课程名、学生名、成绩
/
查询所有被选修的课程,不允许出现重复的课程名
/
查询丐帮,明教和古墓派的学生姓名及性别
/
查询全体学生的所有选课记录,显示学生学号、姓名、所在系名、课程名、成绩
/
查询系名为’铁掌帮’的学生的详细情况
/
查询选修了2门以上课程的学生学号及姓名
/
全面的多表查询
1. 不等值连接
非等值连接:连接运算符 不是 = 的连接操作
2. 自身连接
自身连接:一个表与其自己进行连接,称为表的自身连接
-需要给表起别名以示区别
-由于所有属性名都是同名属性,因此必须使用别名前缀
示例:
数据表如下所示
/
查询有先修课程的课程名称及对应的先修课名称
/
3. 基于JOIN的连接
使用FROM+WHERE形式的连接方式:
SELECT * FROM course as c1, course as c2WHERE c1.cPNo=c2.cNo;
在FROM子句中使用JOIN关键字的连接方式:
SELECT * FROM course as c1 JOIN course as c2ON c1.cPNo=c2.cNo示例:
1)查询所有学生的身份(student表中所有属性)及系别信息(depart表中所有属性) 注意两种方法
-使用FROM+WHERE形式的连接方式
-SELECT * FROM student,depart WHERE student.dNo=depart.dNo;
-在FROM子句中使用JOIN关键字的连接方式
-SELECT * FROM student JOIN depart ON student.dNo=depart.dNo;
2)查询全体学生的所有选课记录,显示学生学号、姓名、所在系名、课程名、成绩
-使用FROM+WHERE形式的连接方式
-SELECT * FROM student,depart,course,electCourse
WHERE student.dNo=depart.dNo AND student.sNo=electCourse.sNo
            AND course.cNo=electCourse.cNo
-在FROM子句中使用JOIN关键字的连接方式
-SELECT * FROM student JOIN depart ON student.dNo=depart.dNo
         JOIN electCourse ON student.sNo=electCourse.sNo
                               JOIN course ON course.cNo=electCourse.cno4. 内连接与外连接
普通连接(内连接)操作只输出满足连接条件的元组
外连接操作以指定表为连接主体,将主体表中不满足连接条件的元组一并输出。
使用FROM+WHERE的连接方式无法实现外连接
外连接的方式包括:
左外连接(LEFT JOIN)
右外连接(RIGHT JOIN)
全外连接(FULL JOIN)示例:查询各个课程(包含被选修的和未被选修的)的选课人次和平均成绩,显示信息包括课程名称、选课人次、平均成绩
/
查询所有学生所属系别的情况,若有某学生不属于任何系或某系没有任何学生,这些学生和系别仍然输出在查询结果中,显示信息包括学号、学生姓名、系编号、系名称、系主任
/重要考点
一、名词解释
1.参照完整性规则:若属性(或属性组)F 是基本关系R 的外码,它与基本关系S 的主码Ks 相对应,则对于R 中的每个元组在F上的值必须是:或者取空值,或者等于S 中某个元组的主码值。
2. 连接(JOIN):“在笛卡尔积的基础上只保留满足一定条件的新生成数据行”这样的操作被称为连接(JOIN)。
3. 自身连接:一个表与其自己进行连接,称为表的自身连接。
4. 内连接:普通连接(内连接)操作只输出满足连接条件的元组
5. 外连接:外连接操作以指定表为连接主体,将主体表中不满足连接条件的元组一并输出二、单选题:
1.设关系数据库中一个表S的结构为s(sname,cname,grade),其中sno为学生姓名,cno为课程名,二者均为字符型;grade为成绩,数值型,取值范围0~100。若要更正张三的化学成绩为85分,则可用(    )。
A.update s set grade=85 where sname='张三' and cname='化学'
B.update set grade='85' where sname='张三' and cname='化学'
C.update grade=85 where sname='张三' and cname='化学'
D.creates grade=85 where sname='张三' and cname='化学'
答案:A
解析:D选项排除,create是建立表,无法建立已经存在的表。BC选项未定义更新哪个表,错误2.Select emp_id,emp_name,sex,title,wage from employee order by emp_name句子得到的结果集是按(   )排序。
A.emp_id
B.emp_name
C.sex
D.wage
答案:B
解析:order by 后面的跟的字段就是结果三、操作题
1.已知有如下couse表:
/
(1)使用where子句查询cs_tm=64的所有信息
/
(2)查询cs_tm=64的所有信息,并以cs_id以降序排列
/
(3)求表中cs_tm的最大值和最小值以及总和和平均值
/南开答案可以联系QQ 761296021
页: [1]
查看完整版本: 大工21春《sql数据库系统及应用》复习资料七