数据库上机实验

数据检索2

1. 按性别分组,求出student表中每组学生的平均年龄。 2. 统计每个学生期末成绩的平均分。

3. 输出student表中没有职称的职工的教师号、姓名、专业和部门。 4. 查询选修课程且期末成绩不为空的学生人数。

5. 查询每名学生的学号、选修课程数目、总成绩,并将查询结果存放到生成的“学生选课统计表”中。 6. 查询各班学生的人数。

7. 查询各课程期末成绩的最高分和最低分。

8. 查询教两门及以上课程的教师编号、任课班级数。

9. 查询课程编号以’c05’开头、被3名及以上学生选修且期末成绩的平均分高于75分的课程号、选修人数和期末成绩平均分,并按平均分降序排序。 10. 查询所有08级学生的期末成绩平均分,要求利用COMPUTE BY方法显示每一名学生的学生编号、课程号、期末成绩的明细表,以及期末成绩平均分的汇总表。

11. 查询所有女生入学成绩的最高分,要求利用COMPUTE BY方法既显示明细又显示汇总结果。

SQL语句的高级应用1

1. 查询每一位教授的教师号、姓名和讲授的课程名称。 表:teacher,course,teach_class

2. 分别统计每个学生期末成绩高于75分的课程门数。表:student,score 3. 计算每个学生获得的学分。表:student,score,course

4. 获取入学时间在2008年到2009年之间的所有学生中入学年龄小于19岁的学生的学号、姓名及所修课程的课程名称。表:student, stu_course

5. 查询09级学生的学号、姓名、课程及学分。表:student,stu_course

6. 查询所有班级的期末成绩平均分,并按照平均分降序排列。表:score,student 7. 查询教师基本信息和教授课程信息,其中包括未分配课程的教师信息。 表:teacher,teach_class

8. 查询’090501’班级中选修了’韩晋升’老师讲授的课程的学生的学号、姓名、课程名和期末成绩。表:score,student,course,teach_class,teacher

9. 查询每门课程的课程号、课程名和选修该课程的学生人数,并按所选人数升序排序。表:score,course

10. 查询两门及以上课程的期末成绩超过80分的学生的姓名及其平均成绩。 表:student,score

SQL语句的高级应用2 – 使用子查询

1. 输出student表中年龄大于女生平均年龄的男生的所有信息。 2. 查询入学考试成绩最高的学生的学号、姓名和入学成绩。 3. 查询所有教授’c05127’号课程的教师信息。

4. 查询同时教授’c05127’和’c05109’号课程的教师信息。

5. 查询至少选修了姓名为’韩吟秋’的学生所选修课程中的一门课的学生的学号和姓名。

6. 查询没有被任何学生选修的课程编号、课程名称和学分。

7. 查询’C语言’课程期末成绩比’电子技术’课程期末成绩高的所有学生的学号和姓名。

8. 查询所有班级期末平均成绩的最高分,并将其赋值给变量,通过PRINT语句输出。

视图与索引

使用SQL语言

1. 创建一个视图v_teacher,查询所有“计算机学院”的教师信息。

CREATE VIEW v_teacher AS

SELECT * FROM teacher WHERE department='计算机学院' GO

SELECT * FROM v_teacher

2. 创建一个视图v_avgstu,查询每个学生的学号、姓名及平均分,并且按照平均分降序排列。

CREATE VIEW v_avgstu AS

SELECT TOP 100 student.studentno,sname,avg(final) AS '平均分' FROM student JOIN score

ON student.studentno=score.studentno GROUP BY student.studentno,sname ORDER BY avg(final) GO

SELECT * FROM v_avgstu

3. 修改v_teacher的视图定义,添加WITH CHECK OPTION选项。

ALTER VIEW v_teacher AS

SELECT * FROM teacher WHERE department='计算机学院' WITH CHECK OPTION

4. 通过视图v_teacher向基表teacher中分别插入数据(‘05039’, ‘张馨月’,’计算机应用’,’讲师’,’计算机学院’)和(‘06018’, ‘李诚’,’机械制造’,’副教授’,’机械学院’),并查看插入数据情况。

INSERT INTO v_teacher VALUES ('05039', '张馨月','计算机应用','讲师','计算机学院') GO

SELECT * FROM teacher

消息550,级别16,状态1,第1 行

试图进行的插入或更新已失败,原因是目标视图或者目标视图所跨越的某一视图指定了WITH CHECK OPTION,而该操作的一个或多个结果行又不符合CHECK OPTION 约束。 语句已终止。

5. 通过视图v_teacher将基表teacher中教师编号为05039的教师职称修改为”副教授”。

UPDATE v_teacher

SET prof='副教授'

WHERE teacherno='05039'

GO

SELECT * FROM teacher

6. 在course表的cname列上创建非聚集索引IDX_name。

CREATE NONCLUSTERED INDEX IDX_name ON course(cname)

7. 在student表的studentno和classno列上创建唯一索引UQ_stu,若该索引已经存在,则删除后重建,并输出student表中的记录,查看输出结果的顺序。 CREATE UNIQUE INDEX UQ_stu ON student(studentno,classno)

8. 教材P.200-204(节7.5.2)使用SQL Server Management Studio创建视图,按照样图进行操作。

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4