数据库系统概论--第三章课后习题

1.试述SQL的特点。

答:SQL有以下特点:

①综合统一:SQL语言集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体。在关系模型中实体和实体间的联系均用关系表示,这种数据结构的单一性带来了数据操作符的统一性,查找、插入、删除、更新等每一种操作都只需一种操作符,从而克服了非关系系统由于信息表示方式的多样性带来的操作复杂性。

②高度非过程化:用SQL语言进行数据操作,只要提出“做什么”,而无需指明“怎么做”,因此无需了解存取路径、存取路径的选择以及SQL语句的操作过程。这有利于提高数据独立性。

③面向集合的操作方式:SQL语言采用集合操作方式,不仅操作对象和查找结果可以是元组的集合,而且插入、删除、更新操作的对象也可以是元组的集合。

④以同一种语法结构提供两种使用方式:SQL语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方式;

⑤作为嵌入式语言,它能够嵌入到高级语言程序中,供程序员设计程序时使用。语言简捷,易学易用。

2.说明在DROP TABLE时,RESTRICT 和CASCADE的区别。

答:①若选择RESTRICT,则该表的删除是有限制条件的;若选择 CASCADE,则该表的删除没有限制条件。默认情况是RESTRICT。RESTRICT表示表的删除是有限制条件的。要删除的基本表不能被其他表的约束所引用,不能有视图,不能有触发器,不能有存储过程或函数等。如果存在这些以来该表的对象,则表不能被删除。 CASCADE表示表的删除没有限制条件,在删除基本表的同时,相关的依赖对象(比如视图)都将被删除。

3.有两个关系S(A,B,C,D)和T(C,D,E,F),写出与下列查询等价的SQL表达式

解题思路:经典三部曲:① SELECT 后跟所求,如果是*,则是全部列  ②FROM:从哪个表找

③ WHERE: 条件限制

(1) SELECT *

        FROM S

       WHERE A=10;

(2)

SELECT DISTINCT A, B

  FROM S;

(3) SELECT A, B, S.C, S.D, E, F

  FROM S, T

WHERE S.C = T.C AND S.D = T.D;

(4) SELECT A, B, S.C, S.D, T.C, T.D, E, F

 FROM S, T

WHERE S.C = T.C;

(5) SELECT A, B, S.C, S.D, T.C, T.D, E, F

FROM S, T

WHERE A < E;

(6) SELECT S1.C, S1.D, T.C, T.D, E, F

FROM T, (SELECT DISTINCT C, D

FROM S) AS S1;

4.

答:

①用SQL 语句建立第二章习题 6中的 4 个表。建表:

 ②针对建立的4个表用SQL语言完成第2章习题6中的查询。 

(1)求供应工程J1零件的供应商号码SNO;

答:

 SELECT  Sno
     FROM  SPJ
        WHERE JNO='J1';

(2)求供应工程J1零件P1的供应商号码SNO;

答:

   SELECT  Sno
       FROM  SPJ
        WHERE JNO='J1' AND Pno='P1';

(3)求供应工程J1零件为红色的供应商号码SNO;

 SELECT  Sno
     FROM  SPJ,P
        WHERE P.Pno =SPJ.Pno AND JNO='J1'  AND COLOR='红' ;

(4)求没有使用天津供应商生产的红色零件的工程号JNO;

SELECT DISTINCT Jno

       FROM SPJ

             WHERE Jno NOT IN

                        (SELETE Jno

                             FROM SPJ,P,S

                                      WHERE S.CITY='天津'        AND    COLOR='红'    AND                                                       S.SNO=SPJ.SNO AND P.PNO=SPJ.PNO   );

(5)求至少用了供应商Sl所供应的全部零件的工程号JNO。

 SELECT Jno

        FROM SPJ

                  WHERE PNO= (SELECT DIST PNO FROM SPJ WHERE SNO='S1');

 等价于

先查询S1供应商所供应的全部零件工程号

SELECT DIST PNO FROM SPJ WHERE SNO='S1'结果是(P1,P2)

 查询哪一个工程既使用P1零件又使用P2零件。

SELECT JNO FROM SPJ WHERE PNO='P1'

AND JNO IN (SELECT JNO FROM SPJ WHERE PNO='P2')

6.什么是基本表?什么是视图?两者的区别和联系是什么?

基本表是本身独立存在的表 ,在SQL中一个关系就对应一个表。视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中 ,是一个虚表。即数据库中只存放视 图的定义而不存放视图对应的数据 ,这些数据仍存放在导出视图的基本表中 。

视图在概念上与基本表等同 ,用户可以如同基本表那样使用视图 ,可以在视图上再定义视图。

两者的区别在于基本表是实际存储数据的表格,而视图只是基于基本表的一种虚拟表格。基本表的数据可以直接进行修改、删除等操作,而视图是只读的,不能进行修改操作。视图可以根据需要筛选、计算、整理基本表中的数据,使得数据的使用更加灵活、方便。基本表和视图之间可以进行联接操作,用于生成更加复杂的查询结果。

基本表和视图之间是一种包含关系,即一个视图可以基于一个或多个基本表生成,而一个基本表也可以作为多个视图的基础。基本表可以通过创建视图来实现对数据的更加灵活的使用,视图可以对基本表中的数据进行筛选、计算等操作,从而生成更加符合需求的查询结果。

7.试述视图的优点、

答:

(1 )视图能够简化用户的操作 ;(2 )视图使用户能以多种角度看待同一数据 ;

(3 )视图对重构数据库提供了一定程度的逻辑独立性 ;(4 )视图能够对机密数据提供安全保护。(5)适当的利用视图可以更清晰的表达查询 。

8.哪类视图是可以更新的?哪类视图是不可更新的?各举一例说明。

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

(1)找出三建工程项目使用的各种零件代码及其数量。

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

答:

建视图:

CREATE VIEW V_SPJ_AS

SELECT SN0,PN0,QTY

FROM SPJ

WHERE JNO=

(SELECT JNO

FROM J

WHERE JNAME=’三建’);

对该视图查询:

(1)找出三建工程项目使用的各种零件代码及其数量。

SELECT PNO,QTY

FROM V_SPJ;

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

SELECT PNO,QTY /* Sl供应三建工程的零件号和对应的数量*/

FROM V_SPJ

WHERE SNO=’S1’;

  • 10
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尘 关

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值