数据检索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创建视图,按照样图进行操作。