1.3 习题
1. 数据库的发展历史分为哪几个阶段?各有什么特点?
答:从数据管理的角度看,数据库技术到目前共经历了人工管理阶段、文件系统阶段和数据库系统阶段。
人工管理阶段数据管理特点:数据不保存,没有对数据进行管理的软件系统,没有文件的概念,数据不具有独立性。
文件系统阶段数据管理特点:数据可以长期保存,由文件系统管理数据,文件的形式已经多样化,数据具有一定的独立性。
数据库系统阶段数据管理特点:采用复杂的结构化的数据模型,较高的数据独立性,最低的冗余度,数据控制功能。
2. 简述数据、数据库、数据库管理系统、数据库系统的概念。
答:数据是指描述事物的符号记录。人们通过数据来认识世界,交流信息。
数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务;数据的存储独立于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。
数据库管理系统(DataBase Management System,简称DBMS)是专门用于管理数据库的计算机系统软件。数据库管理系统能够为数据库提供数据的定义、建立、维护、查询和统计等操作功能,并完成对数据完整性、安全性进行控制的功能,它位于用户和操作系统之间,是一层数据管理软件。
数据库系统(DataBase System,简称DBS)是指在计算机系统中引入了数据库后的系统,由计算机硬件、数据库、数据库管理系统、应用程序和用户构成,即由计算机硬件、软件和使用人员构成。
3. 使用数据库系统有什么好处?
答:简化管理,提高效率,提供安全。
4. 试述数据库系统的三级模式结构和二级映象的特点。
答:从数据库管理系统的角度看,数据库系统通常采用三级模式结构:外模式、模式和内模式。数据库系统的三级模式是对数据的三个抽象级别,它把数据的具体组织留给DBMS管理,使用户能逻辑地、抽象地处理数据。
为了实现这三个层次上的联系和转换,数据库系统在这三级模式中提供了两层映象:外模式/模式的映象和模式/内模式的映象。
5. 什么是数据与程序的逻辑独立性?什么是数据与程序的物理独立性?
答:对于每一个外模式,数据库都有一个外模式/模式的映象,它定义并保证了外模式与数据模式之间的对应关系。当模式改变时,外模式/模式的映象要作相应的改变以保证外模式保持不变。应用程序是根据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,即数据的逻辑独立性。
数据库的内模式依赖于它的全局逻辑结构,即模式。它定义并保证了数据的逻辑模式与内模式之间的对应关系。当数据库的存储结构改变了,模式/内模式的映象也必须作相应的修
1
改,使得模式保持不变,保证了数据与程序的物理独立性,即数据的物理独立性。
6. 举例说明,在实际工作生活中,有哪些单位部门使用数据库?这些数据库所起的作用如何?
答:电信、图书馆、银行等部门。
2.4 习题
1. 信息有哪三种世界?分别都有什么特点?它们之间有什么联系? 答:信息的三种分为现实世界,信息世界,计算机世界。
信息的现实世界是指人们要管理的客观存在的各种事物、事务之间的相互联系及事物的发生、变化过程。它客观存在而不依赖于人们的思想。
信息世界是现实世界在人们头脑中的反映,人们用思维,以现实世界为基础作进一步的抽象,对事物进行选择、命名、分类等抽象工作之后,并用文字符号表示出来,就形成了信息世界。
计算机世界是将信息世界中的信息经过人们的抽象和组织,按照特定的数据结构,即数据模型,将数据存储在计算机中。
信息的三种世界之间是可以进行转换的。人们常常首先将现实世界中客观存在的事物或对象抽象为某一种信息结构,这种结构并不依赖于计算机系统,是人们认识的概念模型。然后再将概念模型转换为计算机上某一具体的DBMS支持的数据模型。
2. 什么是概念模型?
答:概念模型是用于信息世界的建模,是对现实世界的抽象和概括。它应真实、充分地反映现实世界中事物和事物之间的联系,有丰富的语义表达能力,能表达用户的各种需求,包括描述现实世界中各种对象及其复杂联系、用户对数据对象的处理要求和手段。是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言。
3. 解释概念模型中常用的概念:实体,属性,码,域,实体型,实体集,联系。 答:客观存在并且可以互相区别的事物称为实体。 实体所具有的某一特征称为属性。
能在一个实体集中惟一标识一个实体的属性称为码。 某个(些)属性的取值范围称为该属性的域。
用实体名及其属性名集合来抽象和刻画的同类实体,称为实体型。 同类型的实体集合称为实体集。
联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。 4. 实体的联系有哪3种?
答:实体之间的联系根据所表现的形式的不同,分为三种:一对一联系,一对多联系,多对多联系。
5. 试给出一个E-R图用来描述一个实际部门。要求该部门至少有三个实体,每个实体之间还有联系。
答:设大学里教学数据库中有三个实体集。一是“课程”实体集,属性有课程号、课程2
名称;二是“教师”实体集,属性有教师工号、姓名、职称;三是“学生”实体集,属性有学号、姓名、性别、年龄。
设教师与课程之间有“主讲”联系,每位教师可主讲若干门课程,但每门课程只有一位主讲教师,教师主讲课程将选用某本教材;教师与学生之间有“指导”联系,每位教师可指导若干学生,但每个学生只有一位指导教师;学生与课程之间有“选课”联系,每个学生可选修若干课程,每门课程可由若干学生选修,学生选修课程有个成绩。
(1)试画出ER图,并在图上注明属性、联系类型、实体标识符; (2)将ER图转换成关系模型,并说明主键和外键。 解:(1)ER图如图所示。
工号 姓名 职称 教师 1 1 指导 主讲 M M 课程 M选课 成绩 学号 课程名称 课程号 N N 学生 NN姓名 性别 年龄 (2)转换成的关系模型应具有4个关系模式: 教师(工号,姓名,职称)
学生(学号,姓名,性别,年龄,教师工号) 课程(课程号,课程名称,教师工号) 选课(学号,课程号,成绩)
6. 数据模型通常由哪三部分组成?
答:数据模型通常由数据结构、数据操作和完整性约束三部分组成。
7. 在实际的数据库系统中,用到哪些数据模型?比较关系数据模型与非关系数据模型的优缺点。
答:实际的数据库系统中最常见的数据组织方法有四种:层次模型、网状模型、关系模型、面向对象模型。
关系模型的优点:使用表的概念来表示实体之间的联系,简单直观;关系型数据库都使用结构化查询语句,存取路径对用户是透明的,从而提供了数据的独立性,简化了程序员的工作;关系模型是建立在严格的数学概念的基础上的,具有坚实的理论基础。
3
关系模型的缺点:关系模型的联结等查询操作开销较大,需要较高性能计算机的支持,所以必须提供查询优化功能。
8. 试举出三个分别是属于层次、网状和关系模型的实例。 答:操作系统的文件系统属于层次模型。 计算机网络属于网状模型。 路由器的路由表属于关系模型。
9. 解释关系模型中常用的概念:关系,元组,属性,主码,域,分量,关系模式。 答:一个关系对应通常所说的一张二维表。 表中的一行称为一个元组。 表中的一列称为一个属性。
表中的某个属性或属性组,它们的值可以惟一地确定一个元组,且属性组中不含多余的属性,这样的属性或属性组称为关系的主码。
属性的取值范围称为域。
元组中的一个属性值称为分量。
关系的型称为关系模式,关系模式是对关系的描述。 10. 关系模型中实体之间的联系分为哪3类?
答:联系可以分为三种:一对一的联系,一对多的联系,多对多的联系。
11. 解释在面向对象模型中的对象、封装和类的概念,并一个实例说明面向对象模型。 答:现实世界的任一实体都被称为模型化的一个对象,每一个对象有一个惟一的标识,称为对象标识。
每一个对象都将其状态、行为封装起来,其中状态就是该对象的属性值的集合,行为就是该对象的方法的集合。
有相同属性和方法的对象的集合称为类。
3.6 习题
1. 常见的关系数据语言可以分为哪三类?
答:关系数据语言可以分为三类:关系代数、关系演算、介于关系代数和关系演算之间的SQL语言。
2. 简述概念:关系,域,笛卡儿积,属性,候选键,主键。
答:关系模型的数据结构简单清晰,关系单一。在关系模型中,现实世界的实体以及实体间的各种联系都可以使用关系来表示。从用户角度来看,关系模型中数据的逻辑结构就是一张二维表,由行列组成。在二维表中,存放数据库数据。
域是一组具有相同数据类型的值的集合。
设D1,D2,„,Dn为任意域,定义D1,D2,„,Dn的笛卡尔积(Cartesian Product)为:
D1D2Dn{(d1,d2,,dn)|diDi,i1,2,,n}
表中的每一行对应一个元组,表中的每一列对应一个域。为了区分每一列,必须给它起一个名字,称为属性。如果关系中的某一属性组的值能惟一地标识一个元组,则称该属性组4
为候选键。若一个关系有多个候选键,则选定其中一个作为主码或主键。
3. 关系具有哪些基本属性? 答:关系具有以下性质:
1) 列是同质的,即每一列中的分量是同一类型的数据,来自同一个域。 2) 不同的列可以出自同一个域,每一列称为一个属性。在同一关系中,属性名不能相同。 3) 列的顺序无关紧要,即列的顺序可以任意转换。 4) 任意两个元组(行或记录)不能完全相同
5) 行的顺序也无关紧要,即行的顺序也可以任意转换。
6) 行列的交集称为分量,每个分量的取值必须是原子值,即分量不能再分。 4. 在关系模型中,常见的关系操作有哪些?
答:关系模型中常用的关系操作包括:选择(Select)、投影(Project)、连接(Join)、除(Divide)、并(Union)、交(Intersection)、差(Difference)等查询(Query)操作和增加(Insert)、删除(Delete)、修改(Update)操作。
5. 简述关系模型的三类完整性约束。
答:关系模型提供了三类完整性约束:实体完整性、参照完整性和用户定义的完整性。 实体完整性:若属性(或属性组)A是基本关系R的主属性,则属性A不能取空值。 参照完整性:若属性(或属性组)A不是基本关系R的主码,它与基本关系S的主码B相对应(基本关系R和关系S不一定是不同的关系),称A是关系S的外(部)码(Foreign Key)。则对于R中的每个元组在A上的值必须为:或者取空值,或者等于S的主码B的某个元组的主码值。
用户定义的完整性:用户针对某一具体数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。
6. 试述关系代数中并、差、交、选择、投影、连接、除法的定义。 答:书上有(大概在P30~34)。
7. 现有一个工程公司数据库,包括职工、部门、工程、客户四个关系模式: 职工(职工编号,姓名,性别,出生日期,部门编号) 部门(部门编号,部门名称)
工程(工程编号,工程名称,职工编号,客户编号) 客户(客户编号,客户名称,地址)
每个关系模式中见表3-22、表3-23、表3-24、表3-25中的数据。
表3-22 职工表
职工编号 1001 2005 2007 3001 4009 张鹏 刘荧荧 李庆亮 陈莉 王建中 姓名 男 女 女 女 男 性别 出生日期 1980-12-1 1978-3-19 1074-2-10 1982-7-12 1989-6-1 1 1 2 4 5 部门编号
5
表3-23 部门表
部门名称 人事部 财务部 技术部 办公室 工程部 1 2 3 4 5 部门编号 表3-24 工程表
工程编号 1 2 3 4 工程名称 市第2医院5号楼 京都花园 梁苑广场 大华商场 1001 2005 2005 3001 职工编号 101 201 201 302 客户编号 表3-25 客户表
客户编号 101 201 302 405 大宏公司 新新公司 金石集团 秀华公司 客户名称 北京 上海 北京 广州 地址 试用关系的集合运算并、差、交、广义笛卡尔积四种运算,求出结果。 答:略。
8. 用第7题的公司数据库,试用专门的关系运算选择、投影、连接求出以下结果: (1) 查询所有男职工的信息。性别=’男’(职工)
(2) 查询在1980年之前出生的职工姓名。 姓名(出生日期<’1980-1-1’(职工)) (3) 查询客户大宏公司的工程信息。
工程编号,工程名称,职工编号,客户编号
(客户名称=’大宏公司’(客户表 工程表))
(4) 查询人事部职工负责的工程信息。
工程编号,工程名称,职工编号,客户编号
(部门名称=’人事部’(部门表) 职工表 工程表)
9. 简述概念:规范化,函数依赖,1NF,2NF,3NF,BCNF,4NF。
答:规范化:用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。
函数依赖:设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的6
任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。
1NF:如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF。 2NF:若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于R的码,则R∈2NF。 3NF:如果关系模式R是1NF,且每个非主属性都不传递依赖于R的候选键,那么称R是第三范式(3NF)的模式。
BCNF:如果关系模式R是1NF,且每个属性都不传递依赖于R的候选键,那么称R是BCNF的模式。
4NF:关系模式R∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y X),X都含有候选码,则R∈4NF。
10. 判断表3-26、表3-27、表3-28每个关系属于第几范式。如果不规范,将其规范化。
表3-26 学生成绩表
学号 5040105 5040106 5040107 5040111 蒙会宾 秦虎峰 樊继伟 张顺心 姓名 80 86 70 计算机网络 90 65 90 数据库应用 70 85 60 50 英语 表3-27 商品表
编号 204 301 220 509 电视 冰箱 计算机 微波炉 名称 20 15 20 26 数量 1 1 2 5 仓库编号 仓库地址 1号楼104 1号楼104 1号楼105 2号楼305 表3-28 教师表
编号 2003 1004 1020 2168 姓名 聂义乐 徐志华 王跃州 占超 男 女 女 女 性别 1 4 6 9 院系编号 院系名称 计算机 中文 体育 艺术 院系负责人编号 2006 1004 1029 1143 答:略。
11. 简述全关系型的关系系统应遵循的十二条基本准则。 答:【准则1】信息准则。 【准则2】保证访问准则。【准则3】空值的系统化处理。【准则4】基于关系模型的动态的联机数据字典。
【准则5】统一的数据子语言准则。
7
【准则6】视图更新准则.所有理论上可更新的视图也应该允许由系统更新。 【准则7】高级的插入、修改和删除操作。 【准则8】数据物理独立性。 【准则9】数据逻辑独立性。
【准则10】数据完整性的独立性。 【准则11】分布独立性。 【准则12】无破坏准则。
4.8 习题
1. 简述数据库设计过程。
答:通常将数据库设计分为以下六个阶段: 1) 需求分析阶段。 2) 概念设计阶段。 3) 逻辑设计阶段。 4) 物理设计阶段。 5) 实现阶段。
6) 运行维护阶段。
2. 简述数据库设计过程的各个阶段上的设计描述。
答:1) 需求分析:需求分析阶段应对系统的整个应用情况作全面的、详细的调查、确定用户的目标,收集支持系统总的设计目标的基础数据和对这些数据的要求,确定用户需求,并把这些要求写成用户和数据库设计者都能够接受的文档。确定用户需求可以通过对不同层次的企业管理人员进行个人访问得到。还应了解系统将来要发生的变化,充分考虑系统的可能的扩充和变动,使系统设计更符合未来发展方向。
2) 概念结构设计:概念模型可以看成是现实世界到机器世界的一个过渡的中间层次。在设计数据库系统时,要把现实世界的事物通过认识和抽象转换为信息世界的概念模型,再把概念模型转换为机器世界的数据模型。
概念结构设计是整个数据库设计的关键通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。
3) 逻辑结构设计:逻辑结构设计将概念结构转换为某个DBMS所支持的数据模型,并对其进行优化。
4) 物理结构设计:物理结构设计为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。
5) 数据库实施:运用DBMS提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果,建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
6) 数据库运行和维护:数据库应用系统经过试运行后即可投入正式运行。 3. 简述数据库设计的特点。 答:数据库设计的3个特点: (1) 反复性(Iterative) 8
一个性能优良的数据库不可能一次性的设计完成,需要经过多次的、反复的设计。 (2) 试探性(Tentative)
一个数据库设计完毕,并不意味着数据库设计工作的完成,还需要经过实际使用的检测。通过试探性的使用,再进一步完善数据库设计。
(3) 分步进行(Multistage)
由于一个实际应用的数据库往往都非常庞大,而且涉及到许多方面的知识,所以需要分步进行,最终达到用户的需要。
4. 需求分析的设计目的是什么?
答:需求分析阶段应对系统的整个应用情况作全面的、详细的调查、确定用户的目标,收集支持系统总的设计目标的基础数据和对这些数据的要求,确定用户需求,并把这些要求写成用户和数据库设计者都能够接受的文档。确定用户需求可以通过对不同层次的企业管理人员进行个人访问得到。还应了解系统将来要发生的变化,充分考虑系统的可能的扩充和变动,使系统设计更符合未来发展方向。
5. 简述概念结构设计通常采用的四类方法。 答:概念结构设计通常有四类方法:
1) 自顶向下。即先定义全局概念结构再逐步细化。
2) 自底向上。即先定义各局部概念结构再逐步整和,是概念结构设计最常用的方法。 3) 逐步扩张。即先定义核心概念结构再逐步扩展。 4) 混合策略。即综合自顶向下和自底向上方法设计。 6. 逻辑结构设计的任务是什么?
答:概念结构设计就是将需求分析得到的信息,抽象化为概念模型。概念结构设计应该能真实、充分地反映现实世界,包括事物和事物之间的联系,能满足用户对数据的处理要求。同时还有易于理解、易于更改,易于向关系、网状、层次等各种数据模型转换。
7. 数据库物理结构设计包括哪些设计?
答:数据库物理结构设计包括:选择存储结构、确定存取方法、选择存取路径、确定数据的存放位置。主要解决选择文件存储结构和确定文件存取方法的问题。在数据库中访问数据的路径主要表现为如何建立索引。如要直接定位到所要查找的记录,应采用索引方法存取方法(索引表)。顺序表只能从起点进去向后一个个访问记录。数据库的物理实现取决于特定的DBMS,在规划存储结构时主要应考虑存取时间和存储空间,这两者通常是互相矛盾的,要根据实际情况决定。
8. 试用自底向上法设计一个超市管理系统的E-R图。超市管理系统包括商品实体、职工实体、生产厂家实体、销售实体。其中商品实体具有商品编号、商品名称、数量、单价、生产厂家编号属性;职工实体具有职工编号、姓名、性别、出生日期、职务属性;生产厂家实体具有厂家编号、厂家名称、地址、联系方式、负责人属性;销售实体具有销售编号、销售时间、职工编号、商品编号、数量属性。
答:见书上P57E-R图。
9
9. 试完成一个完整的数据库设计,设计一个公司人事管理系统。公司人事管理系统包括职工实体、部门实体、工资实体、职务实体、工程实体、客户实体。其中职工实体具有职工编号、姓名、性别、出生日期、职务编号、部门编号属性;部门实体具有部门编号、部门名称、负责人编号、地点属性;工资实体具有职工编号、基本工资、奖金属性;职务实体具有职务编号、职务名称属性;工程实体包括工程编号、工程名称、开始时间、结束时间、负责人编号、客户编号;客户实体包括客户编号、客户名称、法人姓名、地址、联系方式。
答:见书上P56~58实例。
5.4 习题
1. SQL Server 2005数据库管理系统产品家族分为哪几种版本?
答:SQL Server 2005产品家族将其分为五个新的版本:企业版、开发版、标准版、工作组版和精简版。其中最常用的是企业版、标准版、工作组版。
2. 安装、配置SQL Server 2005。 答:略。
3. 熟悉SQL Server Management Studio环境。 答:SQL Server 2005简单易学,它提供了大量的图形工具和命令行工具,能够完成对SQL Server 2005的管理和开发任务。主要工具包括:
1) SQL Server Management Studio
2) Business Intelligence Development Studio 3) SQL Server Profiler
4) SQL Server Configuration Manager 5) Database Engine Tuning Advisor 6) 命令行工具 7) 帮助
6.4 习题
1. 简述SQL语言的特点。 答:SQL语言的特点是: 1) 高度非过程化 2) 综合统一
3) 是所有关系数据库的公共语言
4) 以同一种语法结构提供两种使用方式 5) 简单易学
2. SQL Server 2005提供了丰富的系统数据类型,可以归纳为哪些类别。
答:SQL Server 2005提供了丰富的系统数据类型。数据类型归纳为下列类别: (1) 精确数字型
精确数字型包括bigint、bit、decimal、money、numeric、smallint、smallmoney、tinyint。 10
(2) 近似数字型
近似数字型包括float、real。 (3) 日期和时间型
日期和时间型包括datetime、smalldatetime。 (4) 字符串型
字符串型包括char、text、varchar。 (5) Unicode字符串型
Unicode字符串型包括nchar、ntext、nvarchar。 (6) 二进制字符串型
二进制字符串型包括binary、image、varbinary。 (7) 其他数据类型
SQL Server还有一些其他的数据类型,包括cursor、sql_variant、table、timestamp、uniqueidentifier、xml。
3. 以下变量名中,哪些是合法的变量名,哪些是不合法的变量名?
A1,1a,@x,@@y,&变量1,@姓名,姓名,#m,##n,@@@abc##,@my_name 答:合法的变量名:A1,@x,@@y,&变量1,@姓名,姓名,#m,##n,@@@abc##,@my_name
不合法的变量名:1a
4. SQL Server 2005所使用的运算符类别有哪些? 答:
SQL Server 2005运算符类别
运算符类别 所包含运算符 =(赋值) +(加)、-(减)、*(乘)、/(除)、%(取模) &(位与)、|(位或)、^(位异或) +(连接) =(等于)、>(大于)、>=(大于等于)、<(小于)、<=(小于等于)、<>(或!=,不等于)、!<(不小于)、!>(不大于) 赋值运算符 算术运算符 按位运算符 字符串串联运算符 比较运算符 逻辑运算符 all(所有)、and(与)、any(任意一个)、between(两者之间)、exists(存在)、in(在范围内)、like(匹配)、not(非)、or(或)、some(任意一个) 一元运算符 +(正)、-(负)、~(取反) 5. 计算下列表达式: (1) 9-3*5/2+6%4 (2) 5&2|4 (3) '早上'+'好' (4) ~10 (5) DECLARE @d SMALLDATETIME SET @d='2006-10-26' SELECT @d+10,@d-10 答:9-3*5/2+6%4=4 5&2|4=4
11
'早上'+'好'='早上好' ~10=-11
6. 举例说明,如果表达式@a=@b-@c成立,则变量@a、@b、@c都可以是什么数据类型?
答: @a 数值数据 数值数据 日期时间 数值数据 日期时间 日期时间 @b 数值数据 数值数据 日期时间 @c 7. 用CASE函数,求当前日期是否是闰年? 答:
declare @y int,@ch char(20) set @y=year(getdate()) set @ch= case
when((@y%4=0)and (@y%100!=0)or (@y%400=0)) then '今年是闰年' else '今年不是闰年' end
print @ch go
8. 符号“=”可以是关系运算符等于,也可以是赋值运算符。那么什么情况下是关系运算符,什么情况下是赋值运算符?
答:在SET语句中“=”是赋值运算符,在输出语句或判断语句中是关系运算符。 9. 用T-SQL流程控制语句编写程序,求两个数的最大公约数和最小公倍数。
答:
--求最大公约数
DECLARE @num1 INT DECLARE @num2 INT
DECLARE @result INT --保存结果 DECLARE @jsq INT -- 计数器 DECLARE @min INT --保存最小值 SET @num1=9 SET @num2=9 --判断最小值
IF @num1>=@num2 SET @min=@num2 ELSE
SET @min=@num1 12
SET @jsq=@min --循环语句
WHILE (@jsq<=@min) BEGIN
--若同时被两个数整除,输出最大公约数
IF(@num1%@jsq=0 AND @num2%@jsq=0 ) BEGIN
SET @result=@jsq PRINT @result
BREAK --退出循环 END
SET @jsq=@jsq-1 END
--求最小公倍数
DECLARE @num1 INT DECLARE @num2 INT
DECLARE @result INT --保存结果 DECLARE @jsq INT -- 计数器
DECLARE @max INT --保存最大值 SET @num1=4 SET @num2=4 --判断最大值
IF @num1<=@num2 SET @max=@num2 ELSE
SET @max=@num1 --设置计数器的值 SET @jsq=@max --循环语句
WHILE (@jsq>=@max) BEGIN
--若同时整除两个数,输出最小公倍数
IF(@jsq%@num1=0 AND @jsq%@num2=0 ) BEGIN
SET @result=@jsq PRINT @result
BREAK --退出循环 END
13
SET @jsq=@jsq+1 END
10. 用T-SQL流程控制语句编写程序,求斐波那契数列中小于100的所有数。(斐波那契数列1,2,3,5,8,13,„)
答:declare @i int
declare @j int declare @t int
declare @s varchar(2000) set @i=1 set @j=2 set @s=''
set @s=cast(@i as varchar(10))+','+cast(@j as varchar(10)) while (@j<100) begin
set @t=@j set @j=@j+@i set @i=@t if(@j<100)
set @s=@s+','+cast(@j as varchar(10)) end print @s
11. 计算下列表达式:
(1) ABS(-5.5)+SQRT(9)*SQUARE(2)
(2) ROUND(456.789,2)-ROUND(345.678,-2)
(3) SUBSTRING(REPLACE('北京大学','北京','清华'),3,2) 答:
ABS(-5.5)+SQRT(9)*SQUARE(2)=18
ROUND(456.789,2)-ROUND(345.678,-2)=157
SUBSTRING(REPLACE('北京大学','北京','清华'),3,2)= '大学'
(4) 计算今天距离2008年8月8号,还有多少年,多少月,多少天? datediff(year,getdate(),'2008-8-8') datediff(month,getdate(),'2008-8-8') datediff(day,getdate(),'2008-8-8')
12. 定义一个用户标量函数,用以实现判断并返回三个数中的最大数。
答:
create function getmax(@a int,@b int, @c int) returns int as begin 14
declare @max int,@temp int if @a<@b set @a=@b if @a<@c set @a=@c return @a end
13. 定义一个用户标量函数,用以实现判断并返回一个日期时间数据位于该年的第几天。
答:
create function getday() returns int as begin
declare @year int,@month int,@days int,@day int,@i int set @days=day(getdate()) set @month=month(getdate()) set @year=year(getdate())
if((@year%4=0) and (@year%100!=0) or (@year%400=0)) set @day=29 else set @day=28 set @i=1
while(@i<@month) begin
set @days= case @i
when 1 then @days+31 when 3 then @days+31 when 5 then @days+31 when 7 then @days+31 when 8 then @days+31 when 10 then @days+31 when 12 then @days+31 when 4 then @days+30 when 6 then @days+30 when 9 then @days+30 when 11 then @days+30 when 2 then @days+@day end
set @i=@i+1
15
end
return @days end
7.4 习题
1. 简述物理数据库和逻辑数据库的概念。
答:数据库是构成单个数据库的实际文件。在SQL Server 2005中,将数据库映射到一组操作系统文件上,这种观点将数据库称为物理数据库。
SQL Server 2005数据库是存储数据的容器,即数据库是一个存放数据的表和支持这些数据的存储、检索、安全性和完整性的逻辑成分所组成的集合。这种观点将数据库称为逻辑数据库,组成数据库的逻辑数成分称为数据库对象。
2. 简述组成SQL Server 2005数据库的三种类型的文件。 答:SQL Server 2005数据库有3种类型的文件:
(1) 主数据文件:主数据文件的推荐文件扩展名是.mdf。 (2) 辅助数据文件:辅助数据文件的推荐文件扩展名是.ndf。 (3) 事务日志文件:事务日志文件的推荐文件扩展名是.ldf。
3. 使用SQL Server Management Studio创建一个名为“企业工资管理系统”数据库,要求它有3个数据文件,其中主数据文件为20M,最大大小为100MB,每次增长5MB;辅数据文件为10MB,最大大小不受限制,每次增长20%;事务日志文件为20MB,最大大小为100MB,每次增长20MB。
答:
CREATE DATABASE 企业工资管理系统 ON
PRIMARY
(NAME=’ 企业工资管理系统’, SIZE=20MB,
MAXSIZE=100MB, FILEGROWTH=5MB),
(NAME=’ 企业工资管理系统1’, SIZE=10MB,
MAXSIZE=UNLIMITED, FILEGROWTH=20%) LOG ON
(NAME=’企业工资管理系统_log1’, SIZE=20MB,
MAXSIZE=100MB, FILEGROWTH=20MB)
16
4. 使用T-SQL语句,创建一个名为“图书管理系统”数据库,要求它有3个数据文件,其中主数据文件为20M,最大大小为100MB,每次增长5MB;辅数据文件为10MB,最大大小不受限制,每次增长20%;事务日志文件为20MB,最大大小为100MB,每次增长20MB。
答:
CREATE DATABASE 图书管理系统 ON
PRIMARY
(NAME=’ 企业工资管理系统’, SIZE=20MB,
MAXSIZE=100MB, FILEGROWTH=5MB),
(NAME=’ 企业工资管理系统1’, SIZE=10MB,
MAXSIZE=UNLIMITED, FILEGROWTH=20%) LOG ON
(NAME=’图书管理系统_log1’, SIZE=20MB,
MAXSIZE=100MB, FILEGROWTH=20MB)
5. 使用T-SQL语句,修改所创建的“公司人事管理系统”数据库中增加一个辅数据文件。文件的逻辑名为com,物理名为com_data.ldf,大小为10MB,增长不受限制,每次增加10%。
答:见书上P118例7-4
6. 数据库和表有什么不同?
答:数据库是数据对象容器,数据表是存放具体数据的单位。
7. 创建表的实质就是定义表结构以及约束等属性,简述列属性设置。 答:
(1) PRIMARY KEY:主关键字约束 (2) UNIQUE:唯一性约束 (3) CHECK:检查约束 (4) DEFAULT:默认值约束 (5) NOT NULL:允许为空 (6) IDENTITY:标识规范
8. 使用SQL Server Management Studio,在“企业工资管理系统”数据库中创建职工表、部门表、工资表,并向各表添加数据。
答:略。
17
8.9 习题
1. 查询女教师的教师编号、姓名和出生日期。 答:
Select 编号,姓名,出生日期 From 教师表 Where 性别='女'
2. 根据教师的年龄,将教师分为:老年(大于等于50岁)、中年(40岁至50岁之间)和青年(小于等于40岁)。
答:
Select 姓名,性别,年龄= Case
When datediff(year,出生日期,getdate())>=50 then '老年'
When datediff(year,出生日期,getdate())>=40 and datediff(year,出生日期,getdate())<50 then '中年'
When datediff(year,出生日期,getdate())<40 then '青年' End
From 教师表
3. 查询选修“大学英语”的学生的姓名,并按照分数从高到低输出前3名。 答:
Select top 3 姓名
From 学生表,成绩表,课程表
Where 学生表.学号=成绩表.学号 AND 课程表.课程号=成绩表.课程号 AND 课程表.课程名='大学英语' Order by 分数 desc GO
4. 查询体育学院和外语学院,而且在1986年出生的学生信息。 答: Select *
From 学生表
Where (院系名称='体育学院' or 院系名称='外语学院') and year(出生日期)=1986 5. 查询计算机学院姓张,并且姓名是两个字的学生的信息。 答: Select *
From 学生表
Where 院系名称='计算机学院' and 姓名 like '张_'
18
6. 现有“图书馆图书管理系统”数据库。该数据库有图书表、职工表、部门表、出版社表。
答:(1)查询清华大学出版社出版的所有图书信息。
select * from 图书表,出版社表 where 图书表.出版社编号=出版社表.出版社编号and 出版社名称=’清华大学出版社’
(2)查询书名包含“数据库”3个字的图书编号和名称。
select 图书编号,书名 from 图书表 where书名 like ’%数据库%’
(3)查询文科图书室的所有女职工的信息,并按年龄从大到小输出。
select * from 职工表,部门表 where 职工表.部门编号=部门表.部门编号 and 性别=’女’and 部门名称=’文科图书室’ order by 出生日期
(4)查询理科图书室管理的所有机械工业出版社出版的图书编号和名称。
select图书编号,书名 from图书表,部门表,出版社表where 图书表.部门编号=部门表.部门编号 and 图书表.出版社编号=出版社表.出版社编号 and 部门名称=’理科图书室’ and出版社名称=’机械工业出版社’
(5)统计每个部门的男女职工的人数。
SELECT 部门编号,性别,COUNT(*) FROM 职工表 GROUP BY性别,部门编号 (6)统计每个部门管理的图书的书目,将管理图书书目大于1000的部门编号输出。 select 部门编号,count(*) from 图书表 group by 部门编号 having count(*)>1000 (7)查询在1980年出生的男职工所在部门的名称。
select 部门名称 from职工表,部门表 where 职工表.部门编号=部门表.部门编号 and 性别=’男’ and year(出生日期)=1980
(8)查询职工姓名姓“张”的职工所在部门管理的图书编号和名称。 select 图书编号,书名 from 图书表 where 部门编号 in
(select 部门编号from 职工表 where 姓名 like ’张%’)
(9)将图书的作者名和图书馆的职工姓名合并成一个新的查询集合。 select 作者 from 图书表 union select 姓名 from 职工表
(10)将图书的书名、作者名和出版社信息存到一个新表中。
select 书名,作者,出版社编号,出版社名称,地址 into book from 图书表,出版社表 Where图书表.出版社编号=出版社表.出版社编号
9.4 习题
1. 简述视图的概念以及分类。
答:视图是从一个或多个表或视图中导出的表,其结构和数据是建立在对表的查询基础上的。和表一样,视图也是包括几个被定义的列和行,但就本质而言这些数据列和数据行来源于其所引用的表。所以视图不是真实存在的基础表而是一张虚表,视图所对应的数据并不实际地以视图结构存储在数据库中,而是存储在视图所引用的表中。在SQL Server 2005中,视图可以分为标准视图、索引视图和分区视图。
19
2. 可更新视图必须满足哪些条件?
答:只要满足下列条件,即可通过视图修改基础基表的数据:
1) 任何修改(包括UPDATE、INSERT和DELETE语句)都只能引用一个基表的列。 2) 视图中被修改的列必须直接引用表列中的基础数据。不能通过任何其他方式对这些列进行派生,如通过聚合函数、计算(如表达式计算)、集合运算等。
3) 被修改的列不受GROUP BY、HAVING、DISTINCT或TOP子句的影响。
3. 在SQL Server Management Studio中使用向导创建一个视图,包括学生的学号、姓名,教师的编号、姓名,课程的课程号、课程名,以及分数。该视图是可更新视图吗?
答:是可更新视图。
4. 在查询窗口中使用T-SQL语言创建一个视图,包括工作人员编号、姓名,进货的时间、数量,以及客户名称和城市。该视图是可更新视图吗?
答:CREATE VIEW 视图 AS
SELECT 人员编号,姓名,进货时间,进货单表.数量,客户表.客户名称,客户表.城市 FROM 客户表 INNER JOIN
进货单表 ON 客户表.客户编号=进货单表.客户编号
INNER JOIN
工作人员表 ON 进货单表.人员编号 =工作人员表.人员编号 5. 简述索引的概念以及分类。
答:索引包含从表或视图中一个或多个列生成的键,以及映射到指定数据的存储位置的指针。通过创建设计良好的索引以支持查询。
索引可以是惟一的,即索引列不会有两行记录相同,这样的索引称为惟一索引。索引也可以是不惟一的。如果索引是根据单列创建的,这样的索引称为单列索引。根据多列组合创建的索引称为复合索引。按索引的组织方式的不同,可以将索引分为聚集索引和非聚集索引。
6. 在SQL Server Management Studio中使用向导,根据成绩表的分数列创建一个索引。要求该索引不是惟一,也不是聚集索引。
答:略。
7. 在查询窗口中使用T-SQL语言,根据工作人员表的出生日期列创建一个索引。要求该索引不是惟一,也不是聚集索引。
答:CREATE NONCLUSTERED INDEX 日期索引 ON 出生日期
8. 简述游标的概念以及分类。
答:SQL Server 2005通过游标提供了对一个结果集进行逐行处理的能力。游标也可以看作是一个表中的记录指针,该指针与某个查询结果相联系。
根据游标用途的不同,SQL Server 2005将游标分为三种: (1) T-SQL游标
(2) 应用程序编程接口(API)服务器游标 (3) 客户端游标
根据T-SQL服务器游标的处理特性,SQL Server 2005将游标分为四种: (1) 静态游标 20
(2) 动态游标 (3) 只进游标
(4) 由键集驱动游标
根据T-SQL服务器游标在结果集中移动方式,SQL Server 2005将游标分为两种: (1) 滚动游标 (2) 前向游标
根据T-SQL服务器游标结果集是否允许修改,SQL Server 2005将游标分为两种: (1) 只读游标 (2) 只写游标
9. 创建游标可以用哪两种方式?这两种方式创建的游标一样吗?创建完游标是否可以马上读取数据?
答:声明游标有两种方式:标准方式和T-SQL扩展方式。这两种方式创建的游标不一样。创建完游标是不可以马上读取数据,还必须打开游标。
10. 利用标准方式声明一个游标,查询课程表中的课程编号和课程名信息,并读取数据。 答:DECLARE 课程 CURSOR
FOR
SELECT 课程号,课程名 FROM 课程表 GO
OPEN 课程 GO
FETCH NEXT FROM 课程 GO
11. 利用T-SQL扩展方式声明一个游标,查询学生表中的学号、姓名、性别和出生日期信息,并读取数据。要求:
(1) 读取最后一条记录。FETCH LAST FROM 学生 (2) 读取第一条记录。FETCH FIRST FROM 学生
(3) 读取第4条记录。FETCH ABSOLUTE 4 FROM 学生
(4) 读取当前记录指针位置后第2条记录。FETCH RELATIVE 2 FROM 学生 (5) 读取当前记录指针位置前第2条记录。FETCH RELATIVE -2 FROM 学生 答:
DECLARE 学生 CURSOR DYNAMIC FOR
SELECT 学号,姓名,性别,出生日期 FROM 学生表 GO
OPEN 学生 GO
21
FETCH LAST FROM 学生 FETCH FIRST FROM 学生
FETCH ABSOLUTE 4 FROM 学生 FETCH RELATIVE 2 FROM 学生 FETCH RELATIVE -2 FROM 学生 GO
补充1、编写一个程序,采用游标方式输出所有课程的平均分。 USE xscj GO
--声明变量
DECLARE @c_name varchar(8),@s_avg float --声明游标
DECLARE st_cursor CURSOR
FOR SELECT 课程表.课程名,AVG(成绩表.分数) FROM 课程表,成绩表
WHERE 课程表.课程号=成绩表.课程号 AND 成绩表.分数 IS NOT NULL GROUP BY 课程表.课程名 --打开游标
OPEN st_cursor --提取第一行数据
FETCH NEXT FROM st_cursor INTO @c_name,@s_avg --打印表标题
PRINT '课程 平均分' PRINT '-----------------'
WHILE @@FETCH_STATUS = 0 BEGIN
--打印一行数据
PRINT @c_name+' '+CAST(@s_avg AS char(10)) --提取下一行数据
FETCH NEXT FROM st_cursor INTO @c_name,@s_avg END
--关闭游标
CLOSE st_cursor --释放游标
DEALLOCATE st_cursor GO
补充2、编写一个程序,采用游标方式输出所有学号、课程号和成绩等级。 USE xscj GO 22
--声明变量
DECLARE @no1 char(5),@no2 char(6),@fs char(2) --声明游标
DECLARE fs_cursor CURSOR FOR SELECT 学号,课程号, CASE
WHEN 分数>=90 THEN 'A' WHEN 分数>=80 THEN 'B' WHEN 分数>=70 THEN 'C' WHEN 分数>=60 THEN 'D' WHEN 分数<60 THEN 'E' END
FROM 成绩表 WHERE 分数 IS NOT NULL ORDER BY 学号 --打开游标
OPEN fs_cursor --提取第一行数据
FETCH NEXT FROM fs_cursor INTO @no1,@no2,@fs --打印表标题
PRINT '学号 课程号 等级' PRINT '-----------------'
WHILE @@FETCH_STATUS = 0 BEGIN
--打印一行数据
PRINT @no1+' '+@no2+' '+@fs --提取下一行数据
FETCH NEXT FROM fs_cursor INTO @no1,@no2,@fs END
--关闭游标
CLOSE fs_cursor --释放游标
DEALLOCATE fs_cursor GO
10.3 习题
1. 存储过程和触发器的作用是什么?使用它们有什么好处
答:存储过程(Stored Procedure)是一组完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行存
23
储过程。
触发器是一种特殊类型的存储过程,它不同于前面介绍过的存储过程,主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。
使用存储过程和触发器可以提高系统查询效率,增强数据的完整性。 2. SQL Server 2005中存储过程的类型有哪些?
答:在SQL Server 2005中存储过程分为三类:系统提供的存储过程、用户自定义存储过程和扩展存储过程。
3. 在有些情况下,为什么需要重新编译存储过程?
答:在执行诸如添加索引或更改索引列中的数据等操作更改了数据库时,应重新编译访问数据库表的原始查询计划以对其重新优化。在SQL Server 2005重新启动后,第一次运行存储过程时自动执行此优化。当存储过程使用的基础表发生变化时,也会自动执行此优化。但如果添加了存储过程可能从中受益的新索引,将不会自动执行优化,直到下一次SQL Server重新启动并再运行该存储过程时为止。在这种情况下,强制在下次执行存储过程时对其重新编译会很有用。
4. SQL Server 2005中触发器的类别有哪些?
答:SQL Server 包括两大类触发器:DML触发器和DDL触发器。 5. 创建存储过程和触发器的SQL语句是什么? 答:创建存储过程:
CREATE PROCEDURE [schema_name.] procedure_name [ { @parameter [ type_schema_name. ] data_type }
[ VARYING ] [ = default ] [ OUT | OUTPUT ] ] [ ,...n ] [ WITH ENCRYPTION ] AS { CREATE TRIGGER [ schema_name . ]trigger_name ON { table | view } [ WITH { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] } [ WITH APPEND ] [ NOT FOR REPLICATION ] AS { sql_statement [ ; ] [ ...n ] | EXTERNAL NAME 补充:1、创建一个AFTER触发器,要求实现以下功能:在成绩表上创建一个插入、更新类型的触发器TR_ScoreCheck,当在成绩表字段中插入或修改考试分数后,触发该触发器,检查分数是否在0-100之间。 USE XSCJ GO CREATE TRIGGER TR_ScoreCheck ON 成绩表 24 FOR INSERT, UPDATE AS PRINT 'AFTER触发器开始执行……' BEGIN DECLARE @ScoreValue real SELECT @ScoreValue=(SELECT 分数 FROM inserted) IF @ScoreValue>100 OR @ScoreValue<0 PRINT '输入的分数有误,请确认输入的考试分数!' END GO 或: CREATE TRIGGER TR_ScoreCheck ON 成绩表 FOR INSERT, UPDATE AS if exists(select * from 成绩表 where 分数>100 or 分数<0) begin raiserror(‘输入的分数有误,请确认输入的考试分数!’16,1) rollback transaction end GO 2、在学生表上创建一个触发器TR_SexCheck,当插入一条记录时,检查性别字段,判断只能是“男”或“女”,否则认为非法,重新输入。 CREATE TRIGGER TR_SexCheck ON 学生表 FOR INSERT,UPDATE AS if exists(select * from 学生表 where 性别 not in(‘男’,’女’)) begin raiserror(性别只能是男或女,请重新输入性别’,16,1) rollback transaction end GO 11.3 习题 1. 数据库备份和还原的概念和作用是什么? 答:“备份”是数据的副本,用于在系统发生故障后还原和恢复数据。备份使用户能够在发生故障后还原数据。通过适当的备份,可以从多种故障中恢复。 25 2. SQL Server 2005中具有哪几种恢复模式? 答:在SQL Server 2005数据库管理系统中,可以选择的三种恢复模式:简单模式、完整模式和大容量日志模式。 3. 描述SQL Server 2005中进行备份和还原的方法。 答:略。 4. 数据库数据导入和导出的概念和作用是什么? 答:通过导入和导出操作可以在SQL Server 2005和其他异类数据源(例如Excel或Oracle数据库)之间轻松移动数据。 5. 在何种情况下,应该使用数据库的备份和还原;何种情况下使用数据库的数据导入和导出? 答:当数据库出现故障或存在其他一些可能造成数据丢失的因素,例如用户的操作失误、蓄意破坏、病毒攻击和自然界不可抗力等,即可使用SQL Server 2005指定的备份还原策略,定期将数据库进行备份以保护数据库,以便在事故发生后还原数据库。 当需要在SQL Server 2005和其他异类数据源(例如Excel或Oracle数据库)之间轻松移动数据时,即可使用例如数据库的数据导入和导出,可以将数据从Excel应用程序导出到数据文件,然后将数据大容量导入到SQL Server表。“导出”是指将数据从SQL Server表复制到数据文件。“导入”是指将数据从数据文件加载到SQL Server表。 12.6 习题 1. SQL Server 2005的身份验证模式有哪两种?它们有什么不同? 答:SQL Server的安全系统可在任何服务器上通过两种方式实现:SQL Server和Windows结合使用(SQL Server and Windows)以及只使用Windows(Windows Only)。 当使用SQL Server身份验证方式时,由SQL Server系统管理员定义SQL Server账号和口令。混合身份验证模式即允许使用Windows身份验证方式,又允许使用SQL Server身份验证方式。它使用户既可以登录SQL Server,也可用Windows的集成登录。 2. 在SQL Server 2005中进行授权时,角色的作用是什么? 答:SQL Server 2005数据库管理系统利用角色设置,管理用户的权限。这样只对角色进行权限设置便可以实现对所有用户权限的设置,大大减少了管理员的工作量。 3. 什么是授权的主体,在SQL Server 2005中如何建立授权的主体? 答:“主体”是可以请求SQL Server资源的个体、组和过程。主体的影响范围取决于主体定义的范围(Windows、服务器或数据库)以及主体是否不可分或是一个集合。每个主体都有一个惟一的安全标识符(SID),即帐号。 4. 关于权限控制的SQL语句有哪些?它们的作用是什么? 答:GRANT命令用于把指定的权限授予某一用户。 DENY命令用来禁止用户使用指定的权限。 REVOKE命令用来收回用户所拥有的某些权限,使其不能执行此操作,除非该用户 被加入到某个角色中,从而通过角色获得授权。 26 5. 在Windows中新建一个帐号,设置不同的登录模式,实验登录SQL Server 2005的情况。 答:略。 6. 在SQL Server 2005中新建一个帐号,设置不同的登录模式,实验登录SQL Server 2005的情况。 答:略。 7. 赋予帐号不同的“数据库角色成员身份”,实验对数据库的操作情况。 答:略。 13.5 习题 1. 简述事务,锁的概念。 答:事务和存储过程类似,由一系列T-SQL语句组成,是SQL Server 2005系统的执行单元。 锁就是防止其他事务访问指定的资源的手段。锁是实现并发控制的主要方法,是多个用户能够同时操纵同一个数据库中的数据而不发生数据不一致现象的重要保障。 2. 根据运行模式,SQL Server 2005将事务分为哪些类型? 答:根据事务的设置、用途的不同,SQL Server 2005将事务分为多种类型。根据系统的设置,SQL Server 2005将事务分为两种类型:系统提供的事务和用户定义的事务。 3. T-SQL提供的事务处理语句包括哪些? 答:事务处理语句包括: 1) BEGIN TRANSACTION语句。定义显示本地事务的起始点 2) COMMIT TRANSACTION语句。提交一个事务,表示一个成功事务的结束。 3) ROLLBACK TRANSACTION语句。回滚到事务的起点或事务内的某个保存点。 4) SAVE TRANSACTION语句。在事务内设置保存点 4. 创建一个事务,将所有女生的考试分数都加5分,并提交。 答: DECLARE @w_name CHAR(10) SET @w_name='add_score' BEGIN TRANSACTION @w_name UPDATE 成绩表 SET 分数=分数+5 WHERE 性别=’女’ GO COMMIT TRANSACTION @w_name 5. 创建一个事务,先向学生表中添加一条新记录,并设置保存点。再将姓名为“叶晨”的学生的姓名改为“叶臣”,并再提交。 答: BEGIN TRANSACTION 27 INSERT INTO 学生表 VALUES('234','张', '男','1980-10-28','1', '3',null) SAVE TRANSACTION savepoint UPDATE 学生表 SET 姓名=’叶臣’ WHERE 姓名='叶晨' COMMIT TRANSACTION 6. 简述锁的定义及用途。 答:锁就是防止其他事务访问指定的资源的手段。锁是实现并发控制的主要方法,是多个用户能够同时操纵同一个数据库中的数据而不发生数据不一致现象的重要保障。 7. 简述SQL Server 2005提供了的4种锁模式。 答:根据锁定资源的方式的不同,SQL Server 2005提供了4种锁模式:共享锁、排他锁、更新锁、意向锁。 28 因篇幅问题不能全部显示,请点此查看更多更全内容