数据库概论参考答案NO1.docx
《数据库概论参考答案NO1.docx》由会员分享,可在线阅读,更多相关《数据库概论参考答案NO1.docx(12页珍藏版)》请在冰豆网上搜索。
数据库概论参考答案NO1
教材习题答案
试述SQL语言的特点。
答:
SQL语言集数据查询(DataQuery)、数据操纵(DataManipulation)、数据定义(DataDefinition)和数据控制(DataControl)功能于一体,主要特点包括:
1、综合统一。
SQL语言集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体。
2、高度非过程化。
用SQL语言进行数据操作,只要提出“做什么”,而无需指明“怎么做”,因此无需了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成。
这不仅大大减轻了用户负担,而且有利于提高数据独立性。
3、面向集合的操作方式。
SQL语言采用集合操作方式,不仅操作对象、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。
4、以同一种语法结构提供两种使用方式。
SQL语言既是自含式语言,又是嵌入式语言。
作为自含式语言,它能够独立地用于联机交互操作使用方式,用户可以在终端键盘上直接键入SQL命令对数据库进行操作;作为嵌入式语言,SQL语句能够嵌入到高级语言的程序中,供程序员设计程序时使用。
5、语言简捷,易学易用。
SOL语言功能极强,但由于设计巧妙,语言十分简捷,完成核心功能只用了9个动词。
SQL语言接近英语句子,因此容易学习,容易使用。
6、支持三级模式结构。
SQL语言支持关系数据库的三级模式结构。
其中外模式对应于视图(View),模式对应于基本表,内模式对应于存储文件。
^
试述SQL的定义功能。
答:
SQL的数据定义功能包括定义表、定义视图和定义索引。
SQL语言使用CREATETABLE语句建立基本表,ALTERTABLE语句修改基本表定义,DROPTABLE语句删除基本表;使用CREATEINDEX语句建立索引,DROPINDEX语句删除索引;使用CREATEVIEW语句建立视图,DROPVIEW语句删除视图。
用SQL语句建立习题中的4个表。
答:
对于供应商表:
S(Sno(供应商代码),Sname(供应商名),Status(供应状态),City(供应商所在城市))
建S表
CREATETABLES
(SnoCHAR(4),SnameCHAR(10),StatusCHAR(4),CityCHAR(20));
对于零件表:
P(Pno(零件代码),Pname(零件名),Color(颜色),Weight(重量))
建P表
CREATETABLEP
(PnoCHAR(4),PnameCHAR(20),ColorCHAR(4),WeightINT);
对于工程项目表:
J(Jno(工程项目代码),Jname(工程项目名),City(工程项目所在的城市))
建J表
-
CREATETABLEJ
(JnoCHAR(4),JnameCHAR(20),CityCHAR(20));
对于零件供应情况表:
SPJ(Sno(供应商代码),Pno(零件代码),Jno(工程项目代码),QTY(供应数量))。
建SPJ表
CREATETABLESPJ
(SnoCHAR(4),PnoCHAR(4),JnoCHAR(4),QTYINT);
针对习题中建立的3个表,试用SQL语言完成习题中的查询。
找出供应工程J1零件的供应商号;
…
答:
SELECTSno
FROMSPJ
WHEREJno=’J1’;
找出供应工程J1零件P1的供应商号;
答:
SELECTSno
FROMSPJ
WHEREJno=’J1’ANDPno=’P1’;
{
找出供应工程J1红色零件的供应商号;
答:
SELECTSno
FROMSPJ
WHEREJno=’J1’ANDPnoIN
(SELECTPno
FROMP
WHEREColor=’绿’);
或
。
SELECTSno
FROMSPJ,P
WHEREJno=’J1’AND=AND=’绿’);
找出没有使用杭州供应商生产的绿色零件的工程号。
答:
SELECTJno
FROMJ
WHERENOTEXISTS
(SELECT*
&
FROMSPJ
WHERE=ANDSnoIN
(SELECTSno
FROMS
WHERECity=’杭州’)
ANDPnoIN
(SELECTPno
FROMP
WHEREColor=’绿’));
或
、
SELECTJno
FROMJ
WHERENOTEXISTS
(SELECT*
FROMSPJ,S,P
WHERE=AND=
AND=ANDS.City=’杭州’
AND=’绿’);
找出至少用了S2供应商所供应的全部零件的工程号。
]
答:
SELECTDISTINCTJno
FROMSPJSPJZ
WHERENOTEXISTS
(SELECT*
FROMSPJSPJX
WHERESno=’S2’
ANDNOTEXISTS
(SELECT*
FROMSPJSPJY
~
WHERE=
AND=);
找出供应红色的P1零件且其供应量大于200的供应商号。
答:
SELECTJno
FROMP,SPJ
WHERE=AND=’P1’AND>=200;
针对习题中的4个表,试用SQL语言完成以下各项操作。
\
(1)找出所有供应商的姓名和所在城市。
答:
SELECTSname,City
FROMS;
(2)找出所有零件的名称、颜色、重量。
答:
SELECTPname,Color,Weight
FROMP;
~
(3)找出使用供应商S2所供应零件的工程号。
答:
SELECTJno
FROMSPJ
WHERESno=’S2’;
(4)找出工程项目J3使用的各种零件的名称及其数量。
答:
SELECTP,Pname,
FROMP,SPJ
-
WHERE=
AND=’J3’;
(5)找出杭州厂商供应的所有零件号码。
答:
SELECTDISTINCTPno
FROMSPJ
WHERESnoIN
(SELECTSno
FROMS
)
WHERECity=’杭州’);
(6)找出使用杭州产的零件的工程名称。
答:
SELECTJname
FROMJ,SPJ,S
WHERE=AND=
AND=’杭州’;
或
SELECTJname
-
FROMJ
WHEREJnoIN
(SELECTJno
FROMSPJ,S
WHERE=AND=’杭州’);
(7)找出没有供应天津产的零件的工程号。
答:
SELECTJno
|
FROMJ
WHERENOTEXISTS
(SELECT*
FROMSPJ
WHERE=
ANDSnoIN
(SELECTSno
FROMS
WHERECity=’天津’));
或
》
SELECTJno
FROMJ
WHERENOTEXISTS
(SELECT*
FROMSPJ,S
WHERE=
AND=
ANDCity=’天津’);
?
(8)把全部红色零件的颜色改成蓝色。
答:
UODATEP
SETColor=’蓝’
WHEREColor=’红’;
(9)由供应商S4供给J3零件P5改为由S3供应,请做必要的修改。
答:
UPDATESPJ
SETSno=’S3’
~
WHERESno=’S4’ANDJno=’J3’ANDPno=’P5’;
(10)从供应商关系中删除S3的记录,并从供应情况关系中删除相应的记录。
答:
DELETE
FROMSPJ
WHERESno=’S3’;
DELETE
FROMS
^
WHERESno=’S2’;
(11)请将(S2,J6,P4,300)插入到供应情况关系中。
答:
INSERTINTOSPJ(Sno,Jno,Pno,QTY)
VALUE(S2,J6,P4,300);
或
INSERTINTOSPJ
VALUE(S2,J6,P4,300);
:
什么是基本表什么是视图两者的区别和联系是什么
答:
基本表是数据库中本身独立存在的表,每个基本表对应一个关系模式。
在SQL中一个关系就对应一个基本表。
一个(或多个)基本表对应一个存储文件,一个基本表可以建立若干索引,它们都依附于基本表且存放在存储文件中。
视图是从一个或几个基本表导出的表。
视图本身不独立存储在数据库中,是一个虚表。
即数据库中只存放视图的定义及其关联的基本表名等信息而不存放视图对应的数据,这些数据仍然存放在导出视图的基本表中。
但SQL在查询视图时与基本表完全相同,且用户可以在视图上再定义视图。
但用视图对数据库中的数据进行增、删、改等更新操作时有一定的限制。
试述视图的优点。
答:
视图能够简化用户的操作。
视图使用户可以将注意力集中在所关心的数据上并简化用户的数据查询操作。
视图使用户能够以多角度看待同一数据。
视图可使不同的用户以不同的方式看待同一数据,当许多不同种类的用户共享同一个数据库时,这种灵活性显得非常重要的。
视图为数据库重构提供了一定程度的逻辑独立性。
数据的逻辑独立性是指当数据库重新构造时,如增加新的关系或对原有关系增加新的字段等,用户和用户程序不会受影响,而视图就为数据库重构提供了一定程度的逻辑独立性。
视图能够对数据提供安全保护。
对不同的用户定义不同的视图,可使机密数据不出现在不应该看到这些数据的用户视图上,达到对机密数据的安全保护。
/
所有的视图是否都可以更新为什么
答:
不是。
视图是不实际存储数据的虚表,因此对视图的更新,最终要转换为对基本表的更新,因为有些视图的更新不能惟一有意义地转换成对相应基本表的更新,所以,并不是所有的视图都是可更新的。
哪类视图是可以更新的,哪类视图是不可更新的各举一例。
答:
基本表的行列子集视图一般是可以更新的。
如《数据库原理与应用》3.5.3中的例。
例、将数学系学生视图C_Student中学号为S05的学生姓名改为“黄海”。
UPDATEC_Student
~
SETSname='黄海'
WHERESno='S05';
DBMS自动转换为对基本表的更新语句如下:
UPDATEStudents
SETSname='黄海'
WHERESno='S05'ANDSdept='数学';
若视图的属性来自集函数、表达式,则该视图肯定是不可以更新的。
如《数据库原理与应用》3.5.3中的例。
例、向数学系学生视图C_Student中插入一个新的学生记录,其中学号为“S09”,姓名为“王海”,年龄为20岁。
INSERT
INTOC_Student
&
VALUES('S09','王海',20,’数学’);
由于在定义C_Student是应用了“WITHCHECKOPTION”短语,其作用是限制Sdept的值必须是“数学”才允许由视图C_Student插入,若换成其它任何字符,DBMS都拒绝执行插入操作。
若定义C_Student是不用“WITHCHECKOPTION”这个短语,则以上VALUES短语中改为('S09','王海',20,’自动化’)仍然可以完成插入操作,但用SELECT*FROMC_Student命令则看不到刚插入的元组。
试述某个你熟悉的实际系统中对视图更新的规定。
答:
(略)
因为不同的系统对视图的更新规定是不同的,学员必须了解你所用系统对视图更新的规定,所以我们无法给出一个相对标准的答案。
请为一建工程项目建立一个供应情况的视图,包括供应商代码(Sno)、零件代码(Pno)、供应商名称(Sname)、供应数量(Qty)。
针对该视图完成下列查询:
(1)找出一建工程项目使用的各种零件代码及其数量。
(2)找出供应商S2的供应情况。
—
答:
建视图
CREATEVIEWV_SPJAS
SELECTSno,Pno,Sname,Qty
FROMSPJ
WHEREJno=
(SELECTJno
FROMJ
WHEREJname=’一建’);
对该视图进行查询:
:
(1)找出一建工程项目使用的各种零件代码及其数量。
答:
SELECTPno,Qty
FROMV_SPJ;
(2)找出供应商S2的供应情况。
答:
SELECTPno,Qty
FROMV_SPJ;
WHERESno=’S2’;
|
(3)找出供应零件P2且供应数量大于100的供应商名。
答:
SELECTPname
FROMV_SPJ;
WHEREPno=’P2’ANDQty>100;
针对习题建立的表,用SQL语言完成以下各项操作:
(1)把对表S的INSERT权限授予用户ZhangYong,并允许他再将此权限授予其他用户。
答:
GRANTINSERT
ONTABLES
TOZhangYong
WITHGRANTOPTION;
(2)把查询SP表和修改Qty属性的权限授给用户LiMing。
答:
GRANTSELECT,UPDATE(QTY)
ONTABLESPJ
TOLiMing;
嵌入式SQL是如何解决数据库工作单元与源程序工作单元之间通讯的
答:
在SQL语句前加上前缀EXECSQL,SQL语句的结束标志则随主语句的不同而不同。
在嵌入式SQL中是如何协调SQL语言的集合处理方式和主语言的单记录处理方式的
答:
用游标来协调这两种不同的处理方式。
游标区是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果,每个游标区都有一个名字。
用户可以通过游标逐一获取记录,并赋给主变量,交由主语言进一步处理。
试述空值的概念,空值在运算中会带来什么问题
答:
SQL/DS支持空值的概念。
空值是“不存在”的值,即未知的或不可用的。
空值在运算中会带来结果的不确定性问题。
例、如果算术表达式中任一运算分量为空值,则表达式的值为空值。
如x+y中,若x为空值,则x+y的值为空。
在算术比较中,有一值为空值,表达式的值为“”。