SQL SERVER查询练习习题 下载本文

内容发布更新时间 : 2024/5/4 18:56:12星期一 下面是文章的全部内容请认真阅读。

设教学数据库Education有三个关系:

学生关系s(student_id,student_name,birthday,sex,major); 学习关系sc(student_id,course_id,score);

课程关系course(course_id,course_name,term,period,credit) 查询问题: 单表查询

1:查所有年龄在20岁以下的学生姓名及年龄。

select student_name,year(getdate()) - year(birthday) as 年龄 from s

where year(getdate()) - year(birthday) < 30 2:查考试成绩有不及格的学生的学号 select distinct student_id from sc

where score < 60

3:查所年龄在20至23岁之间的学生姓名、系别及年龄。

select student_name,major,year(getdate()) - year(birthday) as 年龄 from s

where year(getdate()) - year(birthday) between 20 and 24 4:查舞蹈编导、英语、通信技术专业的学生姓名、性别。 select student_name, sex from s

where major in ('舞蹈编导','英语','通信技术')

5:查不是舞蹈编导、英语、通信技术的学生姓名、性别 select student_name, sex from s

where major not in ('舞蹈编导','英语','通信技术') 6:查所有姓“刘”的学生的姓名、学号和性别。 select student_name,student_id,sex from s

where student_name like '刘%'

8:查所有不姓“张”且单名的学生的姓名。 select student_name from s

where student_name not like '张_' 9:查C++课程的课程号。 select course_id from course

where course_name='C++'

10:查缺考的学生的学号和课程号。 select student_id,course_id from sc

where score is null

11:查开课学期为空值的课程编号和名称。

select course_id,course_name from course

where term is null

12:查信息管理专业20岁以下的学生的学号和姓名。 select student_id,student_name from s

where major='信息管理' and year(getdate()) - year(birthday)<20 13:查舞蹈编导专业性别为女的学生姓名、性别。 select student_name,sex from s

where major='舞蹈编导' and sex='女'

14:查询选修了110010课程的学生的学号和成绩,其结果按分数的降序排列。 select student_id,score from sc

where course_id='110010' order by score desc

15:查询全体学生的情况,查询结果按所在专业升序排列,对同一系中的学生按年龄降序排列。 select * from s

order by major asc,year(getdate()) - year(birthday) desc 16:查询学生总人数。 select count(*) as 人数 from s

17:查询选修了课程的学生人数。 select count(*) as 选修课程人数 from sc

18:计算选修了110010课程的学生平均成绩。(改为C++) select avg(score) as 平均成绩 from sc

where course_id=

(select course_id from course

where course_name='C++' )

19:查询学习110010课程的学生最高分数。 select max(score) as 最高分 from sc

where course_id='110010'

20:查询各个课程号与相应的选课人数。(改为课程名称) select course_name,count(*) as 人数 from sc,course

where sc.course_id=course.course_id group by course_name

21:查询至少选修两门课程的学号。 select student_id from sc

group by student_id having count(*) > 2

22:查询选修课程超过3门的学生姓名及课程门数 select student_name,count(*) as 课程门数 from s,sc

where s.student_id=sc.student_id group by student_name having count(*) > 3

多表查询

23:查询每个学生及其选修课程的情况。 select *

from s,sc,course

where s.student_id=sc.student_id and sc.course_id=course.course_id 24:查询选修了110011课程且成绩在90分以上的学生信息。 select * from s,sc

where s.student_id=sc.student_id and course_id='110010' and score>90 25:查询每个学生的姓名,选修的课程名及其成绩。 select student_name,course_name,score from s,sc,course

where s.student_id=sc.student_id and sc.course_id=course.course_id

子查询

27:查询选修了110011课程的学生姓名。 select student_name from s

where student_id in

(select student_id from sc

where course_id='110010' )

28:查询与“梁婷婷”在同一个专业学习的学生学号、姓名和专业。 select student_id,student_name,major from s

where major=

(select major from s

where student_name='梁婷婷' )

29:查询选修课程名为“C++”的学生学号和姓名。 select student_id,student_name from s

where student_id in

(select student_id from sc

where course_id= (select course_id from course

where course_name='C++' ) )

30:查询至少选修课程号为110010和110011的姓名。

select student_name from s

where student_id in ( select s1.student_id from sc s1,sc s2

where s1.course_id='110010' and s2.course_id='110011' and s1.student_id=s2.student_id )

31:查询选修“C++”的最高分的学生姓名,性别,系别 select student_name,sex,major from s,sc

where s.student_id = sc.student_id and course_id in

( select sc.course_id from sc,course

where sc.course_id = course.course_id and course_name = 'C++' )

and score =

( select max(score) from sc,course

where sc.course_id = course.course_id and course_name = 'C++' )

32:查询所有未选修C++课程的学生姓名。 select student_name from s

where not exists

(select * from sc

where course_id=

( select course_id from course

where course_name='C++') and sc.student_id=s.student_id )

1. ( A )是位于用户与操作系统之间的一层数据管理软件,它属于系统

软件,它为用户或应用程序提供访问数据库的方法。数据库在建立、使用和维护时由其统一管理、统一控制。 A.DBMS B.DB (database) C.DBS D.DBA

2、查询表中的前3条记录使用的关键字是( D )

A、up 3 B、down 3 C、pre 3 D、top 3 3. SQL Server安装程序创建4个系统数据库,下列哪个不是( C )系统

数据库。

A. Master B. Model C. pub D. msdb

4. 下列哪个不是sql 数据库文件的后缀(扩展名)。( C ) A..mdf B. .ldf C..tif D..ndf 5. SQL的视图是从( C )中导出的。

A. 基本表 B. 视图 C. 基本表或视图 D. 数据库 6. 在SQL语言中,建立存储过程的命令是( A ) A、CREATE PROCEDURE B、CREATE RULE C、CREATE DURE D、CREATE FILE 7. SQL语言中,删除表中数据的命令是( A )。 A. DELETE B. DROP C. CLEAR D. REMOVE

8. 在MS SQL Server中,用来显示数据库信息的系统存储过程是( D )。 A. sp_dbhelp B. sp_db C. sp_help D. sp_helpdb

9. Microsoft 公司的SQL Server 2005 数据库管理系统一般只能运行在

( A )。

A. Windows 平台 B. UNIX平台 C. LINX平台 D. NetWare 平台 10. SQL Server 2005 的物理存储主要包括3类文件(A )。 A. 主数据文件、次数据文件、事务日志文件 B. 主数据文件、次数据文件、文本文件 C. 表文件、索引文件、存储文件 D. 表文件、索引文件、图表文件 11. SQL Server 2000 系统中的所有系统级信息存储于哪个数据库( A )。 A. master B. model C. tempdb D.msdb 12、下列说法正确的是( B )。

A 、视图是观察数据的一种方法,只能基于基本表建立。 B 、视图是虚表,观察到的数据是实际基本表中的数据。 C 、索引查找法一定比表扫描法查询速度快。