数据库第三章习题

数据库第三章习题
数据库第三章习题

第3章SQL语言习题

一、单项选择题

语言是()的语言,易学习。

A.过程化 B.非过程化 C.格式化 D.导航式

语言是()语言。

A.层次数据库

B.网络数据库

C.关系数据库

D.非数据库

语言具有()的功能。

A.关系规范化、数据操纵、数据控制B数据定义、数据操纵、数据控制

C.数据定义、关系规范化、数据控制

D.数据定义、关系规范化、数据操

4.关于SQL语言,下列说法正确的是()。

A 数据控制功能不是SQL语言的功能之一

B SQL采用的是面向记录的操作方式,以记录为单位进行操作

C SQL是非过程化的语言,用户无须指定存取路径

D SQL作为嵌入式语言语法与独立的语言有较大差别

5.对表中数据进行删除的操作是()。

语言的数据操纵语句包括SELECT,INSERT,UPDATE和DELETE等。其中最重要的,也是使用最频繁的语句是()。

语言具有两种使用方式,分别称为交互式SQL和()。

A.提示式SQL

B.用户式SQL

C.嵌入式SQL

D.解释式SQL

语言中,实现数据检索的语句是()。

9.下列SQL语句中,修改表结构的是()。

D .DELETE

10.在SQL中,用户可以直接操作的是()。

A 基本表

B 视图

C 存储文件

D 基本表和视图

11.在SQL的查询语句中,对应关系代数中“投影”运算的语句是()。

A WHERE

B FROM

C SELECT

D HAVING

12.在SELECT语句中,需对分组情况满足的条件进行判断时,应使用()。

A WHERE

B GROUP BY

C ORDER BY

D HAVING

13.SQL中,与“NOT IN”等价的操作符是()。

A =ANY

B <>ANY

C =ALL

D <>ALL

14.视图建立后,在数据字典中存放的是()。

A 查询语句

B 组成视图的表的内容

C 视图的定义

D 产生视图的表的定义

第15到第18题基于这样的三个表即学生表S、课程表C和学生选课表SC,它们的结构如下:

