数据库原理第三章练习

更新时间:2023-12-10 10:00:01 阅读量: 教育文库 文档下载

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

第三章 SQL语言

一、选择题:

1、SQL语言是 的语言,易学习。

A.过程化 B.非过程化 C.格式化 D.导航式 2、SQL语言是 语言。

A.层次数据库 B.网络数据库 C.关系数据库 D.非数据库 3、SQL语言具有 的功能。

2、 关系规范化,数据操纵,数据控制 B.数据定义,数据操纵,数据控制 C.数据定义,关系规范化,数据控制 D.数据定义,关系规范化,数据操纵

4、SQL语言具有两种使用方式,分别称为交互式SQL和 。 A.提示式SQL B.多用户SQL C.嵌入式SQL D.解释式SQL 5、SQL语言中,实现数据检索的语句是 。

A.SELECT B.INSERT C.UPDATE D.DELETE 6、下列SQL语句中,修改表结构的是 。

A.ALTER B.CREATE C.UPDATE D.DELETE 7、SQL中,与“NOT IN”等价的操作符是 。

A.=SOME B.<>SOME C.=ALL D.<>ALL

8、假设有三个基本表:学生表S、课程表C、学生选课表SC,它们的结构如下: S(S#,SN,SEX,AGE,DEPT) C(C#,CN)

SC(S#,C#,GRADE)

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

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

9、检索选修课程”C2”的学生中成绩最高的学生的学号。正确的SELECT语句是 。 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 FROM SC WHERE C#= “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”)

10、检索学生姓名及其所选修课程的课程号和成绩。正确的SELECT语句是: 。

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.S#

C.SELECT S.SN,SC.C#,SC.GRADE FROM S,SC

WHERE S.S#=SC.S#

D.SELECT S.SN,SC.C#,SC.GRADE FROM S,SC

11、要查找选修“COMPUTER“课程的女学生姓名,将涉及到关系 。 A.S B.SC,C C.S,SC D.S,C,SC 12、若用如下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,NULL) C.(NULL,’曾华’,’男’,’23’) D.(’1031’,NULL,’男’,23) 13、SQL是 的缩写。 A Standard Query Language B Select Query Language C Structured Query Language D 以上都不是

14、视图是 。 A 基本表 B 外视图 C 概念视图 D 虚拟表

15、SQL语言的操作对象 。

A 只能是一个集合 B 可以是一个或多个集合 C 不能是集合 D 可以是集合或非集合 16、索引的作用之一是 。 A 节省存储空间 B 便于管理 C 加快查询速度 D 建立各数据表之间的关系 17、以下有关索引的叙述中正确的是 。 A 索引越多,更新速度越快 B 索引需要用户维护

C 并置索引中列的个数不受限制 D 索引可以用来提供多种存取路径

18、以下有关视图查询的叙述中正确的是 。 A 首先查询出视图中所包含的数据,再对进行查询 B 直接对数据库存储的视图数据进行查询 C 将对视图的查询转换为对相关基本表的查询 D 不能对基本表和视图进行连表操作

19、以下有关UNIQUE约束的叙述中不正确的是 。 A UNIQUE约束中不允许出现空值

B UNIQUE用于保证列或列组合的值唯一性 C 可以定义多个UNIQUE约束

D 系统为定义了UNIQUE约束的那些列建立唯一索引 20、以下关于空值的叙述中不正确的是 。 A 用=NULL查询指定列为空值的记录 B 包含空值的表达式其计算结果为空值 C 聚集函数通常忽略空值

D 对允许空值的列排序时,包含空值的记录总是排在最前面

21、部分匹配查询中有关通配符“%”的叙述中正确的是 。 A“%”代表一个字符 B“%”代表多个字符

C“%”可以代表零个或多个字符 D“%”不能与“_”同使用

22、在分组检索中,要去掉不满足条件的分组,应当 。 A 使用WHERE子句 B 使用HAVING子句

C 先使用WHERE子句,再使用HAVING子句 D 先使用HAVING子句,再使用WHERE子句 23、以下有关子查询的叙述中不正确的是 。 A 子查询可以向其外部查询提供检索条件的条件值 B 子查询可以嵌套多层 C 子查询的结果是一个集合 D 子查询总是先于其外部查询

24、以下有关ORDER BY子句的叙述中不正确的是 。 A ORDER BY 子句可以对多个列进行排序

B 在SELECT语句中,ORDER BY 只能在所有其他子句之后,作为最后一个子句出现

C 子查询也可以使用ORDER BY子句 D 在视图中不能使用ORDER BY子句

25、以下有关WHERE子句的叙述中不正确的是 。 A WHERE子句中可以包含子查询

B 连接条件和选择条件之间应当使用OR逻辑运算

C 不包含WHERE子句的SELECT语句进行的是单纯的投影操作

D 如果FROM子句中引用了N个表,则FROM子句中至少应当包括N-1个连接条件

26、以下有关SELECT子句的叙述中不正确的是 。 A SELECT子句中只能包含表中的列及其构成的表达式 B SELECT子句规定了结果集中的列顺序 C SELECT子句中可以使用别名

D 如果FROM子句中引用的两个表中有同名的列,则在SELECT子句中引用它们时必须使用表名前缀加以限制。

27、以下有关聚集的叙述中不正确的是 。

A 聚集将具有一个或多个公共列,并经常一起使用的相关表物理地聚集存储在一起

B 聚集中相同的值只存储一次

C 聚集加快了多个表连接操作速度,但对于单个表则没有什么意义 D 必须首先删除所有聚集表,才能删除聚集

二、填空题:

1、SQL是 。

2、SQL语言的数据定义功能包括 、 、和 。

3、SELECT命令中, 子句用于选择满足给定条件的元组,使用子句可按指定列的值分组,同时使用 子句可提取满足条件的组。 4、在SELECT命令中进行查询,若希望查询的结果不出现重复元组,应在

SELECT语句中使用 保留字。

5、子查询的条件依赖于父查询,这类查询称为 。

6、视图是一个虚表,它是从 导出的表。在数据库中,只存放视图的 ,不存放视图对应的 。 7、设有如下关系表R,S,T: R(BH,XM,XB,DWH) S(DWH,DWM)

T(BH,XM,XB,DWH)

① 实现R?T的SQL语句是 。 ② 实现?DWH?'100'(R)的SQL语句是 。 ③ 实现?XM,XB(R)的SQL语句是 。 ④ 实现?XM,XB(?XB?'女'(R))的SQL语句是 。 ⑤ 实现R*S的SQL语句是 。

⑥ 实现?XM,XB,DWM(?XB?'男'(R*S))的SQL语句是 。

8、设有如下关系表R:

R(NO,NAME,SEX,AGE,CLASS) 主码是NO(学号)。 ① 插入一条记录(25,‘李明’,‘男’,21,‘95031’) ② 插入95031班学号为30号、姓名为‘郑和’的学生记录 ③ 将学号为10的学生姓名改为‘王华’ ④ 将所有‘95101’班号改为‘95091’ ⑤ 删除学号为20的学生记录 ⑥ 删除姓‘王’的学生记录

9、宿主语言向SQL语言提供参数是通过 ,在SQL语句中应用时,必须在宿主变量前加 。

10、用OPEN语句打开游标时,游标指针指向查询结果的 。 11、SQL语言具有 和 两种使用方式。

12、SELECT由 、 、 和 四个部分组成。

13、查询包含空值的记录时,使用比较运算符 ;查询不包含空值的记录时,使用比较运算符 。

14、建立索引的两个主要目的是 和 。

15、SQL的数据更新功能主要包括 、 和 三个语句。

16、视图是一个虚拟表,它由 导出,数据库系统只存储视图的 ,而不存储视图的 。

17、在部分匹配查询中,通配符“%”代表 ,“_”代表 。

18、在SQL的数据库空值功能中,授予权限使用 语句,收回权限使用 语句。

三、应用题: 1、有两个关系:

C(CNO,CN,PCNO) SC(SNO,CNO,G)

其中,C为课程表,对应的属性分别是课程号、课程名、选修课号;SC为学生选课表,对应的属性分别是学号、课号和成绩。用SQL语言写出: (1)对关系SC中课号等于C1的选择运算 (2)对关系C的课号、课程名的投影运算 (3)两个关系的自然连接运算

2、设有如下4个关系模式:

书店(书店编号,书店名,地址) 图书(书号,书名,定价)

图书馆(馆号,馆名,城市,电话) 图书发行(馆号,书号,书店号,数量) 请回答下列问题:

(1)用SQL语句检索已经发行的图书中最贵和最便宜的书名和定价 (2)写出下列SQL语句所表达的中文含义:

SELECT 馆名 FROM 图书馆 WHERE 馆名IN

(SELECT 馆号

FROM 图书发行 WHERE 书号 IN (SELECT 书号 FROM 图书

WHERE 书名=‘数据库系统基础’)

3、设有职工关系模式如下:

people(pno,pname,sex,job,wage,dptno)

其中,pno为职工号,pname为职工姓名,sex为性别,job为职业,wage为工资,dptno为所在部门号。请写出下列查询使用的SQL语句: (1)查询工资比其所在部门平均工资高的所有职工信息 (2)查询工资大于‘赵明华’工资的所有职工信息

4、设有三个基本表:A表(A#{商店代码},ANAME{商店名},WQTY{店员人数},CITY{所在城市});B表(B#{商品号},BNAME{商品名称},PRICE{价格},QTY{商品数量});AB表(A#,B#,QTY)。试用SQL语句写出下列查询: (1)找出店员人数不超过100人或者在长沙市的所有商店的商店代码和商店名; (2)找出供应书包的商店名;

(3)找出至少供应代号为256的商店所供应的全部商品的商店名和所在城市;

5、设有学生表S(SNO,SN)和学生选修课程表SC(SNO,CNO,CN,G),试用SQL语句完成以下操作:

(1)建立一个视图V-SSC(SNO,SN,CNO,CN,G),并按CNO升序排序 (2)从视图V-SSC上查询平均成绩在90分以上的SN,CN,和G

6、设有4个关系模式:

S(SNO,SNAME,STATE,CITY):S为供应商,属性依次为:供应商号、供应商名、所在城市;

P(PNO,PNAME,COLOR,WEI,PRICE):P表示零件,属性依次为:零件号、零件名、零件颜色、零件重量和单价; J(JNO,JNAME,CITY):J表示工程,属性依次为: 工程号、工程名、所在城市

SPJ(SNO,PNO,JNO,QTY)SPJ表示供货关系,属性依次为:供应商号、零件号、工程号和供货数量;

用SQL语句实现下面的查询要求:

(1)查询供应了全部零件的供应商名和其所在城市 (2)查询供应红色零件的供应商名

7、关于教学数据库的关系模式如下: S(S#,SNAME,AGE,SEX):S表示学生,各属性依次为:学号、 姓名、年龄、性别

SC(S#,C#,GRADE):SC表示成绩,个属性依次为:学号、课程号、成绩 C(C#,CNAME,TEACHER)C表示课程,个属性依次为:课程号、课程名、教师

试用SQL语句完成下列查询:

(1)检索王老师所授课程的课程号和课程名 (2)检索年龄大于22岁的男学生的学号和姓名

(3)检索学号为10001学生所学课程的课程名与任课教师 (4)检索至少选修王老师所授课程中一门课程的女学生姓名 (5)检索张同学不学的课程的课程号 (6)检索至少选修两门课程的学生学号

(7)检索全部学生都选修的课程的课程号与课程名 (8)检索选修课程包含王老师所授课程的学生学号

第三章 答案

一、选择题:

1、B. 2、C. 3、B. 4、C. 5、A. 6、A. 7、D. 8、A. 9、D. 10、C. 11、D. 12、B. 13、 C 14、 D 15、 B 16、 C 17、 D 18、 C 19、 A 20、 A 21、 C 22、 B 23、 D 24、 C 25、B 26、 A 27、 C

二、填空题:

1、结构化查询语言

2、定义数据库、定义基本表、定义视图、定义索引 3、WHERE、GROUP BY 、HAVING 4、DISTINCT 5、相关子查询

6、一个或几个基本表、定义、数据

7、 ① SELECT * FROM R UNION SELECE * FROM T

② SELECT * FROM R WHERE DWH=’100’ ③ SELECT XM,XB FROM R

④ SELECT XM,DWH FROM R WHERE XB=’女’

⑤ SELECT R.BH,R.XM,R.XB,R.DWH,S.DWM FROM R,S WHERE R.DWH=S.DWH ⑥ SELECT R.XM,R.XB,S.DWM FROM R,S WHERE R.DWH=S.DWH AND R.XB=’男’ 8、① INSERT INTO R VALUES (25,‘李明’,‘男’21,‘95031’)

② INSERT INTO R (NO,NAME,CLASS) VALUES(30,‘郑和’,’95031’) ③ UPDATE R SET NAME=‘王华’WHERE NO=10

④ UPDATE R SET CLASS=‘95091‘ WHERE CLASS=’95101‘ ⑤ DELETE FROM R WHERE NO=20

⑥ DELETE FROM R WHERE NAME LINK‘王%‘ 9、 宿主变量、 : 10、第一个记录 11、自含型 宿主型 12、数据查询 数据更新 数据定义 数据控制 13、IS NULL IS NOT NULL 14、加快查询速度 保证行的唯一性 15、INSERT UPDATE DELETE 16、一个或几个基本表 定义 数据 17、任意序列的零个或多个字符 任意单个字符 18、GRANT REVOKE

三、应用题:

1、有两个关系:

C(CNO,CN,PCNO) SC(SNO,CNO,G)

其中,C为课程表,对应的属性分别是课程号、课程名、选修课号;SC为学生选课表,对应的属性分别是学号、课号和成绩。用SQL语言写出: (1)对关系SC中课号等于C1的选择运算 (2)对关系C的课号、课程名的投影运算 (3)两个关系的自然连接运算 (1)SELECT *

FROM SC

WHERE CNO=‘C1’ (2)SELECT CNO,CN

FROM C

(3)SELECT C.CNO,C.CN,C.PCNO,SC.SNO,SC.G

FROM C, SC

WHERE C.CNO=SC.CNO

2、设有如下4个关系模式:

书店(书店编号,书店名,地址) 图书(书号,书名,定价)

图书馆(馆号,馆名,城市,电话) 图书发行(馆号,书号,书店号,数量) 请回答下列问题:

(1)用SQL语句检索已经发行的图书中最贵和最便宜的书名和定价 (2)写出下列SQL语句所表达的中文含义:

SELECT 馆名 FROM 图书馆 WHERE 馆名IN

(SELECT 馆号

FROM 图书发行 WHERE 书号 IN (SELECT 书号 FROM 图书

WHERE 书名=‘数据库系统基础’) (1) ELECT 图书.书名,图书.定价

FROM 图书

WHER 定价=(SELECT MAX(定价) FROM 图书,图书发行

WHERE 图书.书号=图书发行.书号) SELECT 图书.书名,图书.定价 FROM 图书

WHER 定价=(SELECT MIN(定价) FROM 图书,图书发行

WHERE 图书.书号=图书发行.书号)

(2)查询拥有已发行的‘数据库系统基础’一书的图书馆馆名。

3、设有职工关系模式如下:

people(pno,pname,sex,job,wage,dptno)

其中,pno为职工号,pname为职工姓名,sex为性别,job为职业,wage为工资,dptno为所在部门号。请写出下列查询使用的SQL语句: (1)查询工资比其所在部门平均工资高的所有职工信息 (2)查询工资大于‘赵明华’工资的所有职工信息 (1)SELECT *

FROM people x

WHERE wage>( SELECT AVG(wage) FROM people y

WHERE x.dptno=y.dptno)

(2)SELECT *

FROM people

WHERE wage>( SELECT wage FROM people

WHERE pname=’赵明华’)

4、设有三个基本表:A表(A#{商店代码},ANAME{商店名},WQTY{店员人数},CITY{所在城市});B表(B#{商品号},BNAME{商品名称},PRICE{价格},QTY{商品数量});AB表(A#,B#,QTY)。试用SQL语句写出下列查询: (1)找出店员人数不超过100人或者在长沙市的所有商店的商店代码和商店名; (2)找出供应书包的商店名;

(3)找出至少供应代号为256的商店所供应的全部商品的商店名和所在城市; (1)SELECT A#,ANAME FROM A,B,AB

WHERE WQTY<=100 OR CITY=‘长沙市’ (2)SELECT A.ANAME

FROM A,B,AB

WHERE A.A#=AB.A# AND B.B#=AB.B# AND B.BNAME=‘书包’ (3)SELECT A.ANAME,A.CITY FROM A,AB

WHERE A.A#=AB.A# AND AB.B# IN (SELECT AB.B# FROM AB

WHERE A#=’256’)

SELECT ANAME,CITY FROM A

WHERE NOT EXISTS (SELECT * FROM B WHERE EXISTS (SELECT * FROM AB AB1

WHERE A#='256' AND B#=B.B#) AND NOT EXISTS (SELECT * FROM AB AB2

WHERE A#!='256' AND A#=A.A# AND B#=B.B#) );

5、设有学生表S(SNO,SN)和学生选修课程表SC(SNO,CNO,CN,G),试用SQL语句完成以下操作:

(1)建立一个视图V-SSC(SNO,SN,CNO,CN,G),并按CNO升序排序 (2)从视图V-SSC上查询平均成绩在90分以上的SN,CN,和G (1)CREATE VIEW V-SSC(SNO,SN,CNO,CN,G)

AS SELECT S.SNO,S.SN,SC.CNO,SC.CN,SC.G FROM S,SC

WHERE S.SNO=SC.SNO ORDER BY CNO (2)SELECT SN,CN,G

FROM V-SSC GROUP BY SNO

HAVING AVG(G)>90

6、设有4个关系模式:

S(SNO,SNAME,STATE,CITY):S为供应商,属性依次为:供应商号、供应商名、所在城市;

P(PNO,PNAME,COLOR,WEI,PRICE):P表示零件,属性依次为:零件号、零件名、零件颜色、零件重量和单价; J(JNO,JNAME,CITY):J表示工程,属性依次为: 工程号、工程名、所在城市

SPJ(SNO,PNO,JNO,QTY)SPJ表示供货关系,属性依次为:供应商号、零件号、工程号和供货数量;

用SQL语句实现下面的查询要求:

(1)查询供应了全部零件的供应商名和其所在城市 (2)查询供应红色零件的供应商名 (1)SELECT SNAME ,CITY

FROM S

WHERE NOT EXISTS ( SELECT * FROM P

WHERE NOT EXISTS ( SELECT * FROM SPJ

WHERE SPJ.SNO=S.SNO AND SPJ.PNO=P.PNO) (2)SELECT SNAME

FROM S,P,SPJ

WHERE S.SNO=SPJ.SNO AND SPJ.PNO=P.PNO AND P.COLOR=’红色’

7、关于教学数据库的关系模式如下: S(S#,SNAME,AGE,SEX):S表示学生,各属性依次为:学号、 姓名、年龄、性别

SC(S#,C#,GRADE):SC表示成绩,个属性依次为:学号、课程号、成绩 C(C#,CNAME,TEACHER)C表示课程,个属性依次为:课程号、课程名、

教师

试用SQL语句完成下列查询:

(1)检索王老师所授课程的课程号和课程名 (2)检索年龄大于22岁的男学生的学号和姓名

(3)检索学号为10001学生所学课程的课程名与任课教师 (4)检索至少选修王老师所授课程中一门课程的女学生姓名 (5)检索张同学不学的课程的课程号 (6)检索至少选修两门课程的学生学号

(7)检索全部学生都选修的课程的课程号与课程名 (8)检索选修课程包含王老师所授课程的学生学号 (1)SELECT C#,CNAME

FROM C

WHERE TEACHER=’王’ (2)SELECT S#,SNAME

FROM S

WHERE AGE>22 AND SEX=’男’ (3)SELECT CNAME,TEACHER

FROM SC,C

WHERE SC.C#=C.C# AND S#=’10001’ (4)SELECT SNAME

FROM S,SC,C

WHERE S.S#=SC.S# AND SC.C#=C.C# AND SEX=’女’ AND TEACHER=’王’ (5)SELECT C#

FROM C

WHERE NOT EXISTS (SELECT * FROM S,SC

WHERE S.S#=SC.S# AND SC.C#=C.C# AND SNAME=’张’)) (6)SELECT DISTINCT X..S#

FROM SC X,SC Y

WHERE X.S#=Y.S# AND X.C#! =Y.C# (7)SELECT C#,CNAME

FROM C

WHERE NOT EXISTS (SELECT * FROM S

WHERE NOT EXISTS (SELECT * FROM SC

WHERE S#=S.S# AND C#=C.C#)) (8)SELECT DISTINCT S#

FROM SC X

WHERE NOT EXISTS

(SELECT * FROM C

WHERE TEACHER=’王’ AND NOT EXISTS (SELECT * FROM SC Y

WHERE Y.S#=X.S# AND Y.C#=C.C#))

能刚我解释下下面sql语句的意思啊,看不懂?尤其是not exists~

设有如图3所示的三个关系.其中各个属性的含义如下:A#(商店代号)、ANAME(商店名)、WQTY(店员人数)、CITY(所在城市)、B#(商品号)、BNAME(商品名称)、PRICE(价格)、QTY(商品数量).

找出至少供应了代号为’256’的商店所供应的全部商品的其它商店的商店名和所在城市.

SELECT ANAME,CITY FROM A WHERE NOT EXISTS (SELECT * FROM B WHERE EXISTS

(SELECT * FROM AB AB1

WHERE A#='256' AND B#=B.B#) AND NOT EXISTS

(SELECT * FROM AB AB2

WHERE A#!='256' AND A#=A.A# AND B#=B.B#) );

--问题:找出 至少供应了代号为’256’的商店 所供应的全部商品 的其它商店的商店名和所在城市。 SELECT ANAME,CITY FROM A

WHERE NOT EXISTS --第四步:从表A中查找第一、二、三步骤合并,并且不存在的记录 (SELECT * FROM B

WHERE EXISTS --第三步:从表B中查找存在第一步和第二步条件合并的疾苦 (SELECT *

FROM AB AB1

WHERE A#='256' AND B#=B.B#) --第二步:从表AB中查找A#等于256的记录

AND NOT EXISTS --第二步:并且去除A#不能与256的记录 (SELECT * FROM AB AB2

WHERE A#!='256' AND A#=A.A# AND B#=B.B#) --AB中查找A#不等于256的记录 )

第一步:从表

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

Top