数据库系统实验指导及内容二

更新时间:2024-01-30 18:40:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验六 数据查询

一. 实验目的

1.观察查询结果, 体会SELECT语句实际应用;

2.要求学生能够在查询分析器中使用SELECT语句进行简单查询。 3. 熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。 二. 实验准备

1. 成功建立了基本表。

2. 了解简单SELECT语句的用法。

3. 熟悉查询分析器中的SQL脚本运行环境。 三. 实验要求

1. 完成简单查询和连接查询操作,并验收实验结果提交实验报告 四. 实验内容

所有的查询全部用Transact-SQL语句实现。此部分查询包括投影、选择条件表达、数据排序等。

对EDUC数据库实现以下查询:

1) 查询计算机应用专业的学生学号和姓名;

Select sno,sname from student s,class c where s.clsno=c.clsno and c.specialty =’计算机应用’;

2) 查询选修了课程的学生学号,理解为什么使用DISTINCT,并比较未使用distinct的情

况;

Select distinct sno from sc;

3) 查询选修课程0001 且成绩在80-90 之间的学生学号和成绩,并将成绩乘以系数0.75

输出;

Select sname grade/0.75 from sc where cno=0001 and grade between 80 and 90;

4)查询计算机应用和数学专业的姓“张”的学生的信息。

Select student .*,class.specialty where student.clsno=class.clsno and class.specialty in(‘计算机应用’,’数学’)and student.sname like ’张%’;

5)查询“0001”课程的成绩不低于李杰的学生学号和成绩;

Select sno grade from sc student where student.sno=sc.sno and sc.cno=’0001’and student.sname=’李杰’and grade >=(select grade from student where student.sname=’李杰’and sc.cno=’0001’);

6)查询其他系中比计算机应用专业学生年龄都小的学生信息;

Select student.*,class.specialty from stduent ,class where sage < all (select sage from student s,class c where s.clsno=c.clsno and c.specialty=’计算机应用’)and class.speciaty not in (‘计算机应用’); 7)查询没有选修“0002”课程的学生姓名;

Select distinct sname from student left outer join sc on student.sno=sc.sno where cno<>’0002’;

8)查询选修了全部课程的学生的姓名,首先向SC表中插入一条记录,具体信息为:学号:20090102,课程号:0007,成绩:70,这里有两种方法; Insert into sc values(’20090102’,’0007’,’70’); 方法一:使用嵌套查询

方法二:使用exists谓词

删除所插入的记录;

Delete from sc where sno=’20090102’and cno=’0007’;

实验七 使用聚集函数的SELECT语句

一. 实验目的

1. 熟练掌握数据查询中的分组、统计、计算和组合的操作方法。

2. 进一步掌握SQL Server 查询分析器的使用,加深对SQL语言的嵌套查询语句的理解。 二. 实验准备

1.了解SELECT语句的GROUP BY和ORDER BY子句的作用。 2.了解统计函数和分组统计函数的使用方法。 3. 熟悉查询分析器的运行环境。 三. 实验要求

1.在实验之前做好准备。

2.完成实验,并验收实验结果提交实验报告。 四. 实验内容

在数据库EDUC中用SQL语句实现如下查询: 1)求学生的总人数。

2)求选修了课程的学生人数。

Select count (distinct sno) from sc;

3)求课程的课程号和选修该课程的人数。

Select sno,count(sno) from sc group by cno;

4)求选修课程不小于2门课的学生学号。 Select sno from sc having count(cno)>=2;

实验八 视图的定义与使用

一. 实验目的

1. 熟悉和掌握对数据表中视图的查询操作和SQL命令的使用;

2. 熟悉和掌握对数据表中视图的更新操作和SQL命令的使用,并注意视图更新与基本表更

新的区别与联系;

3. 学习灵活熟练的进行视图的操作,认识视图的作用。 二.实验准备

1.EDUC数据库。

2.复习有关视图操作的SQL语言命令。 三.实验要求

1. 在实验开始之前做好准备工作。

2. 实验之后提交实验报告,思考视图和基本表的区别 四.实验内容 1.定义视图

在EDUC数据库中,以Student、Course 和SC表为基础完成一下视图定义:

1) 将Student, Course 和SC表中学生的学号,姓名,课程号,课程名,成绩定义为视图

V_SC_G;

Create view V_SC_G(sno,sname,cno,cname,clsno,grade) as select

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

2) 定义一个反映学生出生年份的视图V_YEAR;

Create view V_YEARV_YEAR as select,sno,sname, 2014-sage from student;

3) 将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_G;

Create view V_AVG_S_G as select sno count(cno),AVG(grade) from sc group by sno;

4) 将各门课程的选修人数及平均成绩定义为视图V_AVG_C_G。

Create view V_AVG_C_G as select cno count(sno),AVG(grade) from sc group by cno;

2.使用视图

1)查询以上所建的视图结果。 (1)

Select*from V_SC_G;

(2)

Select * from V_YEAR; (3)

Select * from V_AVG_S_G; (4)

Select * from V_AVG_C_G;

2)查询平均成绩为90分以上的学生学号、姓名和成绩;

3)查询各课成绩均大于平均成绩的学生学号、姓名、课程和成绩;

4)查询1995年出生的学生学号和姓名。

本文来源:https://www.bwwdw.com/article/lxmw.html

Top