1、第三章 习 题,一.单项选择,1.SQL语言是_的语言,易学习. A 过程化 B 非过程化 C 格式化 D 导航式 提示:SQL是一种介于关系代数与关系演算之间的结构化查询语言,它是高度非过程化的. 2.SQL语言是_语言. A 层次数据库 B 网络数据库 C 关系数据库 D 非数据库 提示:SQL是关系数据库标准语言.,3.SQL语言具有_的功能. A 关系规范化,数据操纵,数据控制 B 数据定义,数据操纵,数据控制 C 数据定义,关系规范化,数据控制 D 数据定义,关系规范化,数据操纵 提示:SQL语言自身不具备关系规范化功能. 4.在SQL中,用户可以直接操作的是_. A 基本表 B 视
2、图 C 基本表和视图 D 基本表和视图,5.在SQL语言中,实现数据检索的语句是_. A SELECT B INSERT C UPDATE D DELETE 6.SELECT语句执行结果是_. A 数据项 B 元组 C 表 D 数据库 7.在SQL语句中,对输出结果排序的语句是_. A GROUP BY B ORDER BY C WHERE D HAVING,8.在SELECT语句中,需对分组情况满足的条件进行判断时,应使用_. A WHERE B GROUP BY C ORDER BY D HAVING 9.在SELECT语句中使用*表示_. A 选择某个属性 B 选择全部属性 C 选择全部
3、元组 D 选择主码 10.在SELECT语句中,使用MAX(列名)时,该”列名”应该_. A 必须是数值型 B 必须是字符型 C 必须是数值型或字符型 D 不限制数据类型,11.使用CREATE TABLE语句创建的是_. A 数据库 B 表 C 试图 D 索引 12.下列SQL语句中,修改表结构的是_. A ALTER B CREATE C UPDATE D INSERT 13.在SQL中使用UPDATE语句对表中数据进行修改时,应使用的语句是_. A WHERE B FROM C VALUES D SET,14.视图建立后,在数据库中存放的是_. A 查询语句 B 组成视图的表的内容 C
4、视图的定义 D 产生视图的表的定义 15.以下叙述中正确的是_. A SELECT命令是通过FOR子句指定查询条件 B SELECT命令是通过WHERE子句指定查询条件 C SELECT命令是通过WHILE子句指定查询条件 D SELECT命令是通过IS子句指定查询条件,16.与WHERE AGE BETWEEN 18 AND 23完全等价的是_. A WHERE AGE18 AND AGE23 C WHERE AGE18 AND AGE=18 AND AGE=23 17.在查询中统计记录(元组)的个数时,应使用_函数. A SUM B COUNT(列名) C COUNT(*) D AVG,1
5、8.在查询中统计某列中值的个数应使用_ 函数. A SUM B COUNT(列名) C COUNT(*) D AVG 19.已知基本表SC(S#,C#,GRADE),其中S#为学号,C#为课程号,GRADE为成绩.则”统计选修了课程的学生人数”的SQLSELECT语句为_. A SELECT COUNT(DISTINCT S#)FROM SC B SELECT COUNT(S#)FROM SC C SELECT COUNT()FROM SC D SELECT COUNT(DISTINCT *)FROM SC,20.在数据库中有如图所示的两个表,若职工表的主码是职工号,部门表的主码是部门号,SQ
6、L操作_不能执行.,A 从职工表中删除行(025,王芳,03,720) B 将行(005,乔兴,04,750)插入到职工表中 C 将职工号为”001”的工资改为700 D 将职工号为”038”的部门号改为03 提示:由于职工表中的职工号为主码,不能向其中插入同主码的记录.,21.若用如下SQL语句创建一个表student CREATE TABLE student(NO CHAR(4) NOT NULL,NAME CHAR(8) NOT NULL,SEX CHAR(2),AGE INT) 可以插入到student表中的是_. A (1031,曾华,男,23) B (1031,曾华,NULL,NU
7、LL) C (NULL,曾华,男,23) D (1031,NULL,男,23) 提示:A中性别SEX属性值格式不正确,C中NO属性值不能为空,D中NAME属性值不能为空.,22.假设学生关系是S(S#,SNAME,SEX,AGE),课程关系是C(C#,CNAME,TEACHER),学生选课关系是SC(S#,C#,GRADE).要查询选修”COMPUTER”课程的”女”同学的姓名,将涉及关系_. A S B SC,C C S,SC D S,SC,C,二.填空,1.SQL语言的数据定义功能包括_,_,_,_. 答:定义数据库 定义基本表 定义视图 定义索引 2.SELECT命令中,_子句用于选择满
8、足给定条件的元组,使用_子句可按指定列的值分组,同时使用_子句可提取满足条件的组. 答:WHERE GROUP BY HAVING 3.在SELECT命令中进行查询,若希望查询的结果不出现重复元组,应在SELECT语句中使用_保留字. 答:DISTINCT,4.视图是一个虚表,它是从_导出的表.在数据库中,只存放视图的_,不存放视图对应的_. 答:一个或几个基本表(或视图)定义数据,5.设有关系表R: R(BH,XM,XB,DWH) (1)实现 的SQL语句是_. (2)实现XM,XB(R) 的SQL语句是_. (3)实现 的SQL语句是_. 答:SELECT *FROM RWHERE DWH
9、=100SELECT XM,XBFROM R SELECT XM,DWHFROM RWHERE XB=女,6.设有关系R: R(NO,NAME,SEX,AGE,CLASS) 其中,NO为学号,NAME为姓名,SEX为性别,AGE为年龄,CLASS为班号,主码为NO.写出实现下列功能的SQL语句. (1)插入一个记录(25,李明,男,21,95031):_.INSERT INTO R VALUES (25,李明,男,21,95031),R(NO,NAME,SEX,AGE,CLASS) (2)插入95031班学号为30,姓名为郑和的学生记录:_.INSERT INTO R(NO,NAME,CLAS
10、S)VALUES (30, 郑和, 95031),R(NO,NAME,SEX,AGE,CLASS) (3)将学号为10的学生姓名改为王华:_.UPDATE R SET NAME=王华WHERE NO=10,R(NO,NAME,SEX,AGE,CLASS) (4)将所有95101班号改为95091:_.UPDATE R SET CLASS=95091WHERE CLASS=95101,R(NO,NAME,SEX,AGE,CLASS) (5)删除学号为20的学生记录:_.DELETE FROM RWHERE NO=20,R(NO,NAME,SEX,AGE,CLASS) (6)删除姓王的学生记录:_
11、.DELETE FROM RWHERE NAME LIKE 王%,三.应用题,1.关于教学数据库的关系模式如下: S(S#,SNAME,AGE,SEX) SC(S#,C#,GRADE) C(C#,CNAME,TEACHER) 其中,S代表学生,它的各属性依次为学号,姓名,年龄和性别;SC表示成绩,它的各属性依次为学号,课程号,分数;C表示课程,它的各属性依次为课程号,课程名和任课教师.,试用SQL语句完成下列查询: (1)检索王老师所授课程的课程号和课程名. SELECT C#,CNAMEFROM CWHERE TEACHER=王(2)检索年龄大于22岁的男学生的学号和姓名. SELECT S
12、#,SNAMEFROM SWHERE AGE22 AND SEX=男,(3)检索学号为10001学生所学课程的课程名和任课教师. SELECT CNAME,TEACHERFROM SC,CWHERE SC.C#=C.C# AND S#=10001(4)检索 105号课程的平均分. SELECT AVG(GRADE) AS 课程平均分FROM SCWHERE C#=105,(5)以AGE升序,S#降序检索S表中的所有记录. SELECT *FROM SORDER BY AGE,S# DESC(6)检索成绩在60到80间的学生的学号. SELECT DISTINCT S#FROM SCWHERE GRADE BETWEEN 60 AND 80,(7)检索成绩为85,86,88的记录. SELECT *FROM SCWHERE GRADE IN(85,86,88)(8)检索至少选修了王老师所授课程中一门课程的女学生姓名. SELECT SNAMEFROM S,SC,CWHERE S.S#=SC.S# AND SC.C#=C.C# AND SEX=女 AND TEACHER=王,(9)检索至少选修了两门课程的学生学号.SELECT S#FROM SCGROUP BY S#HAVING count(S#)=2,