S(S#,SN,SEX,AGE,DEPT)

C(C#,CN)

SC(S#,C#,GRADE)

其中:S#为学号,SN为姓名,SEX性别,AGE为年龄,DETP为系别,C#为课程号,CN为课程名,GRADE为成绩。

15.检索所有比“王华”年龄大的学生姓名、年龄和性别。正确的SELECT 语句是()。

SN, AGE, SEX FROM S WHERE AGE>(SELECT AGE FROM S WHERE SN=’王华’)

SN, AGE, SEX FROM S WHERE SN=’王华’

SN,AGE,SEX FROM S WHERE AGE>(SELECT AGE WHERE SN=’王华’) SN, AGE, SEX FROM S WHERE AGE>王华.AGE

16.检索选修课程“C2”的学生中成绩最高的学生的学号。正确的SELECT 语句是()。

S# FROM SC WHEREC#=’C2’AND GRADE>= (SELECT GRADE FROM SC WHERE C#=’C2’)

S# FROM SC WHERE C#=’C2’ AND GRADE IN(SELECT GRADE FROM SC WHEREC#=’C2’)

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

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

17.检索学生姓名及其所选修课程的课程号和成绩。正确的SELECT语句是()。

,#, FROM S WHERE #=#

, #, FROM SC WHERE #= , # , FROM S, SC WHERE #=#

, #, FROM S, SC

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

S#, SUM (GRADE) FROM SC WHERE GRADE>=60 GROUP BY S# ORDER

BY 2 DESC HAVING COUNT (*)>=4

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 ORDER BY 2 DESC GROUP BY S# HAVING COUNT (*)>=4

19.假定学生关系是S (S#,SNAME ,SEX ,AGE ),课程关系是C (C#,CNAME ,TEACHER ),学生选课关系是SC (S#,C#,GRADE )。要查找选修“COMPUTER”课程的:“女”学生姓名,将涉及到关系( )。

, C

, SC

D .S,C,SC

20.下面的数据库的表中,若职工表的主关键字是职工号,部门表的主关键字是部门号,SQL 操作( )不能执行。

部门表 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(10) NOT NULL, SEX CHAR(2), AGE INT),可以插到student 表中的是( )。

A.(‘1031’,‘曾华’,男,23)

B.(‘1031’,‘曾华’,NULL ,NULL )

C.(NULL ,‘曾华’,‘男’,‘23’)

D.(‘1031’,NULL ,

‘男’,23)

22.数据库中建立索引的目的是为了( )。

A 加快建表速度

B 加快存取速度

C 提高安全性 D

节省存储空

23.视图是数据库系统三级模式中的( )。

A 外模式

B 模式

C 内模式

D 模式映

24.下列说法不正确的是()。

A 基本表和视图一样,都是关系

B 可以使用SQL对基本表和视图进行操作

C 可以从基本表或视图上定义视图

D 基本表和视图中都存储数据

二、综合题

1.已知关系R如图所示

图关系R

试用SQL语言实现下列操作:

(1)按属性A分组,求出每组中在属性C上的最大值和最小值,且将它们置于视图RVE中。

Create view RVE(A,CMAX,CMIN)

As

Select max(C),min(C)

From R

Group by A;

(2)在视图RVE中查询属性A=‘98’的记录。

Select *

From RVE

Where A=‘98’;

2.已知学生表S和学生选课表SC其关系模式如下:

S(SNO,SN,SD, PROV);SC(SNO,CN,GR),其中SNO为学号,SD为系名,PROV为省区,CN为课程名,GR为分数。试用SQL语言实现下列操作:

(1)查询“信息系”的学生来自哪些省区。

Select DISTINCT PROV

From S

Where SD=‘信息系’;

(2)按分数降序排序,输出“英语系”学生选修了“计算机”课程的学生的姓名和分数。

Select SN,GR

From S,SC

Where = AND SD=‘英语’ AND CN=‘计算机’

Group by GR DESC;

3.设有学生表S(SNO,SN)(SNO为学生号,SN为姓名)和学生选修课程表SC(SNO,CNO,CN,G)(CNO为课程号,CN为课程名,G为成绩),试用SQL 语言完成以下各操作:

(1)创建一个视图V-SSC(SNO,SN,CNO,CN,G)。

Create view V-SSC(SNO,SN,CNO,CN,G)

AS

Select , , , ,

From S, SC

Where =

(2)从视图V-SSC上查询平均成绩在90分以上的SNO和平均分。

Select SNO,AVG(G)

From V-SSC

Group by SNO

Having AVG(G)

4.设有关系模式:

S(SN,SNAME,CITY)其中,S代表供应商,SN,代表供应商号,SNAME为供应商名字,CITY为供应商所在城市,主关键字为SN;

P(PN,PNAME,COLOR,WEIGHT)其中P代表零件,PN代表零件号,PNAME 代表零件名,COLOR为零件颜色,WEGHT为零件重量,主关键字为PN;

J(JN,JNAME,CITY)其中J表示工程,JN为工程编号,JNAME为工程名,CITY为工程所在城市,主关键字为JN。

如下图所示表示供应商(S)-零件(P)-工程(J)数据库表,写出实现以下各题功能的SQL语句:

S

(1)取出工程的全部细节。

Select *

From J

(2)取出所在城市为上海的所有工程的全部细节。

Select *

From J

Where CITY=‘上海’;

(3)取出重量最轻的零件代号。

Select PN

From P

Where WEIGHT=

(Select MIN (WEIGHT)

From P );

(4)取出为工程J1提供零件的供应商代号。

Select SN

From SPJ

Where JN=’J1’;

(5)取出为工程J1提供零件P1

Select SN

From SPJ

Where JN=’J1’ AND PN=’P1’;

(6)取出由供应商S1提供零件的工程名称。

Select

From SPJ, J

Where = AND =‘S1’;

(7)取出供应商S1提供的零件的颜色。

Select Distinct

From SPJ, P

Where = AND =’S1’;

(8)取出为工程J1或J2提供零件的供应商代号。

Select Distinct SN

From SPJ

Where JN=’J1’ OR JN=’J2’;

(9)取出为工程J1提供红色零件的供应商代号。

Select Distinct

From SPJ, P

Where = AND =‘J1’ AND =‘红’;

(10)取出为所在城市为上海的工程提供零件的供应商代号。

Select DISTINCT

From J, SPJ

Where = AND =‘上海’;

(11)取出为所在城市为上海或北京的工程提供红色零件的供应商代号。

Select

From P, J, SPJ

Where = AND = AND =‘红’AND (=‘上海’OR =‘北京’);

(12)取出供应商与工程所在城市相同的供应商提供的零件代号。

Select DISTINCT

From S, J, SPJ

Where = AND = AND =

(13)取出上海的供应商提供给上海的任一工程的零件的代号。

Select

From S, J, SPJ

Where = AND = AND =‘上海’ AND =‘上海’;

(14)取出由供应商S1提供零件的工程的代号。

Select Distinct

From S,P,SPJ

Where = AND = AND =‘S1’;

(15)取出所有这样的一些二元组,使得第1个城市的供应商为第2个城市的工程提供零件。

Select Distinct ,

From S, J, SPJ

Where = AND = ;

(16)把零件P2的重量增加5,颜色改为黄色。

UPDATE P

SET WEIGHT=WEIGHT+5, COLOR=‘黄’

Where PN=‘P2’;

(17)将没有供货的所有工程项目从J表中删除。

Delete

From J

Where JN not in

( Select *

From SPJ);

(18)查询提供全部零件的供应商名。

Select SNAME

From S

Where SNO IN (

SELECT SNO

FROM SPJ);

(19)查询这样的工程项目号:该工程项目使用P1零件的平均使用量大于工程项目J1使用的任何一种零件的最大数量。

SELECT JNO

FROM SPJ

WHERE =P1

GROUP BY JNO

HAVING AVG (QTY)>ALL

(SELECT QTY

FROM SPJ

WHERE =‘J1’);

(20)定义一个视图,它由所有这样的工程项目(工程项目号与所在城市名称)组成:它们由供应商S1供货且使用零件P1。

CREAT VIEW JN,JCITY

AS

Select ,

From J, SPJ

Where = AND =’S1’ AND =’P1’;

5.假设有如下4个样本表:

成绩表)

(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, 2017-YEAR(birthday)

FROM STUDENT;

(4)显示student表中最大和最小的birthday日期值。

SELECT NAME,MAX(BIRTHDAY),MIN(BIRTHDAY)

FROM STUDENT;

(5)以班号和年龄从大到小的顺序显示student表中的全部记录。

SELECT *

FROM STUDENT

ORDER BY CLASS,2017-YEAR(BIRTHDAY)DESC

(6)显示“男”教师及其所上的课程。

SELECT ,

FROM TEACHER,COURSE

WHERE = AND =‘男’;

(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 =

(SELECET SEX

FROM STUDENT

WHRER NAME=‘李军’)

AND CLASS=

(SELECT CLASS

FROM STUDENT

WHERE NAME=‘李军’);

(10)列出所有选修“计算机导论”课程的“男”同学的成绩表。

SELECT ,,

FROM STUDENT,COURSE,SCORE

WHERE = AND =

AND =‘计算机导论’ AND =‘男’;

6、设职工---社团数据库有三个基本表:

职工(职工号,姓名,年龄,性别);

社会团体(编号,名称,负责人号,活动地点);

参加(职工号,编号,参加日期);

试用SQL语句完成下列操作:

1)建立下列两个视图。

社团负责人(编号,名称,负责人职工号,负责人姓名,负责人性别);

参加人情况(职工号,姓名,社团编号,社团名称,参加日期)CREATE VIEW 社团负责人(编号,名称,负责人职工号,负责人姓名,负责人性别)AS

SELECT 编号,名称,负责人, 姓名, 性别

FROM 社会团体,职工

WHERE 社会团体.负责任号=职工.职工号

CREATE VIEW参加人情况(职工号,姓名,社团编号,社团名称,参加日期)AS

SELECT 参加.职工号,职工.姓名,社会团体.编号,社会团体.名称,参加。参加日期

FROM 职工,社会团体,参加

WHERE 职工.职工号=参加.职工号 AND 参加.编号=社会团体.编号;

2)查找参加唱歌队或篮球队的职工号和姓名。

SELECT 职工号,姓名

FROM 职工,社会团体,参加

WHERE 职工.职工号=参加.职工号 AND 参加.编号=社会团体.编号

AND 社会团体.名称=‘唱歌队’OR社会团体.名称=‘篮球队’;

3)查找没有参加任何团体的职工情况。

SELECT *

FROM 职工

WHERE NOT EXISTS

(SELECT *

FROM 参加

WHERE 参加.职工号=职工.职工号);

4)查找参加了全部社会团体的职工情况。

SELECT *

FROM 职工

WHERE NOT EXISTS

(SELECT *

FROM 参加

WHERE NOT EXISTS

(SELECT*

FROM 社会团体

WHERE 参加.职工号=职工.职工号AND

参加.编号=社会团体.编号));

5)查找至少参加了职工号为“1001”的职工所参加的全部社会团体的职工号。

SELECT 职工号

FROM 职工

WHERE NOT EXISTS(

SELECT *

FROM 参加参加1

WHERE 参加1.职工号=‘1001’AND NOT EXISTS

(SELECT *

FROM 参加.参加2

WHERE 参加2.编号=参加1.编号

AND 参加2.职工号=职工.职工号))

6)求每个社会团体的参加人数。

SELECT COUNT(职工号)

FROM 参加

GROUP BY 编号

7)把对“社会团体”和“参加”

两个表的数据查看、插入和删除数据

的权力赋给用户李平,并允许他将此

权力授予其他用户。

GRANT SELECT,INSERT,DELECT

ON 社会团体,参加

TO 李平

W

ITH GRANT OPTION;

相关主题
相关文档
最新文档