一、选择题(每题2分,共20分)
1.SQL数据操纵语言中,最重要,也是使用最频繁的语句是( A )。
- SELECT B. INSERT C. UPDATE D. DELETE
2.想将查找结果中的列名“所在系”改为“系名”,则在SELECT子句中定义列别名,下列各项中( A )不对。
- 所在系 系名 B. 所在系 AS 系名
- 所在系=系名 D. 系名=所在系
3.要用SQL语句查询名字中最后一个字为“江”或“河”的名称,则查询条件子句应写成:WHERE 名称 LIKE( A )。
- ‘%江河’ B. ‘%江河%’ C. ‘%[江河]’ D. ‘_[江河]’
4.设职工表中有属性“电话”,要查找有电话信息的职工,则查询条件子句应写成:WHERE 电话( C )。
- <> ‘’ B. <>NULL C. is not null D. <>’null’
5.要查询选修了3门以上课程的学生的学号,则正确的SQL语句是:
SELECT 学号 FROM 选课( C )。
A GROUP BY 学号 WHERE COUNT(*)>3
B.ORDER BY 学号 WHERE COUNT(*)>3
C.GROUP BY 学号 HAVING COUNT(*)>3
D.ORDER BY 学号 HAVING COUNT(*)>3
6.连接查询的关键是连接条件,关于两表的连接条件,下列说法( B )是正确的。
- 连接条件应是等值比较 B. 两表进行比较的属性类型必须可比
- 两表进行比较的必须是同名列 D. 两表间的连接条件是固定的
7.嵌套查询中,父查询的条件是“<ANY”子查询的结果,下列各项中能替代该条件的是( C )。
- NOT IN B.<ALL C. <MIN D. <MAX
8.元组比较操作(a1,a2)>(b1,b2)的意义是( A )。
A.a1>b1 AND a2>b2 B. a1+a2>b1+b2
- a1>b1 AND a1=b1 AND a2>b2 D. a1>b1 OR a1=b1 AND a2>b2
9.下列SQL语句中,修改表数据的语句是( C )。
- ALTER B. CREATE C. UPDATE D. INSERT
10.在DELETE语句中,如果没有WHERE子句,表示删除( B )元组。
- 当前 B. 所有 C. 第一个 D. 特定
二、应用题(每题5分,共80分)
设有三个关系模式:
学生(学号,姓名,性别,年龄,所在系)
课程(课程号,课程名,学分)
选课(学号,课程号,成绩)
其中,选课关系中的属性“学号”和“课程号”定义为外键。请使用T-SQL语句完成下列功能:
1.统计课程门数。
2.统计有学生选修的课程门数。
3.求各系学生平均年龄。
4.求选修“数据库”课程的学生的平均年龄。
5.列出只选修了一门课程的学生基本信息。
6.列出学生“张生”选修的课程名和学分,按课程名升序排列。
7.查询出至少选修了姓名为“张生”学生所选课程中一门课的全部学生。
8.查出各门课程的选修人数。
9.查出“S01”号学生选修课程的总学分。
10.查出“数据库”课程成绩前三名的选课信息。
11.查询所有课程名中包含“数据库”的课程信息。
12.按系查询各系学生详细信息,并统计各系人数。
13.增加一门新的课程,课程号为“C09”,课程名为“法语”,学分为2。
14.将全部学生的年龄加1。
15.将学生S15所学课程C08的成绩改为90。
16.从学生关系中删除S15号学生的记录,并删除该生的选课记录。(注意先后顺序)
1.统计课程门数。
ect cout(*) from 课程
2.统计有学生选修的课程门数。
select count(*) from 课程 where 课程号 in(select 课程号 from 选课)
3.求各系学生平均年龄。
Select avg(select 年龄 from 学生) from 学生 group by 所在系
4.求选修“数据库”课程的学生的平均年龄。
Select avg(select 年龄 from 学生 where 学号 in(Select 学号 from 选课 where 课程号=数据库)
5.列出只选修了一门课程的学生基本信息。
select * from 学生 where 学号 in(
Select 学号 from 选课 where (Select count(课程号) from 选课 group by 学号
)=1)
6.列出学生“张生”选修的课程名和学分,按课程名升序排列。
Select 课程号,学分 from 选课 left join 课程 on 选课课程号= 课程课程号where 学号= (
Select 学号 from 学生 where 姓名=张生
order by 课程名 asc
7.查询出至少选修了姓名为“张生”学生所选课程中一门课的全部学生。
Select 学号 from 选课 where 课程号 in(Select 课程号 from 选课 where (
Select 学号 from 学生 where 姓名=张生
) order by 课程名 asc
查)
9.查出“S01”号学生选修课程的总学分。
Select sum(学分) from 选课 where 学生号=S01
11.查询所有课程名中包含“数据库”的课程信息。
Select * from 课程 where 课程名 like ‘%数据库%’
12.按系查询各系学生详细信息,并统计各系人数。
Select count (1),* from 学生 group by 所在系
13.增加一门新的课程,课程号为“C09”,课程名为“法语”,学分为2。
Insert into 课程 课程号 课程名 SCOREvalues(C09 ,法语 , 2 )
14.将全部学生的年龄加1。
Update 学生 set 年龄=年龄+1
15.将学生S15所学课程C08的成绩改为90。
Update 课程 set 成绩=90 where 课程号=C08 and 学生号=S15
16.从学生关系中删除S15号学生的记录,并删除该生的选课记录。(注意先后顺序)
Delete * from 选课where 学号=S15;
DELETE * from 学生 where 学号=S15;