mysql数据库武洪萍版第四章习题与答案

更新时间:2023-11-30 12:51:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

一.选择题

1.下面哪种数字数据类型不可以存储数据256?(D)

A. bigint B. int C. Smallint D. tinyint 2.下面是有关主键和外键之间的关系描述,正确的是(AC) A. 一个表最多只能有一个主键约束,多个外键约束。 B. 一个表中最多只有一个外键约束,一个主键约束。

C. 在定义主键外键约束时,应该首先定义主键约束,然后定义外键约束。 D. 在定义主键外键约束时,应该首先定义主键约束,然后定义主键约束。 3.下面关于数据库中表的行和列的叙述正确的是(D)

A. 表中的行是有序的,列是无序的 B. 表中的列是有序的,行是无序的 C. 表中的行和列都是有序的 D. 表中的行和列都是无序的

4.SQL语言的数据操作语句包括 SELECT、INSERT、UPDATE、DELETE等。其中最重要的,也是使用最频繁的语句是(A)

A. SELECT B.INSERT C.UPDATE D.DELETE 5.在下列SQL语句中,修改表结构的语句是(A )。 A. ALTER B. CREATE C. UPDATE D. INSERT

6.设有关系R(A,B,C)和S(C,D),与关系代数表达式πA,B,D(σR.C=S.C(R ∞ S)等价的SQL语句是(B)。

A. SELECT *FROM R,S WHERE R.C=S.C B. SELECT A,B,D FROM R,S WHERE R.C=S.C C. SELECT A,B,D FROM R,S WHERE R=S

D. SELECT A,B FROM R WHERE(SELECT D FROM S WHERE R.C=S.C)

7.设关系 R(A,B,C) 与SQL语句“SELECT DISTINST A FROM R WHERE B=17”等价的关系代数表达式是(A)

A. πA(σB=17 (R)) B. σB=17 (πA(R))

C. σB=17 (πA. C(R)) D. πA. C(σB=17 (R))

下面第(8)-(12)题,基于“学生-选课-课程”数据库中的3个关系。 S(S#,SNAME,SEX,DEPAPTMENT),主码是S# C(C#,CNAME,TEACHER),主码是 C# SC(S#,C#,GRADE),主码是(S#,C#)

8.在下列关于保持数据库完整性的叙述中,哪一个是不正确的?(D) A. 向关系SC 插入元组时,S#和C#都不能是空值(NULL) B. 可以任意删除关系SC中的元组

C. 向任何一个关系插入元组时,必须保证该关系主码值得唯一性 D. 可以任意删除关系C中的元组

9.查找每个学生的学号、姓名、选修的课程名和成绩,将使用关系(D) A. 只有 S,SC B. 只有 SC,C C. 只有 S,C D. S,SC,C

10若要查找姓名中第1个字为“王”的学生的学号和姓名,则下面列出的SQL语句中,哪个(些)是正确的?(B)

Ⅰ. SELECT S#,SNAME FROM S WHERE SNAME=’王%’ Ⅱ. SELECT S#,SNAME FROM S WHERE SNAME LIKE ‘王%’ Ⅲ. SELECT S#,SNAME FROM S WHERE SNAME LIKE’王_’ A. Ⅰ B.Ⅱ C.Ⅲ D.全部

11.若要“查询选修了3门以上课程的学生的学号”,则正确的SQL语句是(B)

A. SELECT S# FROM SC GROUP BY S# WHERE COUNT(*)>3 B. SELECT S# FROM SC GROUP BY S# HAVING COUNT(*)>3 C. SELECT S# FROM SC ORDER BY S# WHERE COUNT(*)>3 D. SELECT S# FROM SC ORDER BY S# HAVING COUNT(*)>3 12.若要查找“由张劲老师执教的数据库课程的平均成绩、最高成绩和最低成绩”,则将使用关系(D)。

A. S和SC B. SC和C C. S和C D. S、SC和 C

下面第(13)-(16)题基于这样的3个表,即学生表S、课程表C和学生选课表SC,它们的关系模式如下。

S(S#,SN,SEX,AGE,DEPT)(学号,姓名,性别,年龄,系别) C(C#,CN)(课程号,课程名称)

SC(S#,C#,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 WHERE C#=’C2’ AND GRADE>=(SELECT GRADE FROM SC WHERE C#=’C2’)

B. SELECT S# FROM SC WHERE C#=’C2’ AND GRADE IN(SELECT GRADE GORM SC WHERE C#=’C2’)

C. SELECT S# FROM SC WHERE C#=’C2’ AND GRADE NOT IN(SELECT GRADE GORM SC WHERE C#=’C2’)

D. SELECT S# FROM SC WHERE C#=’C2’ AND GRADE>=ALL(SELCET GRADE FROM SC WHERE C#=’C2’)

15.检索4门以上课程的学生总成绩(不统计不及格的课程),并要求按总成绩的降序排列出来。正确的 SELECT 语句是(B)

A. SELECT S#,SUM(GRAGE) FROM SC WHERE GRADE>=60 GROUP BY S# ORDER BY S# HAVING COUNT(*)>=4

B. SELECT S#,SUM(GRADE)FROM SC WHERE GRADE>=60 GROUP BY S# HAVING COUNT(*)>=4 ORDER BY 2 DESC

C. SELECT S#,SUM(GRADE)FROM SC WHERE GRADE>=60 HAVING COUNT(*)<=4 GROUP BY S#ORDER BY 2 DESC

D. SELECT S#,SUM(GRADE) FROM SC WHERE GRADE>=60 HAVING COUNT(*)>=4 GROUP BY S# ORDER BY 2

17. 数据库见表 4.59和表4.60,若职工表的主关键字是职工号,部门表的关键字是部门号,SQL操作(B)不能执行。 A. 从职工表中删除行(‘025’,‘王芳’,‘03’,720) B. 将行(‘005’,‘乔兴’,‘04’,720)插入到职工表中 C. 将职工号为“001”的工资改为700

D. 将职工号为’038’的部门号改为“03” 表4.59 职工表 E. F. 职工号 职工名 部门号 工资 001 01 580 G. H. 李红 005 01 670 I. J. 刘军 025 03 720 K. L. 王芳 038 02 650 M. N. 张强 表4.60 部门表 部门号 部门名 主任 01 人事处 高平 02 财务处 蒋华 03 教务处 许红 04 学生处 杜琼 18.若用如下的STUDENT表。 CREATE TABLE STUDENT (NO char(4) NOT NULL, NAME char(8) NOT NULL, SEX char(2), AGE int);

可以插入到STUDENT表中的是(B)。

A. (‘1031’,’曾华’,’男’,23’) B. (‘1031’,’曾华’,NULL,NULL) C. (NULL,’曾华’,’男’,’23’) D. (‘1031’,NULL,’男’,23)

19.有关系 S(S#,SNAME,SAGE), C(C#,CNAME), SC(S#,C#,GRADE)。要查询选修”ACCESS”课的年龄不小20的全体学生姓名的SQL语句”SELECT SNAME FROM S,C,SC WHERE 子句”。这里的WHERE子句的内容是(A)

A. S.S#=SC.S# AND C.C#=SC.C# ANDSAGE>=20 AND CNAME=’ACCESS’

B. S.S#=SC.S# AND C.C#=SC.C# AND SAGE IN>=20 AND CNAME IN ‘ACCESS’ C. SAGE>=20 AND CNAME=’ACCESS’ D. SAGE>=20 AND CNAMEIN’ACCESS’

20.若要在基本表中S中增加一列CN(课程名),可用(D) A. ADD TABLE S(CN char(8))

B. ADD TABLE S ALTER(CN char(8)) C. ALTER TABLE S ADD(CN,char(8)) D. ALTER TABLE S(ADD CN char(8))

21.学生关系模式 S(S#,SNAME,AGE,SEX), S的属性分别表示学生的学号、姓名、年龄、性别。要在表S中删除一个属性“年龄”,可选用的SQL语句是(B)。 A. DELETE AGE FROM S

B. ALTER TABLE S DROP COLUMN AGE C. UPDATE S AGE

D. ALTER TABLE S’AGE’

22.设关系数据库中有一个表S的关系模式为(SSN,CN,GRADE),其中SN为学生名,CN为课程名,二者为字符型;GRADE为成绩,数值型,取值范围0-100。若要

更正“王二”的化学成绩为85分,则可用(A)。

A. UPDATE S SET GRADE=85 WHERE SN=’王二’ AND CN=’化学’ B. UPDATE S SET GRADE=’85’ WHERE SN=’王二’ AND SN=’化学’ C. UPDATE GRADE=85 WHERE SN=’王二’ AND CN=’化学’ D. UPDATE GRADE=’85’ WHERE SN=’王二’ AND CN=’化学’ 23.在SQL语言中,子查询语句是(D)。 A. 返回单表中数据子集的查询语句 B. 选取多表中字段子集的查询语句 C. 选取单表中字段子集的查询语句

D. 嵌入到另一个查询语句之中的查询语句

24.在SQL语言中,条件“年龄 BETWEEN 20 AND 30”表示年龄在20-30,且(A)。 A. 包括20岁和30岁 B.不包括20岁和30岁

C. 包括20岁但不包括30岁 D.包括30岁但不包括20岁 25.下列聚合函数不忽略空值(NULL)的是(C)。 A. SUM(列名) B. MAX(列名)

C. COUNT(*) D.NOT(AGE IS NULL) 26.在SQL中,下列涉及空值的操作,不正确的是(C)。

A. AGE IS NULL B. AGE IS NOT NULL C. AGE=NULL D.NOT(AGE IS NULL)

27.已知学生选课信息表sc(sno,cno,grade)。 查询“至少选修了一门课程,但没有学习成绩的学生学号和课程号”的SQL语句是(C)。 A. SELECT sno,cno FROM sc WHERE grade=NULL B. SELECT sno,cno FROM sc WHERE grade IS” C. SELECT sno,cno FROM sc WHERE grade IS NULL D. SELECT sno,cno FROM sc WHERE grade=” 28.有如下的SQL语句。

Ⅰ. SELECT sname FROM s,sc WHERE grade<60

Ⅱ. SELECT sname FROM s WHERE sno IN(SELECT sno FROM sc WHERE grade<60) Ⅲ.SELECT sname FROM s,sc WHERE s.sno=sc.sno AND grade<60 若要查找分数(grade)不及格的学生姓名(sname),则以上正确的有哪些?(C) A. Ⅰ和Ⅱ B. Ⅰ和Ⅲ C. Ⅱ和Ⅲ D. Ⅰ、Ⅱ 和Ⅲ 二.填空题

1.关系R(A,B,C)和S(A,D,E,F),有R.A=S.A。 若将关系代数表达式πR.A,R.B,S.D,S.F(R∞S),用SQL语言的查询语句表示,则为:SELECT R.A,R.B,S.D,S.F FROM R,S WHERE R.A=S.A 。

2.SELECT 语句中,WHERE 子句用于选择满足给定条件的元组。使用 GROUP BY 子句可按指定列的值分组,同时使用 HAVING 可提取满足条件的组。若希望将查询结果排序,则应在 SELECT 语句中使用 ORDER BY 子句,其中, ASC 选项表示升序,DESC 选项表示降序。若希望查询的结果不出现重复元组,则应在SELECT 子句中使用

Distinct 保留字。WHERE 子句的条件表达式中,字符串匹配的操作符是 LIKE ,与0个或多个字符匹配的通配符是 % ,与单个字符匹配的通配符是 __下划线 。

3.子查询的条件不依赖于父查询,这类查询称为 嵌套子查询 ,否则称为 相关子查询。 4.有学生信息表 student,求年龄在 20-22岁(含 20 岁和22岁)的学生姓名和年龄的SQL语句是:SELECT sname,age FROM student WHERE age BETWEEN 20 AND 22 。

5.在“学生选课”数据库中的两个关系如下。 S(SNO,SNAME,SEX,AGE),SC(SNO,CNO,GRADE)

则与SQL命令“SELECT SNAME FROM S WHERE SNO IN(SELECT SNO FROM SC WHERE GRADE<60)”等价的关系代数表达式是 πSname (σGrade<60(SC∞S) ) 。

6.在“学生-选课-课程”数据库中的3个关系如下。

S(S#,SNAME,SEX,AGE),SC(S#,C#,GRADE),C(C#,CNAME,TEACHER)。现要查找选修“数据库技术”这门课程的学生的学生姓名和成绩,可使用如下的SQL语句。

SELECT SNAME,GRADE FROM S,SC,C WHERE CNAME=’数据库技术’ AND S.S#=SC.S# AND SC.C#=C.C# 。

7.设关系SC(sno,cname,grade),各属性的含义分别为学号、课程名、成绩。若要将所有学生的“数据库技术”课程的成绩加5分,能正确完成该操作的SQL语句是 UPDATE SC SET 。 grade=grade+5 WHERE cname=’数据库技术’。

8.在SQL语言中,若要删除一个表,应使用的语句是 DROP TABLE 。 三.综合练习题 1.现有如下关系。

学生(学号,姓名,性别,专业,出生日期) 教师(教师编号,姓名,所在部门,职称)

授课(教师编号,学号,课程编号,课程名称,教材,学分,成绩) 用SQL语言完成下列功能。

(1)删除学生表中学号为“20013016”的记录。

(2)将编号为“003”的教师所在的部门改为“电信系”。

(3)向学生表中增加一个“奖学金”列,其数据类型为数值型。 答:

①DELETE FROM 学生 WHERE 学号=‘20013016’

②UPDATE 教师 SET 所在部门=‘电信系’ WHERE 教师编号=‘003’ ③ALTER TABLE 学生 ADD(奖学金 INT ) 2.现有如下关系:

学生S(S#,SNMAE,AGE,SEX) 学习SC(S#,C#,GRADE) 课程C(C#,CNAME,TEACHER) 用SQL语言完成下列功能:

1)统计有学生选修的课程门数。

2)求选修C4课程的学生的平均年龄。

3)求李文老师所授课程的每门课程的学生平均成绩。 4)检索姓名以王打头的所有学生的姓名和年龄。

5)在基本表S中检索每一门课程成绩都大于等于80分的学生学号、姓名和性别,并把检索到的值送往另一个已存在的基本表STUDENT(S#,SNAME,SEX)中。 6)往基本表S中插入一个学生元组(’S9’,’WU’,18,’F’)。 7) 把低于总平均成绩的女同学的成绩提高10分。 8) 把王林同学的选课记录全部删除。 答:

①SELECT COUNT(DISTINCT C#) FROM SC

②SELECT AVG(AGE) FROM S WHERE S# IN (SELECT S# FROM SC WHERE C#=‘C4’) ③SELECT AVG(GRADE) FROM SC WHERE C# IN (SELECT C# FROM C WHERE TEACHER=‘李

本文来源:https://www.bwwdw.com/article/t7ht.html

Top