数据库系统概论--第三章课后习题
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’;
2301_80250827: 图一的 V 咋能表示有几种码元呢
做而论道_CS: 计算机中,并没有小数点。 计算机中,只有 1 和 0,用这些,也就只能组成整数。 人类的数,无论整数、小数或浮点数, 在计算机中,都是以整数来存放和计算的。 那么,你介绍计算机知识,就应该用整数来介绍。 加减乘除、与或非异或、还有移位,你都可以讲的。 算出的结果,也必然都是整数。 但是,这些个整数,又都代表什么? 无论什么信息,它们都能代表! 注意:它们只能作为各种信息的代表! 或者代表小数,或者代表浮点数,或者英文汉字声音图像 ... 你都可以慢慢的、逐个的进行介绍。 整数,确实可以代表小数进行运算。 但是,你不能说:计算机内部,有什么定点小数在运算。 为什么正常人学计算机,觉得很难呢? 就因为计算机教材写的,就是这么乱七八糟。 关键是教材的作者,他们脑子里面,都是稀烂的! 没有一点头绪。
做而论道_CS: 要说浮点数,它和计算机,真没有什么关系。 计算机分为五大部分:运算、控制、存储器、输入、输出设备。 32 位数浮点数,仅仅才用了四个字节。它连半个部分,都算不上啊! 用 32 位数,代表更大和更小的数值,这只是一个算法而已,属于数学领域的知识。 无论这算法是难还是简单,无论它怎么规定,它和计算机原理,并无任何联系。 所以,浮点数:既不属于《计算机组成》,也不属于《计算机原理》。 对于浮点数,计算机,只是个数学工具而已。也就像一支笔一样,写写算算就完了。 难道,你拿起一支毛笔或铅笔,你还以为它和浮点数,有什么关系吗?
INFINTE0: 我想问一下,第十二题的有效存取时间,为什么不用在最后再+1,表示取数据?
冬天的大葱: 比如34题,明显和刚开始的概念都不一样,我搜34题的时候发现35题也是错的有点无语都快看完了