设教学数据库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 、索引查找法一定比表扫描法查询速度快。