数据库 第三章 关系数据库标准语言SQL

2026/1/27 13:09:38

关系数据库标准语言SQL

习题

1.试述SQL语言的特点。 2.试述SQL的定义功能。

3.用SQL语句建立第二章习题5中的4个表。

4.针对上题中建立的4个表试用SQL语言完成第二章习题5中的查询。 5.针对习题3中的4个表试用SQL语言完成下列各项操作:

(1)找出所有供应商的姓名和所在城市。 (2)找出所有零件名称、颜色、重量。

(3)找出使用供应商SI所供应零件的工程号码。

(4)找出工程项目J2使用的各种零件的名称及其数量。 (5)找出上海厂商供应的所有零件号码。 (6)找出使用上海产的零件的工程名称。

(7)找出没有使用天津产的零件的工程号码。 (8)把全部红色零件的颜色改成蓝色。

(9)由S5供给J4的零件P6改为由S3供应,请做必要的修改。

(10)从供应商关系中见风删除S2的记录,并从供应情况关系中删除相应的记录。 6.什么是基本表?什么是视图?两者的区别和联系是什么? 7.试述视图的优点。

8.所有的视图是否都可以更新?为什么?

9.哪类视图是可以更新的?哪类视图是不可以更新的?各举一例说明。 10.试述某个你熟悉的实际系统中对视图更新的规定。

11.请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。针对该视图完成下列查询:

(1)找出三建工程项目使用的各种零件代码及其数量。 (2)找出供应商S1的供应情况。

12.针对习题3建立的表,用SQL语言完成以下各项操作:

(1)把对表S的INSERT权限授予用户张勇,并允许他在将此权限授予其他用户。 (2)把查询SPJ表和修改QTY属性的权限授给用户李天明。 13.在嵌入式SQL中是如何区分SQL语句和主语言语句的。

14.在嵌入式SQL中是如何解决数据库工作单元与源程序工作单元之间通信的?

15.在嵌入式SQL中是如何协调SQL语言的集合处理方式和主语言的单记录处理方式的? 参考答案

1.答:(1)综合统一。SQL语言集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体。

(2)高度非过程化。用SQL语言进行数据操作,只要提出”做什么”,而无需指明”怎么做”,因此无需了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成。 (3)面向集合的操作方式。SQL语言采用集合操作方式,不仅操作对象、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。

(4)以同一种语法结构提供两种使用方式。SQL语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能独立地用于联机交互的使用方式;作为嵌入式语言,它能够嵌入到高级语言程序中,供程序员设计程序时使用。 (5)语言简捷,易学易用。

2.答:SQL的数据定义为功能包括定义表、定义视图和定义索引。 SQL语言使用CREATE TABLE 语句建立基本表,ALTER TABLE 语句修改基本表定义,DROP TABLE语句删除基本表;使用CREATE INDEX语句建立索引,DROP INDEX语句删除索引;使用CREATE VIEW语句建立视图,DROP VIEW 语句删除视图。 3.答:对于S表:S(SNO,SNAME,STATUS,CITY); 建S表

CREATE TABLE S

SNAME CHAR(10), STATUS CHAR(2) CITY CHAR(10);

对于P表:P(PNO,PNAME,COLOR,WEIGHT); 建P表 CREATE TABLE P (PNO CHAR(3)

PNAME CHAR(10), COLOR CHAR(4), WEIGHT INT);

对于J表:J(JNO,JNAME,CITY); 建J表 CREATE TABLE J (JNO CHAR(3), JNAME CHAR(10), CITY CHAR(10));

对于SPJ表:SPJ(SNO,PNO,JNO,QTY); 建SPJ表 CREATE TABLE SPJ (SNO CHAR(3), PNO CHAR(3), JNO CHAR(3), QTY INT);

4.答:读者可以对比SQL语言、关系代数、ALPHA语言、QBE语言,体会各种语言的优点。

(1)求供应工程JI零件的供应商号码SNO; SELECT SNO FROM SPJ

WHERE JNO =‘JI’

(2)求供应工程JI零件PI的供应商号码SNO; SELECT SNO FROM SPJ

WHERE JNO=‘JI’ AND PNO=‘PI’

(3)求供应工程JI零件为红色的供应商号码SNO; SELECT SNO /﹡这是嵌套查询﹡/ FROM SPJ

WHERE JNO=‘JI’

AND PNO IN /﹡找出红色零件的零件号码PNO﹡/ (SELECT PNO

FROM P /﹡从P表中找﹡/ WHERE COLOR=‘红’) SELECT SNO

FROM SPJ,P ﹡这是两表连接查询﹡/

WHERE JNO=’JI’ /﹡这是复合条件连接查询﹡/ AND SPJ。PNO=P。PNO AND COLOR=‘红’ 5.答:(1)找出所有供应商的姓名和所在城市。 SELECT SNAME,CITY FROM S;

(2)找出所有零件名称、颜色、重量。 SELECT PNAME, COLOR, WEIGHT

(3)找出使用供应商SI所供应零件的工程号码。 SELECT JNO FROM SPJ

WHERE SNO=‘SI’

(4)找出工程项目J2使用的各种零件的名称及其数量。 SELECT P。PNAME,SPJ。QTY FROM P,SPJ

