数据库基础知识考试及答案

四、问答题

1、试述关系数据库的特点。

层次:优点是实体间联系是固定的,有良好的完整性支持,对具有一对多的层次关系 的部门描述自然、直观、容易理解,缺点是对查入和删除操作限制比较多,查询子 女结点必须通过双亲节点,命令趋于程序化。

网状:优点是更为直接的描述现实世界,有良好的性能,存取效率较高,缺点是结构 比较复杂,而且随着应用环境的扩大,数据库的结构越来越复杂,不利于用户掌握, 其DDL,DML语言复杂,用户不容易使用。

关系:优点是建立在严格的数学概念的基础上,概念单一,实体与实体间的联系都用 关系表示,故其数据结构简单、清晰,存取路径对用户透明,故有更高的数据独立性和 更好的安全保密性。缺点是查询效率不如非关系型数据库,故必须对查询进行优化,增 加了开发数据库管理系统的难度。

2、什么叫数据与程序的物理独立性?什么叫数据与程序的逻辑独立性?为什么数据库系统具有数据与程序的独立性。

(1)逻辑记录与物理记录都是记录,是字段的有序集合; (2)逻辑文件与物理文件都是文件,是同一类记录的汇集。 区别:

(1)逻辑记录与逻辑文件是逻辑数据描述,物理记录与物理文件是物理数据描述。

(2)物理数据描述是指数据在存储设备上的存储方式,物理记录、物理文件(还有物理联系、物理结构等术语), 都是用来描述实际存储设备上的数据。

(3)逻辑数据描述是指程序员或用户用以操作的数据形式,是抽象的概念化数据。 逻辑记录、逻辑文件(还有逻辑联系、逻辑结构等术语),都是用户观点的数据描述。

3、试述等值连接与自然连接的区别与联系。

连接运算符θ为=的连接运算称为等值连接。它是从关系R与S的广义笛卡尔积中选取A、B属性值相等的元组。自然连接是一种特殊的等值连接,要求两个关系中进行比较的分量必须是相同的属性组,在结果中把重复的属性列去掉。

4、所有视图都可以更新?为什么?

不是。视图是不实际存储数据的虚表,因此对视图的更新,最终要转换为对基本表的更新。因为有些视图的更新不能惟一有意义地转换成对相应基本表的更新,所以并不是所有的视图都是可更新的。如对视图S_G(学生的学号及其平均成绩)而言,要修改平均成绩,必须修改各科成绩,但无法知道哪些课程成绩的变化导致了平均成绩的变化。

CREATE VIEW S_G(Sno,Gavg) AS SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno;

5、在嵌入式SQL中是如何区分SQL语句和主语句的?

在嵌入式SQL中,为了能够区分SQL语句与主语句,所有SQL语句都必须加前缀EXEC SQL,以(;)结束成为一个程序片断: EXEC SQL

6、试述查询优化的一般准则与一般步骤。

下面的优化策略一般能提高查询效率: (1)选择运算应尽可能先做。 (2)把投影运算和选择运算同时进行。 (3)把投影同其前或其后的双目运算结合起来执行。 (4)把某些选择同在它前面要执行的笛卡尔积结合起来成为一个连接运算。 (5)找出公共子表达式。 (6)选取合适的连接算法

6

各个关系系统的优化方法不尽相同,大致的步骤可以归纳如下: (1)把查询转换成某种内部表示,通常用的内部表示是语法树。 (2)把语法树转换成标准(优化)形式。 即利用优化算法,把原始的语法树转换成优化的形式。 (3)选择低层的存取路径。 (4)生成查询计划,选择代价最小的。

7、关系数据库语言SQL在数据库领域的地位如何? 8、SQL语言有哪些特点

⑴综合统一:集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体。 ⑵高度非过程化:用SQL语言进行数据操作,只要提出“做什么”,无须指明“怎么做”,因此无需了解存取路径。

⑶面向集合的操作方式:SQL语言采用的集合操作方式,不仅操作对象、查询结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。 ⑷以同一种语法结构提供两种使用方法:SQL语言既是自含式语言,能独立地用于联机交互;又是嵌入式语言,能嵌入到高级语言中进行混合编程。 ⑸语言简捷,易学易用。

9、SQL语言的谓动词有哪些,被分为哪几类?

比较:=,>,<,>=,<=,!=,<>,!>,!<;NOT+上述比较运算符 确定范围:BETWEEN AND,NOT BETWEEN AND 确定集合:IN,NOT IN

字符匹配:LIKE,NOT LIKE 空值:IS NULL,IS NOT NULL 多重条件(逻辑运算):AND,OR,NOT

10、利用SQL语言可以作哪些数据定义,其一般格式?

答:SQL语言的定义功能包括定义表、定义视图和定义索引。 SQL语言使用CREATE TABLE语句建立基本表,ALTER TABLE语句修改基本表的定义,DROP TABLE语句删除基本表;使用CREATE INDEX语句建立索引,DROP INDEX语句删除索引;使用CREATE VIEW语句建立视图,DROP VIEW语句删除视图。

11、SQL查询的一般格式如何?

Select[ALL|DISTINCT]〈目标列表达式〉[,〈目标列表达式〉]。。。 FROM<表名或视图名>[,<表名或视图名>]。。。 [WHERE<条件表达式>]

[GROUP BY<列名1>[HAVING<条件表达式>]] [ORDER BY<列名2>[ASC|DESC]]; 12、常用的查询条件有哪些?

常用的查询条件有:比较,确定范围,确定集合,字符匹配,空值,多重条件。

五、求解题

1、某医院病房计算机管理中需要如下信息:

科室:科名,科地址,科电话,医生名字 病房:病房号,床位号,所属科室名

医生:姓名,职称,所属科室名,年龄,工作证号 病人:病历号,姓名,性别,诊断,主管医生,病房号

其中,一个科室有多个病房,多个医生,一个病房只能属于一个科室,一个医生只属于

7

一个科室,但可负责多个病人的诊治,一个病人的主管医生只有一个。

完成如下设计:

1) 涉及该计算机管理系统的E-R图; 2) 将该E-R图转换为关系模型的结构; 3) 指出转换结果中每个关系模式的候选码。 图略

2)病房(科名,科地址,科电话,医生名字)

病人(病历号,姓名,性别,诊断,主管医生) 医生(主治医生,姓名,所属科室名,年龄,工作证号) 包含(病房号,工作证号,科名) 包含(病房号,病历号) 诊治(工作证号,病历号) 3)见上,下划线标出

2、供应商——零件——工程项目数据库由以下四个关系模式构成:

S(SNO,SNAME,STATUS,CITY)

P(PNO,PNAME,COLOR,WEIGHT,CITY) J(JNO,JNAME,CITY) SPJ(SNO,PNO,JNO,QTY)

供应商S,零件P和工程项目J分别由供应商号(SNO),零件号(PNO)和工程项目号(JNO)惟一标识。供货SPJ是指由某个供应商向某个工程项目供应某些数量的某种零件。

请用SQL语言完成如下的操作:

1)找出给北京的工程项目提供不同的零件号; 2)将没有供货的所有工程项目从J中删除; 3)查询提供全部零件的供应商名;

4)查询这样的工程项目号:供给该工程项目的零件P1的平均供应量大于供给工程项目J1的任何一种零件的最大供应量;

5)定义一个视图,它由所有这样的工程项目(工程项目号与所在城市名称)组成:它们由供应商S1供货且使用零件P1。

1)select pno From j,spj

Where j.city=’ 北京’and j.jno=spj.jno 2) delete jname,jno From j

Where jno in (select jno From spj

Where qty= 0);

3)select sname From s

Where not exists

(select * From J

Where not exites

8

(select * From SPJ

Where sno=s.sno

And jno=j.cno));

4)

5)create view j1(jno,city) As

Select jno,city From spj,j

Where spj.sno=’s1’and Pno=’p’and Spj.jno=j.jno

3.根据如下TEACHER(教师)表,请使用SQL语言,写出以下数据操作的SQL语句。 NO 1 2 3 TCODE T101 T102 T103 TNAME 王刚 张勇 李华 TAGE 40 21 35 TDEPT 计算机系 信息管理系 土木工程系 TCOURSE 计算机基础 管理信息系统 城市建筑学 1)建立TEACHER表; 2)插入教师数据;

3)查询教师“李华”的信息;

4)将教师“张勇”的TCOURSE属性(管理信息系统)修改成“信息管理基础”。 1)create table teacher (no char(5);

Tcode char(5)not null unique; Tname char(20)unique; Tage int;

Tcourse char(20)) 2)insert Into table

Values(‘tcode’) 3)select * From teacher

Where tname=’李华’ 4)update tcourse

Set tcourse=’ “管理信息系统”’ Where tname=’ 张勇’

9

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4