数据库原理第三章课后答案

  1. 试述SQL的特点。
    1) 一体化:SQL提供了一系列完整的数据定义和操纵功能,用SQL可以实现数据库生命周期中的全部活动,包括定义关系模式,录入数据以建立数据库、查询、更新、维护、数据库重构、数据库安全性控制等一系列操作要求。
    2) 用SQL语言进行数据操作,只要提出“做什么”,而无需知名”怎么做“,因此无需了解存取路径,存取路径的选择语句SQL的操作过程由系统自动完成
    3) 面向集合的操作方式:SQL语言才采用集合操作方式,不仅操作对象,查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也就可以是元组的集合
    4) 以同一种语言结构提供多种使用方式: SQL语言既是自含式语言,又是嵌入式语言。作为自含式语言,他能给独立地用户联机交互的使用方式,作为嵌入式语言,它能够嵌入到高级语言程序中,供程序员设计程序时使用。
    5) SQL语言可以对两种基本数据结构进行操作,一种是“表”,另一种是“视图(View)”。

  2. 说明在DROP TABLE时,RESTRICT和CASCADE的区别。
    RESTRICT: 确保只有不存在相关视图和完整性约束的表才能删除
    CASCADE: 任何相关视图和完整性约束一并被删除

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

(1) SELECT * FROM S WHERE A=10
(2) SELECT A,B FROM S
(3) SELECT A,B,S.C,D,E,F FROM S,T WHERE S.C=T.C AND S.D=T.D
(4) SELECT * FROM S,T WHERE S.C=T.C
(5) SELECT * FROM S,T WHERE S.A<T.E
(6) SELECT ST.C,ST.D,T.C,T.D,E,F FROM T,(SELECT DISTINCT C,D FROM S) AS ST

  1. 用SQL语句建立第2章习题6中的4个表;针对建立的4个表用SQL完成第2章习题6中的查询。
    在这里插入图片描述
  1. 建表:
    (1) CREATE TABLE S(
    SNO VARCHAR(10),
    SNAME VARCHAR(10),
    STATUS INT,
    CITY VARCHAR(10));
    (2) CREATE TABLE P(
    PNO VARCHAR(10),
    PNAME VARCHAR(10),
    COLOR VARCHAR(2),
    STATUS INT);
    (3) CREATE TABLE J(
    JNO VARCHAR(10),
    JNAME VARCHAR(10),
    CITY VARCHAR(10) );
    (4) CREATE TABLE SPJ(
    SNO VARCHAR(10),
    PNO VARCHAR(10),
    JNO VARCHAR(10),
    QTY INT);
  2. 查询:
    (1) SELECT SNO FROM SPJ WHERE JNO=’J1‘;
    (2) SELECT SNO FROM SPJ WHERE JNO=‘J1’ AND PNO='P1’;
    (3) SELECT SNO FROM SPJ,P WHERE JNO=‘J1’ AND SPJ.PNO=P.PNO AND COLOR=‘红’
    (4) SELECT JNO FROM J
    WHERE NOT EXISTS
    (SELECT * 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=‘红’);
    (5) SELECT DISTINCT JNO
    FROM SPJ SPJ3 WHERE NOT EXISTS
    (SELECT * FROM SPJ SPJ1
    WHERE SNO=‘S1’ AND NOT EXISTS
    (SELECT * FROM SPJ SPJ2
    WHERE SPJ2.PNO=SPJ1.PNO AND SPJ2.JNO=SPJ3.JNO)
    );

5.针对习题4中的4个表试用SQL完成以下各项操作:
(1)找出所有供应商的姓名和所在城市;
SELECT SNAME,CITY FROM S;
(2)找出所有零件的名称、颜色、重量;
SELECT PNAME,COLOR,WEIGHT FROM P;
(3)找出使用供应商S1所供应零件的工程号码:
SELECT DIST 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 SPJWHERE SNO IN (SELECT SNO FROM S WHERE CITY=‘上海’);
(6)找出使用上海产的零件的工程名称:
SELECT JNAME FROM SPJ,S,J WHERE S.SNO=SPJ.SNO AND S.CITY=’上海’ ANDJ.JNO=SPJ.JNO;
(7)找出没有使用天津产的零件的工程号码;
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’;
(11)请将(S2,J6,P4,200) 插入供应情况关系。
INSERT INTO SPJ(SNO, JNO, PNO, QTY) VALUES (S2,J6,P4,200);

  1. 什么是基本表?什么是视图?两者的区别和联系是什么?
    1)基本表:是本身独立存在的表,在SQL中一个关系就对应一个表
    2)视图:是从一个或几个基本表导出的表。视图本身不独立存储在数据库中,是一个虚表。即数据库中只存放视图的定义而不存放视图对应的数据,这些数据仍存放在导出视图的基本表中。
    3)联系与区别:视图在概念上与基本表等同,用户可以如同基本表那样使用视图,可以在视图上再定义视图。

7.试述视图的优点。
1)视图能够简化用户的操作
2)视图使用户能以多种角度看待同一数据
3)视图对重构数据库提供了一定程度的逻辑独立性
4)视图能够对机密数据提供安全保护

8.哪类视图是可以更新的?哪类视图是不可更新的?各举一例 说明。
1)基本表的行列子集视图一般是可更新的。
例子:显示员工工资的视图
2)若视图的属性来自集函数、表达式,则该视图肯定是不可以更新的。
例子:显示学生平均成绩的视图

9.请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供
| 应数量(QTY)。针对该视图完成下列查询:
建立视图:
CREATE VIEW SPJ_VIEW AS
SELECT SNO, PNO, QTY FROM SPJ WHERE JNO =
(SELECT JNO FROM J WHERE JNAME=‘三建’);
(1) 找出三建工程项目使用的各种零件代码及其数量:
SELECT PNO, QTY FROM SPJ_VIEW;
(2) 找出供应商S1的供应情况。
SELECT PNO, QTY FROM SPJ_VIEW WHERE SNO=‘S1’;

猜你喜欢

转载自blog.csdn.net/Spidy_harker/article/details/105036216