数据库系统原理实验指导书 下载本文

3 查询比保管员张力保管的商品价格都高的商品名称。

【实验指导】

(一)连接查询 语法: SELECT 列 FROM 表1, 表2 WHERE表1.列=表2.列

【例1】查询全体学生的学号与姓名。 Select sno,sname from student

【例2】查询选修了课程的学生学号

Select sno from sc

【例3】查询年龄不在20-23岁之间的学生姓名、系别和年龄 Select sname,sdept sage from student where sage not between 20 and 23

【例4】查询所有姓刘的学生的姓名、学号和性别

Select sname ,sno,ssex from student where sname like ‘刘%’

【例5】查询以”DB_”开头,且倒数第三个字符为i的课程的详细情况 Select * from course where cname like ‘DB\\_%i_ _’ escape ‘\\’;

【例6】 查询计算机科学系年龄在20岁以下的学生姓名 Select sname from student where sdept=’CS’ and sage<20

两个或两个以上的表也可以进行连接。 【例7】查询每个学生及其选修课程的情况

Select student.*, SC.* from student, sc where student.sno=sc.sno

【例8】 查询选修2号课程且成绩在90分以上的所有学生

Select student.sno ,sname from student ,sc where student.sno=sc.sno and sc.cno=’2’ and sc.grade>90

【例9】查询每个学生的学号、姓名、选修的课程名及成绩

Select student.sno,sname,cname,grade from student,sc,course where student.sno=sc.sno and sc.cno=course.cno

(二)嵌套查询

嵌套子查询的执行不依赖于外部嵌套。

9

嵌套子查询的执行过程为:首先执行子查询,子查询得到的结果集不被显示出来,而是传给外部查询,作为外部查询的条件使用,然后执行外部查询,并显示查询结果。子查询可以多层嵌套。

嵌套子查询一般也分为两种:子查询返回单个值和子查询返回一个值列表。 (1)带有IN谓词的子查询

【例1】查询与“刘晨”在同一个系学习的学生。 Select sno,sname ,sdept

From student Where sdept IN

(select sdept from student where sname=’刘晨’)

(2)带有比较运算符的子查询

【例2】找出每个学生超过他选修课程平均成绩的课程号

Select sno,cno from sc x where grade>=(select avg(grade) from sc y where y.sno=x.sno)

(3)带有ANY(SOME)或ALL谓词的子查询

【例3】查询其他系中比计算机科学系某一学生年龄小的学生姓名和年龄

Select sname,sage from student where sage’CS’

(4)带有EXISTS谓词的子查询

【例4】查询没有选修1号课程的学生姓名

Select sname from student where NOT EXISTS (select * from SC where sno=student.sno and cno=’1’)

10

长春大学计算机科学技术学院

实验报告

日期_______________ 地点______________ 指导教师_____________ 成绩

实验二 单表查询和连接查询

一、对实验指导中的相应题目进行上机调试并分析结果

1、第一个查询要求分别用连接查询和嵌套查询完成,给出查询命令、初始数据、执行果,比较不同方法的效率。

2、其它查询要求给出查询命令、初始数据、执行结果,说明你选择连接查询或嵌套查询的原因

11

实验三 统计查询和组合查询

【实验目的】

加深对统计查询的理解,熟练使用聚簇函数

【实验内容】

(从以下10个题目中,任选其一) 题目一:

学生(学号,年龄,性别,系名) 课程(课号,课名,学分,学时) 选课(学号,课号,成绩)

根据上面基本表的信息完成下列查询。

1 查询选修了数据库原理的学生的人数和平均成绩。 2 查询选修3门课 以上的学生姓名。 3列出人数超过1000人的系名。

4 查询没有人选的课和选课人数少于3人的课。 题目二:

图书(书号,书名,价格,出版社) 读者(卡号,姓名,年龄,所属单位) 借阅(书号,卡号,借阅日期)

根据上面基本表的信息完成下列查询。 1 查询书号为tp0103被借阅次数。

2 查询工作单位在计算机系的读者姓名和借阅次数。 3 查阅年龄50以上借阅次数2次以下的读者信息。 4 查询从来没被借阅的图书和借阅次数少于3次的图书。 题目三:

商品(编号,品名,进价,库存,售价,厂商编号) 顾客(卡号,姓名,电话,积分) 厂商(编号,厂址,名称、电话)

销售(顾客卡号,商品编号,数量,日期) 根据上面基本表的信息完成下列查询。 1 查询积分最高的顾客姓名

2 查询销售数量1000以上的商品的厂商电话。 3 查询生产商品5种以上的厂商信息。

4 查询没有顾客买的商品和购买数量少于3个的商品。 题目四:

图书(书号,书名,作者编号,价格,出版社编号) 作者(编号,姓名,电话)

出版社(编号,出版社名称,地址) 根据上面基本表的信息完成下列查询。 1 统计各出版社出版图书的数量。 2 列出多人合著的图书书号和价格。

3 列出高教出版社出版的最贵图书信息。

4 列出没有图书出版的出版社和出版图书少于3种的出版社。 题目五:

12