第3章 SQL语言习题
一、单项选择题
1.SQL语言是( B )的语言,易学习。 A.过程化
B.非过程化
C.格式化
D.导航式
D.非数据库
2.SQL语言是( C )语言。 A.层次数据库
B.网络数据库
C.关系数据库
3.SQL语言具有( B )的功能。
A.关系规范化、数据操纵、数据控制 B数据定义、数据操纵、数据控制 C.数据定义、关系规范化、数据控制 D.数据定义、关系规范化、数据操 4.SQL语言的数据操纵语句包括SELECT,INSERT,UPDATE和DELETE等。其中最重要的,也是使用最频繁的语句是( A )。 A.SELECT
B.INSERT
C.UPDATE
D.DELETE
D.解释式SQL
5.SQL语言具有两种使用方式,分别称为交互式SQL和( C )。 A.提示式SQL A.SELECT A.ALTER A 基本表 A WHERE A WHERE A =ANY
B.用户式SQL B.INSERT
C.嵌入式SQL
6.SQL语言中,实现数据检索的语句是( A )。
C.UPDATE
D.DELETE
7.下列SQL语句中,修改表结构的是( A )。
B.CREATE B 视图 B FROM
C.UPDATE C 存储文件 C SELECT
D .DELETE D 基本表和视图 D HAVING
D HAVING
8.在SQL中,用户可以直接操作的是( D )。
9.在SQL的查询语句中,对应关系代数中“投影”运算的语句是( C )。 10.在SELECT语句中,需对分组情况满足的条件进行判断时,应使用(D )。
B GROUP BY C ORDER BY B <>ANY
C =ALL
11.SQL中,与“NOT IN”等价的操作符是( D )。
D <>ALL
12.视图建立后,在数据字典中存放的是( C )。 A 查询语句 C 视图的定义 们的结构如下:
S(S#,SN,SEX,AGE,DEPT)
B 组成视图的表的内容 D 产生视图的表的定义
第13到第16题基于这样的三个表即学生表S、课程表C和学生选课表SC,它
AAAAAA
C(C#,CN)
SC(S#,C#,GRADE)
其中:S#为学号,SN为姓名,SEX性别,AGE为年龄,DETP为系别,C#为课程号,CN为课程名,GRADE为成绩。
13.检索所有比“王华”年龄大的学生姓名、年龄和性别。正确的SELECT语句是( A )。
A.SELECT SN, AGE, SEX FROM S WHERE AGE>(SELECT AGE FROM S WHERE SN=’王华’)
B.SELECT SN, AGE, SEX FROM S WHERE SN=’王华’
C.SELECT SN,AGE,SEX FROM S WHERE AGE>(SELECT AGE WHERE
SN=’王华’)
D.SELECT SN, AGE, SEX FROM S WHERE AGE>王华.AGE
14.检索选修课程“C2”的学生中成绩最高的学生的学号。正确的SELECT语句是( D )。
A.SELECT S# FROM SC WHEREC#=’C2’ AND GRADE>= (SELECT GRADE FROM SC WHERE C#=’C2’)
B.SELECT S# FROM SC WHERE C#=’C2’ AND GRADE IN(SELECT GRADE FROM SC WHEREC#=’C2’)
C.SELECT S# FROM SC WHERE C#=’C2’ AND GRADE NOT IN(SELECT GRADE FROM SC WHERE C#=’C2’)
D.SELECT S# FROM SC WHERE C#=’C2’ AND GRADE>=ALL (SELECT GRADE FROM SC WHERE C#=’C2’) ( C )。
A.SELECT S.SN,SC.C#,SC.GRADE FROM S WHERE S.S#=SC.S#
B.SELECT S.SN, SC.C#, SC.GRADE FROM SC WHERE S.S#=SC.GRADE C.SELECT S.SN, SC.C# , SC.GRADE FROM SC, S WHERE S.S#=SC.S# D.SELECT S.SN, SC.C#, SC.GRADE FROM S, SC
16.检索选修四门以上课程的学生总成绩(不统计不及格的课程),并要求按总成绩的降序排列出来。正确的SELECT的语句是( B )。
A.SELECT S#, SUM (GRDAE) FROM SC WHERE GRADE>=60 GROUP BY
S# ORDER BY 2 DESC HAVING COUNT (*)>=4
B.SELECT S#, SUM (GRDAE) FROM SC WHERE GRADE>=60 GROUP BY
15.检索学生姓名及其所选修课程的课程号和成绩。正确的SELECT语句是
AAAAAA
S# HAVING COUNT (*)>=4 ORDER BY 2 DESC
C. SELECT S#, SUM (GRDAE) FROM SC WHERE GRADE>=60 HAVING COUNT (*)>=4 GROUP BY S# ORDER BY 2 DESC
D. SELECT S#, SUM (GRDAE) FROM SC WHERE GRADE>=60 ORDER BY
2 DESC GROUP BY S# HAVING COUNT (*)>=4
17.假定学生关系是S(S#,SNAME,SEX,AGE),课程关系是C(C#,CNAME,TEACHER),学生选课关系是SC(S#,C#,GRADE)。要查找选修“COMPUTER”课程的“女”学生姓名,将涉及到关系( D )。
A.S
B.SC ,C
C.S, SC
D .S,C,SC
18.下面的数据库的表中,若职工表的主关键字是职工号,部门表的主关键字是部门号,SQL操作( B )不能执行。
职工表 部门表 职工号 001 005 025 038 职工名 李红 刘军 王芳 张强 部门号 01 01 03 02 工资 580 670 720 650 部门号 01 02 03 04 部门名 人事处 财务处 教务处 学生处 主任 高平 蒋华 许红 杜琼 A. 从职工表中删除行(‘025’,‘王芳’,‘03’,720)
B. 将行(‘005’,‘乔兴’,‘04’,750)插入到职工表中 C. 将职工号为‘001’的工资改为700 D. 将职工号为‘038’的部门号改为‘03’
19.若用如下的SQL语句创建一个student表:CREAT TABLE student(NO CHAR(4) NOT NULL, NAME CHAR(10) NOT NULL, SEX CHAR(2), AGE INT),可以插到student表中的是( B )。
A.(‘1031’,‘曾华’,男,23)
B.(‘1031’,‘曾华’,NULL,NULL) D.(‘1031’,NULL ,‘男’,23)
C.(NULL,‘曾华’,‘男’,‘23’)
二、综合题
1.已知学生表S和学生选课表SC其关系模式如下:
S(SNO,SN,SD, PROV);SC(SNO,CN,GR),其中SNO为学号,SD为系名,PROV为省区,CN为课程名,GR为分数。试用SQL语言实现下列操作: (1) 查询“信息系”的学生来自哪些省区。
AAAAAA
(2) 按分数降序排序,输出“英语系”学生选修了“计算机”课程的学生的姓
名和分数。
2.设有学生表S(SNO,SN)(SNO为学生号,SN为姓名)和学生选修课程表SC(SNO,CNO,CN,G)(CNO为课程号,CN为课程名,G为成绩),试用SQL语言完成以下各操作:
(1)创建一个视图V-SSC(SNO,SN,CNO,CN,G)。
(2)从视图V-SSC上查询平均成绩在90分以上的SNO和平均分。 3.假设有如下4个样本表: student (学生信息表) NO 108 105 107 101 109 103
teacher (教师信息表) NO 804 856 825 831 CNO 3-105 3-245 6-166 9-888 NAME 李成 张旭 王萍 刘冰 CNAME SEX 男 男 女 女 TNO BIRTHDAY 12/02/58 03/12/69 05/05/72 08/14/77 PROF 副教授 讲师 助教 助教 DEPART 计算机系 电子工程系 计算机系 电子工程系 NAME 曾华 匡明 王丽 李军 王芳 陆军 SEX Y 男 男 女 男 女 南 09/01/77 10/02/75 01/23/76 02/20/76/ 02/10/75 06/03/74 95033 95031 95033 95033 95031 95031 BIRTHDACLASS course (课程表) score (成绩表)
计算机导论 825 操作系统 数字电路 高等数学 804 856 100 AAAAAA
NO CNO DEGREE 86 75
103 105 3-245 3-245 (1)列出至少有2名男生的班号。
SELECT CLASS FROM STUDENT WHERE SEX=’男’ GROUP BY CLASS HAVING COUNT(*)>=2 (2)显示student表中不姓“王”的同学记录。
SELECT * FROM STUDENT WHERE NAME NOT LIKE ’王%’ (3)显示student表中每个学生的姓名和年龄。
SELECT NAME ,2007-YEAR(birthday) FROM STUDENT (4)显示student表中最大和最小的birthday日期值。
SELECT NAME, MAX(birthday),MIN(birthday) FROM STUDENT (5)以班号和年龄从大到小的顺序显示student表中的全部记录。 SELECT CLASS,NAME, birthday FROM STUDENT ORDER BY CLASS DESC, birthday (6)显示“男”教师及其所上的课程。 SELECT TEACHER.NAME,COURSE.NAME FROM TEACHER,COURSE
WHERE TEACHER.NO=COURSE.TNO AND TEACHER.SEX=’男’ (7)列出最高分同学的no、cno和degree列。 SELECT NO,CNO,DEGREE FROM SCORE WHERE DEGREE=(SELECT MAX(DEGREE) FROM SCORE)
(8)列出和“李军”同性别的所有同学的name。 SELECT NAME FROM STUDENT
WHERE SEX=(SELECT SEX FROM STUDENT WHERE NAME=’李军’)
(9)列出和“李军”同性别并同班的同学name。 SELECT NAME FROM STUDENT
WHERE SEX=(SELECT SEX FROM STUDENT WHERE NAME=’李军’)
AND CLASS=(SELECT CLASS FROM STUDENT WHERE NAME=’李军’)
(10)列出所有选修“计算机导论”课程的“男”同学的成绩表。 SELECT NO,CNO,DEGREE FROM STUDENT,COURSE,SCORE
WHERE STUEDNT.NO=SCORE.NO AND COURSE.CNO=SCORE.CNO AND COURSE.CNAME=’ 计算机导论’ AND SEX=’男’
AAAAAA