计算机软件技术基础实验报告

更新时间:2024-01-04 13:45:01 阅读量: 教育文库 文档下载

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

山东建筑大学实验报告

学院: 信电学院 班级: 姓名: 学号:

课程: 计算机软件技术基础 实验日期:2013年 11月 22日 成绩:

实验七 SQL 简单查询、连接查询和子查询

一、实验目的

1.掌握在查询分析器中使用SELECT语句进行简单查询。

2.熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。 3.熟练掌握数据查询中的分组、统计、计算和组合的操作方法。 4.观察查询结果, 体会SELECT语句实际应用

二、实验用软件和工具

1.计算机。实验软件 VC++ 6.0 2.SQL Server2005软件。

三、实验步骤

1 简单查询操作

此部分查询包括投影、选择条件表达、数据排序、使用临时表等。 对EDUC(shiyan6)数据库实现以下查询: (1)求信电学院的学生学号和姓名; (2)求选修了课程的学生学号;

(3)求选修C1 课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列;

(4)求选修课程C1 且成绩在80-90 之间的学生学号和成绩,并将成绩乘以系数0.75 输出;

(5)求计算机系和数学系的姓张的学生的信息; (6)求缺少了成绩的学生的学号和课程号。 2 连接查询操作

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

(1)查询每个学生的情况以及他(她)所选修的课程; (2)求学生的学号、姓名、选修的课程名及成绩;

(3)求选修C1 课程且成绩在90 分以上的学生学号、姓名及成绩; (4)查询每一门课的间接先行课。

3.子查询操作,在数据库EDUC(shiyan6)中实现查询:

山东建筑大学实验报告

学院: 信电学院 班级: 姓名: 学号:

课程: 计算机软件技术基础 实验日期:2013年 11月 22日 成绩:

(1)求选修了高等数学的学生学号和姓名; (2)求C1 课程的成绩高于张三的学生学号和成绩;

(3)求其他系中比计算机系某一学生年龄小的学生信息(即求其它系中年龄小于计算机系年龄最大者的学生);

(4)求其他系中比计算机系学生年龄都小的学生信息; (5)求选修了C2 课程的学生姓名; (6)求没有选修C2 课程的学生姓名; (7)查询选修了全部课程的学生的姓名;

(8)求至少选修了学号为“S2”的学生所选修的全部课程的学生学号和姓名。 4.使用子句的查询操作,在数据库EDUC(shiyan6)中实现查询: (1)求学生的总人数。 (2)求选修了课程的学生人数。

(3)求课程的课程号和选修该课程的人数。 (4)求选修课超过3 门课的学生学号

四、实验程序与程序运行结果

1实验准备 建立基本表,打开基本表,添加如下数据。 实验数据 sno sname sex sage 1101 21 张楠 男 1102 20 李勇 男 1103 19 王婷 女 2101 19 田依 女 2102 20 张亮 男 2103 21 齐军 男 3101 18 刘晨 男 3102 20 王敏 女 3103 21 张立 男 cno spno cname 101 102 103 104 105 106

Sdept CS CS CS MS MS MS IS IS IS credit 3 3 3 3 3 3 105 101 106 107 数据库原理 高等数学 信息系统 操作系统 数据结构 数据处理

山东建筑大学实验报告

学院: 信电学院 班级: 姓名: 学号:

课程: 计算机软件技术基础 实验日期:2013年 11月 22日 成绩:

107 sno 1101 1101 1103 2102 2102 2102 106 cno 101 106 101 101 102 106 PASCAL语言 score 73 82 75 91 70 2 2 查询操作实现参考 1 简单查询操作

此部分查询包括投影、选择条件表达、数据排序、使用临时表等。 对EDUC(shiyan6)数据库实现以下查询: (1)求信电学院 (IS)的学生学号和姓名; select sno,sname from student where sdept='IS'

(2)求选修了课程的学生学号; select sno

from student_course

where cno IS NOT NULL

(3)求选修101 课程的学生学号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同则按学号的升序排列;

select sno,score from student_course where cno='101'

ORDER BY score DESC,sno

(4)求选修课程101 且成绩在80-90 之间的学生学号和成绩,并将成绩乘以系数0.75 输出; select sno,score*0.75 from student_course

where cno='101' AND (score<=90 AND score>=80)

(5)求计算机系(CS)和数学系(MS)的姓张的学生的信息;代码如下: SELECT *

FROM student

where (sdept='CS' OR sdept='MS' )AND sname LIKE '张%' (6)求缺少了成绩的学生的学号和课程号。 SELECT sno,cno

FROM student_course where score IS NULL 2连接查询操作

(1)查询每个学生的情况以及他(她)所选修的课程; SELECT student.sno,sname,sex,sage,sdept FROM student, student_course

山东建筑大学实验报告

学院: 信电学院 班级: 姓名: 学号:

课程: 计算机软件技术基础 实验日期:2013年 11月 22日 成绩:

where student_course.sno=student.sno (2)求学生的学号、姓名、选修的课程名及成绩;

SELECT student.sno,sname,course.cname,student_course.score FROM student,course,student_course

where student_course.sno=student.sno and student_course.cno= course.cno (3)求选修102 课程且成绩在90 分以上的学生学号、姓名及成绩; SELECT student.sno,sname,score FROM student, student_course

WHERE cno='102' AND score>90 and student_course.sno=student.sno (4)查询间接先行课。 SELECT first.cno,second.spno FROM course first, course second

WHERE first.spno= second.cno and second.spno is not NULL

4.使用子查询操作,在数据库EDUC(shiyan6)中实现查询: (1)求选修了高等数学的学生学号和姓名;代码如下: SELECT student.sno,sname

from student,course,student_course

where student.sno=student_course.sno AND student_course.cno=course.cno AND course.cname='高等数学'

(2)求101 课程的成绩高于张楠的学生学号和成绩;代码如下: SELECT DISTINCT student_course.sno,score from course,student_course,student

where student_course.cno = '101' AND score > SOME( SELECT score from student_course

where student.sname='张楠')

(3)求其他系中比计算机系某一学生年龄小的学生信息(即求其它系中年龄小于计算机系年龄最大者的学生) SELECT * FROM student

where sage

(4) 求选修了102 课程的学生姓名; select sname from student

where sno in (select sno from student_course where cno='102')

五、实验心得与体会

通过本次上机实验,我掌握简单表的数据查询、数据排序和数据连接查询的操作方法,以及数据查询中的分组、统计、计算和组合的操作方法,对数据库的基础操作加深理解,应用上面只是尚有不足的地方,今后需要更加努力。

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

Top