PNAME CHAR(10), COLOR CHAR(4), WEIGHT INT);
J(JNO,JNAME,CITY); 建J表
CREATE TABLE J (JNO CHAR(3), JNAME CHAR(10), CITY CHAR(10));
SPJ(SNO,PNO,JNO,QTY); 建SPJ表
CREATE TABLE SPJ (SNO CHAR(3), PNO CHAR(3), JNO CHAR(3), QTY INT);
4. 针对上题中建立的四个表试用SQL语言完成第3章习题3中的查询。 答: (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
WHERE JNO=‘J1’ AND PNO IN (SELECT PNO FROM P
WHERE COLOR=‘红’); 或
SELECT SNO FROM SPJ,P
WHERE JNO=‘J1’ AND SPJ.PNO=P.PNO AND COLOR=‘红’;
(4) 求没有使用天津供应商生产的红色零件的工程号JNO; 解析:
用SQL语言表示如下: SELECT JNO FROM J
WHERE NOT EXISTS
(SELECT * FROM SPJ
WHERE SPJ.JNO=J.JNO AND SNO IN (SELECT SNO FROM S
WHERE CITY=‘天津’) AND PNO IN (SELECT PNO FROM P
WHERE COLOR=‘红’)); 或
SELECT JNO FROM J
WHERE NOT EXISTS (SELECT *1 FROM SPJ, S, P
WHERE SPJ.JNO=J.JNO AND SPJ.SNO=S.SNO AND SPJ.PNO=P.PNO AND S.CITY=‘天津’ AND P. COLOR=‘红’);
注意:从 J 表入手,以包含那些尚未使用任何零件的工程号。 (5) 求至少用了供应商S1所供应的全部零件的工程号JNO 。 解析:
用SQL语言表示如下: SELECT DISTINCT JNO FROM SPJ SPJZ
WHERE NOT EXISTS (SELECT *
FROM SPJ SPJX WHERE SNO='S1' AND NOT EXISTS (SELECT *
FROM SPJ SPJY
WHERE SPJY.PNO=SPJX.PNO AND SPJY.JNON=SPJZ.JNO AND SPJY.SNO=’S1’)); AND SPJY.SNO='S1' ));
5. 针对习题3中的四个表试用SQL语言完成以下各项操作: (1)找出所有供应商的姓名和所在城市。 (2)找出所有零件的名称、颜色、重量。
(3)找出使用供应商S1所供应零件的工程号码。
(4)找出工程项目J2使用的各种零件的名称及其数量。 (5)找出上海厂商供应的所有零件号码。
(6)找出使用上海产的零件的工程名称。 (7)找出没有使用天津产的零件的工程号码。 (8)把全部红色零件的颜色改成蓝色。
(9)由S5供给J4的零件P6改为由S3供应,请作必要的修改。
(10)从供应商关系中删除S2的记录,并从供应情况关系中删除相应的记录。 (11)请将 (S2,J6,P4,200) 插入供应情况关系。 答: (1) 找出所有供应商的姓名和所在城市。 SELECT SNAME, CITY FROM S;
(2) 找出所有零件的名称、颜色、重量。 SELECT PNAME, COLOR, WEIGHT FROM P;
(3) 找出使用供应商S1所供应零件的工程号码。 SELECT JNO FROM SPJ
WHERE SNO=‘S1’;
(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 JNO IN (SELECT JNO FROM SPJ, S
WHERE SPJ. SNO=S.SNO AND S.CITY='上海');
(7) 找出没有使用天津产的零件的工程号码。 SELECT JNO FROM J
WHERE NOT EXISTS
(SELECT * FROM SPJ
WHERE SPJ.JNO=J.JNO AND SNO IN (SELECT SNO FROM S
WHERE CITY=‘天津’)); 或
SELECT JNO FROM J
WHERE NOT EXISTS (SELECT *1 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';
解析:注意删除顺序,应该先从SPJ表中删除供应商S2所供应零件的记录,然后从从S表中删除S2。 (11) 请将 (S2,J6,P4,200) 插入供应情况关系。 INSERT INTO SPJ(SNO, JNO, PNO, QTY) VALUES (S2,J6,P4,200); 或
INSERT INTO SPJ
VALUES (S2,P4,J6,200);
6. 什么是基本表?什么是视图?两者的区别和联系是什么?
答:基本表是本身独立存在的表,在SQL中一个关系就对应一个表。
视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中,是一个虚表。即数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中。视图在概念上与基本表等同,用户可以如同基本表那样使用视图,可以在视图上再定义视图。 7. 试述视图的优点。
答:(1)视图能够简化用户的操作。
(2)视图使用户能以多种角度看待同一数据。
(3)视图对重构数据库提供了一定程度的逻辑独立性。 (4)视图能够对机密数据提供安全保护。
8. 所有的视图是否都可以更新?为什么?
答:不是。视图是不实际存储数据的虚表,因此对视图的更新,最终要转换为对基本表的更新。因为有些视图的更新不能唯一地有意义地转换成对相应基本表的更新,所以,并不是所有的视图都是可更新的。如《概论》3.5.1中的视图S_G(学生的学号及他的平均成绩) CREAT VIEW S_G(Sno,Gavg) AS SELECT Sno,AVG(Grade) FROM SC
GROUP BY Sno;
要修改平均成绩,必须修改各科成绩,而我们无法知道哪些课程成绩的变化导致了平均成绩的变化。 9. 哪类视图是可以更新的,哪类视图是不可更新的? 各举一例说明。 答:基本表的行列子集视图一般是可更新的。如《概论》3.5.3中的例1。 若视图的属性来自集函数、表达式,则该视图肯定是不可以更新的。 如《概论》3.5.3中的S_G视图。
10. 试述某个你熟悉的实际系统中对视图更新的规定。 答:(略)
解析:不同的系统对视图更新的规定是不同的,读者必须了解你所用系统对视图更新的规定。 11. 请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件 代码(PNO)、供应数量(QTY)。针对该视图完成下列查询: (1)找出三建工程项目使用的各种零件代码及其数量。 (2)找出供应商S1的供应情况。 答:建视图:
CREATE VIEW V_SPJ AS SELECT SNO, PNO, QTY FROM SPJ WHERE JNO= (SELECT JNO FROM J
WHERE JNAME='三建'); 对该视图查询:
(1) 找出三建工程项目使用的各种零件代码及其数量。 SELECT PNO, QTY FROM V_SPJ;
(2) 找出供应商S1的供应情况。
SELECT PNO, QTY /* S1供应三建工程的零件号和对应的数量*/ FROM V_SPJ
WHERE SNO='S1'; 第四章 关系系统及其优化 一、选择题
1.概念模型是现实世界的第一层抽象,这一类最著名的模型是( ) 。 A.层次模型 B. 关系模型 C. 网状模型 D. 实体-关系模型 2.区分不同实体的依据是( ) 。 A. 名称 B. 属性 C. 对象 D. 概念
3.关系数据模型是目前最重要的一种数据模型,它的三个要素分别为( )。 A.实体完整、参照完整、用户自定义完整 B.数据结构、关系操作、完整性约束 C.数据增加、数据修改、数据查询
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库数据库系统原理与设计(第2版)课后习题详细答案(3)在线全文阅读。
相关推荐: