您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页习题解答

习题解答

来源:意榕旅游网
数据库原理与应用教程―SQL Server

习题解答

习题1

1.数据库的发展历史分哪几个阶段?各有什么特点?

答:数据库技术经历了人工管理阶段、文件系统阶段和数据库系统三个阶段。 1)人工管理阶段

这个时期数据管理的特点是:

数据由计算或处理它的程序自行携带,数据和应用程序一一对应,应用程序依赖于数据的物理组织,因此数据的独立性差,数据不能被长期保存,数据的冗余度大等给数据的维护带来许多问题。

2)文件系统阶段

在此阶段,数据以文件的形式进行组织,并能长期保留在外存储器上,用户能对数据文件进行查询、修改、插入和删除等操作。程序与数据有了一定的独立性,程序和数据分开存储,然而依旧存在数据的冗余度大及数据的不一致性等缺点。

3)数据库系统阶段

数据库系统的特点如下:

(1)数据结构化

(2)较高的数据共享性 (3)较高的数据独立性

(4)数据由DBMS统一管理和控制

2.简述数据、数据库、数据库管理系统、数据库应用系统的概念。

答:数据是描述事物的符号记录,是信息的载体,是信息的具体表现形式。

数据库就是存放数据的仓库,是将数据按一定的数据模型组织、描述和存储,能够自动进行查询和修改的数据集合。

数据库管理系统是数据库系统的核心,是为数据库的建立、使用和维护而配置的软件。它建立在操作系统的基础上,位于用户与操作系统之间的一层数据管理软件,它为用户或应用程序提供访问数据库的方法,包括数据库的创建、查询、更新及各种数据控制等。 数据库应用系统:凡使用数据库技术管理其数据的系统都称为数据库应用系统。 3.简述数据库管理系统的功能。

答:数据库管理系统是数据库系统的核心软件,一般说来,其功能主要包括以下5个方面。

(1) 数据定义和操纵功能 (2) 数据库运行控制功能

(3) 数据库的组织、存储和管理 (4) 建立和维护数据库

1

4.简述数据库的三级模式和两级映像。

答:三级模式:外模式、模式和内模式。两级映像:外模式/模式映像,模式/内模式映像。

5.名词解释:模式、内模式、外模式。

模式是对数据库中全部数据的逻辑结构和特征的描述,是所有用户的公共数据视图。

外模式是对数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述。 内模式是对数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。 6.简述数据库的逻辑独立性和物理独立性。

答:当模式改变时(如增加新的关系、新的属性、改变属性的数据类型等),由数据库管理员对各个外模式/模式映像作相应改变,可以使外模式保持不变。应用程序是依据数据的外模式编写的,因而应用程序不必修改,保证了数据与程序的逻辑独立性,简称逻辑数据独立性。

当数据库的存储结构改变了(如选用了另一种存储结构),由数据库管理员对模式/内模式映像作相应改变,可以保证模式保持小变,因而应用程序也不必改变。保证了数据与程序的物理独立性,简称物理数据独立性。

习题2

1.什么是概念模型,什么是数据模型?

答:概念模型是现实世界的抽象反映,它表示实体类型及实体间的联系,是独立于计算机系统的模型,是现实世界到机器世界的一个中间层次。

数据模型是对客观事物及联系的数据描述,是概念模型的数据化,即数据模型提供表示和组织数据的方法。

2.什么是实体、属性、码、联系?实体的联系有哪三种?

答:客观存在并可以相互区分的事物叫实体。

属性是实体所具有的某些特性,通过属性对实体进行描述。 一个实体往往有多个属性,这些属性之间是有关系的,它们构成该实体的属性集合。如果其中有一个属性或属性集能够唯一标识整个属性集合,则称该属性或属性集为该实体的码。

现实世界的事物之间是有联系的,即各实体型之间是有联系的。就两个实体型的联系来说,主要有以下3种情况:一对一联系(1:1)、一对多联系(1 : M)和多对多联系(M : N)。

3.数据模型的三要素是什么?

数据模型通常由数据结构、数据操作和数据的完整性约束三要素组成。 4.分析层次模型、网状模型和关系模型的特点。

答:层次模型用树形结构来表示各类实体以及实体间的联系。每个结点表示一个记录类型,结点之间的连线表示记录类型间的联系,这种联系只能是父子联系。

层次模型存在如下特点:

2

(1)只有一个结点没有双亲结点,称为根结点。

(2)根结点以外的其他结点有且只有一个双亲结点。

网状数据模型是一种比层次模型更具普遍性的结构,它去掉了层次模型的两个限制,允许多个结点没有双亲结点,也允许一个结点有多个双亲结点。因此,网状模型可以方便地表示各种类型的联系。网状模型是一种较为通用的模型,从图论的观点看,它是一个不加任何条件的无向图。

用二维表格结构表示实体以及实体之间的联系的数据模型称为关系模型。关系模型在用户看来是一个二维表格。

5.解释关系模型的基本概念:关系、元组、属性、域、关系模式、候选关键字、主键、主属性、外键。

答:关系:一个关系就是一张二维表。

元组:二维表中的行称为元组,每一行是一个元组。

属性:二维表的列称为属性,每一列有一个属性名,属性值是属性的具体值。 域:是属性的取值范围。 关系模式:对关系的信息结构及语义限制的描述称为关系模式,用关系名和包含的属性名的集合表示。

候选关键字:如果在一个关系中,存在多个属性(或属性组合)都能用来唯一标识该关系中的元组,这些属性(或属性组合)都称为该关系的候选关键字或候选码,候选码可以有多个。

主键:在一个关系的若干候选关键字中,被指定作为关键字的候选关键字称为该关的主键或主码。

主属性:在一个关系中,包含在任何候选关键字中的各个属性称为主属性。

外键:一个关系的某个属性(或属性组合)不是该关系的主键或只是主键的一部分,却是另一个关系的主码,则称这样的属性为该关系的外键或外码。

6.设某工厂数据库中有四个实体集。一是“仓库”实体集,属性有仓库号、仓库面积等;二是“零件”实体集,属性有零件号、零件名、规格、单价等;三是“供应商”实体集,属性有供应商号、供应商名、地址等;四是“保管员”实体集,属性有职工号、姓名等。

设仓库与零件之间有“存放”联系,每个仓库可存放多种零件,每种零件可存放于若干仓库中,每个仓库存放每种零件要记录库存量;供应商与零件之间有“供应”联系,一个供应商可供应多种零件,每种零件也可由多个供应商提供,每个供应商每提供一种零件要记录供应量;仓库与保管员之间有“工作”联系,一个仓库可以有多名保管员,但一名保管员只能在一个仓库工作。

试为该工厂的数据库设计一个E-R模型,要求标注联系类型。 答:ER模型 规格 零件号 零件名 供应商号 单价 保管员 M 工作 1 仓库 M 存放 N 零件 M 供应 N 供应商 地址 职工号 姓名 仓库号 仓库面积 库存量 供应量 供应商名 3

7.某网上订书系统,涉及如下信息:

(1)客户:客户号、姓名、地址、联系电话。 (2)图书:书号、书名、出版社、单价。

(3)订单:订单号、日期、付款方式、总金额。

其中:一份订单可订购多种图书,每种图书可订购多本;一位客户可有多份订单,一份订单仅对应一位客户。

根据以上叙述,建立E-R模型,要求标注联系类型。 答: 日期 订单号 付款方式 书号 客户号

书名

客户 1 拥有 M 订单 M 订购 N 图书 姓名 出版社 习题3

地址 联系电话 总金额 数量 单价 1.关系数据模型由哪三个要素组成。

答:关系数据模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。 2.简述关系的性质。

答:(1) 列是同质的,即每一列中的分量是同一类型的数据,来自同一个域。 (2) 在同一个关系中,不同的列的数据可以是同一种数据类型,但各属性的名称都必须是互不相同。

(3) 在同一个关系中,任意两个元组都不能完全相同。

(4) 在同一个关系中,列的次序无关紧要。即列的排列顺序是不分先后的。

(5) 在同一个关系中,元组的位置无关紧要。即排行不分先后,可以任意交换两行的位置。

(6) 关系中的每个属性必须是单值,即不可再分,这就要求关系的结构不能嵌套。这是关系应满足的最基本的条件。 3.简述关系的完整性。

答:关系模型允许定义三类完整性约束:实体完整性、参照完整性和用户自定义的完整性约束。

实体完整性规则要求关系中元组在组成主码的属性上不能有空值。

参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码K相对应,则对于R中每个元组在F上的值必须为:或者取空值;或者等于S中某个元组的主码值。

用户定义的完整性规则由用户根据实际情况对数据库中数据的内容进行的规定,也称为域完整性规则。

4

4.传统的集合运算和专门的关系运算都有哪些。

答:(1) 传统的集合操作:并、差、交、笛卡儿积 。 (2) 专门的关系操作:投影(对关系进行垂直分割)、选择(水平分割)、连接(关系的结合)、除法(笛卡儿积的逆运算)等 。

5.解释下列术语的含义:函数依赖、平凡函数依赖、非平凡函数依赖、部分函数依赖、完全函数依赖、传递函数依赖、范式。

答:函数依赖:是指在关系R中,X、Y为R的两个属性或属性组,如果关系R存在:对于X的每一个具体值,Y都只有一个具体值与之对应,则称属性Y函数依赖于属性X。记作X→Y。

平凡函数依赖:设关系模式R(U),U是R上的属性集,X、 Y⊆U;如果X→Y,且Y⊆X,则称X→Y为平凡的函数依赖。

非平凡函数依赖:如果X→Y,且Y不是X的子集,则称X→Y为非平凡的函数依赖。

完全函数依赖和部分函数依赖:设关系模式R(U),U是R上的属性集,X、YU;如果X→Y,并且对于X的任何一个真子集Z,Z→Y都不成立,则称Y完全函数依赖于X;如果X→Y,但对于X的某一个真子集Z,有Z→Y成立,则称Y部分函数依赖于X。

传递函数依赖:设关系模式R(U),XU,YU,ZU;如果X→Y,YX,且 Y→Z成立,则称X→Z为传递函数依赖。

范式:是符合某一种级别的关系模式的集合,是衡量关系模式规范化程度的标准,达到的关系才是规范化的。

6.简述非规范化的关系中存在哪些问题。

答:①数据冗余 ②更新异常 ③插入异常 ④删除异常 7.简述关系模式规范化的目的。

答:关系模式规范化的目的是解决关系模式中存在的数据冗余、插入和删除异常以及更新异常等问题。其基本思想是消除数据依赖中的不合适部分,使各关系模式达到某种程度的分离,使一个关系描述一个概念、一个实体或实体间的一种联系。因此,规范化的实质是概念的单一化。

8.根据给定的关系模式进行查询。

设有学生-课程关系数据库,它由三个关系组成,它们的模式是:学生S(学号S#,姓名SN,所在系SD,年龄SA)、课程C(课程号C#,课程名CN,先修课号PC#)、SC(学号S#,课程号C#,成绩G)。请用关系代数分别写出下列查询: (1)检索学生年龄大于等于20岁的学生姓名。

∏SN(σSA≥20 (S))

(2)检索先修课号为C2的课程号。

∏C#(σPC#=’C2’ (C))

(3) 检索课程号C1的成绩为90分以上的所有学生姓名。

∏SN(σC#=’C1’ ∧ G>=90 (S∞SC))

5

(4) 检索001号学生修读的所有课程名及先修课号。

∏CN, PC#(σS#=’001’ (C∞SC))

(5)检索年龄为19岁的学生所选修的课程名。

∏CN(σSA=19 (C∞SC∞S))

9.设有关系模式R(运动员编号,姓名,性别,班级,班主任,项目号,项目名,成绩)如果规定:每名运动员只能代表一个班级参加比赛,每个班级只能有一个班主任;每名运动员可参加多个项目,每个比赛项目也可由多名运动员参加;每个项目只能有一个项目名;每名运动员参加一个项目只能有一个成绩。根据上述语义,回答下列问题: (1)写出关系模式R的主关键字;

(2)分析R最高属于第几范式,说明理由。 (3)若R不是3NF,将其分解为3NF。

答:(1)关系模式R的主关键字是{运动员编号,项目号}。 (2)R最高属于第一范式。

因为存在着姓名,性别,班级和项目名对主关键字{运动员编号,项目号}的部分函数依赖,没有达到2NF。

(3)首先分解为2NF:R1(运动员编号,姓名,性别,班级,班主任),R2(项目号,项目名),R3(运动员编号,项目号,成绩)

因为R1存在班主任对运动员编号的传递函数依赖,所以没有达到3NF,再分解为3NF:R1分解为R1(运动员编号,姓名,性别,班级)和R4(班级,班主任) 10.设有关系模式:R(职工号,日期,日营业额,部门名,部门经理)

如果规定:每个职工每天只有一个营业额,每个职工只在一个部门工作,每个部门只有一个经理。

(1)根据上述规定,写出模式R主关键字。 (2)分析R最高属于第几范式,说明理由。 (3)若R不是3NF,将其分解为3NF。

答:(1)关系模式R的主关键字是(职工号,日期)。 (2)R最高属于第一范式。

因为存在着部门名对主关键字(职工号,日期)的部分函数依赖,没有达到2NF。 (3)首先分解为2NF:R1(职工号,部门名,部门经理),R2(职工号,日期,日营业额)

因为R1存在部门经理对职工号的传递函数依赖,所以没有达到3NF,再分解为3NF:R1分解为R1(职工号,部门名)和R3(部门名,部门经理)

习题4

1.简述数据库设计的概念。

答:数据库设计是对于给定的应用环境,在关系数据库理论的指导下,构造最优的数据库模式,在数据库管理系统上建立数据库及其应用系统,使之能有效地存储数据,

6

满足用户的各种需求的过程。 2. 简述数据库设计过程。

答:数据库设计可分为以下六个阶段:需求分析阶段、概念结构设计阶段、逻辑结构设计阶段、数据库物理设计阶段、数据库实施阶段以及数据库运行和维护阶段。 3.简述数据库设计过程的各个阶段上的设计任务。

答:需求分析的任务是通过详细调查现实世界要处理的对象(组织、 部门、 企业等), 充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。

概念设计阶段要做的工作不是直接将需求分析得到的数据存储格式转换为DBMS能处理的数据库模式,而是将需求分析得到的用户需求抽象为反映用户观点的概念模型。

逻辑设计的主要目标是产生一个DBMS可处理的数据模型和数据库模式。该模型必须满足数据库的存取、一致性及运行等各方面的用户需求。

将逻辑设计中产生的数据库逻辑模型结合指定的DBMS,设计出最适合应用环境的物理结构的过程,称为数据库的物理结构设计。

根据逻辑和物理设计的结果,在计算机上建立起实际的数据库结构,并装入数据,进行试运行和评价的过程,叫做数据库的实施(或实现)。

维护工作包括以下内容:数据库的转储和恢复;数据库的安全性和完整性控制;数据库性能的监督、分析和改造;数据库的重组织和重构造。 4.简述需求分析的重要性。

答:需求分析是数据库设计的起点,就是要分析用户的要求,其结果是否准确地反映了用户的实际要求, 将直接影响到后面各个阶段的设计, 并影响到设计结果是否合理和实用。需求分析为数据库的开发起到了决策的作用,提供了开发的方向,并指明了开发的策略,在数据库开发及维护中均起到了举足轻重的作用。可以说在一个大型数据库系统的开发中,它的作用要远远大于其它各个阶段。 5.名词解释数据流图和数据字典。

答:数据流图表达了数据和处理过程的关系,反映的是对事务处理所需的原始数据及经处理后的数据及其流向。数据字典是数据库系统中各类数据详细描述的集合。在数据库设计中,它提供了对各类数据描述的集中管理,是一种数据分析、系统设计和管理的有力工具。

6. 简述数据库概念结构设计的重要性和设计步骤。

答:数据库概念结构设计是整个数据库设计的关键,此阶段要做的工作不是直接将需求分析得到的数据格式转换为DBMS能处理的数据模型,而是将需求分析得到的用户需求抽象为反映用户观点的概念模型。以此作为各种数据模型的共同基础,从而能更好、更准确地用某一DBMS实现这些需求。

在概念结构设计时,最常用的策略是自底向上法,一般分为两步。首先进行数据抽象,设计局部E-R模型,即设计用户视图;然后集成各局部E-R模型,形成全局E-R模型,即视图的集成。

7

7.什么是数据库的逻辑结构设计? 试述其设计步骤。

答:逻辑设计的主要目标是产生一个DBMS可处理的数据模型和数据库模式。该模型必须满足数据库的存取、一致性及运行等各方面的用户需求。

其逻辑结构设计阶段一般要分为三步进行:将E-R图转化为关系数据模型,关系模式的优化,设计用户外模式。

8.简述把E-R图转换为关系模型的转换规则。

答:一个实体转化为一个关系模式。实体的属性就是该关系模式的属性。实体的主码就是该关系模式的主码。

两实体间1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。

两实体间1:N 联系可以转换为一个独立的关系模式,也可以与N端对应的关系模式合并。

同一实体间的1:N联系可在这个实体所对应的关系模式中多设一个属性,用来作为与该实体相联系的另一个实体的主码。

两实体间M:N联系,必须为联系产生一个新的关系模式。该关系模式中至少包含被它所联系的双方实体的主码,若联系中有属性,也要并入该关系模式中。

同一实体间M:N联系,必须为联系产生一个新的关系模式。该关系模式中至少包含被它所联系的双方实体的主码,若联系有属性,也要并入该关系模式中。由于这个“联系”只涉及一个实体,所以加入的实体的主码不能相同。

两个以上实体集之间M:N的联系,必须为联系产生一个新的关系模式,该关系模式中至少包含被它所联系的所有实体的主码,若联系有属性,也要并入该关系模式中。 9.将图4-6学生信息数据库系统的E-R图转换为关系模型。

课程名 学分 学号 姓名 课程 M 选修 N 学生 N 属于 1 班级 课程号 成绩 性别 年龄 班级名 班主任 图4-6 习题9图

答:课程(课程号,课程名,学分)

学生(学号,姓名,性别,年龄,班级名) 班级(班级名,班主任) 选修(学号,课程号,成绩)

10.一个设备销售管理系统中有如下信息: 设备:设备编号、设备名称、型号规格、数量 部门:部门编号、部门名称、部门经理、电话 客户:客户编号、客户名称、地址、电话

8

其中:任何设备都可以销售给多个客户,每个客户购买一种设备都要登记购买数量;一个部门可以管理多种设备,一种设备仅由一个部门来调动管理。 根据以上情况,完成如下设计: (1)设计系统的E-R图;

(2)将E-R图转换为关系模式,标出每个关系模式的主码。 答:(1)E-R图 设备编号 部门编号 客户名称 设备名称 客户编号 电话

M 管理 1 部门 客户 M 购买 N 设备 地址 地址

电话 部门名称 型号规格 数量 购买数量

(2)关系模式

设备(设备编号,设备名称,型号规格,数量,设备编号) 部门(部门编号,部门名称,部门经理,电话) 客户(客户编号,客户名称,地址,电话)

购买情况(客户编号,设备编号,购买数量) 11. 某电子商务网站要求提供下述服务:

可随时查询库存中现有物品的名称、数量和单价,所有物品均应由物品编号唯一标识;可随时查询顾客订货情况,包括顾客号、顾客名、所订物品编号、订购数量、联系方式、交货地点,所有顾客编号不重复;当需要时,可通过数据库中保存的供应商名称、电话、邮编与地址信息向相应供应商订货,一个编号货物只由1个供应商供货。 根据以上要求,完成如下任务: (1)根据语义设计出E-R模型;

(2)将该E-R模型转换为一组等价的关系模式,并标出各关系模式的主码。

答:(1)E-R图

物品编号 邮编 顾客编号 物品名称

电话 顾客名 M 供应 1 供应商 顾客 M 订购 N 物品

地址 联系方式 交货地点 供应商名称 单价 数量 订购数量 (2)关系模式

顾客(顾客编号,顾客名,联系方式)

9

物品(物品编号,物品名称,数量,单价,供应商名称) 供应商(供应商名称,地址,电话,邮编)

订购情况(顾客编号,物品编号,订购数量,交货地点)

12.(1)根据转换规则,将第2章习题第6题中E-R模型转换成关系模型,要求标注每个关系模型的主键和外键(如果存在)。

答:关系模式:

仓库(仓库号,仓库面积)

零件(零件号,零件名,规格,单价) 供应商(供应商号,供应商名,地址) 保管员(职工号,姓名,仓库号) 库存(仓库号,零件号,库存量) 供应(供应商号,零件号,供应量)

(2)根据转换规则,将第2章习题第7题中E-R模型转换成关系模型,要求标明每个关系模式的主键和外键(如果存在)。

答:关系模式:

客户(客户号,姓名,地址,联系电话) 图书(书号,书名,出版社,单价)

订单(订单号,日期,付款方式,总金额,客户号) 订购(订单号,书号,数量)

习题5

2.SQL Server 2005主要提供了哪些服务?如何启动、暂停或停止SQL Server服务? 答:服务器管理、对象资源管理、SQL Server配置管理等。

启动、暂停或停止SQL Server服务:首先在SQL Server配置管理器的窗口左边单击“SQL Server 2005服务”,此时在窗口右边会看到已安装的所有服务,可以选中某个服务,然后单击窗口上部工具栏中的相应按钮,或右击某个服务名称,在弹出的快捷菜单中选择相应的菜单选项来启动或停止服务。 4.简述对象资源管理器的功能。

答:SQL Server Management Studio的对象资源管理器组件是一种集成工具,可以查看和管理所有服务器类型的对象。

用户可以通过该组件操作数据库,包括新建、修改、删除数据库、表、视图等数据库对象,新建查询、设置关系图、设置系统安全、数据库复制、数据备份、恢复等操作,是SQL Server Management Studio中最常用、也是最重要的一个组件,类似于SQL Server 2000中的企业管理器。

6.简述T-SQL语言的特点。

10

答:(1)综合统一,集多种功能于一体

(2)两种使用方式,统一的语法结构 (3)高度非过程化

(4)类似于人的思维习惯,容易理解和掌握 7.如何表示数据库对象名?

答:[server_name.[database_name].[schema_name] | database_name. [schema_name] | schema_name.]object_name

习题6

1.简述数据库的两种存储结构。 答:数据库的物理存储结构指的是保存数据库各种逻辑对象的物理文件是如何在磁盘上存储的,数据库在磁盘上是以文件为单位存储的,SQL Server 2005将数据库映射为一组操作系统文件。

逻辑存储结构:数据库是存储数据的容器,即数据库是一个存放数据的表和支持这些数据的存储、检索、安全性和完整性的逻辑成分所组成的集合。 2.数据库由哪几种类型的文件组成?其扩展名分别是什么?

答:(1) 主数据文件:主数据文件是数据库的起点,指向数据库中的其他文件。主数据文件的推荐文件扩展名是 .mdf。

(2) 辅助数据文件:除主数据文件以外的所有其他数据文件都是辅助数据文件。辅助数据文件的推荐文件扩展名是 .ndf。

(3) 事务日志文件:日志文件包含着用于恢复数据库的所有日志信息。日志文件的推荐文件扩展名是 .ldf。

3.简述SQL Server 2005中文件组的作用和分类。 答:为了便于管理和分配数据而将文件组织在一起,通常可以为一个磁盘驱动器创建一个文件组(File Group),将多个数据库文件集合起来形成一个整体。

SQL Server中的数据库文件组分为主文件组(Primary File Group)和用户定义文件组(user_defined Group)。

5.删除习题4创建的数据库,使用T-SQL语句再次创建该数据库,主文件和日志文件的文件名及存放位置同上,要求:仓库库存_data最大为无限大,增长速度为20%,日志文件初始大小为2MB,最大为5MB,增长速度为1MB。 答:CREATE DATABASE inventory

ON

(NAME = ' inventory_data',

FILENAME = 'F:\\DATA\\ inventory_data.MDF' , SIZE = 10MB,

FILEGROWTH = 20%) LOG ON

11

(NAME =' inventory_log',

FILENAME = 'F:\\DATA\\ inventory_log. LDF', SIZE = 2MB, MAXSIZE = 5MB,

FILEGROWTH = 1MB)

6.请分别使用SQL Server Management Studio和T-SQL语句创建数据库Student,要创建的数据库的要求如下所示:数据库名称为Student,包含3个20MB的数据库文件,2个10MB的日志文件,创建使用一个自定义文件组,主文件为第一个文件,主文件的后缀名为.mdf,次要文件的后缀名为.ndf;要明确地定义日志文件,日志文件的后缀名为.ldf;自定义文件组包含后两个数据文件,所有的文件都放在目录“E:\\DATA”中。

答:CREATE DATABASE STUDENT

ON

(NAME=STUDENT1,

FILENAME='E:\\DATA\\STUDENT1.MDF', SIZE=20,

MAXSIZE=unlimited), FILEGROUP FG1 (NAME= STUDENT2,

FILENAME='E:\\DATA\\STUDENT2.NDF', SIZE=30,

MAXSIZE= unlimited), (NAME= STUDENT3,

FILENAME='E:\\DATA\\STUDENT3.NDF', SIZE=30,

MAXSIZE= unlimited) LOG ON

(NAME=STUDENTLOG1,

FILENAME='E:\\DATA\\STUDENTLOG1.LDF', SIZE=10,

MAXSIZE= unlimited), (NAME=STUDENTLOG2,

FILENAME='E:\\DATA\\STUDENTSLOG.LDF', SIZE=10,

MAXSIZE= unlimited)

习题7

1、答:(1)USE inventory

12

GO

CREATE TABLE goods

(gno char(6) NOT NULL PRIMARY KEY, gname char(20) NOT NULL, price float NOT NULL, producer varchar(30) NOT NULL ) (2),(3),(4)略。 3、答:例如,

INSERT INTO goods VALUES('bx-179','冰箱',3200,'青岛海尔') INSERT INTO store VALUES('001','1号楼','89000001',69) INSERT INTO invent VALUES('004','bx-179',5)

INSERT INTO manager VALUES('101','张力','男','1989-2-3','001')

习题8

1.针对“teaching”库中的三个表,试用T-SQL的查询语句实现下列查询: (1)查询学生们有哪些专业,只显示专业列,过滤掉重复行。 答:SELECT DISTINCT specialty FROM student (2)统计有学生选修的课程门数。

答:SELECT COUNT(DISTINCT cno) FROM sc (3)求选修C004课程的学生的平均年龄。 答:SELECT AVG(sage) FROM student,sc

WHERE student.sno=sc.sno and cno=’C004’ (4)求学分为3的各门课程的学生平均成绩。 答:SELECT course.cno,AVG(score) FROM course,sc

WHERE course.cno=sc.cno and credit=3 GROUP BY course.cno

(5)统计每门课程的学生选修人数,超过2人的课程才统计。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。 答:SELECT cno,COUNT(*) FROM sc

GROUP BY cno

HAVING COUNT(*) >2

ORDER BY COUNT(*) DESC, cno (6)检索姓刘的学生的姓名和年龄。 答:SELECT sname,sage FROM student

WHERE sname LIKE ‘刘%’

(7)在sc表中检索成绩为空值的学生学号和课程号。

13

答:SELECT sno,cno FROM sc WHERE score IS NULL (8)查询没有学生选修的课的课程号和课程名。 答:SELECT cno, cname FROM course

WHERE cno NOT IN (SELECT cno FROM sc)

(9)求年龄大于女同学平均年龄的男学生姓名和年龄。 答:SELECT sname,sage FROM student WHERE ssex='男'

and sage >(SELECT AVG(sage) FROM student WHERE ssex='女') (10)求年龄大于所有女同学年龄的男学生姓名和年龄。 答:SELECT sname,sage FROM student WHERE ssex='男'

and sage > all (SELECT sage FROM student WHERE ssex='女') (11)查询所有与刘宏伟同年级、同专业,但比沈艳年龄大的学生的姓名、年龄和性别。 答:SELECT sname,sage,ssex FROM student WHERE sage >

(SELECT sage FROM student WHERE sname='沈艳')

AND grade=(SELECT grade FROM student WHERE sname='刘宏伟') AND specialty=(SELECT specialty FROM student WHERE sname='刘宏伟') (12)查询选修课程C001的学生中成绩最高的学生的学号。 答:SELECT sno FROM sc WHERE cno='C001'

AND score=(SELECT MAX(score) FROM sc WHERE cno='C001') (13)查询学生姓名及其所选修课程的课程号和成绩。 答:SELECT sname, cno, score FROM student,sc WHERE student.sno=sc.sno

(14)查询选修2门以上课程的学生平均成绩(不及格的课程不参与统计),并要求按平均成绩的降序排列出来。

答:SELECT sno,AVG(score) FROM sc WHERE score>=60

GROUP BY sno HAVING COUNT(*)>=2 ORDER BY AVG(score) DESC

(15)查询每个学生的平均成绩,只取前五名。 答:SELECT TOP 5 sno,AVG(score) FROM sc

GROUP BY sno

ORDER BY AVG(score) DESC (16)查询每个学生的总学分。

答:SELECT sno,SUM(credit) FROM sc,course

WHERE sc.cno=course.cno GROUP BY sno

(17)查询每门课成绩最低的学生的学号和课程号。

SELECT sno,cno FROM sc a WHERE score=

(SELECT MIN(score) FROM sc WHERE cno=a.cno )

14

2. 针对“仓库库存”数据库中的三个表,试用T-SQL的查询语句实现下列查询: (1)查询青岛海尔生产的商品信息。

答:SELECT * FROM goods WHERE producer= '青岛海尔' (2)查询001号仓库储存的商品的编号和数量。

答:SELECT gno,number FROM invent WHERE stno= '001' (3)查询所有商品的种类名称。

答:SELECT DISTINCT gname FROM goods

(4)查询商品的单价在2000到3000之间的商品信息。

答:SELECT * FROM goods WHERE price BETWEEN 2000 AND 3000 (5)查询“商品表”中所有商品的信息,其中单价打八折显示。 答:SELECT gno,gname,price*0.8 单价八折,producer FROM goods (6)查询青岛海尔和青岛海信生产的商品的信息。

答:SELECT * FROM goods WHERE producer='青岛海尔' OR producer='青岛海信' (7)查询李明管理的仓库存储的商品信息。 答:SELECT * FROM goods WHERE gno IN

(SELECT gno FROM invent WHERE stno IN

(SELECT stno FROM manager WHERE mname='李明'))

(8)查询2号楼101仓库的管理员的姓名和年龄。

答:SELECT mname,YEAR(GETDATE())-YEAR(birthday) age FROM manager

WHERE stno=(SELECT stno FROM store WHERE address='2号楼101') (9)查询不是青岛生产的商品的信息。

答:SELECT * FROM goods WHERE producer NOT LIKE '青岛%' (10)查询库存总量最少的仓库的编号。 答:SELECT TOP 1 stno FROM invent GROUP BY stno

ORDER BY SUM(number) ASC

(11)查询各生产厂家的商品库存总量,并存入”库存总量”表。 答:SELECT producer,SUM(number) AS 库存总量 INTO 库存总量

FROM goods,invent

WHERE goods.gno=invent.gno GROUP BY producer

(12)将张力管理的仓库的电话改为89000008。

答:UPDATE store SET telephone='89000008' WHERE stno=

(SELECT stno FROM manager WHERE mname='张力') (13)删除四川长虹的产品的库存信息。 答:DELETE invent WHERE gno IN

(SELECT gno FROM goods WHERE producer='四川长虹')

15

习题9

1.什么是标识符?

答:标识符是用来标识事物的符号,其作用类似于给事物起的名称。 2. T-SQL中有几种标识符?它们的区别是什么?

标识符分为两类:常规标识符和分隔标识符。符合所有标识符格式规则的标识符为常规标识符,可以使用分隔符,也可以不使用分隔符。不符合标识符格式规则的标识符必须使用分隔符。

3.什么是局部变量?什么是全局变量?如何表示它们?

答:全局变量由系统提供且预先声明,通过在名称前加两个“@”符号区别于局部变量。用户只能使用全局变量,不能对它们进行修改。全局变量的作用范围是整个SQL Server系统,任何程序都可以随时调用它们。

T-SQL语言中的变量是可以保存单个特定类型的数据值的对象,也称为局部变量,只在定义它们的批处理或过程中可见。在名称前加一个“@”符号为局部变量。 4.以下变量名中,哪些是合法的变量名,哪些是不合法的变量名?

A1,1a,@x,@@y,&变量1,@姓名,姓名,#m,##n,@@@abc##,@my_name 答:合法的变量名:@x,@@y,@姓名,@my_name

不合法的变量名:A1,1a,&变量1,姓名,#m,##n,@@@abc## 5.SQL Server 2005所使用的运算符类别有哪些?

答:SQL Server 2005系统中,可以使用的运算符可以分为算术运算符、逻辑运算符、赋值运算符、字符串串联运算符、按位运算符、一元运算符及比较运算符等。 6.利用T-SQL语句计算下列表达式,并给出运算结果。 (1)9-3*5/2+6%4 (2)5&2|4 (3)'你们'+'好' (4)~10 答:(1)4 (2)4 (3)你们好 (4)-11 7.给出以下T-SQL语句的运行结果。

DECLARE @d SMALLDATETIME SET @d='2015-1-26' SELECT @d+10,@d-10 答:2015-02-05,2015-01-16

8.什么是批处理?使用批处理有何限制?批处理的结束符是什么?

答:批处理是包含一个或多个T-SQL语句的集合,从应用程序一次性地发送到SQL Server 2005进行执行,因此可以节省系统开销。SQL Server 将批处理的语句编译为一个可执行单元,称为执行计划,批处理的结束符为“GO”。 9.注释有几类,它们分别是什么? 答:在T-SQL中可使用两类注释符:

(1) ANSI标准的注释符“--”用于单行注释;

(2) 与C语言相同的程序注释符号,即“/*……*/”,“/*”用于程序注释开头,“*/”用

16

语程序注释结尾,可以在程序中多行文字标示为注释。

10.针对“teaching”库,利用流程控制语句,查询学号为1302001的学生的各科成绩,如果没有这个学生的成绩,就显示“此学生无成绩”。

答:IF EXISTS ( SELECT * FROM sc WHERE sno='1302001')

SELECT cno,score FROM sc WHERE sno='1302001' ELSE

PRINT '此学生无成绩'

11.针对“teaching”库,用函数实现:求某个学院选修了某门课的学生人数。 答:CREATE FUNCTION renshu(@p char(10),@cn char(4)) RETURNS float

AS BEGIN

DECLARE @cout float

SELECT @cout=( SELECT count(*) FROM student,sc WHERE student.sno=sc.sno and cno=@cn and specialty=@p) RETURN @cout END

12.针对“teaching”库,用函数实现:查询某个学院所有学生所选的每门课的平均成绩。 答:CREATE FUNCTION average (@p char(10)) RETURNS table

AS RETURN

( SELECT cno, avg(score) aver FROM student,sc

WHERE student.sno=sc.sno and specialty=@p

GROUP BY cno

)

13.针对“inventory”库中的“goods”表,查询商品的价格等级,商品号、商品名和价格等级(单价1000元以内为“低价商品”,1000~3000元为“中等价位商品”,3000元以上为“高价商品”)。

答:SELECT gno, gname,

CASE

WHEN price<1000 then '低价商品' WHEN price<3000 then '中等价位商品' WHEN price>=3000 then '高价商品' END AS 价格等级 FROM goods

14.简述游标的概念及类型。

答:游标是处理数据的一种方法,它允许应用程序对查询语句SELECT 返回的结果集中每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作。为了查看或者处理结果集中的数据,游标提供了在结果集中一次以行或者多行前进或向后浏览数

17

据的能力,我们可以把游标当作一个指针,它可以指定结果中的任何位置,然后允许用户对指定位置的数据进行处理。

SQL Server 支持三种类型的游标:T-SQL 游标,API 服务器游标和客户游标。 由于API 游标和T-SQL 游标使用在服务器端,所以被称为服务器游标,也被称为后台游标,而客户端游标被称为前台游标。服务器游标包含以下四种:静态游标、动态游标、只进游标、键集驱动游标。

习题10

1.引入视图的主要目的是什么?

答:数据库的基本表是按照数据库设计人员的观点设计的,并不一定符合用户的需求。SQL Server 2005可以根据用户需求重新定义表的数据结构,这种数据结构就是视图。视图是关系数据库系统提供给用户以多种角度观察数据库中数据的重要机制,其结构和数据是建立在对表的查询基础上的。

2.当删除视图时所对应的数据表会删除吗? 答:不会。

3.简述视图的优点。

答:(1) 为用户集中数据,简化用户的数据查询和处理。

(2)保证数据的逻辑独立性。

(3) 重新定制数据,使得数据便于共享;合并分割数据,有利于数据输出到应用程序中。

(4) 数据保密。

4.可更新视图必须满足哪些条件?

答:(1)任何通过视图的数据修改(包括UPDATE、INSERT和DELETE语句)都只能引用一个基本表的列。

①如果视图数据为一个表的行、列子集,则此视图可更新(包括UPDATE、INSERT和DELETE语句);但如果视图中没有包含表中某个不允许取空值又没有默认值约束的列,则不能利用视图插入数据。

②如果视图所依赖的基本表有多个时,完全不能向该视图添加(INSERT)数据。 ③若视图依赖于多个基本表,那么一次修改只能修改(UPDATE)一个基本表中的数据。

④若视图依赖于多个基本表,那么不能通过视图删除(DELETE)数据。 (2)视图中被修改的列必须直接引用表列中的基础数据。 不能是通过任何其他方式对这些列进行派生而来的数据,比如通过聚合函数、计算(如表达式计算)、集合运算等。

(3)被修改的列不应是在创建视图时受GROUP BY、HAVING、DISTINCT或TOP子句影响的。

5.创建索引的必要性和作用是什么?

18

答:数据库的索引就类似于书籍的目录,如果想快速查找而不是逐页查找指定的内容,可以通过目录中章节的页号找到其对应的内容。类似地,索引通过记录表中的关键值指向表中的记录,这样数据库引擎就不用扫描整个表而定位到相关的记录。相反,如果没有索引,则会导致SQL Server搜索表中的所有记录,以获取匹配结果。 6.索引的优点包括:

(1)大大加快数据的检索速度,这是创建索引的最主要的原因。 (2)创建唯一性索引,保证表中每一行数据的唯一性。 (3)加速表和表之间的连接。

(4)在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。

(5)查询优化器可以提高系统的性能,但它是依靠索引起作用的。 7.聚集索引和非聚集索引有何异同?

答:聚集索引会对表和视图进行物理排序,所以这种索引对查询非常有效,在表和视图中只能有一个聚集索引。非聚集索引不会对表和视图进行物理排序。如果表中不存在聚集索引,则表是未排序的。

9.利用T-SQL语句创建一个查询每个学生的平均成绩的视图,要求包含学生的学号和姓名。

答:CREATE VIEW 学生_平均成绩

AS

SELECT student.sno,sname,avg(score) AS 平均成绩 FROM student,sc

WHERE student.sno=sc.sno GROUP BY student.sno,sname

10. 利用T-SQL语句创建一个每个年级、每个专业各科平均成绩的视图。 答:CREATE VIEW 平均成绩

AS

SELECT grade,specialty,cno,avg(score) AS 平均成绩 FROM student,sc

WHERE student.sno=sc.sno GROUP BY grade,specialty,cno

12.利用T-SQL语句按照商品表的单价列降序创建一个普通索引。 答:CREATE INDEX index_price ON goods(price DESC)

习题11

1.简述存储过程和触发器的优点。

答:存储过程的优势主要表现在:

19

(1)模块化程序设计。

(2)加快T-SQL语句的执行速度。 (3)减少网络流量。

(4)可作为安全机制使用。

使用触发器主要可以实现以下操作:

(1) 强制比CHECK约束更复杂的数据的完整性 (2) 使用自定义的错误提示信息 (3) 实现数据库中多张表的级联修改 (4) 比较数据库修改前后数据的状态

(5) 调用存储过程 (6) 维护非规范化数据

2.简述存储过程和触发器的分类。

答:存储过程分为系统存储过程、本地存储过程、临时存储过程、远程存储过程和扩展存储过程。

触发器:DML触发器是当数据库服务器中发生数据操作语言(DML)事件时会自动执行的存储过程。DDL触发器是在响应数据定义语言(DDL)语句时触发,一般用于数据库中执行管理任务。

3.创建存储过程,从course表中返回指定的课程的信息。该存储过程对传递的参数进行模式匹配,如果没有提供参数,则返回所有课程的信息。 答:CREATE PROCEDURE Pcourse @name varchar(20) = '%'

AS

SELECT * FROM course WHERE cname LIKE @name

4.创建存储过程,计算指定学生(姓名)的总成绩,存储过程中使用一个输入参数(sname)和一个输出参数(总成绩)。

答:CREATE PROCEDURE Stname @S_n varchar(20), @sum1 int OUTPUT

AS

SELECT @sum1= sum(score) FROM sc,student WHERE sname=@S_n and student.sno=sc.sno

5.在“inventory”数据库创建存储过程,某商品(如编号为ds-018的商品)进了一批货,则如果某仓库目前根本没有任何商品的库存,就存入此仓库;否则,修改库存总量最少的那个仓库的库存,如果那个仓库目前没有这种商品,就直接向库存情况表添加一行,否则修改该商品的库存数量的值为原值加上进货量(用形参变量表示进货量)。 答:CREATE PROCEDURE Updateinvent @gno char(6), @number int AS

DECLARE @stno char(3)

IF exists (SELECT * FROM store WHERE stno NOT IN

(SELECT stno FROM invent))

20

BEGIN

SELECT TOP 1 @stno=stno FROM store WHERE stno NOT IN (SELECT stno

FROM invent)

INSERT invent VALUES(@stno, @gno, @number) END ELSE BEGIN

SELECT TOP 1 @stno=stno FROM invent GROUP BY stno

ORDER BY SUM(number)

IF exists (SELECT * FROM invent WHERE stno=@stno and gno=@gno)

UPDATE invent SET number=number+@number WHERE stno=@stno and gno=@gno ELSE

INSERT invent VALUES(@stno, @gno, @number) END

6.为dept表创建一个实现级联删除的触发器,当执行删除时,激活该触发器同时删除project表中相应记录(leader列) 。 答:CREATE TRIGGER d_tr ON dept

FOR delete AS

delete from project where leader=(SELECT leader FROM deleted)

7.在“teaching”库中建一个”学生党费”表,属性(学号,姓名,党费),学号是主键,也是外键(参考student表的学号);创建一个触发器,保证只能在每年的6月和12月交党费,如果在其它时间录入则显示提示信息。 答:CREATE TABLE 学生党费表

( 学号 CHAR(7) primary key foreign key references student(sno), 姓名 CHAR(8), 党费 INT

)

CREATE TRIGGER trg_学生党费表 on 学生党费表 for insert AS

if not(datepart(mm,getdate())='06' or datepart(mm,getdate())='12') BEGIN

print'对不起,只能在每年的6月和12月交党费' rollback END

21

8.在仓库库存情况表上创建一个触发器,用于实现复杂的约束:在对库存进行插入和修改时,按仓库的容量进行约束。例如,在修改001号仓库的库存数量时,触发了触发器。

答:CREATE TRIGGER invent_tr1 ON invent

FOR insert,update AS

declare @num int,@num1 int,@num2 int,@num3 int declare @stno char(3),@cap int

set @num1=(select number from deleted) set @num2=(select number from inserted) set @stno=(select stno from inserted)

set @num=(select sum(number) from invent where stno=@stno ) set @num3=@num-@num2+@num1 set @stno=(select stno from inserted)

set @cap=( select capacity from store where stno=@stno) if @num>@cap BEGIN

print @stno+'号仓库容量不足,已有库存'+str(@num3)+',其容量为'+str(@cap) rollback END

习题12

1.什么是事务?如果要提交或取消一个事务,使用什么语句?

答:事务处理是数据库的主要工作,事务由一系列的数据操作组成,是数据库应用程序的基本逻辑单元,用来保证数据的一致性。

提交或取消一个事务:COMMIT TRANSACTION或ROLLBACK TRANSACTION语句。

2.事务分为哪几类?

答:根据系统的设置,SQL Server 2005将事务分为两种类型:系统提供的事务和用户定义的事务。

根据运行模式的不同,SQL Server 2005将事务分为4种类型:显示事务、隐式事务、自动提交事务和批处理级事务。 3.简述事务回滚机制。

答:(1)如果不指定回滚的事务名称或保存点,则ROLLBACK TRANSACTION命令会将事务回滚到事务的起点。

(2)在嵌套事务时,该语句将所有内层事务回滚到最远的BEGIN TRANSACTION语句,transaction_name也只能是来自最远的BEGIN TRANSACTION语句的名称。

22

(3)在执行COMMIT TRANSACTION语句后不能回滚事务。

(4)如果在触发器中发出ROLLBACK TRANSACITON命令,将回滚对当前事务中所做的所有数据修改,包括触发器所做的修改。

(5)事务在执行过程中出现任何错误,SQL Server都将自动回滚事务。 4.简述锁机制,锁分为哪几类。

答:锁是防止其他事务访问指定的资源、实现并发控制的一种手段,是多个用户能够同时操纵同一个数据库中的数据而不发生数据不一致现象的重要保障。

锁分为(1) 共享锁(Shared Lock)(2) 排它锁(Exclusive Lock)(3) 更新锁(Update Lock)(4) 意向锁(Intent Lock)(5) 模式锁(Schema Lock)(6) 大容量更新锁(Bulk Update Lock)

5.分析各类锁之间的兼容性。

在一个事务已经对某个对象锁定的情况下,另一个事务请求对同一个对象的锁定,此时就会出现锁定兼容性问题。当两种锁定方式兼容时,可以同意对该对象的第二个锁定请求。如果请求的锁定方式与已挂起的锁定方式不兼容,那么就不能同意第二个锁定请求。相反,请求要等到第一个事务释放其锁定,并且释放所有其他现有的不兼容锁定为止。详细内容见书表12-1 。

6.简述死锁及其解决办法。

答:产生死锁的情况一般包括以下两种: 第一种情况,当两个事务分别锁定了两个单独的对象,这时每一个事务都要求在另外一个事务锁定的对象上获得一个锁,因此每一个事务都必须等待另外一个事务释放占有的锁,这时,就发生了死锁。这种死锁是最典型的死锁形式。

第二种情况,当在一个数据库中时,有若干个长时间运行的事务执行并行的操作,当查询分析器处理一种非常复杂的查询例如连接查询时,那么由于不能控制处理的顺序,有可能发生死锁现象。

在数据库中解决死锁常用的方法有:

(1)要求每个事务一次就将要使用的数据全部加锁,否则就不能继续执行。 (2)允许死锁发生,系统来用某些方式诊断当前系统中是否有死锁发生。 7.创建一个事务,将所有女生的考试成绩都加5分,并提交。 答:

BEGIN TRANSACTION USE teaching

UPDATE sc SET score=score+5

WHERE sno in (SELECT sno FROM student WHERE ssex=’女’) UPDATE sc SET score=score-5

WHERE sno in (SELECT sno FROM student WHERE ssex=’男’) COMMIT TRANSACTION

8.创建一个事务,向商品表中添加一条记录,设置保存点;再将商品编号为“ds-001”的单价改为“2000”。

23

答:

BEGIN TRANSACTION USE inventory

INSERT INTO goods(gno,gname,price,producer) VALUES('bx-159',' 冰箱', 2500,'安徽美菱') SAVE TRAN savepoint

UPDATE goods SET price=2000 WHERE gno= ' ds-001' COMMIT

习题13

1.简答题

(2)SQL Server两种身份验证的优点分别是什么? 答:Windows验证模式有以下主要优点:

数据库管理员的工作可以集中在管理数据库上,而不是管理用户账户。对用户账户的管理可以交给Windows去完成。Windows有着更强的用户账户管理工具。可以设置账户锁定、密码期限等。 Windows的组策略支持多个用户同时被授权访问SQL Server。SQL Server是从RPC协议连接中自动登录Windows用户账户信息的。 混合验证模式具有如下优点:

创建了Windows之上的另外一个安全层次。支持更大范围的用户,例如非Windows客户、Novell网络等。一个应用程序可利用单个的SQL Server登录或口令。 (3)简述角色的概念及其分类。

答:角色是一种SQL Server安全账户,是SQL Server内部的管理单元,是管理权限时可以视为单个单元的其他安全账户的集合。

角色被分成3类:固定服务器角色、固定数据库角色和用户自定义的数据库角色。 (4)简述什么是固定服务器角色?什么是固定数据库角色。

答:固定服务器角色是在服务器级别定义的,所以存在于数据库外面,是属于数据库服务器的。在SQL Server安装时就创建了在服务器级别上应用的大量预定义的角色,每个角色对应着相应的管理权限。

在SQL Server 2005安装时,数据库级别上也有一些预定义的角色,在创建每个数据库时都会添加这些角色到新创建的数据库中,每个角色对应着相应的权限。 (6)简述进行权限设置时,授予、拒绝或撤销三者的关系。

答:授予:用户被授予特定数据库对象的某种操作权限,该用户就可以对数据在此权限范围内进行操作;撤销:用户不再具有特定数据库对象的某种操作权限,但用户可以通过其组或角色成员身份继承此种权限;拒绝:禁止用户对特定数据库对象的某种操作权限,防止用户通过其组或角色成员身份继承此种权限。

2.操作题

(2)GRANT SELECT ON goods TO user2

24

GRANT UPDATE(number) ON invent TO user2 user2登录后执行:

SELECT * FROM goods 成功 SELECT * FROM invent 失败

UPDATE invent SET number=number+2 WHERE gno=’DS-018’ 成功 UPDATE goods SET price=price-10 WHERE gno=’DS-018’ 失败 分析:user2只能在他的权限范围内操作。

习题14

1.简述数据库备份和还原的基本概念。

答:数据库备份就是在某种介质上(磁盘、磁带等)创建完整数据库(或者其中一部分)的副本,并将所有的数据项都复制到备份集,以便在数据库遭到破坏时能够恢复数据库。 还原数据库是一个装载数据库的备份,然后应用事务日志重建的过程。 2.数据库备份有哪几种类型?

答:在SQL Server系统中,有4种备份类型,分别如下所示:

①完整数据库备份。 ②差异数据库备份。 ③事务日志备份。

④数据库文件或文件组备份。 3.简述数据库的恢复模式。

答:SQL Server 2005系统提供了3种数据库的恢复模式:

①完整恢复模式。 ②简单恢复模式。

③大容量日志恢复模式。

5.使用T-SQL语句分别实现数据库“inventory”的备份和还原操作。 答:完整备份:

BACKUP DATABASE

TO DISK = 'F:\\BACKUP\\inventory.Bak' WITH FORMAT,

NAME = 'inventory的完整备份' 差异备份:

BACKUP DATABASE inventory

TO DISK = 'F:\\BACKUP\\inventory差异备份.Bak' WITH DIFFERENTIAL 完整数据库备份的还原:

RESTORE DATABASE inventory

FROM DISK = 'F\\BACKUP\\inventory.Bak'

25

WITH REPLACE, NORECOVERY 差异数据库备份的还原:

RESTORE DATABASE inventory

FROM DISK = 'F:\\BACKUP\\inventory差异备份.Bak' WITH RECOVERY

6.了解数据库的分离和附加的作用及操作方法。

答:SQL Server 2005允许分离数据库的数据和事务日志文件,然后将其重新附加到同一台或另一台服务器上。分离数据库将从 SQL Server 删除数据库,但是保证在组成该数据库的数据和事务日志文件中的数据库完好无损。然后这些数据和事务日志文件可以用来将数据库附加到任何 SQL Server 实例上,这使数据库的使用状态与它分离时的状态完全相同。

习题15

1.简述C#语言的特点。

答:(1)语法简洁 (2)完全面向对象 (3)与Web紧密结合 (4)目标软件的安全性 (5)版本管理技术 (6)灵活性与兼容性

2.简述ADO.NET对象模型的五个主要的组件。

答:ADO.NET对象模型有五个主要的组件,分别是Connection对象、Command对象、DataReader对象、DataSet对象以及DataAdapter对象。

Connection对象表示与数据源之间的连接,用它来建立或断开与数据库的连接。

Command对象主要可以用来对数据库发出一些指令,例如可以对数据库下达查询、插入、修改、删除等数据指令,以及呼叫存在数据库中的预存程序等。 DataReader用于以最快的速度检索并检查查询所返回的行。

DataSet对象可视为暂存区。可以把数据库中查到的信息保存起来,甚至可以显示整个数据库。

DataAdapter对象充当数据库和ADO.NET对象模型中非连接对象之间的桥梁。 3.简述ADO.NET访问数据库的两种方法。

答:利用Connection、Command和DataReader对象访问数据库,只能从数据库读取数据,不能添加、修改和删除记录。如果只想进行查询,这种方式效率更高一些。

利用Connection、Command、DataAdapter和DataSet对象,这种方式比较灵活,不仅可以对数据库进行查询操作,还可以进行增加、删除和修改等操作。

26

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务