WHERE P。PNO=SPJ。PNO AND SPJ。JNO=‘J2’

(5)找出上海厂商供应的所有零件号码。 SELECT DISTINCT PNO FROM SPJ

WHERE SNO IN (SELECT SNO FROM S

WHERE CITY=)

(6)找出使用上海产的零件的工程名称。 SELECT JNAME FROM J,SPJ,S

WHERE J。JNO=SPJ。JNO AND SPJ。SNO=S。SNO AND S。CITY=

或 SELECT JNAME FROM J

WHERE JNOIN (SELECT JNO FROM SPJ,S

WHERE SPJ。SNO=S。SNO AND S。CITY=‘上海’)

(7)找出没有使用天津产的零件的工程号码。 SELECT JNO FROMJ

WHERE NOT EXISTS (SELECT﹡ FROM SPJ

WHERE SPJ。JNO=J。JNO AND SNO IN (SELECT SNO FROMS

WHERE CITY=)) 或 SELECT JNO FROM J

WHERE NOT EXISTS (SELECT﹡ FROM SPJ,S

WHERE SPJ。JNO=J。JNO AND SPJ。SNO=S。SNO AND S。CITY=’天津’)

(8)把全部红色零件的颜色改成蓝色。 UPDATE P

SET COLOR=’蓝’ WHERE COLOR=’红’

9)由S5供给J4的零件P6改为由S3供应,请做必要的修改。 UPDATE SPJ SET SNO=’S3’ WHERE SNO=’S5’ AND JNO=‘J4’ AND PNO=‘P6’

(10)从供应商关系中见风删除S2的记录,并从供应情况关系中删除相应的记录。 DELETE FROM SPJ

WHERE SNO=‘S2’ DELETE FROM S

WHERE SNO=‘S2’

6.答:基本表是本身独立存在的表,在SQL中一个关系就对应一个表。

视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中,是一个虚表。即数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中。视图在概念上与基本表等同,用户可以如同基本表那样使用视图,可以在视图上再定义视图。 7.答:(1)视图能够简化用户的操作;

(2)视图使用户能以多种角度看待同一数据;

(3)视图对重构数据库提供了一定程度的逻辑独立性; (4)视图能够对机密数据提供安全保护。 详细解释参见《概论》3。4。5。

8.答:不是。视图是不实际存储数据的虚表,因此对视图的更新,最终上转换为对基本表的更新。因为有些视图的更新不能惟一有意义地转换成对相应基本表的更新,所以,并不是所有的视图都是可更新的,如《概论》3。5。1中的视图S_G(学生的学号及他的平均成绩)

CREAT VIEW S_G(Sno,Gavg)

AS SELECT Sno,AVG(Grade)/﹡设SC表中”成绩”列Grade为数字型﹡/ FROM SC

GROUP BY Sno;

要修改平均成绩,必须修改各科成绩,而我们无法知道哪些课程成绩的变化导致了平均成绩的变化。

9.答:基本表的行列子集视图一般是可更新的,如《概论》3。5。3中的例1。

若视图的属性来自集函数、表达式,则该视图肯定是不可以更新的,如《概论》3。5。3中的S_G视图。 10.答:(略) 11.答:建视图: CREATE VIEW V_SPJ AS SELECT SNO,PNO,QTY FROM SPJ WHERE JNO= (SELECT JNO FROMJ

WHERE JNAME=`三建`); 对该视图查询:

(1)找出三建工程项目使用的各种零件代码及其数量。 SELECT PNO,QTY FROM V_SPJ;

(2)找出供应商SI的供应情况。

SELECT PNO ,QTY /﹡SI供应三建工程的零件号和对应的数量﹡/ FROM V_SPJ

WHERE SNO=`SI`

.答:GRANT INSERT ON TABLES TO张勇

WITH GRANT OPTION;

(2)把查询SPJ表和修改QTY属性的权限授给用户李天明。 答:GRANT SELECT,UPDATE(QTY) ON TABLE SPJ TO李天明

13.答:在SQL语句前加上前缀EXEC SQL,SQL语句的结标志则随主语言的不同而不同。

例如,在PL/I和C中,以分号(;)结束,在COBOLK中,以END-EXEC结束。 14.答:数据库工作单元与源程序工作单元之间的通信主上包括。

(1)SQL通信区SQLCA,用来向主语言传递SQL语句的执行状态信息,使主语言能够根据此信息控制程序流程。 (2)主变量(Host Variable):

(1)用来实现主语言向SQL提供参数;

(2)将SQL语句查询数据库的结果交往语言进一步处理。 (3)游标(Cursor),解决集合性操作语言与过程性操作语言的不匹配,通过游标逐一取记录,并赋给主变量,交由主语言进一步处理。 详细解释参见《概论》3。7。2。

15.答:用游标来协调这两种不同的处理方式。游标区是系统为用户开设的一个据缓冲区,存放SQL语句的执行结果,每个游标区都有一个名字。用户可以通过游标逐一获取记录,并赋给主变量,交由主语言进一步处理。


数据库 第三章 关系数据库标准语言SQL.doc 将本文的Word文档下载到电脑
搜索更多关于: 数据库 第三章 关系数据库标准语言SQL 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219