数据库原理课件完整版

上传人:大米 文档编号:591890270 上传时间:2024-09-18 格式:PPT 页数:553 大小:4.96MB
返回 下载 相关 举报
数据库原理课件完整版_第1页
第1页 / 共553页
数据库原理课件完整版_第2页
第2页 / 共553页
数据库原理课件完整版_第3页
第3页 / 共553页
数据库原理课件完整版_第4页
第4页 / 共553页
数据库原理课件完整版_第5页
第5页 / 共553页
点击查看更多>>
资源描述

《数据库原理课件完整版》由会员分享,可在线阅读,更多相关《数据库原理课件完整版(553页珍藏版)》请在金锄头文库上搜索。

1、数据库技术实用教程数据库技术实用教程参考书参考书参考书参考书A First Course in Database SystemsJeffrey.D.Ullman,JenniferWidomDept.OfComputerScienceStanfordUniversity 王珊朱青数据库系统概论学习指导与习题解答高等教育出版社2003年8月学习方式学习方式听课(启发式、讨论式)读书(预习、复习)报告(实验,综合课程设计)内容安排内容安排v第1篇:总论篇,共1章(第1章)。本篇从宏观角度全面介绍数据库技术,为读者学习本书有一个整体、全面的了解与认识。v第2篇:基础篇,共3章(第24章)。本篇是全书的

2、主要理论部分,它对整个数据库学科及数据库应用有着重要的指导价值。v第3篇:操作篇,共4章(第58章)。本篇主要介绍以SQLServer2008为代表的数据库工具v第4篇:产品篇,共6章(第914章)。本篇主要介绍数据库的操作以及数据库的编程,这是应用的基本部分v第5篇:工程篇,共4章(第1518章)。本篇主要介绍数据工程,包括数据库设计、数据库管理、数据库编程及数据库应用系统组成与开发等内容。v第6篇:应用篇,共两章(第19、20章)。本篇主要介绍数据库应用领域与范围,重点介绍其中7个领域的应用。 数据库技术实用教程第1章数据库技术概述 第一章第一章第1章数据库技术概述v1.1数据库学科是一门

3、技术v1.2数据库技术几个关键问题的讨论v1.3数据库技术应用与本书第1章数据库技术概述v1.1数据库学科是一门技术v1.2数据库技术几个关键问题的讨论v1.3数据库技术应用与本书第一章第一章在计算机学科领域,对数据数据的研究与应用中出现一些基本性的内容,如“数据库”“数据库系统”等,以它们为核心作研究形成了一门学科即数据库学科数据库学科。从学科范畴而言,技术性学科是以系统系统的研制、开发的方法与手段为主要研究目标,而数据库学科正是如此,它的研究内容以组织、开发及应用数据库的方法与手段为主。因此,它是一门技术性学科,也称为数据库技术数据库技术。第一章第一章硬件平台硬件平台基础软件平台基础软件平

4、台软件基础构架平台软件基础构架平台应用软件平台应用软件平台软件产品软件产品协同软件协同软件单击此处添加备注数据库系统数据库系统数据库系统数据库系统操作系统操作系统操作系统操作系统 中间件中间件 应用服务器应用服务器数据库在计算机系统中的位置数据库在计算机系统中的位置第一章数据库的地位数据库的地位v数据库技术产生于六十年代末,是数据库技术产生于六十年代末,是数据管理数据管理的最新技术,的最新技术,是计算机科学的重要分支。是计算机科学的重要分支。v数据库技术是信息系统的数据库技术是信息系统的核心和基础核心和基础,它的出现极大地促,它的出现极大地促进了计算机应用向各行各业的渗透。进了计算机应用向各行

5、各业的渗透。v数据库的建设规模、数据库信息量的大小和使用频度已成数据库的建设规模、数据库信息量的大小和使用频度已成为衡量一个国家信息化程度的重要标志。为衡量一个国家信息化程度的重要标志。第一章v经历了三代演变经历了三代演变层次/网状系统、关系系统、新一代数据库系统家族(多媒体、并行、对象关系数据库、科学数据库等)v造就了三位图灵奖造就了三位图灵奖turingaward得主得主C.W.Bachman网状数据库之父,1973E.F.Codd关系数据库之父,1981JamesGray数据库技术和事务处理专家,1998v发展了一门计算机基础学科发展了一门计算机基础学科以数据模型和DBMS核心技术为主,

6、内容丰富、领域宽广 v形成了一个巨大的软件产业形成了一个巨大的软件产业DBMS及其相关工具产品、应用解决方案数据库发展回顾数据库发展回顾(6060年代开始)年代开始)第一章第一章第一章v第1章数据库技术概述v1.1数据库学科是一门技术v1.2数据库技术几个关键问题的讨论v1.3数据库技术应用与本书v数据库技术中的几个关键问题,它们是:(1)数据库技术的研究对象数据;(2)数据库技术的研究内容数据管理;(3)数据库技术的研究目标数据应用;(4)数据库技术的研究基础数据理论。第一章第一章v数据库技术的研究对象数据程序对数据进行不断加工的过程,由初始数据开始而至结果数据结程序对数据进行不断加工的过程

7、,由初始数据开始而至结果数据结束,而结果数据即计算的最终目标。束,而结果数据即计算的最终目标。v数据库技术的研究内容数据管理数据库的操作管理数据库的操作管理数据库管理系统数据库管理系统数据库的开发管理数据库的开发管理数据库管理员数据库管理员第一章第一章v数据库技术的研究目标数据应用(1)数据库设计;)数据库设计;(2)数据库管理,包括数据库生成与数据库运行维护;)数据库管理,包括数据库生成与数据库运行维护;(3)数据库操作与编程;)数据库操作与编程;(4)数据库应用系统开发;)数据库应用系统开发;(5)数据库应用新门类。即数据库应用系统与各不同应用领域相结合)数据库应用新门类。即数据库应用系统

8、与各不同应用领域相结合所产生的新的应用门类。所产生的新的应用门类。第一章第一章v数据库技术的研究基础数据理论(1)数据模型理论;)数据模型理论;(2)数据规范化理论;)数据规范化理论;(3)数据查询优化理论;)数据查询优化理论;(4)数据理论基础;)数据理论基础;(5)数据库数学理论)数据库数学理论第一章第一章第二章第二章v第2章数据及数据理论的基础概念2.1数据的基本知识2.2数据组织2.3数据库系统基本概念v2.1数据的基本知识2.1.1数据的概念2.1.2数据组成2.1.3数据元素与数据单元2.1.4数据运算2.1.5数据约束2.1.6扩充的数据单元第二章第二章2.1.1数据的概念v数据

9、(数据(data)是客观世界中的事物在计算机中的抽象表示。)是客观世界中的事物在计算机中的抽象表示。例2.1 某高校学生是事物,它可抽象成表2.1所示的形式。表2.1学生数据学号姓名性别年龄系别030016张晓帆男21计算机该表示形式又可分解成两个部分,其一是值的部分:030016,张晓帆,男,21及计算机,而它的结构部分则为表2.1所示的表框架,它可用表2.2表示。表2.2学生表框架学号姓名性别年龄系别第二章第二章v一个计算过程是程序对数据的不断加工过程,由初始数据开始而一个计算过程是程序对数据的不断加工过程,由初始数据开始而至结果数据结束,而结果数据即计算的最终目标。它们的关系如至结果数据

10、结束,而结果数据即计算的最终目标。它们的关系如图图2.1所示。所示。第二章第二章v数据分类特性数据分类特性世上有多种不同数据并具有不同的特性,大致说来可分为下面三种世上有多种不同数据并具有不同的特性,大致说来可分为下面三种(1)时间角度:)时间角度:(2)使用范围:)使用范围:(3)数量角度:)数量角度:第二章第二章v2.1数据的基本知识2.1.1数据的概念2.1.2数据组成2.1.3数据元素与数据单元2.1.4数据运算2.1.5数据约束2.1.6扩充的数据单元第二章第二章v数据由横向与纵向两部分组成,从横向角度看数据分为数据结构与数据值两部分,而纵向可分为三个层次,即客体世界、逻辑世界及物理

11、世界。1数据横向组成数据横向组成1)数据结构(1)数据的逻辑结构(2)数据的物理结构2)数据值数据的结构反映了数据内在、本质的性质,它具有相对的稳定性,而数据的值则可因不同时间、地点及条件而有所不同,因此具有可变性与灵活性。例如,教师与学生间的师生关系是一种稳定的数据结构,而它的值则可因不同学校、不同学期及不同专业而有所不同。第二章第二章2数据纵向层次数据纵向层次从纵向看,数据有三个层次的世界,它反映了数据的不同深度的内涵。从纵向看,数据有三个层次的世界,它反映了数据的不同深度的内涵。图2.6 数据三个层次与两个部分组成表示第二章第二章v2.1数据的基本知识2.1.1数据的概念2.1.2数据组

12、成2.1.3数据元素与数据单元2.1.4数据运算2.1.5数据约束2.1.6扩充的数据单元第二章第二章v1数据元素数据元素(dataelement)是数据使用的基本单位基本单位。一个数据元素由数据元素名、数据元素结构及数据元素值三部分组成。v2数据对象数据对象(dataobject)是命名的数据元素集。v3数据结构基本数据结构基于图论的数据结构v4.数据单元进一步定义另一种数据使用的单位,即数据单元(dataunit)。一个数据对象及建立在该对象上的数据结构并赋予一个名字后称为数据单元。第二章第二章v2.1数据的基本知识2.1.1数据的概念2.1.2数据组成2.1.3数据元素与数据单元2.1.

13、4数据运算2.1.5数据约束2.1.6扩充的数据单元第二章第二章2.1.4数据运算数据元素与数据单元为数据使用提供了基本单位,而数据使用是通过数据运算实现的。第二章第二章针对每个数据元素均有的操作称公共操作,又分为以下两种:v(1)数据值的操作定位操作:主要用于确定数据元素在数据结构中的位置,为后续操作提供定位服务。读操作:主要用于读取数据中满足一定条件的数据元素中的值,也可称为查询操作。添加操作:主要用于在指定数据中添加数据的值,也可称为插入操作。删除操作:主要用于删除指定数据元素中的数据的值。修改操作:主要用于修改指定数据元素中的数据的值。v(2)数据结构的操作创建结构:用于建立一个满足要

14、求的结构。删除结构:用于删除一个已创建的结构。修改结构:用于修改一个已创建的结构。查询结构:用于查询指定结构的规则的参数,如线性表的结点数、树的高度等。第二章第二章v2.1.5数据约束数据是客观世界中事物的抽象,它处于客观世界错综复杂的现象中,受环境的制约与约束,因此任何数据都受制于环境,称数据约束。具体说来可以有以下几种:1数据值的约束数据值的约束表示数据元素中数据值自身及值之间的语法、语义约束。例2.13在表2.8所示的“职工”数据元素中,职工年龄的值一般限制在1860之间;职工工资与其职务、工龄有关,即工龄长、职务高者工资必高。第二章第二章v2数据域的约束数据域的约束即对数据对象的约束,

15、如数据对象中数据元素量的约束与性质约束等。例2.14建立在表2.9上的职工名单是一个数据对象,它在量上受单位编制约束,如某企业职工人数不得突破300人。3数据结构的约束数据间有一定结构关联,此外,还受外界环境约束称数据结构约束。例2.15行政机构中上下级关系所组成的树结构,它的深度与宽度都是受约束的。如某机关,其部门设置不得超过五个,领导层次不得超过三层。4数据操作的约束不同数据单元有不同操作,这些操作是受约束的,称数据操作约束。5数据其他的约束除了上面四种约束外,数据还可以有其他类型的约束,如Web页面中数据展示的形式约束、数据图像表示中的点阵约束等。第二章第二章v2.1.6扩充的数据单元图

16、2.9 数据单元的6个概念层次组织图第二章第二章v第2章数据及数据理论的基础概念2.1数据的基本知识2.2数据组织2.3数据库系统基本概念第二章第二章目前常用的有四种数据组织,分别是:基本数据组织、文件组织、数据库组织以及Web数据组织等。它们基本上能满足应用对数据的不同需求,而每种数据组织一般仅针对某一类型的应用需求。2.2.1数据组织分类1依赖型数据组织2独立型数据组织3半独立型数据组织4超独立型数据组织第二章第二章2.2.2数据组织发展简史1数据组织发展第一阶段初级阶段(20世纪4050年代)2数据组织发展的第二阶段文件阶段(20世纪5060年代)3数据组织发展的第三阶段数据库阶段(20

17、世纪6090年代)4数据组织发展的第四阶段Web应用阶段(20世纪90年代至今)第二章第二章v第2章数据及数据理论的基础概念2.1数据的基本知识2.2数据组织2.3数据库系统基本概念第二章第二章v2.3数据库系统基本概念2.3.1数据库系统基本面貌2.3.2数据库系统组成2.3.3数据库应用系统介绍第二章第二章v2.3.1数据库系统基本面貌数据库系统基本面貌作为数据组织,数据库系统中的数据具有共享性、海量性及持久性。为管理好这些数据,对数据组织有一定的要求,也可以说,数据特性决定了数数据特性决定了数据组织据组织。它们是:1数据共享2海量数据3持久性数据第二章第二章v2.3.2数据库系统组成数据

18、库系统组成数据库系统一般可由下面几个部分组成:1数据库2数据管理4数据库系统3数据库用户第二章第二章2.3.3数据库应用系统介绍数据库应用系统介绍数据库系统是为应用服务的,数据库系统与应用的结合数据库系统与应用的结合组成了数据库应用系统。组成了数据库应用系统。1数据处理数据库系统的应用领域是数据处理。2数据处理环境在数据处理中,用户使用数据是通过数据库系统实现的,而这种使用是在一定环境下进行的。目前一共有以下几种环境:(1)单机集成环境(2)网络环境(3)互联网环境第二章第二章3数据交换方式数据库是一种独立的数据组织,在数据处理中,多种用户访问它时必须有多个访问接口,这种接口可因不同环境、不同

19、编程方式而有所不同,称为数据交换方式。目前一般有五种交换方式,它们是单机集成环境中的人机直接交互方式、嵌入式方式及自含式方式,网络中的调用层接口方式以及互联网中的Web方式等,我们将在第4章中对它们作详细介绍。4数据库应用系统在数据处理中开发应用系统需做两件事,首先是生成数据库,其次是根据不同环境、不同用户采用不同数据交换方式编写应用程序。第二章第二章5数据库应用系统组成由上述介绍可知,数据库应用系统由如下几个部分组成:数据库系统;数据处理语言编译系统;(和是数据库应用系统的开发工具与平台)已生成的数据库;应用程序。(和是数据库应用系统的生成内容)第二章第二章6数据库应用系统开发数据库应用系统

20、的开发流程第二章第二章v数据库应用系统开发中的相关人员数据库设计员负责数据库设计;数据库管理员负责数据库生成与数据库运行维护;数据库程序员负责数据库编程。数据库应用主要体现在对数据库应用系统的开发上。这种开发数据库应用主要体现在对数据库应用系统的开发上。这种开发包括的内容是数据库设计、数据库生成、数据库编程及数据库运行维包括的内容是数据库设计、数据库生成、数据库编程及数据库运行维护。它们以数据库管理系统及数据库语言为工具,必须参与的人员是护。它们以数据库管理系统及数据库语言为工具,必须参与的人员是数据库设计员、数据库管理员及数据库程序员。数据库设计员、数据库管理员及数据库程序员。第二章第二章v

21、第3章数据模型293.1数据模型的基本概念3.2数据模型的四个世界3.3数据库的现实世界3.4概念世界与概念模型3.5信息世界与逻辑模型3.6计算机世界与物理模型第三章第三章数据模型描述数据的结构、定义在结构上的操数据模型描述数据的结构、定义在结构上的操纵以及约束条件。纵以及约束条件。3.1.1数据模型的三个层次数据模型按不同的层次分成三种类型v1.概念数据模型较为有名的概念模型有E-R模型、扩充的E-R模型、面向对象模型及谓词模型等。v2.逻辑数据模型较为成熟并被人们大量使用的有:层次模型、网状模型、关系模型、面向对象模型、谓词模型及对象关系模型等。v3.物理数据模型物理数据模型又称物理模型

22、,它是一种面向计算机物理表示的模型。物理模型给出了数据模型在计算机上物理结构与物理实现的表示。第三章第三章3.1.2数据模型的三项内容(1)数据结构数据结构(数据模式)为核心(2)数据操纵。数据模型中的数据操纵主要是建立在数据结构上对数据值的操作。(3)数据约束。数据模型中的数据约束主要描述数据结构中数据间的制约与依存关系以及数据动态变化的规则,以保证数据的正确、有效与相容。第三章第三章v第3章数据模型293.1数据模型的基本概念3.2数据模型的四个世界3.3数据库的现实世界3.4概念世界与概念模型3.5信息世界与逻辑模型3.6计算机世界与物理模型第三章第三章v3.2数据模型的四个世界数据模型

23、的四个世界数据模型可以将复杂的现实世界要求反映到数据库中的物理世界,这种反映是一个逐步转化的过程,它分为四个阶段,称为四个世界。由现实世界开始,经历概念世界、信息世界而至计算机世界,从而完由现实世界开始,经历概念世界、信息世界而至计算机世界,从而完成整个转化。成整个转化。由现实世界开始每到达一个新的世界都是一次质的飞跃和提高。第三章第三章v3.3数据库的现实世界数据库的现实世界现实世界是产生数据模型的物质基础。问题求解的对象(即问题对象)是事物,必须对事物作研究:事物是由其特性所组成的;事物间是有联系的,它们组成了规则;事物是处于不断变化中的;事物处于客观世界的特定环境中,受环境所制约的。第三

24、章第三章v3.4概念世界与概念模型概念世界与概念模型概念世界是一个抽象的、概念化的世界,概念世界一般用概念模型表示。概念模型目前常用的有E-R模型、扩充E-R模型、面向对象模型和谓词模型等四种。第三章第三章vE-R模型(Entity-Relationshipmodel)又称实体联系模型,它于1976年由PeterChen首先提出,这是一种概念化的模型,它将现实世界中的问题对象转化成实体、联系、属性等几个基本概念以及它们间的两种基本关系,并且用一种较为简单的图表示,叫做E-R图(Entity-Relationshipdiagram)第三章第三章v1E-R模型的基本概念1)实体(entity)2)

25、属性(attribute)3)联系(relationship)第三章第三章v两个实体集间的联系存在函数关系,它可有下面几种:v一一对应(onetoone):这种函数关系是常见的函数关系之一,它可以记为1 1。如学校与校长间的联系,一个学校与一个校长间相互一一对应。v一多对应(onetomany)或多一对应(manytoone):这两种函数关系实际上是同一种类型,它们可以记为1 m或m 1。如学生与其宿舍房间的联系是多一对应函数关系(反之,则为一多对应函数关系),即多个学生对应一个房间。v多多对应(manytomany):这是一种较为复杂的函数关系,可记为m n。如教师与学生这两个实体集间的教学

26、联系是多多对应函数关系。因为一个教师可以教授多个学生,而一个学生又可以受教于多个教师。第三章第三章v2E-R模型的图示法(见课本3.4详解)第三章第三章v3.5信息世界与逻辑模型3.5.1概述3.5.2关系模型概述3.5.3关系模型介绍第三章第三章v由于数据库系统不同的实现手段与方法,因此逻辑模型的种类很多,目前常用的有层次模型、网状模型、关系模型、面向对象模型、对象关系模型及谓词模型等。第三章第三章v3.5.2关系模型概述关系模型(relationalmodel)的基本数据结构是二维表,简称表(table)v3.5.3关系模型介绍关系是一种数学理论,在研究逻辑数据模型中运用了关系理论所得到的

27、一种模型称关系模型。关系模型由关系、关系操纵及关系约束等三部分组成。1.关系关系(1)表第三章第三章二维表一般满足下面7个性质:二维表中元组个数是有限的元组个数有限性;元组个数有限性;二维表中元组均不相同元组的唯一性;元组的唯一性;二维表中元组的次序可以任意交换元组的次序无元组的次序无关性;关性;二维表中元组的分量是不可分割的基本数据项元元组分量的原子性;组分量的原子性;二维表中属性名各不相同属性名唯一性;属性名唯一性;二维表中属性与次序无关属性的次序无关性(但属性的次序无关性(但次序一经确定则不能更改);次序一经确定则不能更改);二维表中属性列中分量具有与该属性相同值域分分量值域的同一性。量

28、值域的同一性。第三章第三章(3)键键是关系模型中的一个重要概念,它具有标识元组、建立元组间联系等重要作用。 键(key):在关系中凡能唯一最小标识元组的属性集称为该关系的键。 候选键(candidate key):关系中可能有若干个键,它们称为该关系的候选键。 主键(primary key):从关系的所有候选键中选取一个作为用户使用的键称为主键。一般主键也简称键。 外键(foreign key):关系A中的某属性集是另一关系B的键,则称该属性集为A的外键。关系中一定有键,因为如果关系中所有属性子集均不是键,则至少关系中属性全体必为键,因此也一定有主键。第三章第三章v(4)关系与ER模型关系的结

29、构简单,但它的表示范围广,E-R模型中的属性、实体、实体集及联系均分别可用关系中的属性、元组及关系表示。第三章第三章2.关系操纵关系操纵关系模型的数据操纵即建立在关系上的一些操作,如查询、删除、插入及修改等操作。第三章第三章3.关系中的数据约束关系中的数据约束关系模型允许有多类数据约束,它可分为两类共5种:第一类:静态约束一是数据模型中有关数据结构的约束。它有五种:(1)域约束域约束是关系中属性域的约束。(2)域间约束域间约束是(多个)关系中属性间值的约束。(3)键约束。由于键的重要性,需对它设置约束。(4)引用约束由于外键的重要性,它在关系的关联中起到了引领作用,需对它设置约束。(5)安全性

30、约束安全性约束是一种具有安全语义的特殊约束。第二类:动态约束,它有三种:(1)并发控制(2)故障恢复(3)一致性控制第三章第三章v3.6计算机世界与物理模型3.6.1数据库的物理存储介质3.6.2磁盘存储器及其操作3.6.3文件系统3.6.4数据库物理结构第三章第三章v3.6计算机世界与物理模型计算机世界与物理模型计算机世界是计算机系统与相应的操作系统的总称。在概念世界与信息世界所表示问题对象的概念、方法等最终均用计算机世界所提供的手段和方法实现。计算机世界一般用物理模型表示。物理模型(主要是物理模式)是指计算机系统的物理存储介质(特别是磁盘组织)、操作系统中的文件以及数据库物理结构三个层次。

31、它可用图3.13表示。图3.13 数据库物理模型的三个层次第三章v3.6.1数据库的物理存储介质与数据库有关的物理存储介质是由主存储器、磁盘存储器及磁带存储器等三个部分组成,而以磁盘存储器为主v3.6.2磁盘存储器及其操作1.磁盘存储器结构2.磁盘存储器的结构与操作第三章第三章v3.6.3文件系统文件系统是建立在磁盘之上的,它是数据库结构中数据的支撑实体,即数据库结构都按文件方式组织。目前,文件系统由操作系统管理,部分系统中的文件由数据库系统直接管理。v3.6.4数据库物理结构数据库存储空间组织在数据库中,数据存储空间组织统一由DBMS管理,它包括系统区和数据区,其中系统区有数据字典、日志信息

32、等,而数据区则由数据主体、相应联系信息与存取路径信息组成。第三章第三章图3.15 数据存储空间结构图第第4章章v第4章数据管理基础关系数据库管理系统与数据库管理员4.1 关系数据库管理系统关系数据库管理系统4.2关系数据库管理系统标准语言SQL4.3数据库管理与数据库管理员数据管理包括两大部分与三个分支:数据库管理系统软件;数据库语言工具;数据库管理员人员。第第4章章数据管理基础数据管理基础第第4章章v4.1关系数据库管理系统4.1.1关系数据库管理系统基本组成4.1.2数据定义功能4.1.3数据操纵功能4.1.4数据控制功能4.1.5数据交换功能4.1.6数据服务第第4章章v数据库管理系统是

33、管理数据库的一种软件,目前最为流行的是关系模型数据库管理系统简称关系数据库管理系统(RelationalDataBaseManagementSystem,RDBMS)v4.1.1关系数据库管理系统基本组成v关系数据库管理系统由五部分内容所组成,包括数据定义、数据操纵、数据控制、数据交图4.1RDBMS组成结构图第第4章章图4.1 RDBMS组成结构图v4.1.2数据定义功能关系数据库管理系统可以定义关系数据库的数据模式称数据定义(datadefinition)功能。它包括构造关系数据库以及基表、视图与物理数据库等图4.2 数据定义示意图第第4章章v4.1.3数据操纵功能关系数据库管理系统的数据

34、操纵(datamanipulation)功能是对其中的基表、视图的数据进行查询、删除、插入及修改的操作功能。1数据查询用户可以查询关系数据库基表中的数据,包括一个表内的查询以及多个表的查询。2.数据删除数据删除的基本单位是元组,其功能是将指定表内的指定元组删除3.数据插入在指定表中插入一个或多个元组4.数据修改数据修改是在一个表中修改指定的元组或列值第第4章章v4.1关系数据库管理系统4.1.1关系数据库管理系统基本组成4.1.2数据定义功能4.1.3数据操纵功能4.1.4数据控制功能4.1.5数据交换功能4.1.6数据服务v4.1.4数据控制功能数据库管理系统的数据控制包括安全性控制、完整性

35、控制、事务、并发控制及故障恢复等五个部分。下面分别介绍1安全性控制安全性控制所谓数据库安全性控制(securitycontrol)即保证对数据保证对数据库的正确访问与防止对数据库的非法访问库的正确访问与防止对数据库的非法访问(1)身份标识与鉴别(identificationandauthentication)(2)自主访问控制(DiscretionaryAccessControl,DAC)(3)审计(audit)v2完整性控制完整性控制1、完整性控制(integritycontrol)指的是数据库中数据正确性的维护(1)实体完整性规则(entityintegrityrule)这条规则要求基表上

36、的主键属性值不能为空值。(2)参照完整性规则(referenceintegrityrule)这条规则也是完整性中的基本规则,它表示不允许外键的值引用不存在的元组(3)域完整性规则(domainintegrityrule)(4)用户定义的完整性规则(userdefinedintegrityrule)2、完整性控制的功能(1)设置功能:须设置完整性规则(又称完整性约束条件),由系统或用户设置。(2)检查功能:必须有能力检查数据库中数据是否有违反完整性规则的现象出现。(3)处理功能:在出现有违反完整性规则的现象时须有即时处理能力。v3、触发器触发器(trigger)是近年来在数据库中使用较多的一种手

37、段,它起因于完整性控制,但目前已远远超出此范围。触发器一般由触发事件、触发动作与结果过程三部分组成,其中触发事件给出了触发条件,而结果过程是一个处理程序。触发条件一旦出现,触发器立刻启动触发动作,调用相应的结果过程对触发事件进行处理。v3.动态控制概述动态控制概述数据库程序运行时共享所带来的错误一般有三种:(1)不一致性(2)并发执行(3)计算机故障上述三种错误是可以防止与排除的:数据库的不一致性可以通过事务事务予以排除,并发执行所引发的破坏可通过并发控制并发控制予以排除,计算机故障所引发的破坏可通过故障恢复故障恢复予以排除。v4.事务事务1)事务的起由)事务的起由例4.4设有公司甲与公司乙,

38、乙因资金短缺周转不灵,向甲请求临时借款人民币5万元。经研究后甲同意出借。设它们分别在工商银行有账户余额为:A=200000元与B=3000元人民币,此时其应用P的操作可描述如下:Read(A);A:=A50000;Write(A);Read(B);B:=B+50000;Write(B);Stop。在执行应用P前A200000,B3000,其银行总账户余额为AB2000003000203000元,在上述操作执行完成后,A与B分别为:A150000B53000如果在执行时出现有非正常中止,会产生什么样的结果呢?在例4.5中如P执行流程至时有另一应用Q并发进入并中断了P的执行,此为P非正常中止。应用

39、Q是银行收支日报表,Q的执行结果是收支产生错误并导致了银行资金损失5万元。v这个例子告诉我们,数据库程序必须分割成若干个具有一致性、完整的操作序列单位,它要么全做,要么全不做,不允许出现非正常的中止。它是一个不可分割的、基本操作单位,它称为事务(事务(transaction)。v2)事务的概念)事务的概念(1)事务的性质原子性:事务是应用程序中的一个基本执行单位。一个事务内的所有数据库操作是不可分割的操作序列,这些操作要么全执行,要么全不执行。一致性:事务执行的结果将使数据库由一种一致性到达了另一种新的一致性。这两个性质保证了事务最基本的要求。隔离性:在多个事务并发执行时,事务要存取数据库中共

40、享数据,因此事务在执行期间会相互干扰。而事务隔离性表示,这种相互干扰不应存在,多个事务执行中,如同在单用户环境下执行一样。持久性:一个事务一旦完成其全部操作后,它对数据库的所有更新,将永久地反映在数据库中。不管以后发生的任何操作(包括故障在内),不应对保留这个事务执行的结果有任何影响(2)事务活动事务活动一般由四个部分内容组成,它们分别是:事务起始点:表示事务活动的开始。事务执行:表示事务的活动过程。事务正常结束点:表示事务活动的正常结束。事务非正常结束点:表示事务活动的非正常结束。(3)标志事务活动的三条事务语句事务是一种语义概念,在数据库应用编程时必须由程序员编写事务语句以控制事务活动。事

41、务活动中一般由三条事务语句控制,它们是置事务语句(SETTRANSACTION),事务提交语句(COMMIT)及事务回滚语句(ROLLBACK)。例4.5例4.4所示的应用程序P组成一个事务。在程序起始端为该事务的起始点,可标以SETTRANSACTION。该事务有一个正常结束点它可标以COMMIT。这样,应用程序P就改写成为一个事务如下:SETTRANSACTION;Read(A);A:=A50000;Write(A);Read(B);B:=B+50000;Write(B);COMMIT。3)事务的重要性)事务的重要性忽视的结果可能会带来严重的后果。下面对其进行分析。(1)脏数据(3)数据库

42、故障(2)数据现场破坏5.并发控制并发控制在数据库中多个应用以事务为单位一般通过操作系统并发执行。1)事务的并发执行)事务的并发执行多个事务按操作系统调度策略并行执行,此种执行称为并发执行。它的执行效率高,但不能保证事务ACID性质,因此事务执行一般不能采用此方法,但可有两种变通方法。v串行执行:以事务为单位,多个事务依次顺序执行,此种执行称为(事务)串行执行。这种方法能保证事务的ACID性质,能保证事务的正确执行。因此一般情况下事务执行只能采用此方法。但是它执行效率太低,因此不是一种理想的方法。v并发执行的可串行化:是否存在有一种技术,它既能并发执行(即效率高),又能保证事务正确执行(即满足

43、ACID),亦即在并发执行时像串行执行时一样(正确),这种技术是有的,它称为并发控制并发控制(concurretcontrol)技术。而此种执行称为并发事务的可串行化(serializability)。此种执行方法既能保证执行的高效率,又能保证事务ACID性质。v2)并发控制技术介绍)并发控制技术介绍例4.7民航订票问题。这是一个著名的并发控制例子。设有两个民航售票点,它们按下面事务T执行订票操作。事务T:SETTRANSACTIONReady/*y为数据库中机票余额*/yy-1/*卖出一张机票并修改余额*/WriteyCOMMIT在一般情况下,两个售票点分别按事务T执行进程T1与T2,如图4

44、.7所示。这是一种事务串行执行方法,因此执行正确性是得到保证的。接着,再看一个订票操作如下:(1)A售票点执行订票程序T1,通过网络在数据库中读出某航班机票余额为y=2。(2)B售票点执行订票程序T2,通过网络在数据库中也读出同一航班机票余额为y=2。(3)A售票点执行订票程序T1,卖出一张机票并修改余额y=y-1,即y=1并写回数据。(4)B售票点执行订票程序T2,卖出一张机票并修改余额y=y-1,即y=1并写回数据。在订票结束后发现,在数据库中余额为2张票,卖出了2张后还余1张票,这样就产生了错误。其具体执行过程如图4.8所示。v这是多个应用并发执行且又不作任何控制所引发的错误。原因是数据

45、库数据数据库数据y是一种共享数据是一种共享数据,T1与T2都能对它进行操作,而当T1执行中断T2开始执行后,T2对共享数据y作了修改,破坏了T1的数据现场数据现场,从而使得一旦T1重新执行,现场无法得到恢复,因此出现了错误。这是由事务并发执行不当,造成现场破坏而引起的错误。这违反了事务的隔离性。v但如何保证执行中数据库数据相互隔离呢?这就需要引入封锁机制封锁机制(locking)v所谓“封锁封锁”,就是事务对某些数据对象的操作实行某种专有的控制,在事务T需要对某些数据进行操作时,它必须提出申请,并对其加锁,在成功加锁后,即具有对此数据的操作权限与控制权限v一事务对数据A做操作前必须申请加锁,如

46、此时A正被他事务加锁,则申请不成功,必须等待,直至其他事务将锁释放后,才能加锁成功并执行操作,在对A操作完成后必须释放锁,此种事务称为合式(合式(wellformed)事务)事务。合式事务是具有并发控制能力的事务,它为正确的并发执行提供了保证。引入封锁机制从本质上解决了事务之间并发执行的问题,此种执行方法既能保证执行的高效率,又能保证事务ACID性质。即只要在执行数据库操作前、后对所操作的数据分别增加“加锁”与“解锁”两个操作:加锁操作:LOCK(x)解锁操作:UNLOCK(x)在例4.7中,订票程序T的合式事务为WT:SETTRANSACTIONLOCK(y)Readyyy-1WriteyC

47、OMMITUNLOCK(y)3)封锁粒度封锁粒度(granularity)即事务封锁的数据对象的大小,在关系数据库中封锁粒度一般有如下几种:属性(值)及属性(值)集;元组;表;物理页面(或物理块);数据库。v5)死锁与活锁封锁本身带来了一些麻烦,最主要的就是由封锁引起的死锁(死锁(deadlock)与活锁()与活锁(livelock)。所谓死锁死锁即事务间对锁的循环等待。也就是说,多个事务申请不同锁,而申请者均拥有一部分锁,而它又在等待另外事务所拥有的锁,这样相互等待,而造成它们都无法继续执行。一个典型的死锁例子如图4.10所示。在例中事务T1占有锁A,而申请锁B,事务T2占有锁B而申请锁A,

48、这样就出现了无休止地相互等待的局面。v而所谓活锁即某些事务永远处于等待状态,得不到解锁机会。解决活锁的最有效办法是采用“先来先执行”的控制策略。而解决死锁的办法目前常用的有如下几种:(1)预防法)预防法预防法即预先采用一定的操作方式,以避免死锁的出现。顺序申请法。即将封锁的对象按顺序编号,事务在申请封锁时按编号顺序(从小到大或反之)申请,这样能避免死锁发生。一次申请法。事务在执行开始时将它需要的所有锁一次申请完成,并在操作完成后一次性归还所有的锁。(2)死锁解除法)死锁解除法死锁解除法允许产生死锁,在产生后通过一定手段予以解决,常用的方法如下:定时法。对每个锁设置一个时限,当事务等待此锁超过时

49、限后即认为已产生死锁,此时调用解锁程序,以解除死锁。死锁检测法。在系统内设置一个死锁检测程序,该程序定时启动,检查系统中是否产生死锁,一旦发现产生死锁则调用解锁程序以解除死锁。6故障恢复故障恢复故障恢复亦称数据库故障恢复,它由计算机故障而导致事务非法中止且数据遭受破坏,由此须对数据库作恢复,这就是数据库故障恢复。数据库故障恢复指的是事务恢复及数据库磁盘数据破坏事务恢复及数据库磁盘数据破坏的恢复的恢复。其中事务恢复可保持事务的原子性,而数据库磁事务恢复可保持事务的原子性,而数据库磁盘数据破坏的恢复可保持事务的持久性盘数据破坏的恢复可保持事务的持久性。它一般采用三种技术:(1)数据转储数据转储用于

50、数据库数据遭受破坏的恢复。数据库数据遭受破坏的恢复。(2)日志(logging)(3)事务撤销与重做数据库故障恢复中的事务故障恢复主要使用事务撤销(UNDO)与事务重做(REDO)两种操作。第第4章章v4.1关系数据库管理系统4.1.1关系数据库管理系统基本组成4.1.2数据定义功能4.1.3数据操纵功能4.1.4数据控制功能4.1.5数据交换功能4.1.6数据服务v4.1.5数据交换功能数据交换(dataexchange)是数据库与用户间的数据交互。1数据交换模型数据交换是数据主体与数据客体间数据的交互过程。所谓数据客体即数据库,它是数据提供者,而数据主体是数据的使用者,它可以是数据处理中的

51、应用程序(进程、线程)或操作员(人),有时也可是另一个数据体。2数据交换的三种环境(1)单机集中式环(2)网络环境(3)互联网阶段:3数据交换的五种方式(1)人机交互方式(2)嵌入式方式(3)自含式方式(4)调用层接口(calllevelinterface)方式(5)Web方式4数据交换的七种接口5数据交换的七种管理6数据交换环境下的数据交换方式、数据交换接口与数据交换管理7.数据交换的流程数据交换的流程(1)数据交换准备(2)数据连接(3)数据交换(4)断开连接第第4章章v4.1关系数据库管理系统4.1.1关系数据库管理系统基本组成4.1.2数据定义功能4.1.3数据操纵功能4.1.4数据控

52、制功能4.1.5数据交换功能4.1.6数据服务v4.1.6数据服务操作性服务工具性服务信息服务4.2关系数据库管理系统标准语言SQL4.2.1SQL概貌4.2.2SQL的功能vSQL全称结构化查询语言(StructuredQueryLanguage),是1974年由Boyce和Chamberlin提出的,并在IBM公司SanJose研究实验室所研制的关系数据库管理系统SystemR上实现了这种语言,最初称为SEQUEL。接着,IBM公司又实现了商用系统SQL/DS与DB2,其中SQL/DS是在IBM公司中型机环境下实现的,而DB2则主要用于大型机环境。vSQL在1986年被美国国家标准化组织A

53、NSI批准为国家标准,1987年又被国际标准化组织(ISO)批准为国际标准,并经修改后于1989年正式公布,称为SQL89。此标准也于1993年被我国批准为中国标准。1SQL的数据定义功能的数据定义功能1、SQL的数据定义主要有如下几种功能:模式定义功能;基表定义功能;视图定义功能;索引定义功能。2SQL的数据操纵功能SQL的数据操纵主要有如下几种功能:数据查询功能;数据删除功能;数据插入功能;数据修改功能;数据的简单计算及统计功能。3SQL的数据控制功能SQL的数据控制主要有如下几种功能:数据的完整性约束功能;数据的安全性及存取授权功能;数据的事务功能。4SQL的数据交换功能SQL的四种交换

54、方式:SQL/BD嵌入式方式;SQL/PSM持久存储模块方式(又称自含式方式);SQL/CLI调用层接口方式;SQL/XMLWeb方式。SQL的三种数据交换管理:连接功能;游标功能;诊断功能。5数据服务功能数据字典信息模式管理。4.3数据库管理与数据库管理员4.3.1数据库管理4.3.2数据库管理员4.3.1数据库管理数据库管理数据库设计是由专门人员负责的,数据库生成及数据库运行维护管理则称为数据库管理(dataadministration)。数据库管理需要有专门人员负责,称为数据库管理员(dataadministrator)。数据库管理功能数据库管理功能。1数据库生成管理2数据库运行维护管理

55、4.3.2数据库管理员数据库管理员数据库管理是数据库开发五个阶段中的数据库编码及数据库运行维护的管理,这种管理主要靠人员,这种管理数据库的人员称为数据库管理员(DBA)。数据库管理员是一组人员,他们掌握了一定的数据库开发技术。数据库管理员的职能是:(1)负责数据库管理,即负责数据库的生成及数据库运行维护管理。(2)在数据库及其用户间沟通,即帮助用户使用数据库以及听取用户对数据库使用的反映。(3)制定数据库的使用规则并组织实施。第第5章章SQL数据操纵语句数据操纵语句v第5章SQL数据操纵语句5.1SQL的查询语句5.2SQL的更新语句5.3SQL的统计、计算及分类第第5章章SELECT语句由S

56、ELECT、FROM及WHERE等三个子句组成。SELECT子句又称目标子句,它给出查询的目标列,即SELECTr1,r2,rm。FROM子句又称范围子句,它给出查询所涉及的表,即FROMR1,R2,Rn。WHERE子句又称条件子句,它给出查询的逻辑条件,即WHEREF。WHERE子句中的条件F是一个逻辑值,它具有T(真)或F(假)之别。在SQL中SELECT语句可以用下列形式表示:SELECT,FROM,WHEREvWHERE子句具有嵌套能力。vWHERE子句中的逻辑条件具有复杂的表达能力。1SQL的基本查询语句的基本查询语句SQL的查询功能基本上是用SELECT语句实现的,下面说明SELE

57、CT语句的使用。(1)单表简单查询单表全列查询;单表的列查询;单表的行查询;单表的行与列查询。例5.1查询S的所有情况:SELECT*FROMS其中“*”表示表中所有列。例5.2查询全体学生名单。SELECTsnFROMS此例为选择表中列的查询。例5.3查询学号为990137的学生情况。SELECT*FROMSWHEREsno990137例5.4查询所有年龄大于20岁的学生学号与姓名SELECTsno,snFROMSWHEREsa20(2)常用谓词)常用谓词除比较谓词外,SELECT语句中还有若干谓词,谓词可以增强语句表达能力,它的值仅是T/F,这里介绍几个常见的谓词,它们是DISTINCT、

58、BETWEEN、LIKE、NULL。一般的谓词常用于WHERE子句中,但是DISTINCT则用于SELECT子句中。例5.5查询所有选修了课程的学生学号:SELECTDISTINCTsnoFROMSCSELECT后的DISTINCT表示在结果中去掉重复的sno值。例5.6查询年龄在18至21岁(包括18与21岁)的学生姓名与年龄:SELECTsn,saFROMSWHEREsaBETWEEN18AND21例5.7查询年龄不在18至21岁的学生姓名与年龄:SELECTsn,saFROMSWHEREsaNOTBETWEEN18AND21以上两例给出了WHERE子句中BETWEEN及NOTBETWEE

59、N的使用方法。例5.8查询姓名以A打头的学生姓名与所在系:SELECTsn,sdFROMSWHEREsnLIKEA%此例给出了WHERE中LIKE的使用方法,LIKE的一般形式是:NOTLIKE其中列名类型必须为字符串,字符串常量的设置方式是:字符%表示可以与任意长的字符相配,字符_(下横线)表示可以与任意单个字符相配;其他字符代表其本身。例5.9查询姓名以A打头,且第三个字符必为P的学生姓名与系别:SELECTsn,sdFROMSWHEREsnLIKEA_P%例5.10查询无课程分数的学号与课程号:SELECTsno,cnoFROMSCWHEREgISNULL此例给出了NULL的使用方法,N

60、ULL用于测试列值是否为空的谓词,其一般形式是:ISNOTNULL(3)布尔表达式)布尔表达式在WHERE子句中经常需要使用逻辑表达式,它一般由比较谓词通过NOT、AND与OR三个连接词构成,称为布尔表达式。布尔表达式组成了WHERE子句中的逻辑条件。例5.11查询计算机系年龄小于等于20岁的学生姓名:SELECTsnFROMSWHERENOTsd=csANDsa=20三个连接词的结合强度依次为NOT、AND及OR。表达式中若同时出现若干连接词,且有时要求不按结合强度连接则需加括号。(4)简单连接)简单连接多表查询涉及表间连接,其中简单的连接方式是表间等值连接,它可用WHERE子句设置两表不同

61、列间的相等关系,而这些列往往用的是表的外键。因此,在多表查询中须给出四个条件:目标列名由SELECT子句给出;所涉及的表名由FROM子句给出,有多个;已知条件由WHERE子句给出;表间连接由WHERE子句给出。下面用两个例子说明。例5.12查询修读课程号为C101的所有学生的姓名。这是一个涉及两张表的查询,它可以写为:SELECTSsnFROMS,SCWHERESCsnoSsnoANDSCcnoC101例5.13查询修读课程名为DATABASE的所有学生姓名。这是一个涉及三张表的查询,它可以写为:SELECTSsnFROMS,SC,CWHERESsnoSCsnoANDSCcnoCcnoANDC

62、cn=DATABASE(5)自连接)自连接有时在查询中需要对相同的表进行连接,为区别两张相同的表,须对一个表用两个别名,然后按照简单连接方法实现。现举例说明。例5.14查询至少修读s5所修读的一门课的学生学号。图5.1例5.14自连接示例SELECTFRISTsnoFROMSCFRIST,SCSECONDWHEREFIRSTcnoSECONDcnoANDSECONDsnos5它可以用图5.1表示。()()结果排序结果排序查询结果可按某种顺序排列,此时须在语句后加一个排序子句ORDERBY,它具有下面的形式:ORDERBYASC/DESC其中给出了所需排序的列名,而ASC/DESC则分别表示升序

63、与降序。有时为方便起见,ASC可以省略。例5.15查询计算机系所有学生名单并按学号升序排列。SELECTsno,snFROMSWHEREsdcsORDERBYsnoASC()查询结果的赋值可以将查询结果赋值到另一张表中,这可用赋值子句表示,它的形式是:INTO它一般直接放在SELECT子句后。在作赋值时的表中列必须与SELECT子句中的列一致。例5.16将学生的学号与姓名保存到表S1中。SELECTsno,snINTOS1FROMS注意:表S1的框架必须为S1(sno,sn)。2分层结构查询分层结构查询SQL是分层结构的,即在SELECT语句的WHERE子句中可以嵌套使用SELECT语句。目前

64、常用的嵌套关系有两种:一种是IN嵌套;另一种是ANY(ALL)嵌套。(1)谓词IN的使用其表示形式为:(元组)IN(SELECT语句)IN谓词具有嵌套形式,这是因为SELECT语句的WHERE子句中又出现SELECT语句,这就形成了SELECT语句的嵌套使用。例5.17查询修读课程号为C23的所有学生姓名。SELECTSsnFROMSWHERESsnoIN(SELECTSCsnoFROMSCWHERESCcnoC23)在此例子中WHERE子句具有xS的形式,其中Ssn为元素x,IN为“属于”(),而嵌套的SELECT语句SELECTSCsnoFROMSCWHERESCcnoC23v通过WHER

65、E子句中的IN谓词可以实现嵌套,这种嵌套可以有多重,下面的例子即二重嵌套。例5.18 查询修读课程名为Java的所有学生姓名。SELECT snFROM SWHERE sno IN (SELECT sno FROM SC WHERE cno IN (SELECT cno FROM C WHERE cnJava)(2)限定比较谓词的使用在元素与集合的关系中还有更为复杂的情况,它们是元素与集合中元素的比较关系,可用带有比较符的ANY与ALL表示。其中谓词ANY表示子查询结果集中某个值,而谓词ALL则表示子查询结果集中的所有值。这样,“ANY”表示大于子查询结果集中的某个值,“ALL”表示大于子查询

66、结果集中的所有值。其他如“ANY”“ALL”“ANY”“ALL”“ANY”“ALL”“ANY”“ALL”“!ANY”“!ALL”等。注意,现在经常用SOME代替ANY,两者具有相同效果,下面用两个例子说明。例5.19查询学生成绩大于C487课程号中所有学生成绩的学生学号。SELECTsnoFROMSCWHEREgALL(SELECTgFROMSCWHEREcno=C487)例5.20查询学生成绩大于等于C326课程号中的至少一位学生成绩的学生学号。SELECTsnoFROMSCWHEREgANY(SELECTgFROMSCWHEREcno=C326)v5.2SQL的更新语句的更新语句第第5章章

67、SQL数据操纵语句数据操纵语句v第5章SQL数据操纵语句5.1SQL的查询语句5.2SQL的更新语句5.3SQL的统计、计算及分类SQL的更新功能包括删除、插入及修改等三种操作。1SQL的删除功能SQL的删除语句一般形式为:DELETEFROMWHERE其中,DELETE指明该语句为删除语句,FROM与WHERE的含义与SELECT语句中的相同。例5.21删除学生WANG的记录。DELETEFROMSWHEREsnWANG2SQL的插入功能SQL插入语句的一般形式为:INSERTINTO,VALUES(,)该语句的含义是执行插入操作,将VALUES所给出的值插入INTO所指定的表中。插入语句还

68、可以将某个查询结果插入至指定表中,其形式为:INSERTINTO,例5.22插入一个选课记录(S13207,C213,75)。INSERTINTOSC(sno,cno,g)VALUES(S13207,C213,75)例5.23将SC中成绩及格的记录插入到SC1中。INSERTINTOSC1(sno,cno,g)(SELECT*FROMSCWHEREg=60)3SQL的修改功能SQL的修改语句一般形式为:UPDATESET表达式,表达式WHERE该语句的含义是修改(UPDATE)指定基表中满足(WHERE)逻辑条件的元组,并把这些元组按SET子句中的表达式修改相应列上的值。第第5章章例5.24将

69、学号为S13507的学生系别改为cs。UPDATESSETsdcsWHEREsnoS13507例5.25将数学系学生的年龄均加1岁。UPDATESSETsasa+1WHEREsdma第第5章章SQL数据操纵语句数据操纵语句v第5章SQL数据操纵语句5.1SQL的查询语句5.2SQL的更新语句5.3SQL的统计、计算及分类第第5章章v5.3SQL的统计、计算及分类的统计、计算及分类可在SQL的查询语句中插入计算、统计、分类的功能以增强数据查询能力。1统计功能统计功能SQL的查询中可以插入一些常用统计功能,它们能对集合中的元素做下列计算:(1)COUNT:集合元素个数统计;(2)SUM:集合元素的

70、和(仅当元素为数值型);(3)AVG:集合元素平均值(仅当元素为数值型);(4)MAX:集合中最大元素(仅当元素为数值型);(5)MIN:集合中最小元素(仅当元素为数值型)。例5.26给出全体学生数。SELECTCOUNT(cno)FROMS例5.27给出学生S14096修读的课程数。SELECTCOUNT(cno)FROMSCWHEREsnoS14096例5.28给出学生S11246所修读课程的平均成绩。SELECTAVG(g)FROMSCWHEREsnoS11246第第5章章v2计算功能计算功能SQL查询中可以插入简单的算术表达式如四则运算功能,下面举几例说明。例5.29给出修读课程为C2

71、39的所有学生的学分级(即学分数*3)。SELECTsno,cno,g3FROMSWHEREcnoC239例5.30给出计算机系下一年度学生的年龄。SELECTsn,sa+1FROMSWHEREsdcs第第5章章3分类功能SQL语句中允许增加两个子句。GROUPBYHAVING此两子句可以对SELECT语句所得到的元组集合分组(用GROUPBY子句),并还可设置逻辑条件(用HAVING子句)。下面举几例说明。例5.31给出每个学生的平均成绩。SELECTsno,AVG(g)FROMSCGROUPBYsno例5.32给出每个学生修读课程的门数。SELECTsno,COUNT(cno)FROMSC

72、GROUPBYsno第第5章章例5.33给出所有超过五个学生所修读课程的学生数。SELECTcno,COUNT(sno)FROMSCGROUPBYcnoHAVINGCOUNT(sno)5例5.34按总平均值降序给出所有课程都及格但不包括C220的所有学生总平均成绩。SELECTsno,AVG(g)FROMSCWHEREcno!=C220GROUPBYsnoHAVINGMIN(g)60ORDERBYAVG(g)desc第第6章章SQL数据控制语句数据控制语句第6章SQL数据控制语句6.1SQL的数据控制功能6.2SQL的安全性控制语句6.3SQL的完整性控制语句6.3.1SQL完整性控制语句*6

73、.3.2触发器语句6.4SQL的事务语句6.5SQL的故障恢复操作第第6章章6.1SQL的数据控制功能的数据控制功能SQL的数据控制语句有如下几方面:1安全性控制2完整性控制3事务功能4故障恢复第第6章章第6章SQL数据控制语句6.1SQL的数据控制功能6.2SQL的安全性控制语句6.3SQL的完整性控制语句6.3.1SQL完整性控制语句*6.3.2触发器语句6.4SQL的事务语句6.5SQL的故障恢复操作第第6章章6.2SQL的安全性控制语句的安全性控制语句在SQL中提供了基本的数据库安全支持,它们是:自主访问控制与授权功能。数据库安全涉及操作、数据域与用户三部分基于这三部分,SQL提供了下

74、面的一些安全性功能语句:1.授权语句授权语句SQL提供了授权语句,其功能是将指定数据域数据域的指定操作操作授予指定的用户用户,其语句形式如下:GRANTONTOWITHGRANTOPTION其中WITHGRANTOPTION表示获得权限的用户还能获得传递权限,即能将获得的权限传递给其他用户。例6.1GRANTSELECT,UPDATEONSTOXULINWITHGRANTOPTION表示将表S上的查询与修改权授予用户徐林(XULIN),同时也表示用户徐林可以将此权限传递给其他用户。第第6章章2.回收语句回收语句SQL提供了回收语句,它表示用户A将某权限授予用户B,则用户A也可以在它认为必要时将

75、权限从B中收回。收回权限的语句称为回收语句,其语句形式如下:REVOKEONFROMRESTRICT/CASCADE语句中带有CASCADE表示回收权限时要引起连锁回收,而RESTRICT则表示不存在连锁回收时才能回收权限,否则拒绝回收。例6.2REVOKESELECT,UPDATEONSFROMXULINCASCADE表示从用户徐林中收回表S上的查询与修改权,并且是连锁收回。第第6章章3.角色角色SQL提供了角色(role)功能,角色是一组固定操作权限。之所以引入角色,是为简化操作权限管理。角色分类有3种,它们是CONNECT、RESOURCE和DBA,其中每个角色拥有一定的操作权限。第第6

76、章章v(1)CONNECT权限。该权限是用户的最基本权限,它又称public,每个登录用户至少拥有CONNECT权限。CONNECT权限包括如下内容:可以访问数据库,修改口令;可以查询、更新经授权的其他用户的表;可以查询、更新自己拥有的表;可以创建视图或定义表的别名。v(2)RESOURCE权限。该权限是在CONNECT基础上的一种权限,它拥有CONNECT的操作权外,还有创建表及表上索引及在该表上所有操作的权限,以及对该表所有操作作授权与回收的权限。v(3)DBA权限。DBA拥有最高操作权限,它拥有CONNECT与RESOURCE权限外,能对所有表的数据进行操纵,并具有控制权限与数据库管理权

77、限。它又称SYSTEM。DBA通过角色授权语句将用户及相应角色登录,此语句形式如下:GRANT角色名TO此语句执行后,相应用户即拥有其指定的角色。同样,DBA可用REVOKE语句取消用户的角色,此语句形式如下:REVOKE角色名FROM第第6章章例6.3GRANTCONNECTTOXULIN此语句表示将CONNECT权授予用户XULIN。例6.4REVOKECONNECTFROMXULIN此语句表示从用户徐林处收回CONNECT权限。4.身份标识与鉴别身份标识与鉴别ISOSQL中未提供身份标识与鉴别功能语句,但在一般数据库产品中均有此项功能语句,它并不独立出现而是依附于用户登录语句中。第第6章

78、章v5.审计SQL中有关审计功能以及审计内容如下(1)审计事件。(2)审计内容。(3)审计操作。例6.5AUDITUPDATE,DELETEONS此语句表示对基表S设置修改与删除的审计。例6.6NONAUDIT DELETEONS此语句表示取消对表S的删除审计。在ISOSQL标准中无审计功能,上面所介绍的审计功能是大多企业级SQL的审计功能。第第6章章第6章SQL数据控制语句6.1SQL的数据控制功能6.2SQL的安全性控制语句6.3SQL的完整性控制语句6.3.1SQL完整性控制语句*6.3.2触发器语句6.4SQL的事务语句6.5SQL的故障恢复操作第第6章章6.3SQL的完整性控制语句的

79、完整性控制语句6.3.1SQL完整性控制语句完整性控制语句SQL完整性控制语句一般用于实体完整性规则设置、参照完整性规则设置、域完整性规则设置以及用户定义的完整性规则设置,它包括如下内容:1.实体完整性规则设置实体完整性规则设置实体完整性规则设置主要用于对表的主键进行设置。它可用下面的短句表示:PRIMARYKEY它一般定义在创建表语句的后面。第第6章章2.参照完整性规则设置参照完整性规则设置参照完整性规则设置主要用于对表的外键进行设置。它可用下面形式的短句表示:FOREIGNKEYREFERENCEONDELETEONUPDATE其中,第一个是外键,而第二个则是参照表中的主键,而参照动作有五

80、个,它们是:NOACTION、CASCADE、RESTRICT、SETNULL及SETDEFAULT,分别表示无动作、动作受牵连、动作受限、置空及置默认值等。其中,动作受牵连表示在删除(或修改)元组时相应表中的相关元组一起删除(或修改),而动作受限则表示在删除(或修改)时仅限于指定表的元组。它们一般也定义在创建表语句的后面。第第6章章3.域完整性规则设置域完整性规则设置域完整性规则设置可以约束表中列的数据域范围与条件。它可有多种方法,它一般放在创建表语句中列定义的后面。(1)CHECK短句CHECK:其中约束条件为一个逻辑条件。(2)默认值短句DEFAULT默认值表示若对应列为空则选用中的数据

81、。该约束定义在列后面。(3)列值唯一可在列定义后给出UNIQUE以表明该列取值唯一。(4)不允许取空值可在列定义后给出NOTNULL以表明该列值为非空。第第6章章4用户定义完整性规则设置用户定义完整性规则设置用户定义完整性规则设置主要用于数据库中表内及表间的语法语义约束,它有两种表示形式:(1)检查约束用于对表内列间设置语义约束,所使用的短句形式如下:CHECK它一般定义在创建表的语句后,其约束条件可以是布尔表达式。第第6章章例6.7建立下面的断言:CREATEASSERTIONstudent-constraintCHECK(sno90000ANDsno99999)CHECK(sa29)CHE

82、CK(Ssd!=csORCcn=mathmaticlogic)ANDSsnoSCsnoANDSCcnoCcno)在此例中是建立了三个完整性约束条件:学号必须在9000099999之间;学生年龄必须小于29岁;计算机科学系学生必须修读数理逻辑课。第第6章章第6章SQL数据控制语句6.1SQL的数据控制功能6.2SQL的安全性控制语句6.3SQL的完整性控制语句6.3.1SQL完整性控制语句*6.3.2触发器语句6.4SQL的事务语句6.5SQL的故障恢复操作第第6章章*6.3.2触发器语句触发器语句主要用于完整性规则的处理。在SQL中有关触发器的语句有两条,即创建触发器与删除触发器。触发器功能是

83、SQL99中列入的。下面介绍这两个触发器的语句。1.创建触发器语句触发器的触发行为是一种复杂的动作,它有触发条件、触发动作及结果过程,还包括有多种触发环境要求,如触发目标、触发操作、触发时间及触发频度等。在SQL99中创建触发器语句的一般形式如下:CREATETRIGGER,ON,REFERENCING,WHEN第第6章章例6.8表Teacher中有列:tno、tn、job、salary。在job列上创建一个名为update-sal的触发器。该触发器的触发事件是“修改教师职务工资,如教师晋升为教授”,其调用的过程是“工资自动转为15000元”。CREATETRIGGERupdate-sal/*

84、定义一个触发器,其名字为update-sal*/AFTERUPDATEOFjobONteacher,/*该触发器的触发动作时间是AFTER,该触发器的触发事件是表Teacher上的job列修改操作*/REFERENCINGNEWASnew/*定义新值变量别名*/FOREACHROW,/*为行级触发*/WHEN(newJob=教授)/*某教师晋级为教授*/BEGINUPDATEteacherSETsalary15000WHEREtnonewtno/*工资自动转为15000元*/END;第第6章章例6.9在学生数据库表S中的sa列上,若出现sa50或sa50ORsa0)BEGINPrint:err

85、or:13;END;第第6章章第6章SQL数据控制语句6.1SQL的数据控制功能6.2SQL的安全性控制语句6.3SQL的完整性控制语句6.3.1SQL完整性控制语句*6.3.2触发器语句6.4SQL的事务语句6.5SQL的故障恢复操作第六章第六章在SQL中,应用程序所嵌入的事务语句有三个,它们是一个置事务语句与两个事务结束语句。1.置事务语句SETTRANSACTIONSETTRANSACTION;此语句表示事务从此句开始执行,此语句也是事务回滚的标志点。在大多数情况下,可以不用此语句,对每个事务结束后的数据库的操作都包含着一个新事务的开始。第六章第六章2.事务提交语句COMMITCOMMI

86、TTRANSACTION;当前事务正常结束,用此语句通知系统,此时系统将所有磁盘缓冲区中数据写入磁盘内在不用“置事务”语句时,同时表示开始一个新的事务。3.事务回滚语句ROLLBACKROLLBACKTRANSACTION;当前事务非正常结束,用此语句通知系统,此时系统将事务执行中的Write(包括update、delete)操作结果全部撤销,将事务回滚至事务开始处(即置事务语句处)并准备重新开始执行事务。第六章第六章v6.5SQL的故障恢复操作的故障恢复操作v故障恢复的三大功能是:事务的撤销/重做、复制及日志。其中,事务的撤销与重做一般用UNDO与REDO语句,而其余两个功能均用数据服务,它

87、们在国际标准SQL中的均无此类操作,但是在一般产品中都有。第第7章章SQL数据定义语句数据定义语句第7章SQL数据定义语句7.1数据定义框架介绍7.2SQL的数据定义语句数据定义可分为若干层次:1上层数据库模式层2中层表结构层3底层列定义层第第7章章SQL数据定义语句数据定义语句第7章SQL数据定义语句7.1数据定义框架介绍7.2SQL的数据定义语句7.2.1SQL的模式定义语句7.2.2SQL的表定义语句7.2.3带完整性约束的表定义语句7.2.4SQL的索引定义语句7.2.5SQL中的视图语句第七章第七章7.2SQL的数据定义语句的数据定义语句本节中讲述用SQL定义数据模式、基表及索引、最

88、终定义视图。1模式定义模式定义模式定义由CREATESCHEMA完成,其形式为:CREATESCHEMAAUTHORIZATION该语句共有两个参数,分别是模式名及用户名,它们给出了模式的标识及其创建者,而其真正结构则由模式后所定义的模式元素给出。例7.1学生数据库的模式可定义如下:CREATESCHEMA studentAUTHORIZATIONlin第七章第七章2模式删除模式删除模式删除可由DROPSCHEMA完成,其形式为:DROPSCHEMA,参数“删除方式”一共有两种,一种是连锁式或称级联式:cascade,另一种是受限制:restrict,其中cascade表示删除与模式所关联的模

89、式元素,而restrict则表示只有在模式中无任何关联模式元素时才能删除。第七章第七章例7.2学生数据库模式可删除如下:DROPSCHEMAstudentcascade该语句执行后则删除模式及与其关联的所有模式元素。第七章第七章7.2SQL的数据定义语句1017.2.1SQL的模式定义语句7.2.2SQL的表定义语句7.2.3带完整性约束的表定义语句7.2.4SQL的索引定义语句7.2.5SQL中的视图语句第七章第七章v7.2.3带完整性约束的表定义语句v在SQL中,完整性规则设置除断言外往往与表定义语句捆绑在一起,它们以短句的形式置于表或列后。其中主键、外键及检查短句设置于表定义后,而UNI

90、QUE、NOTNULL及CHECK短句则放置于列定义后。这种带完整性约束的表定义语句才是完整的表定义语句。第七章第七章7.2.2SQL的表定义语句1、表的定义、表的定义可以通过创建表(CREATETABLE)语句以定义一个表的框架,其形式为:CREATETABLE()其他参数其中列定义有如下形式:第七章第七章例7.3学生数据库的三张表可定义如下:CREATETABLES(snoCHAR(5),snVARCHAR(20),sdCHAR(2),saSMALLINT)CREATETABLEC(cnoCHAR(4),cnVARCHAR(30),pcnoCHAR(4)CREATETABLESC(snoC

91、HAR(5),cnoCHAR(4),gSMALLINT)第七章第七章2、表的更改、表的更改可以通过更改表语句(ALTERTABLE)扩充或删除基表的列,从而构成一个新的基表框架,其中增加列的形式为:ALTERTABLEADD例7.4可以在表S中添加一个新的列sex,并可用如下形式表示:ALTERTABLESADDsexSMALLINT而删除列的形式为:ALTERTABLEDROP例7.5在表S中删除列sa,可用如下形式表示:ALTERTABLESROPDsaSMALLINT第七章第七章3表的删除可以通过删除表(DROPTABLE)语句以删除一个基表,包括表的结构连同该表的数据、索引以及由该基表

92、所导出的视图并释放相应空间。删除表的形式为:DROPTABLE例7.6可用如下形式删除表S:DROPTABLES第七章第七章7.2SQL的数据定义语句1017.2.1SQL的模式定义语句7.2.2SQL的表定义语句7.2.3带完整性约束的表定义语句7.2.4SQL的索引定义语句7.2.5SQL中的视图语句第七章第七章7.2.3带完整性约束的表定义语句在SQL中,完整性规则设置除断言外往往与表定义语句捆绑在一起,它们以短句的形式置于表或列后。其中主键、外键及检查短句设置于表定义后,而UNIQUE、NOTNULL及CHECK短句则放置于列定义后。这种带完整性约束的表定义语句才是完整的表定义语句。第

93、六章第六章例例7.7例例7.3所示的学生数据库三张表可扩充成带完整性约束的表定义语句如下:所示的学生数据库三张表可扩充成带完整性约束的表定义语句如下:CREATETABLES(snoCHAR(5)NOTNULLsnCHAR(20)sdCHAR(2)saSMALLINTCHECK(sa=0)PRIMARYKEY(sno)CREATETABLEC(cnoCHAR(4)NOTNULLcnCHAR(30)pcnoCHAR(4)PRIMARYKEY(cno)CREATETABLESC(sn(oCHAR(5)NOTNULLcnoCHAR(4)NOTNULLgSMALLINTCHECK(g=0ANDg=10

94、0)PRIMARYKEY(sno,cno)FOREIGHKEY(sno)REFERENCESS(sno)FOREIGNKEY(cno)REFERENCESC(cno)第七章第七章7.2SQL的数据定义语句1017.2.1SQL的模式定义语句7.2.2SQL的表定义语句7.2.3带完整性约束的表定义语句7.2.4SQL的索引定义语句7.2.5SQL中的视图语句第七章第七章在SQL中可以对表建立索引。索引的建立可以通过建立索引(CREATEINDEX)语句实现,该语句可以按指定表名、指定列以及指定顺序(升序或降序)建立索引。其形式如下:CREATEUNIQUECLUSTERINDEXON(,)语句

95、中UNIQUE为可选项,在建立索引中若出现UNIQUE,则表示不允许两个元组在给定索引中有相同的值。CLUSTER表示所建立的索引是集簇索引。所谓集簇索引是指索引项的顺序与表中记录的物理顺序一致的索引组织。在最经常查询的列上可建立集簇索引以提高查询效率。语句中顺序可按升序(ASC)或降序(DESC)给出。默认时为升序。第七章第七章例例7.8在S(sno)上建立一个按升序排序的唯一性的索引XSNO。CREATEUNIQUEINDEXXSNOONS(sno)例例7.9在SC上建立一个按(sno,cno)升序排列、名为XSC的索引。CREATEINDEXXSCONSC(sno,cno)例例7.10在

96、S(sno)上建立集簇索引STUSN,且S表上记录将按sno值的升序排序。CREATECLUSTERINDEXSTUSNONS(sno)在SQL中可以用删除索引(DROPINDEX)语句以删除一个已建立的索引:DROPINDEX例例7.11将已建立的名为XSNO的索引删除。DROPINDEXXSNO第七章第七章7.2SQL的数据定义语句1017.2.1SQL的模式定义语句7.2.2SQL的表定义语句7.2.3带完整性约束的表定义语句7.2.4SQL的索引定义语句7.2.5SQL中的视图语句第七章第七章SQL中有关视图的语句有“创建视图”与“删除视图”语句,对视图的查询则与一般对基表的查询一样,

97、而视图的更新操作则较为复杂,一般很少使用。1视图定义视图定义SQL的视图可用创建视图语句定义,其一般形式如下:CREATEVIEW(,)AS例7.12定义一个计算机系学生的视图。CREATEVIEWCSS(SNO,SN,SD,SA)AS(SELECT*FROMSWHEREsdcs)第七章第七章v例例7.13定义学生姓名和他修读的课程名及成绩的视图。定义学生姓名和他修读的课程名及成绩的视图。vCREATEVIEWSCG(SN,CN,G)vAS(SELECTSsn,Ccn,SCgvFROMS,SC,CvWHERE SsnoSCsnoANDSCcnoCcno)v例例7.14定义学生学号、姓名及其平均

98、成绩的视图。定义学生学号、姓名及其平均成绩的视图。vCREATEVIEWSG(SNO,SN,AVG)vAS(SELECTsno,sn,AVG(g)vFROMS,SCvWHERE SsnoSCsnovGROUPBYsno)v视图一般定义在基表上,但也可以定义在基表及其他已定义的视图之上。视图一般定义在基表上,但也可以定义在基表及其他已定义的视图之上。v例例7.15定义计算机系学生姓名和他修读的课程名及成绩的视图。定义计算机系学生姓名和他修读的课程名及成绩的视图。vCREATEVIEWSCG-CS(sn,cn,g)vAS(SELECTSCGSN,SCGCN,SCGGvFROMSCGvWHERE s

99、dcs)vSQL的视图可以用取消视图语句删除,其形式如下:的视图可以用取消视图语句删除,其形式如下:vDROPVIEWv例例7.16删除已建立的视图删除已建立的视图SG。vDROPVIEWSGv取消视图表示不仅取消该视图,还取消由该视图所导出的其他视图。取消视图表示不仅取消该视图,还取消由该视图所导出的其他视图。2视图查询视图查询在创建视图后可像基表一样对视图进行查询。例7.17用已定义视图CSS作查询操作,查询计算机系中年龄大于20岁的学生姓名。SELECTSNFROMCSSWHEREsa20对于此查询,在实际操作时需将该查询转换成为对基表的查询,即用视图CSS的定义将此查询转换为:SELE

100、CT snFROMSWHEREsdcsANDsa20第第8章章SQL数据交换及服务数据交换及服务第8章SQL数据交换及服务8.1数据交换接口管理中的SQL语句8.1.1连接管理语句8.1.2游标管理语句8.1.3诊断管理语句8.1.4Web管理8.2SQL的四种数据交换方式8.3数据服务第第8章章8.1.1连接管理语句连接管理语句1连接语句连接语句连接语句(connectstatement)用于建立数据主、客体(即数据库服务器与客户机)间的虚拟逻辑通路,它包括连接名、数据库服务器名及客户机名。其语句形式为:CONNECTTOASUSER2置连接语句置连接语句置连接语句(setconnect)用

101、于分配连接资源(包括网络资源及相应内存资源)激活连接,以建立连接的物理通路。其语句形式为:SETCONNECT 3.断开连接语句断开连接语句断开连接语句(disconnectstatement)用于断开已建立的物理连接,归还资源。其语句形式为:DISCONNECT第第8章章8.1.2游标管理语句游标管理语句在游标管理中一共设有四条语句,它们是:(1)定义游标。)定义游标。为SELECT语句的结果集合定义一个命名游标。其形式为:DECLARECURSORFOR(2)打开游标)打开游标。在游标定义后当使用数据时需打开游标,此时游标处于激活状态并指向集合的第一行,其语句形式为:OPEN(3)推进游标

102、。)推进游标。将游标定位于集合中指定的行,并从该行取值,送入应用程序变量中。FETCHFROMINTONEXT|PRIOR|FIRST|LAST|ABSOLUTEn|RELATIVEn。第第8章章(4)关闭游标。)关闭游标。游标使用完后需关闭,其语句形式为:CLOSE游标管理语句一般的使用流程是:定义游标;打开游标准备使用;推进游标以取得数据,在此阶段往往与应用程序混合使用,并构成循环;在使用完毕后关闭游标。第第8章章8.1.3诊断管理语句诊断管理语句诊断管理语句主要用于获取SQL语句执行后的状态。它与游标管理语句可以匹配使用以利于数据交换的顺利执行。在诊断管理中一般仅有一个SQL语句,即获取

103、诊断语句,该语句主要用于获取在诊断区域内语句执行状态的信息。其语句形式是:GETDIAGNOSTICS其中“SQL诊断信息”是::=statement|state它包含两个内容,即语句或状态,也就是说SQL诊断信息给出所需获取信息的语句名或状态。其中状态为0表示SQL语句执行成功,而非0则表示执行失败。第第8章章8.1.4Web管理管理Web管理主要实现Web中HTML(网页数据)与程序设计语言间的接口,再通过它利用调用层接口实现两数据库接口。它使用一种中间工具,目前尚未有统一的标准,常用的是:(1)ASP此种方式目前较为流行,它是基于微软的方式,适用于SQLServer系列及其他微软产品。在

104、微软公司的Windows环境下,基于Web的开发工具ASP可以实现HTML(网页数据)与程序设计语言间的接口。ASP由脚本语言VBScript(JavaScript)及若干组件组成,其中脚本语言可插入HTML中,从而实现HTML(网页数据)与脚本程序设计语言VBScript(JavaScript)间的接口,再通过调用层接口ADO实现与数据库接口。(2)JSP此种方式是基于UNIX及Java的方式,目前适用于UNIX平台、采用Java的数据库系统。JSP是Sun公司于1996年推出的一种基于Java的Web管理工具,它具有脚本功能,能嵌入HTML。JSP是类似于ASP的另一种Web管理工具。(3

105、)PHP这又是一种Web管理方式,此种方式目前流行于HTML与MySQL数据库中。这三种方式以ASP方式使用最为广泛,它也是SQLServer2008中使用的方式。第第8章章SQL数据交换及服务数据交换及服务第8章SQL数据交换及服务8.1数据交换接口管理中的SQL语句8.2SQL的四种数据交换方式8.2.1人机交互方式8.2.2自含式方式及SQL/PSM8.2.3调用层接口方式及SQL/CLI接口8.2.4Web方式8.3数据服务8.2SQL的四种数据交换方式的四种数据交换方式SQL的四种数据交换方式:人机交互方式、自含式方式、调用层接口方式及Web方式等,其中嵌入方式已趋于淘汰。8.2.1

106、人机交互方式人机交互方式人机交互方式是人与数据库直接交互的方式,它是最原始、最简单,也是最方便的一种方式,因此在数据库系统出现时就存在此种方式。此种方式即操作员直接用SQL语句与数据库进行交互.v8.2.2自含式方式及SQL/PSM一个完整的自含式SQL大致包括如下内容:(1)SQL的基本内容:SQL的数据定义、数据操纵及数据控制等语句。(2)程序设计语言中的主要成分:如常量、变量、数据类型、表达式、控制类语句等。(3)SQL中数据交换部分内容:游标、诊断等。(4)服务性内容:服务性的函数库、类库、存储过程等。自含式SQL构成一种完整的语言,它将传统的程序设计语言与SQL相结合,其数据同时具有

107、集合量与标量形式。这种语言可以编程,它们以过程或模块形式长久存储于服务器内并供应用程序调用。例8.1关于应用与游标、诊断的实例。declareabccursorforselectsnfromS/*定义游标*/openabc/*打开游标*/fetchfirstfromabcintoy/*游标的使用*/for(x=0,xn,x=x+1)getdiagnostics(state)ifstate=0处理snfetchnextfromabcintoyelseleavecloseabc/*关闭游标*/8.2.3调用层接口方式及SQL/CLI接口(1)SQL99中的SQL/CLI这是调用层接口的国际标准。(

108、2)ODBC这是微软的标准,并有相应产品,它适用于SQLServer及其他多种微软产品,如Access、VisualFoxPro等,从标准角度看ODBC与SQL/CLI相近。此后,微软又在ODBC基础上开发了ADO及ADO.NET等产品,它们在使用上更为简单方便。(3)JDBC这是UNIX下基于Java的标准并有相应产品,它适用于Oracle等系统,JDBC从标准角度看也与SQL/CLI相近。8.2.4Web方式Web方式是互联网Web站点中动态网页的编程方式,它的数据交换是网页数据与数据库数据间的数据交互。一般用ASP与ADO完成Web方式的数据交换,它需经过下面几个步骤:动态网页提出数据访

109、问要求;使用嵌入于HTML中的脚本语言编程;程序调用ADO,实现对网中数据库结点的数据访问;HTMLASPADODB图8.1Web方式操作步骤示意圈用程序实现对网页的动态修改。这个过程可用图8.1表示。这种数据交换涉及多个接口,它们有:(1)用HTML书写的动态网页与脚本语言程序(包括ADO)的接口,即Web接口。(2)网络中两结点间的连接管理接口。(3)应用程序中标量数据与数据库中集合量数据间接口,即游标管理接口。(4)诊断管理接口。Web接口一般采用ASP,而(2)、(3)、(4)则联合采用ADO。也就是说,用ASP与ADO实现Web方式的数据交换。Web方式实现的主要内容将在第4篇中介绍

110、。第第8章章SQL数据交换及服务数据交换及服务第8章SQL数据交换及服务8.1数据交换接口管理中的SQL语句8.2SQL的四种数据交换方式8.3数据服务8.3.2数据服务五种形式8.3.3数据服务七个层次8.3.2数据服务五种形式数据服务五种形式1.操作服务操作服务目前常用的操作服务包括函数、过程、组件及命令行等。(1)函数:目前常用的函数服务是一种系统函数,它由系统提供供用户使用,此外,也有用户自行定义服务。(2)过程:目前常用的过程服务是一种系统过程,它包括存储过程及触发器,它由系统提供供用户使用。此外,也有用户自行定义服务(3)组件:在操作服务中很多工具都可以分解成为组件使用。此外,Wi

111、ndows与.NETFramwork所提供的大量组件也可作为数据服务供用户使用。(4)命令行:在操作服务中,很多系统存储过程、组件及工具都可以命令行形式出现。它为用户使用提供了又一种方便形式。2.工具服务工具服务目前常用的一些工具如下:(1)系统安装工具;(2)配置管理工具;(3)事件探查工具,用于数据库运行中的监视与测试;(4)数据复制与转换的工具;(5)数据库优化工具,用于提高数据库运行效率的工具;(6)数据恢复服务工具;(7)数据分析服务工具;(8)数据报表服务工具;(9)全文搜索工具;(10)数据加载、分离、附加及整合工具;(11)数据组织注册、连接、启动与关闭服务。3.工具包服务工具

112、包服务目前常用如下工具包:(1)数据集成管理平台工具包;(2)业务智能集成开发平台工具包。4.信息服务信息服务目前常用如下信息服务:(1)信息服务数据库:提供信息服务数据库,包括数据字典、新建数据库模板及示例数据库等。(2)日志:提供多种不同的日志,如事务日志、服务器工作日志等。(3)系统帮助:提供系统帮助,如系统参数、联机丛书等。5.第三方服务第三方服务第三方服务指的是除DBMS以外的服务。8.3.3数据服务七个层次数据服务七个层次1.系统安装服务2.服务器管理服务3.数据库服务4.数据对象服务6.用户使用服务5.数据库运行、维护服务6.用户使用服务7.数据库分析服务第第4篇篇产品篇产品篇目

113、前市场上相关的产品很多,它们大致可以分为下面几类:1.大型产品:用于大型应用开发,典型的产品如Oracle、DB2等。2.中、小型产品:用于中、小型应用开发,典型的产品如SQLServer2008等。3.桌面式产品:用于微型应用开发,典型的产品如Access等。本篇共6章,从第9章至第14章。第第9章:章:SQLServer2008系统介绍。主要对SQLServer2008作全面与系统性的介绍。第第10章:章:SQLServer2008服务器管理。主要对SQLServer2008服务器的管理作介绍。它包括服务器注册与连接,服务器暂停、关闭、恢复与启动以及相关参数设置等内容。第第11章:章:SQ

114、LServer2008数据库管理。主要对SQLServer2008数据库的管理作介绍。它包括创建数据库、查看数据库、修改数据库、删除数据库、分离与附加数据库及数据库备份与恢复等内容。第第12章:章:SQLServer2008数据库对象管理。主要对SQLServer2008数据库对象的管理作介绍。它包括表、视图等数据库对象的管理。第9章v第第9章章SQLServer2008系统介绍MicrosoftSQLServer是一个典型的关系数据库管理系统,它以SQL作为操作语言。它同时提供数据仓库、联机事务处理(OLAP)和数据分析的功能。本章主要对SQLServer2008作全面与系统性的介绍,它包括

115、产品的概况、版本、系统结构及系统服务等。本章所有图片可以通过扫描书中二维码获取。第9章9.1SQLServer2008系统概况系统概况vSQLServer起源于SybaseSQLServer,于1988年推出第一个版本,Microsoft公司于1992年将SQLServer移植到了WindowsNT平台上。vSQLServer2008是在SQLServer2005基础上具备全新功能的一种版本,SQLServer2008是一个全面、集成的、端到端的数据库管理系统,为用户提供一个更安全可靠、更高效的平台。第9章(1)平台结构SQLServer2008可以在B/S、C/S及单机结构上运行,如图9.1

116、和图9.2所示。(2)硬件环境CPU:建议处理器的频率最低为1.0GHz,建议2GHz。第9章9.2SQLServer2008系统安装系统安装SQLServer2008一般安装在数据库服务器中。在成功地完成SQLServer2008的安装后,就可以说,服务器上就安装了一个SQLServer实例第9章v9.3SQLServer2008系统结构系统结构9.3.2SQLServer2008服务器SQLServer2008服务器可以存储和管理多个数据库,基于服务器的多个数据库用户可共享服务器提供的服务。服务器是SQLServer2008数据库管理系统的基地。SQLServer2008系统安装完成后,可

117、使用“数据服务”管理服务器。第9章v9.3.3SQLServer2008数据库及架构1SQLServer2008数据库SQLServer2008中的数据库分为两种:系统数据库和用户数据库。第9章v2SQLServer2008数据库架构数据库是数据对象的容器,有时数据库中数据对象很多,为方便用户使用与管理引入架构,这样可以对数据库对象进行分组管理,即在数据库内部分成若干个组,每个组称为一个架构,它管理数据库中的一部分对象。第9章v9.3.4SQLServer2008数据库对象第9章v9.4.4SQLServer2008常用工具之一ServerManagementStudioSQLServerMa

118、nagementStudio的工具组件包括:对象资源管理器、已注册的服务器、查询编辑器、解决方案资源管理器、模板资源管理器等第9章图9.21 SQL Server Management Studio操作界面 第9章第9章图9.25 查询编辑器执行窗口第9章图9.26 模板列表 第9章v例9.1T-SQL标准操作流程。(见课本操作流程)第9章v9.4.5SQLServer2008常用工具之二SQLServer配置管理器图9.31 SQL Server Configuration Manager 的界面第9章SQLServer配置管理器配置管理功能具体如下:(1)服务配置管理SQLServer配置

119、管理器可以启动、停止、重新启动、继续或暂停服务,查看或更改服务属性等。(2)网络配置管理网络配置管理任务包括选择启动协议、修改协议使用的端口或管道、配置加密、在网络上显示或隐藏数据库引擎以及注册服务器主体名称等。(3)SQL客户端网络协议配置SQL客户端网络协议配置即SQLNativeClient配置管理。SQLNativeClient中的设置将在运行客户端程序的计算机上使用。(4)配置客户端远程服务器SQLServer2008提供远程服务器功能,使客户端可以通过网络访问指定的SQLServer服务器,以便在没有建立单独连接的情况下在其他SQLServer实例上执行存储过程。第9章9.4.6数

120、据库操作与数据服务在SQLServer2008的介绍中我们实际上以介绍操作为主,即SQLServer2008的SQL操作。所有这些操作大都用数据服务作为其包装形式出现,目前常用的有以下四种。(但以前两种使用最为普遍)。用SQLServerManagementStudio人机交互方式;在SQLServerManagementStudio平台下用T-SQL语句,系统存储过程、SQL程序等方式;用SQLCommand命令方式;在ADO中用方法中的参数方式。SQLServer2008服务器的管理功能由下面几个部分:服务器的管理功能由下面几个部分:SQLServer2008服务器注册管理;SQLServ

121、er2008服务器连接管理;SQLServer2008服务器中服务暂停、关闭、恢复与启动管理;SQLServer2008服务器启动模式管理;SQLServer2008服务器属性配置管理;SQLServer2008服务器网络、网络协议及客户端远程服务器配置管理。常用的有下面几个数据服务工具:常用的有下面几个数据服务工具:SQLServer管理平台:SQLServerManagementStudio;SQLServer配置管理器:SQLServerConfigurationManager;sp_configuret系统存储过程。第10章SQLServer2008服务器管理第第10章章SQLServ

122、er2008服务器管理服务器管理10.1SQLServer2008服务器管理的内容10.2SQLServer2008服务器连接与注册10.3SQLServer2008服务器中服务的启动、停止、暂停与重新启动10.4SQLServer2008服务器启动模式管理10.5SQLServer2008服务器属性配置10.6SQLServer2008服务器网络、网络协议及客户端远程服务器配置管理第第10章章10.1SQLServer2008服务器管理的内容服务器管理的内容SQLServer2008服务器管理的内容有:1SQLServer2008服务器连接管理2SQLServer2008服务器中服务暂停、关

123、闭、恢复与启动管理3服务器启动模式管理4SQLServer2008服务器属性配置管理5SQLServer2008网络、网络协议及远程服务器配置管理。第第10章章v10.2SQLServer2008服务器连接与注册服务器连接与注册注册服务器注册服务器就是为SQLServer客户机/服务器系统确定一台数据库所在的计算机,并以该计算机为服务器,为客户端的各种请求提供服务。系统中运行的SQLServerManagementStudio是客户机,可以通过在SQLServerManagementStudio的“已注册的服务器组件”中注册服务器,保存访问的服务器的连接信息。第第10章章v2.连接和断开注册服

124、务器注册完成后,用户就可以通过SQLServerManagementStudio管理服务器第第10章章SQLServer2008服务器管理服务器管理10.1SQLServer2008服务器管理的内容10.2SQLServer2008服务器连接与注册10.3SQLServer2008服务器中服务的启动、停止、暂停与重新启动10.4SQLServer2008服务器启动模式管理10.5SQLServer2008服务器属性配置10.6SQLServer2008服务器网络、网络协议及客户端远程服务器配置管理第第10章章v10.3SQLServer2008服务器中服务的启动、服务器中服务的启动、停止、暂停

125、与重新启动停止、暂停与重新启动可以用SQLServer2008配置管理器及SQLServerManagementStudio完成SQLServer服务的启动、停止、暂停和重新启动。图10.7 “服务管理”窗口 第第10章章10.4SQLServer2008服务器启动模式管理服务器启动模式管理SQLServer2008服务器启动模式可用SQLServer配置管理器设置第第10章章10.5SQLServer2008服务器属性配置服务器属性配置SQLServer2008服务器属性配置一般用SQLServerManagementStudio。图10.11 “服务器属性”窗口第第10章章服务器属性:v“

126、常规常规”属性页列出了当前服务器的产品名称、操作系统名称、平台名称、版本号、使用的语言、当前服务器的最大内存数量、当前服务器的处理器数量、当前SQLServer安装的根目录、服务器使用的排序规则以及是否已经群集化等。v“内存内存”属性页中,“使用地址空间扩充AWE分配内存”复选框表示在当前服务器上使用AWE技术分配超大物理内存。通过“最大服务器内存(MB)”和“最小服务器内存(MB)”设置服务器可以使用的内存范围。“最大工作线程数”选项用于设置SQLServer进程工作的线程数,该值为0时,表示系统动态分配线程。v“连接连接”属性页中,数值框用于设置当前服务器允许的最大并发连接数。并发连接数是

127、同时访问的客户端数量。当该选项设置为0时,表示不对并发连接数进行限制。SQLServer允许最大32767个用户连接,这也是这个参数的最大值。第第10章章v“安全性安全性”属性页中,可以设置与服务器身份认证模式、登录审核等安全性相关选项。通过设置登录审核功能,可以将用户的登录结果记录在错误日志中。v“权限权限”属性页中,可以设置和查看当前SQLServer实例中登录名或角色的权限信息。v“数据库设置数据库设置”属性页中,可以查看或修改所选数据库的选项,包括如默认索引、数据库的备份的保持天数、恢复间隔(分钟)以及日志、配置值与运行值等参数。v10.6SQLServer2008服务器网络、网络协议

128、及服务器网络、网络协议及客户端远程服务器配置管理客户端远程服务器配置管理1网络配置管理网络配置管理任务包括选择启动协议、修改协议使用的端口或管道、配置加密、在网络上显示或隐藏数据库引擎以及注册服务器主体名称等。2SQL客户端网络协议配置SQL客户端网络协议配置即SQLNativeClient配置管理。SQLNativeClient中的设置将在运行客户端程序的计算机上使用。3配置客户端远程服务器SQLServer2008提供远程服务器功能,使客户端可以通过网络访问指定的SQLServer服务器,以便在没有建立单独连接的情况下在其他SQLServer实例上执行操作。通常,配置客户端(远程)服务器包

129、括启用远程连接和连接远程服务器两个过程。第第11章章SQLServer2008数据库管理数据库管理v本章介绍SQLServer2008对用户数据库的管理,包括数据库的创建、查看、删除、使用、分离与附加、备份与恢复数据库功能。第11章SQLServer2008数据库管理11.1创建数据库11.2查看数据库11.3删除数据库11.4使用数据库*11.5分离与附加数据库11.6数据库备份与恢复11.6.1备份数据库11.6.2恢复数据库v创建数据库就是确立一个命名的数据库。它包括数据库名称、文件名称、数据文件大小、增长方式等。在一个SQLServer实例中,最多可以创建32767个数据库。1.使用S

130、QLServerManagementStudio创建数据库2.T-SQL中语句CREATEDATABASE创建数据库CREATEDATABASE语句的语法形式如下:语句的语法形式如下:CREATEDATABASE数据库名数据库名ONPRIMARY,FILEGROUP文件组名文件组名1,FILEGROUP文件组名文件组名nLOGON,其中,其中,和和为以下属性的组合:为以下属性的组合:(NAME=逻辑文件名逻辑文件名,FILENAME=物理文件名物理文件名,SIZE=文件初始容量文件初始容量,MAXSIZE=文件最大容量文件最大容量|UNLIMITED,FILEGROWTH=文件增长幅度文件增长

131、幅度)各参数的含义如下:(1)数据库名,)数据库名,在服务器中必须唯一,并且符合标识符命名规则。(2)ON:用于定义数据库的数据文件。(3)PRIMARY:用于指定其后所定义的文件为主数据文件,如果省略,系统将定义的第一个文件作为主数据文件。(4)FILEGROUP:用于指定用户自定义的文件组。(5)LOGON:指定存储数据库中日志文件的文件列表,如果不指定,则由系统自动创建日志文件。(6)NAME:指定SQLServer系统应用数据文件或日志文件时使用的逻辑名。(7)FILENAME:指定数据文件或日志文件的文件名和路径,该路径必须指定SQLServer实例上的一个文件夹。(8)SIZE:指

132、定数据文件或日志文件的初始容量,可以是KB、MB、GB或TB,默认单位为MB,其值为整数。如果主文件的容量未指定,则系统取Model数据库的主文件容量;如果其他文件的容量未指定,则系统自动取1MB的容量。(9)MAXSIZE:指定数据文件或日志文件的最大容量,可以是KB、MB、GB或TB,默认单位为MB,其值为整数。如果省略MAXSIZE或指定为UNLIMITED,则数据文件或日志文件的容量可以不断增加,直到整个磁盘满为止。(10)FILEGROWTH:指定数据文件或日志文件的增长幅度,可以是KB、MB、GB或TB或百分比(%),默认是MB。0表示不增长,文件的FILEGROWTH设置不能超过

133、MAXSIZE,如果没有指定MAXSIZE,则默认值为10%。v11.2查看数据库查看数据库v用户可以查看已创建数据库中的参数。这是一种数据服务。1使用SQLServerManagementStudio查看数据库图11.7 选择“属性”命令 2使用T-SQL中的系统存储过程查看数据库信息查看数据库信息的T-SQL中的系统存储过程的语法如下:EXECsp_helpdbdbname=name其中,dbname=name用于指定要查看其信息的数据库名称,省略时,则显示SQLServer服务器所有数据库的信息。11.3删除数据库删除数据库当数据库不再被使用或数据库损坏无法正常运行时,用户可删除数据库。

134、数据库删除后,与之相关联的文件及存储在系统数据库中的所有信息都会从服务器上的磁盘中被删除。图11.9 删除数据库 2使用T-SQL中DROPDATABASE语句删除数据库DROPDATABASE语句的语法如下:DROPDATABASE数据库名1,数据库名n11.4使用数据库使用数据库任何数据库在使用前必须用“使用数据库”语句打开。此后即可对该数据库进行操作。在SQLServer2008中,“使用数据库”命令可用T-SQL中的SQL语句表示,其语法如下:USE第11章SQLServer2008数据库管理11.1创建数据库11.2查看数据库11.3删除数据库11.4使用数据库*11.5分离与附加数

135、据库11.6数据库备份与恢复11.6.1备份数据库11.6.2恢复数据库v*11.5分离与附加数据库分离与附加数据库数据库应用中经常需将应用项目工作于不同的服务器上。这种数据库的移动应用涉及SQLServer分离数据库和附加数据库这两个互逆操作。其中分离操作能从系统中分离数据库的数据和事务日志文件,然后通过附加操作将它们附加到同一或其他SQLServer实例中。这两个操作在SQLServer2008中均为数据服务。1分离数据库分离数据库就是将某个数据库从SQLServer数据库列表中删除,使其不再被SQLServer管理和使用,但该数据库的文件(.MDF)和对应的日志文件(.LDF)完好无损。

136、分离成功后,就可以把该数据库文件(.MDF)和对应的日志文件(.LDF)复制到其他磁盘中作为备份保存。(1)使用SQLServerManagementStudio分离数据库(2)使用T-SQL中的系统存储过程分离数据库T-SQL中用系统存储过程分离数据库方法格式为:sp_detach_db数据库名2附加数据库附加数据库就是将一个备份磁盘中的数据库文件(.MDF)和对应的日志文件(.LDF)复制到需要的SQLServer数据库服务器中,由该服务器来管理和使用这个数据库。(1)使用)使用SQLServerManagementStudio附加附加数据库数据库(2)T-SQL中的系统存储过程附加数据库

137、中的系统存储过程附加数据库T-SQL中的系统存储过程附加数据库方法格式为:EXECsp_attach_dbdbname=数据库名filename1=文件名_n,16参数说明如下:dbname=数据库名:要附加到该服务器的数据库名。该名必须是唯一的。filename1=文件名_n:数据库文件的物理名,包括路径。例11.8附加d:sqldata目录下的“test2”数据库。EXECsp_attach_dbtest2,d:sqldatatest2.mdf11.6数据库备份与恢复数据库备份与恢复SQLServer2008系统提供了内置的数据保护机制,可通过数据库备份和恢复以防止数据库破坏。数据库备份与

138、恢复的操作均为数据服务。11.6.1备份数据库“备份”是数据的副本,用于在系统发生故障后还原和恢复数据。1备份类型SQLServer2008提供了四种备份方式:完整备份、差异备份、事务日志备份、文件和文件组备份。2备份设备备份设备是用于存储数据库事务日志或文件和文件组备份的存储介质,它可以是硬盘、磁带或管道等。(1)使用SQLServerManagementStudio创建备份设备(2)使用T-SQ中的系统存储过程创建备份设备使用T-SQL中的系统存储过程创建备份设备方法格式为:sp_addumpdevicedevtype=device_type,logicalname=logical_nam

139、e,physicalname=physical_name,cntrltype=controller_type|devstatus=device_status3备份数据库1)使用SQLServerManagementStudio备份数据库2)使用T-SQL语句备份数据库(1)创建完整备份使用BACKUP语句对数据库进行完整备份的语法如下:BACKUPDATABASEdatabase_nameTOWITH,NAME=backup_set_name,DESCRIPTION=TEXT,INIT|NOINIT参数说明:database_name:指定要备份的数据库。backup_device:为备份的目

140、标设备,采用“备份设备类型=设备名”的形式。WITH子句:指定备份选项,这里仅给出两个。NAME=backup_set_name:指定备份的名称。DESCRIPTION=TEXT:给出备份的描述。INIT|NOINIT:INIT表示新备份的数据覆盖当前备份设备上的每一项内容,即原来在此设备上的数据都不存在了;NOINIT表示新备份的数据添加到备份设备上已有的内容后面。(2)创建差异备份使用BACKUP语句对数据库进行差异备份的语法如下:BACKUPDATABASEdatabase_nameTOWITHDIFFERENTIAL,NAME=backup_set_name,DESCRIPTION=T

141、EXT,INIT|NOINIT参数说明:DIFFERENTIAL:指明了本次备份是差异备份。其他选项与完整备份类似,在此不再重复。(3)创建事务日志备份使用BACKUPLOG语句对数据库进行事务日志备份的语法如下:BACKUPLOGdatabase_nameTOWITH,NAME=backup_set_name,DESCRIPTION=TEXT,INIT|NOINIT11.6.2恢复数据库数据库恢复是指将数据库从当前非正常状态恢复到某一正确状态的功能。1恢复模式SQLServer2008数据库恢复模式分为三种,它们是:完整恢复模式、大容量日志恢复模式及简单恢复模式,常用的是完整恢复模式,它为默

142、认恢复模式。它会完整记录操作数据库的每一个步骤。使用完整恢复模式可以将整个数据库恢复到一个特定的时间点,这个时间点可以是最近一次可用的备份、一个特定的日期和时间或标记的事务。2数据库的恢复1)使用SQLServerManagementStudio恢复备份数据库2)使用T-SQL语句恢复数据库(1)恢复完整备份使用RESTORE语句恢复完整备份的语法格式如下:RESTOREDATABASEdatabase_nameFROMWITHFILE=file_number,NORECOVERY|RECOVERY,REPLACE(2)恢复事务日志备份还原事务日志备份也可以和还原差异备份一样,只要知道它在备份

143、文件或备份设备里是第几个文件集即可。在还原事务日志之前,必须首先还原完整数据库备份,当需要应用多个事务日志时,为除了最近一个事务日志外的所有事务日志指定NORECOVERY选项。(3)恢复差异备份还原差异备份的语法与还原完整备份的语法是一样的,只是在还原差异备份时,必须先还原完整备份再还原差异备份v第第12章章SQLServer2008数据库对象管理本章主要介绍SQLServer2008中数据库对象管理,内容包括表、索引、视图、触发器及存储过程等(其中存储过程在下章中介绍)。第12章SQLServer2008数据库对象管理数据库对象管理12.1SQLServer2008表定义及数据完整性12.

144、2SQLServer2008中的数据查询操作12.3SQLServer2008数据增、删、改操作12.4SQLServer2008的视图*12.5SQLServer2008的触发器12.1.1创建表创建表数据库中包含一个或多个表。表由行和列所构成,行称为记录,是组织数据的单位;列称为字段,每一列表示记录的一个属性。创建表就是定义表结构及约束,即确定表名、所含的字段名、字段的数据类型、长度及空值信息,此外还包括数据完整性约束等。1.使用SQLServerManagementStudio创建表2.使用T-SQL语句创建表CREATETABLEdatabase_name.schema_name.|s

145、chema_name.table_name(,.n)ONfilegroup|default;:=column_nameNULL|NOTNULLCONSTRAINTconstraint_nameDEFAULT|constant_expressionv参数说明:database_name:创建表的数据库的名称,必须指定现有数据库的名称。如果未指定,则database_name默认为当前数据库。table_name:新表的名称。表名必须遵循标识符命名规则。column_name:表中列的名称。列名必须遵循标识符命名规则并且在表中是唯一的。ONfilegroup|default:指定存储表的文件组。如

146、果指定了default,或者根本未指定ON,则表存储在默认文件组中。default(默认值):指定列的默认值。CONSTRAINT:约束条件。default(默认值):指定列的默认值。CONSTRAINT:约束条件。v12.1.2完整性与约束数据库表中的数据应能满足现实规则的要求,这就是数据完整性的要求。而约束是保证数据库中的数据完整性的方法。在SQLServer2008中有5种约束类型:PRIMARYKEY约束;FOREIGNKEY约束;UNIQUE约束;CHECK约束;DEFAULT约束。在SQLServer2008中,约束作为数据表定义的一部分,在CREATETABLE语句中定义。这种定

147、义有两种形式:这种定义有两种形式:列级完整性约束列级完整性约束:定义于创建表列定义之后。表级完整性约束表级完整性约束:定义于创建表之后。也可以独立于数据表的结构而单独定义。此时可通过添加约束语句ADD实现,此语句一般都紧邻表定义语句之后,它的语法如下:ALTERTABLE表名ADD1PRIMARYKEY约束约束用T-SQL中语句创建PRIMARYKEY约束语法如下:CONSTRAINTconstraint_namePRIMARYKEYCLUSTERED|NONCLUSTERED(column_name,.n)参数说明:Constraint_name:约束的名字。CLUSTERED|NONCLU

148、STERED:表示所创建的UNIQUE约束是聚集索引,默认为CLUSTERED,即聚集索引。例12.2创建Student表并设置Sno主键。CREATETABLEStudent(SnoCHAR(9)PRIMARYKEY,/*列级完整性约束条件*/SnameCHAR(20)Ssex CHAR(2),SageSMALLINT,SdeptCHAR(20);2FOREIGNKEY约束可用T-SQL中语句创建FOREIGNKEY约束语法如下:CONSTRAINTconstraint_nameFOREIGNKEYREFERENCESreferenced_table_name(column_name)(,.

149、n)参数说明如下:referenced_table_name是FOREIGNKEY约束引用的表的名称。column_name是FOREIGNKEY约束所引用的表中的某列。例12.3建立一个SC表,指定Sno和Cno为主键,Sno为外键,与Student表中的Sno列关联,Cno为外键,与Course表中的Cno列关联。CREATETABLESC(SnoCHAR(9),CnoCHAR(4),GradeSMALLINT,ConstraintPK_Sno_CnoPRIMARYKEY(Sno,Cno),/*主键由两个属性构成,必须作为表级完整性进行定义*/ConstraintFK_SnoFOREIGN

150、KEY(Sno)REFERENCESStudent(Sno),/*表级完整性约束条件,Sno是外键,引用表是Student*/ConstraintFK_CnoFOREIGNKEY(Cno)REFERENCESCourse(Cno)/*表级完整性约束条件,Cno是外键,引用表是Course*/);3NULL|NOTNULL约束约束用T-SQL中语句创建NULL|NOTNULL约束语法如下:CONSTRAINTconstraint_nameNULL|NOTNULL.此语句是一种列级完整性约束。例12.4创建Student表并设备Sno为非空。CREATETABLEStudent(SnoCHAR(9

151、)PRIMARYKEY,NOTNULLSnameCHAR(20),SsexCHAR(2),SageSMALLINT,SdeptCHAR(2);12.1.3创建与删除索引在创建表后一般可用T-SQL中语句创建索引,其语法结构如下:CREATEUNIQUECLUSTERED|NONCLUSTEREDINDEX索引名ON表名(列名ASC|DESC)参数说明:UNIQUE唯一索引;CLUSTERED聚集索引;NONCLUSTERED非聚集索引;ASC|DESC排序方式,默认为升序(ASC)。在创建索引后也可删除索引,其T-SQL中语句语法结构如下:DROPINDEX索引名4UNIQUE约束约束用T-S

152、QL中语句创建UNIQUE约束语法如下:CONSTRAINTconstraint_nameUNIQUECLUSTERED|NONCLUSTERED其中,CLUSTERED|NONCLUSTERED表示所创建的UNIQUE约束是否为聚集索引,默认为NONCLUSTERED。例12.5创建Student表并设置Sno主键,Sname取唯一值。CREATETABLEStudent(SnoCHAR(9)PRIMARYKEY,/*列级完整性约束条件*/SnameCHAR(20)UNIQUE,/*Sname取唯一值*/SsexCHAR(2),SageSMALLINT,SdeptCHAR(20);5CHEC

153、K约束约束可用T-SQL中语句创建CHECK约束如下:CONSTRAINTconstraint_nameCHECK(check_expression)其中,check_expression为约束范围表达式。例12.6将SC表中Grade值设置在0100之间。ALTERTABLESC,ADDconstraintCk_Grade,CONSTRAINTCK_GradeCHECK(GradeBETWEEN0AND100)6DEFAULT约束约束用T-SQL中语句创建DEFAULT约束语法如下:CONSTRAINTconstraint_nameDEFAULTconstraint_expressionwi

154、thVALUES其中constraint_expression为默认值表达式。例12.7将表Student的Sage默认值设置为19。ALTERTABLEStudentADDDEFAULT19FORSage7删除约束删除约束用T-SQL中语句删除约束语法如下:DROPCONSTRAINTconstraint_name|COLUMNcolumn_name例12.8将表Course的ix_Cname约束删除。ALTERtABLECourseDROPix_Cname12.1.4修改表修改表1。使用。使用SQLServerManagementStudio修改表修改表2。T-SQL中语句修改表中语句修改

155、表T-SQL中对数据表进行修改的语句是ALTERTABLE,基本语法是:ALTERTABLEtable_nameALTERCOLUMNcolumn_name/*修改已有字段的属性/new_data_type(precision,scale)NULL|NOTNULL|ADD,.n/*增加新字段*/|DROPCONSTRAINTconstraint_name|COLUMNcolumn,.n/*删除字段*/12.1.5删除表删除表1使用SQLServerManagementStudio删除表2.T-SQL中语句删除表T-SQL中对表进行删除的语句是DROPTABLE,该语句的语法格式为:DROPTA

156、BLEtable_name其中table_name是被删除的表名。12.2SQLServer2008中的数据查询操作中的数据查询操作1用ServerManagementStudio执行查询语句2.用T-SQL中语句执行查询在SQLServer2008中可以使用SELECT语句执行数据查询。其语句语法如下:SELECT语句语法:SELECTselect_listINTOnew_tableFROMtable_sourceWHEREsearch_conditionGROUPBYgroup_by_expressionHAVINGsearch_conditionORDERBYorder_expressi

157、onASC|DESCvQLServer2008中的SELECT语句与ISOSELECT语句基本一致,相关内容已在第3篇详细阐述,也包括众多例子12.3SQLServer2008数据增、删、改操作数据增、删、改操作12.3.1使用SQLServerManagementStudio实现数据增、删、改操作1添加数据2.删除和修改数据记录12.3.2使用使用T-SQL中语句实现数据增、删、改操作中语句实现数据增、删、改操作1用INSERT语句插入数据INSERTINTOtable_or_view_name(column_list)VALUES(DEFAULT|NULL|,.n),.n)|derived

158、_table|DEFAULTVALUES参数说明:table_orview_name:表或视图名。(column_list):要在其中插入数据的一列或多列的列表。必须用括号将其括起来,并且用逗号进行分隔。VALUES:引入要插入的数据值的列表。对于column_list(如果已指定)或表中的每个列,都必须有一个数据值,并且必须用圆括号将值列表括起来。DEFAULT:强制数据库引擎加载为列定义的默认值。如果某列并不存在默认值,并且该列允许NULL,则插入NULL值。derived_table:任何有效的SELECT语句,它返回将加载到表中的数据行。DEFAULTVALUES:强制新行包含为每个列

159、定义的默认值。2用UPDATE语句修改数据可以使用UPDATE语句修改表中已经存在的数据,该语句既可以一次更新一行数据,也可以一次更新多行数据。UPDATETOP(n)PERCENTtable_or_view_nameSETcolumn_name=expression|DEFAULT|NULL|variable=column+=|-=|*=|/=|%=|&=|=|=|expressionWHERE参数说明:TOP(n)PERCENT:指定将要更新的行数或行百分比。table_orview_name:表或视图名称。SET:指定要更新的列或变量名称的列表。WHERE:指定条件用于限定所更新的行。:

160、为要更新的行指定需满足的条件。3用DELETE语句删除数据使用DELETE语句可删除表中数据,其基本语法形式如下:DELETEFROMtable_nameWHEREsearch_condition12.4SQLServer2008的视图的视图1.创建视图创建视图1)使用SQLServerManagementStudio的对象资源管理器创建视图2)使用T_SQL中语句创建视图利用CREATEVIEW语句可以创建视图,该语句的基本语法如下:CREATEVIEWschema_name.view_name(column,.n)ASSELECT_statementWITHCHECKOPTION注意:用于

161、创建视图的SELECT语句有以下的限制:(1)定义视图的用户必须对所参照的表或视图有查询权限,即可执行SELECT语句。(2)不能使用ORDERBY子句。(3)不能使用INTO子句。(4)不能在临时表或表变量上创建视图。2删除视图删除视图用T-SQL方式删除视图的语法格式如下:DROPVIEWview_name,.n例12.35删除Stu_IS。DROPVIEWStu_IS3.利用视图查询数据利用视图查询数据利用视图查询数据方式与用表查询一样,以T-SQL方式为例说明如下:例12.36查询信息系学生学号为S27070101的学生名。SELECTISSnameFROMSTU_ISWHEREISS

162、no=S27070101*12.5SQLServer2008的触发器的触发器触发器是一种特殊类型的存储过程,它在执行某些特定的T-SQL语句或操作时可以自动激活执行。SQLServer2008触发器的触发事件包括对表进行Insert、Update或Delete操作时,以及数据库及表发生CREATE、ALTER和DROP操作时会自动激活执行。12.5.1触发器类型1)DML触发器DML触发器是当数据库发生INSERT、UPDATE、DELECT操作时所产生的事件。DML触发器又分为两种:After触发器:触发器:这类触发器是在记录已经改变完之后(after),才会被激活执行。它主要用于记录变更后

163、的处理或检查。InsteadOf触发器:触发器:这类触发器一般是用来取代原本要进行的操作,在记录变更之前发生的,它并不去执行原来SQL语句中的操作(Insert、Update、Delete),而去执行触发器本身所定义的操作。2)DDL触发器DDL触发器是在响应数据定义事件时执行的存储过程。DDL触发器激发存储过程以响应事件。它所响应的是多种CREATE、ALTER和DROP等数据定义语句。一般来说,在以下几种情况下可以使用DDL触发器:(1)防止数据库架构进行某些修改。(2)防止数据库或数据表被误操作删除。(3)用于记录数据库架构中的更改事件。12.5.2创建触发器创建触发器1创建创建DML触

164、发器触发器(1)创建AFTER触发器语法如下:CREATETRIGGERschema_name.trigger_nameONtable|viewFOR|AFTERINSERT,UPDATE,DELETEAS参数说明:trigger_name是触发器名。table|view是在其上执行触发器的表或视图,称为触发器表或触发器视图。AFTER指定触发器只有在触发SQL语句中指定的所有操作都已成功执行后才激发。所有的引用级联操作和约束检查也必须成功完成后,才能执行此触发器。T-SQLstatements是T-SQL程序。(2)创建)创建INSTEADOF触发器触发器INSTEADOF触发器与AFTER

165、触发器的工作流程是不一样的。AFTER触发器是在SQLServer服务器接到执行SQL语句请求之后,先建立临时的Inserted表和Deleted表,然后实际更改数据,最后才激活触发器。而INSTEADOF触发器是在SQLServer服务器接到执行SQL语句请求后,先建立临时的Inserted表和Deleted表,然后触发INSTEADOF触发器。创建INSTEADOF触发器的语法如下:CREATETRIGGERschema_name.trigger_nameONtable|viewINSTEADOFINSERT,UPDATE,DELETEWITHAPPENDAS参数INSTEADOF它表示了

166、指定执行触发器而不是执行触发SQL语句,从而替代触发语句的操作。分析上述语法可以发现,创建INSTEADOF触发器与创建AFTER触发器的语法几乎一样,只是简单地把AFTER改为INSTEADOF。3创建创建DDL触发器触发器创建DDL触发器的语法如下:CREATETRIGGERtrigger_nameONALLSERVER|DATABASEWITHENCRYPTIONFORevent_type|event_group,.nASsql_statement;参数说明:trigger_name:触发器名。DATABASE:将DDL触发器的作用域应用于当前数据库。ALLSERVER:将DDL触发器的

167、作用域应用于当前服务器。WITHENCRYPTION:对CREATETRIGGER语句的文本进行加密。event_type:执行之后将导致激发DDL触发器的T-SQL程序事件的名称。event_group:预定义的T-SQL语言事件分组的名称。sql_statement:指定触发器所执行的T-SQL程序。12.5.3管理触发器管理触发器1查看DML触发器查看DML触发器有两种方式:(1)通过SQLServerManagementStudio查看。在“对象资源管理器”中选中某一触发器,双击即可查看该触发器的信息。(2)利用T-SQL中系统存储过程来查看。系统存储过程sp_help可以了解如触发器

168、名称、类型、创建时间等基本信息,其语法格式如下:sp_help触发器名2启用和禁用触发器(1)禁用DML触发器使用T-SQL的AlterTable语句可禁用DML触发器,语法如下:Disabletrigger此语句一般紧邻ALTERTABLE语句之后。语句中如果要禁用所有触发器,则用ALL来代替触发器名。(2)启用DML触发器相反,在禁用DML触发器后可重新启用DML触发器,它使用T-SQL语句,其语法如下:Enabletrigger图12.30删除触发器此语句一般放在紧邻ALTERTABLE语句之后。语句中如果要启用所有触发器,用ALL来代替触发器名。v3删除触发器触发器可以删除。可SQLS

169、erverManagementStudio和T-SQL语句进行删除使用T-SQL中语句删除触发器时,该触发器所关联的表和数据不会受到任何影响,其语法形式如下:DROPTRIGGERschema_name.触发器名,.;第第13章章SQLServer2008数据交换及数据交换及T-SQL语言语言SQLServer2008数据交换方式一共有四种,分别是人机交互方式、自含式方式、调用层接口方式及Web方式。自含式方式中包括T-SQL语言.第第13章章SQLServer2008数据交换及数据交换及T-SQL语言语言13.1SQLServer2008人机交互方式13.2SQLServer2008自含式方

170、式及自含式语言T-SQL13.3SQLServer2008调用层接口方式ADO*13.4SQLServer2008Web方式ASP13.1SQLServer2008人机交互方式人机交互方式SQLServer2008中的人机交互方式出现于其几乎所有操作中,它们都是以服务形式出现。其表示形式一般有两种,分别是可视化图形界面形式及命令行形式。(1)在数据库管理中都有人机交互方式,其使用的工具为SQLServerManagementStudio(可视化图形界面形式)及命令行。(2)在数据服务中一般都以人机交互方式的形式出现,如可视化图形界面形式:BusinessIntelligenceDevelopm

171、entStudio、SQLServerProfiler、SQLServerConfigurationManager、DatabaseEngineTuningAdvisor等。此外,还包括命令行形式等。13.2SQLServer2008自含式方式及自含式自含式方式及自含式语言语言T-SQLSQLServer2008自含式方式主要表现在自含式语言Transact-SQL中,它可简称它可简称T-SQL。T-SQL将SQL与程序设计语言中的主要成分结合于一起并通过游标建立无缝接口,构成一个跨越数据处理与程序设计的完整的语言。13.2SQLServer2008自含式方式及自含式语言T-SQL13.2.1

172、T-SQL数据类型、变量及表达式13.2.2T-SQL中的SQL语句操作13.2.3T-SQL中的流程控制语句13.2.4T-SQL中的数据交换操作13.2.5T-SQL中的存储过程*13.2.6T-SQL中的函数13.2.7T-SQL编程T-SQL程序是一种后台程序,它与数据库一起都位于同一SQL服务器内,其主要用于函数、存储过程(包括触发器)的编写,也可直接编写服务器端后台程序,并在服务器内生成目标代码与执行。下面讨论T-SQL的详细内容。它包括如下内容:核心SQL操作;程序设计基本内容;数据交换操作;存储过程(包括触发器);函数等。13.2.1T-SQL数据类型、变量及表达式1数据类型2

173、变量T-SQL允许使用局部变量和全局变量,局部变量用DECLARE语句说明,而全局变量由系统预先定义和维护。(1)局部变量局部变量在程序中通常用于存储从表中查询到的数据或当作程序执行过程中暂存变量。局部变量必须用开头,而且必须先用DECLARE语句说明后才可使用,其语法如下:DECLARElocal_variableASdata_type,.n参数说明:local_variable:局部变量名。data_type:局部变量的数据类型。例如:DECLAREnamevarchar(8)DECLAREseatint(2)局部变量的赋值局部变量的赋值有两种方法:SET变量名=值(普通赋值)SELECT

174、变量名=值,.(查询赋值)使用SELECT语句赋值时,若返回多个值,将获得所返回的最后一个值。若省略“=”及其后的表达式,可以将局部变量的值显示出来。例如:SETname=张三又如:SELECTname=snameFROMstudentWHEREsno=001(3)全局变量全局变量是由系统预先定义,它们不用说明就可直接使用。全局变量的特征是有两个作前缀,即。全局变量主要用于记录SQLServer2008的运行状态和有关信息。SQLServer2008中的全局变量说明如表13.2所示。3运算符T-SQL中的运算符有算术运算符、比较运算符、逻辑运算符、字符串运算符等四种。(1)算术运算符:共有五种

175、,即加(+)、减(-)、乘(*)、除(/)及取模(%)。(2)比较运算符:共有八种,即等于(=)、大于()、小于(=)、小于等于(=)、不等于(!=或)、不大于(!)及不小于(!)。(3)逻辑运算符:共有三种,即逻辑与(AND)、逻辑或(OR)及逻辑非(NOT)。(4)字符串运算符:共一种,字符串连接运算+。4表达式表达式由常量、变量、属性名或函数通过运算符构成。常用的表达式类型如下:数值型表达式,如x+2y+6;字符型表达式,如中国首都北京;日期型表达式,如2002070119970701;逻辑关系表达式,如“工资1200AND工资1800”。5注释符在T-SQL中可使用两类注释符:ANSI

176、标准的注释符“-”用于单行注释;与C语言相同的程序注释符号,即“/”。6批处理批处理是T-SQL语句行的逻辑单元,它一次性地发送到SQLServer执行。SQLServer2008将批处理语句编译成一个可执行单元,此单元称为执行计划。一个批处理内的所有语句要么放在一起通过解释,要么没有一句能够执行。在批处理程序中通过GO语句分隔。此外,SQLServer2008还规定:对定义数据库、表以及存储过程和视图等语句,必须在语句末尾添加GO批处理标志。在批处理前必须用USE语句指明该批处理所用的数据库并打开。例13.1注释、批处理语句。-第一个批处理完成打开数据库的操作USES-C-TGO/*GO是批

177、处理结束标志*/-第二个批处理查询t_student表中的数据SELECT*FROMt_studentGO-第三个批处理查询姓王的女同学的姓名SELECTSNAMEfromt_studentWHEREsnameLIKE王%ANDssex=女GO13.2.2T-SQL中的SQL语句操作T-SQL包括核心SQL语句操作的以下部分:1.数据定义数据定义:定义和管理数据库及各种数据库对象,包括数据库、表、架构、视图、触发器、存储过程、用户自定义的数据类型等。对它们可做创建、删除、修改等操作。2.数据操纵数据操纵:数据库对象中的操作,即数据的增加、删除、修改、查询等数据操纵功能。3.数据控制:数据控制:

178、数据安全管理包括权限管理等操作,此外还包括完整性约束等操作。4.事务事务:事务是一种数据控制,它在T-SQL编程中特别重要,因此下面作特别介绍。事务是一个用户定义的完整的工作单元,在T-SQL程序中一个事务内的所有语句被作为整体执行,要么全部执行,要么全部不执行。在SQLServer2008中一共有三种不同的事务模式:(1)显式事务)显式事务显式事务是指由用户定义的事务语句,这类事务又称做用户定义事务。它包括:BEGINTRANSACTION:标识一个事务的开始,即启动事务。其语法如下:BEGINTRANSACTIONtransaction_name|tran_name_variableCOM

179、MITTRANSACTION:标识一个事务的结束,事务内所修改的数据被永久保存到数据库中。其语法如下:COMMITTRANSACTIONtransaction_name|tran_name_variableROLLBACKTRANSACTION:标识一个事务的结束,说明事务执行中遇到错误,事务内所修改的数据被回滚到事务执行前的状态,事务占用的资源将被释放。其语法如下:ROLLBACKTRAN|TRANSACTIONtransaction_name|tran_name_variable|savepoint_name|savepoint_variable(2)隐式事务)隐式事务在隐式事务中,在当前

180、事务提交或回滚后,SQLServer2008自动开始下一个事务。所以,隐式事务不需要使用BEGINTRANSACTION语句启动,而只需要使用ROLLBACKTRANSACTION、COMMITTRANSACTION等语句提交或回滚事务。执行SETIMPLICIT_TRANSACTIONSON语句可使SQLServer进入隐式事务模式。在隐式事务模式下,当执行下面语句时可使SQLServer2008重新启动一个事务:CREATE语句;DROP语句;SELECT语句;DELETE语句;INSERT语句;UPDATE语句;OPEN语句;FETCH语句;REVOKE语句;ALTERTABLE语句。需

181、要关闭隐式事务模式时,可使用SETIMPLICIT_TRANSACTIONSOFF语句。例13.2插入表信息。SETIMPLICIT_TRANSACTIONSONUSES-C-TGOUPDATEStudentSETSage=Sage+1COMMITTRANSACTIONSETIMPLICIT_TRANSACTIONSOFFGO(3)自动事务)自动事务在自动事务中,事务是以一个SQL语句为单位自动执行。当一个SQL语句开始执行时即自动启动一个事务,在它成功执行后,即自动提交,而当执行过程中产生错误时则自动回滚。自动事务模式是SQLServer2008的默认事务管理模式。当与SQLServer建立

182、连接后,直接进入自动事务模式,直到使用BEGINTRANSACTION语句开始一个显式事务,或者打开IMPLICIT_TRANSACTIONS连接选项进入隐式事务模式为止。而当显式事务被提交或IMPLICIT_TRANSACTIONS被关闭后,SQLServer又进入自动事务管理模式。13.2SQLServer2008自含式方式及自含式语言T-SQL13.2.1T-SQL数据类型、变量及表达式13.2.2T-SQL中的SQL语句操作13.2.3T-SQL中的流程控制语句13.2.4T-SQL中的数据交换操作13.2.5T-SQL中的存储过程*13.2.6T-SQL中的函数13.2.7T-SQL

183、编程13.2.3T-SQL中的流程控制语句流程控制语句是指那些用于控制T-SQL程序执行的语句,如表13.3所示。13.2.4T-SQL中的数据交换操作在T-SQL中的数据交换操作主要是游标操作与诊断操作,主要用于数据库数据与程序数据间的交互。1游标T-SQL中的游标共有五条语句,它们是:(1)声明一个游标DECLARE语句用于声明一个游标。DECLARE语法格式如下:DECLARECursor_nameCURSORLOCAL|GLOBALFORWARD_ONLY|SCROLLREAD_ONLYFORSELECT_statementFORUPDATEOFcolumn_name,.n;Curso

184、r_name:是所定义游标名。LOCAL:指明游标是局部的,它只能在它所声明的过程中使用。GLOBAL:游标对于整个连接全局可见。FORWARD_ONLY:指定游标只能向前滚动。READ_ONLY:只读。SCROLL:指定游标读取数据集数据时,可根据需求,向任何方向或位置移动。SELECT_statement:是定义游标结果集的SELECT语句。FORUPDATEOFcolumn_name,.n:定义游标中可更新的列。(2)打开游标打开游标用OPEN语句,其语法格式如下:OPENGLOBALCursor_name|Cursor_variable_name参数说明:GLOBAL:指定Cursor

185、_name是全局游标。Cursor_name:已声明的游标名称。如果全局游标和局部游标都使用Cursor_name作为其名称,那么如果指定了GLOBAL,则Cursor_name指的是全局游标;否则是局部游标。Cursor_variable_name:游标变量名,该变量引用一个游标。(3)读取游标读取游标用FETCH语句,其语法格式如下:FETCHNEXT|PRIOR|FIRST|LAST|ABSOLUTEn|nvar|RELATIVEn|nvarFROMGLOBALCursor_name|Cursor_variable_nameINTOvariable_name,.n参数说明:参数说明:NE

186、XT:紧跟当前行返回结果行,并且当前行递增为返回行。如果FETCHNEXT为对游标的第一次提取操作,则返回结果集中的第一行。NEXT为默认的游标提取选项。PRIOR:返回紧邻当前行前面的结果行。FIRST:返回游标中的第一行并将其作为当前行。LAST:返回游标中的最后一行并将其作为当前行。ABSOLUTEn|nvar:绝对行定位。RELATIVEn|nvar:相对行定位。GLOBAL:指定Cursor_name是指全局游标。Cursor_name:要从中进行提取的打开的游标的名。INTOvariable_name,.n:允许将提取操作的列数据放到局部变量中。(4)关闭游标关闭游标用CLOSE语

187、句,其语法格式如下:CLOSEGLOBALCursor_name|Cursor_variable_name(5)删除游标删除游标用DEALLOCATE语句,释放游标的存储空间。其语法格式如下:DEALLOCATEGLOBALCursor_name|Cursor_variable_name2诊断T-SQL提供四个诊断变量,它们都是全局变量,其中最常用的是fetchstatus,可用它获得诊断结果。当它为0时,表示FETCH执行成功,为-1或-2表示不成功。应用游标与诊断的配合使用可以有效地建立应用与数据库间的数据接口。例13.3用游标取出Student表中年龄小于19岁的学生信息。USES-C-

188、T-打开数据库GODECLAREc_nameCURSORFORSELECTSnameFROMStudentWHERESage=19-声明游标OPENc_name-打开游标FETCHNEXTFROMc_nameWHILEFETCH_STATUS=0BEGINFETCHNEXTFROMc_nameINTOname-取数据PRINTnameEND-打印显示结果CLOSEc_name-关闭游标DEALLOCATEc_name-释放游标GO13.2SQLServer2008自含式方式及自含式语言T-SQL13.2.1T-SQL数据类型、变量及表达式13.2.2T-SQL中的SQL语句操作13.2.3T-

189、SQL中的流程控制语句13.2.4T-SQL中的数据交换操作13.2.5T-SQL中的存储过程13.2.7T-SQL编程13.2.5T-SQL中的存储过程存储过程是SQLServer2008中的一个数据对象,是一个为了完成特定功能所编写的T-SQL程序。在SQLServer2008中常用存储过程分为两类,它们分别是:用户定义的存储过程用户定义的存储过程:用户定义的T-SQL存储过程中包含一个T-SQL程序,可以接收和返回用户提供的参数。系统存储过程:系统存储过程:由系统提供的存储过程,可以作为命令执行各种操作。系统存储过程定义在系统数据库master中,其前缀是sp_,例如常用的显示系统信息的

190、sp_help存储过程。这里主要介绍用户定义的存储过程,包括存储过程的创建、使用和删除。其所使用的方法有两种,它们是SQLServerManagementStudio下的人机交互与T-SQL方式。1.使用T-SQL语句1)使用CREATEPROCEDURE语句创建存储过程CREATEPROCEDUREprocedure_nameparameterdata_type=defaultOUT|OUTPUTREADONLY,.nAS;.n;参数说明:vprocedure_name:存储过程的名称。vparameter:存储过程中的参数。vdata_type:数据类型。vDefault:默认值。vOUT

191、PUT:指示该参数是输出参数。vREADONLY:指示该参数是只读的。vSQL_statement:包含在过程中的T-SQL程序。例13.4编写存储过程从S-C-T数据库中查询学生学号、姓名、课程名、成绩。USES-C-TGOCREATEPROCEDUREstu_cjASSELECTstudent.Sno,student.Sname,course.Cname,SC.gradeFROMstudent,SC,courseWHEREstudent.Sno=SC.SnoANDSC.Cno=course.CnoGO在存储过程中可以使用Return语句向调用程序返回一个整数(称为返回代码),指示存储过程的

192、执行状态。例13.5带RETURN语句的存储过程。USES-C-TGOCREATEPROCEDUREpr_count2(sdeptVARCHAR(8)=,numINTOUTPUT)ASIFsdept=BEGINPRINT请输入系名!RETURN1ENDSELECTnum=COUNT(*)FROMstudentWHEREsdept=sdeptIFnum=0BEGINPRINT系名错误!RETURN2ENDRETURN0GO2)存储过程的调用存储过程的调用执行可以用EXEC命令,其语法形式为:EXEC|EXECUTEreturn_status=module_name|module_name_var

193、parameter=value|variableOUTPUT|DEFAULT,.nWITHRECOMPILE参数说明:return_statuts:可选的整型变量,存储模块的返回状态。这个变量在用于Execute语句前,必须在批处理、存储过程或函数中声明过。module_name:所调用的过程(模块)名。module_name_var:过程(模块)名变量。parameter:参数名。value:参数值。variable:用来存储参数或返回参数的变量。OUTPUT:指定模块或命令字符串返回一个参数。该模块或命令字符串中的匹配参数也必须已使用OUTPUT创建。使用游标变量作为参数时使用该关键字。D

194、EFAULT:根据模块的定义,提供参数的默认值。WITHRECOMPILE:每次执行此存储过程时,都要重新编译。例13.7例13.4中存储过程的调用执行可以用:Execstu_cj在执行存储过程的语句中,有两种方式传递参数值,分别是按参数位置传递参数值和按参数名传递参数值。如例13.6可以采用如下两种方式传递参数:按参数位置传递参数值:DECLAREscoreINTEXECpr_grade200515002,操作系统,scoreOUTPUTSELECTscore使用参数名传递参数值:DECLAREscoreINTEXECpr_gradesno=200515002,cname=操作系统,grad

195、e=scoreOUTPUTSELECTscore2.使用SQLServerManagementStudio1)存储过程的创建(见课本)2)存储过程的调用3)删除存储过程13.2SQLServer2008自含式方式及自含式语言T-SQL13.2.1T-SQL数据类型、变量及表达式13.2.2T-SQL中的SQL语句操作13.2.3T-SQL中的流程控制语句13.2.4T-SQL中的数据交换操作13.2.5T-SQL中的存储过程13.2.7T-SQL编程13.2.7T-SQL编程T-SQL语言主要应用于服务器后台编程和存储过程、触发器与函数的编程中。下面对这四方面应用作介绍。1.存储过程的编程例1

196、3.9编制一个存储过程,该存储过程根据S-C-T数据库输入系别,输出该系所有学生的平均分情况。USES-C-TGOCREATEPROCEDUREprintscoredeptvarchar(10)/*printscore是存储过程名是存储过程名,dept为输入参数为输入参数,是需要是需要查询的系名查询的系名*/AS/*AS表示存储过程体的开始表示存储过程体的开始*/BEGINTRANSACTIONDECLAREs_namevarchar(20),s_novarchar(10),gradeint/*声明存储过程中将用到的局部变量声明存储过程中将用到的局部变量*/PRINT-StudentGrade

197、Report-打印提示内容打印提示内容DECLAREmy_cursorCURSORREAD_ONLY/*声明游标声明游标,read_only表示游标为只读表示游标为只读*/FORSELECTstudent.Sno,student.Sname,avg(CS.grade)FROMstudent,SCWHEREstudent.Sdept=deptANDstudent.Sno=CS.SnoGROUPBYSC.Sno,student.SnameOPENmy_cursorFETCHnextFROMmy_cursorINTOs_no,s_name,gradeWHILE(fetch_status=0)-fet

198、ch_status=0表示取值成功表示取值成功BEGIN/*打印学生学号、姓名及成绩打印学生学号、姓名及成绩*/PRINT 学号学号: + s_noPRINT 姓名姓名: + s_namePRINT 成绩等级成绩等级: IF grade =0 PRINT 不及格不及格.IF grade 90 PRINT 优秀优秀!IF grade =60 PRINT 通过通过. FETCH next FROM my_cursor INTO s_no,s_name,gradeEND/*关闭游标关闭游标*/CLOSE my_cursor/*释放游标释放游标*/DEALLOCATE my_cursorCOMMIT

199、TRANSACTIONGO3.函数的编程函数的编程例13.11定义一个函数,能查询到成绩大于stuscroe的学生名单。USES-C-TGOCREATEFUNCTIONstudentlist(stuscroenumeric(5,1) RETURNscoreinfomationTABLE (sno CHAR(5), snCHAR(20),cno CHAR(4), studentlistnumeric(5,1)ASBEGININSERTscoreinfomation (SELECTstudent.Sno,student.Sname,SC.Cno,SC.Grade FROMstudent,SC WH

200、EREstudent.SnoSC.SnoANDSC.Gradestuscroe)RETURNENDGO4.服务器后台编程服务器后台编程服务器后台编程须用sqlcmd命令执行。其格式如下:sqlcmdsqlcmd命令执行是在Windows界面上操作的,其步骤如下:(1)打开Windows,进入Windows窗口。(2)单击“开始”按钮依次指向“所有程序”“附件”“记事本”并单击;(3)复制T-SQL代码并将其粘贴到记事本中;(4)在C驱动器中将文件保存为:myScript.sql(可定义);以上四个步骤是文档编辑,接下来的步骤是文档(即命令)执行。(5)依次单击“开始”,“运行”。(6)输入sq

201、lcmd.exe,打开命令提示符窗口,输入命令。(7)按【Enter】键执行命令,即运行脚本文件。(8)将输出结果保存至文本文件中。(见课本例(见课本例13.12实例实例)13.3SQLServer2008调用层接口方式ADO13.3.1ADO介绍13.3.2利用ADO对象编程13.3.1ADO介绍1ADO的面向对象方法ADO(ActiveXDataObjects,ActiveX数据对象)是在ODBC之上由微软公司开发的调用层接口工具。它是在网络环境下两个不同结点(服务器与客户机)间的数据接口工具。ADO采用面向对象方法及组件技术,为用户使用调用层接口提供了更为简单、方便与有效的方法。目前,它

202、已取代ODBC及SQL/CLI成为最常用的调用层接口工具之一。2Connection对象Connection对象用于建立或断开客户端应用程序与服务器端数据库间连接。它常用的有三个属性及四个方法,它们分别是:(1)属性1:ConnectionString属性。该属性给出了连接中的主要参数,它包括:Driver:指出驱动程序类别。如Oracle、SQLServer2008及DB2等。Server:指出数据库所在服务器的IP地址。UID:给出应用程序所对应的用户名。Database:给出数据库名。PWD:给出用户使用数据库的口令。它们都包含于一个长字符串内,因此称连接串。(2)属性2:Default

203、Database。该属性指出了Connecion中的默认数据库名。由于在应用中数据库名经常是固定的,因此可用此属性以简化表示。(3)属性3:State,该属性给出了Connection的连接状态。即连接或断开。(4)方法1:Open,打开连接。(5)方法2:Close,关闭连接。(6)方法3:Execute,执行打开后的SQL语句、存储过程等。(7)方法4:Cancel,中止当前数据库操作的执行。3Command对象Command对象用于SQL查询语句的发送与执行,它还可用于对调用存储过程的发送与执行。它常用的有四个属性及两个方法:(1)属性1:CommandText。该属性给出了Comman

204、d对象的命令形式。如SQL查询语句、存储过程调用语句、表名等,它以文本形式表示,因此称命令文本。这是Command对象的主要属性。(2)属性2:CommandType。该属性给出了的命令文本类型,如SQL语句、存储过程、表名等。(3)属性3:ActiveConnection。该属性指出当前Command所属的Connection对象。(4)属性4:State。该属性给出了当前的运行状态,包括打开或关闭两种状态。(5)方法1:Execute。该属性发送及执行命令。(6)方法2:Cancel。该属性取消Execute的调用。4RecordSet对象RecordSet对象用于对记录集合的处理,它的来

205、源是在Command对象执行后所得到的数据集合(如查询命令结果),它也可以来源于数据库中的表。对这些记录集需作进一步的处理,包括将其分解成为逐个数据(称标量数据)供应用程序使用,也包括对它的直接处理,如下所示:(1)属性1:AbsolutePosition,指出游标当前所在记录集中的绝对位置。(2)属性2:Bof,指出游标当前是否指向记录集中的首记录。(3)属性3:Eof,指出游标当前是否指向记录集中的末记录。(4)属性4:ActivePosition,指出当前RecordSet所属的Connection对象。(5)属性5:Source,返回生成记录集的命令字符串,它可以为SQL查询、存储过程

206、名及表名等。(6)属性6:Filter,给出记录集的过滤条件。(7)属性7:Sort,设置排序字段(8)方法1:Open,打开一个记录集。(9)方法2:Close,关闭一个记录集。(10)方法3:Move,移动游标至记录集中指定位置。(11)方法4:MoveFirst,移动游标至记录集中首记录。(12)方法5:MoveLast,移动游标至记录集中末记录。(13)方法6:MoveNext,移动游标至下一个记录。(14)方法7:MovePrevious,移动游标至上一个记录。(15)方法8:AddNew,在记录集中增加一个记录。(16)方法9:Delete,删除当前游标所指定的记录。(17)方法1

207、0:GetRows,从记录集中读取一组记录。(18)方法11:Update,保存当前记录的更改。(19)方法12:Find,在记录集中找到满足条件的记录。5ADO的操作步骤ADO的操作主要是三个对象的使用,在使用前首先需要创建对象中的实例,接着,按一定次序与步骤使用三个对象。一般来讲,可分为下面几个步骤:(1)首先,创建对象中的实例及相应环境。(2)其次,通过Connection对象建立连接。(3)接着,用Command对象发送与执行命令。(4)随后,(与应用程序结合)用RecordSet对象作数据分发。(5)最后,用Connection对象断开连接。这五个步骤可用图13.7表示。13.3.2

208、利用ADO对象编程目前客户端的应用程序可用C、C+等编写,也可用VBScript或JavaScript等编写。其编写步骤一般可分为下面三步:第一步:创建应用程序;第二步:ADO相关的代码设计(包括定义相关变量和函数);第三步:功能代码设计。下面通过实例来说明用VC+6.0通过ADO对象连接SQLServer2008中的数据库的方法。(实例见课本例(实例见课本例13.13)13.4.5用ASP连接到SQLServer2008在Web方式中用ASP连接到SQLServer2008一般有两种方法:1ASP+VBScript(JScript)+ADO访问SQLServer2008数据库在通常情况下,当

209、网页内需编码时,ASP与SQLServer2008数据库的数据交换是通过这种方式进行的。在其中ASP作为一种开发环境,组合HTML编写网页、VBScript(Jscript)编写代码,再加上用ADO与SQLServer2008数据库接口,从而完成Web方式中的数据接口。2ASP+ADO访问SQLServer2008数据库当不需要在网页中用VBScript或JScript脚本语言编码时,在网页中可以直接利用ADO对SQLServer2008数据库中的数据进行查询、更新等操作及调用存储过程对象。通过上面两种方法嵌入至HTML网页编写中可以实现动态网页。第14章SQLServer2008用户管理及数

210、据安全性管理数据库系统是一种共享资源的系统,它可为多个用户提供资源服务。但是用户共享数据库资源应该按一定规则进行,超越规则的、过度的共享则会造成安全危机。因此,用户使用数据库与数据库的安全是紧密关联的在SQLServer2008中不是任何人都能作为用户访问数据库的,他必须按一定规则访问,称访问权限。而不同用户的访问权限是不同的,因此使用者只有授予一定访问权限后才能成为SQLServer2008的用户。其次,具有一定权限的用户在访问数据库时还必须接受SQLServer2008系统的检验,可称为系统验证或认证。第14章SQLServer2008用户管理及数据安全性管理14.1SQLServer20

211、08数据安全性概述14.1SQLServer2008数据安全性概述14.1.1安全主体和安全对象14.1.2安全主体的标识与权限14.1.3SQLServer2008安全层次与安全检验14.1.4SQLServer2008安全性管理操作14.2SQLServer2008中安全主体的安全属性设置与维护操作14.1SQLServer2008数据安全性概述数据安全性概述SQLServer2008的数据安全性是由两种安全主体与两个安全层次所组成,并形成一个有效的、完整的、严格的防护体系。14.1.1安全主体和安全对象1.安全主体安全主体安全主体又称主体,即用户。指的是可以申请SQLServer2008

212、中资源的个体、群体或过程。安全主体按覆盖范围分为Windows级、SQLServer级及数据库级三级。(1)Windows级的主体有Windows组登录名,Windows域登录名及Windows本地登录名。(2)SQLServer级的主体有SQLServer登录名。(3)数据库级的主体有数据库用户名。2.安全对象安全对象安全对象又称安全客体,是SQLServer2008管理的、可进行保护的实体分层集合,是主体所能访问的数据库资源。它包含三层,分别为服务器、数据库(架构)和数据库对象。(1)服务器级别的安全对象主要是指定的服务器,包括服务器名及相应固定角色。(2)数据库级别所包含的安全对象主要是

213、指定的数据库、架构等,包括数据库名、架构名、固定数据库角色及应用程序角色等。(3)数据库对象级别所包含的安全对象主要是指定的数据库对象,包括表、视图、函数、存储过程等。3.安全主体访问安全对象安全主体访问安全对象即用户访问数据库资源,此时用户必须掌握有一定的访问资源的范围以及操作范围,分别称为资源权限(或称客体权限)与操作权限,它们统称为访问权限。有关安全主体与安全对象间的关系如图14.1所示。14.1.2安全主体的标识与权限(1)主体标识:主体标识包括主体名与密码等。例如,Window级中的操作系统登录账户名(及密码)、SQLServer级服务器的登录名及密码、数据库级的数据库用户名等。(2

214、)客体权限:即主体所能访问的安全客体的范围(如服务器、数据库、架构、数据库对象等)。(3)操作权限:即主体对客体所能执行的操作。操作与客体紧密关联的,不同客体有不同操作。14.1.3SQLServer2008安全层次与安全检验1SQLServer2008的三个安全类别与两种安全层次(1)第一层操作系统与SQLServer服务器的安全性:这一级别的安全性建立在控制操作系统与服务器登录账号和密码的基础上,即必须具有正确的Windows操作系统或服务器登录账号和密码才能连接到SQLServer服务器。(2)第二层数据库的安全性:用户在通过第一层之后,即进入数据库,此时需要数据库用户名才能连接到相应的

215、数据库并访问相应的数据库及数据库对2SQLServer2008安全检验在SQLServer2008中,安全主体访问客体时必须经两个层次权限检验,亦称访问控制权限检验,亦称访问控制。具体来说,即在主体访问客体时系统必须检验两个层次中主体访问权限,只有权限通过后访问才能得以进行。14.1.4SQLServer2008安全性管理操作从上面的介绍可以看出,SQLServer2008安全性管理实际上是有两个部分,它们是:1.安全主体三个基本属性设置与维护即对安全主体的标识及其客体权限与操作权限的设置与维护。它可以通过两种操作实现,即SQLServerManagementStudio平台及T-SQL两种方

216、式。2.安全性检验安全性检验即按两个层次实现安全主体对安全客体各种权限的访问检验。它可以通过SQLServerManagementStudio平台下的人机交互操作实现。第14章SQLServer2008用户管理及数据安全性管理14.1SQLServer2008数据安全性概述14.2SQLServer2008中安全主体的安全属性设置与维护操作14.2.1SQLServer2008服务器安全属性设置与维护操作14.2.2SQLServer2008数据库安全属性设置与维护操作14.2.4 SQLServer2008数据库安全属性设置与维护操作之三数据库对象管理14.2SQLServer2008中安全

217、主体的安全属中安全主体的安全属性设置与维护操作性设置与维护操作14.2.1SQLServer2008服务器安全属性设置与维护操作1.系统级别安全操作的主体sa2.服务器登录名创建(1)创建Windows登录账户(2)创建SQLServer登录账户3.维护登录账户4.使用T-SQL方式管理登录名(1)以SQL语句方式创建登录名在SQLServer2008中创建登录名可以使用CREATELOGIN,其语法格式如下:CREATELOGINlogin_nameWITHPASSWORD=password,./*WITH子句用于创建SQLServer登录名*/|FROM/*FROM子句用于创建其他登录名*

218、/WINDOWSWITH,. 其中,参数说明:参数说明:login_name:登录名,指定创建的登录名。password:仅适用于SQLServer登录名,指定正在创建的登录名的密码。SID=sid:仅适用于SQLServer登录名,指定新SQLServer登录名的Guest名。如果未选择此选项,则SQLServer自动指派Guest名。DEFAULT_DATABASE=database:指定将指派给登录名的默认数据库。如果未包括此选项,则默认数据库将设置为master。DEFAULT_LANGUAGE=language:指定将指派给登录名的默认语言。如果未包括此选项,则默认语言将设置为服务器

219、的当前默认语言。即使将来服务器的默认语言发生更改,登录名的默认语言也仍保持不变。WINDOWS:指定将登录名映射到Windows登录名。(2)SQL语句方式删除登录名删除登录名使用DROPLOGIN命令。语法格式如下:DROPLOGINlogin_name5.固定服务器角色固定服务器角色服务器角色是独立于各个数据库的。在SQLServer中创建一个登录名后,须赋予该登录者一定的管理服务器的权限,此时可设置该登录名为服务器角色的成员。SQLServer2008提供了9个固定服务器角色,它们的清单和功能如下:(1)sysadmin:系统管理员,角色成员可对SQLServer服务器进行所有的管理工作

220、,为最高管理角色。这个角色一般适合于数据库管理员(DBA)。(2)securityadmin:安全管理员,角色成员可以管理登录名及其属性,可以授予、拒绝、撤销服务器级和数据库级的权限,还可以重置SQLServer登录名的密码。(3)serveradmin:服务器管理员,角色成员具有对服务器进行设置及关闭服务器的权限。(4)setupadmin:设置管理员,角色成员可以添加和删除链接服务器,并执行某些系统存储过程。(5)processadmin:进程管理员,角色成员可以终止SQLServer实例中运行的进程。(6)diskadmin:用于管理磁盘文件。(7)dbcreator:数据库创建者,角色

221、成员可以创建、更改、删除或还原任何数据库。(8)bulkadmin:可执行BULKINSERT语句,但是这些成员要对插入数据的表有INSERT权限。BULKINSERT语句的功能是以用户指定的格式复制一个数据文件至数据库表或视图。(9)public:角色成员可以查看任何数据库。14.2.2SQLServer2008数据库安全属性设置与维护操作1.数据库用户管理操作1)使用SQLServerManagementStudio创建与维护数据库用户2)使用T-SQL语句创建与维护数据库用户(1)使用CREATEUSER语句创建数据库用户语法格式:CREATEUSERuser_nameFOR|FROML

222、OGINlogin_name|WITHOUTLOGINWITHDEFAULT_SCHEMA=schema_namev参数说明:vuser_name:指定数据库用户名。vFOR或FROM:用于指定相关联的登录名。vLOGINlogin_name:指定创建数据库用户的SQLServer登录名。login_name必须是服务器中有效的登录名。当此登录名进入数据库时,它将获取创建的数据库用户的名称和ID。vWITHOUTLOGIN:指定不将用户映射到现有登录名。1.WITHDEFAULT_SCHEMA:指定服务器为此数据库用户解析对象名称时将搜索的第一个架构,默认为dbo。v14.2.4SQLServ

223、er2008数据库安全属性设置与维护操作之三数据库对象管理数据库级别中安全主体是数据库用户的安全管理。但它的安全客体是数据库对象。数据库用户所真正访问的数据客体是数据库对象,它包括数据库对象名及相应操作。权限的操作涉及授予权限、拒绝权限和撤销权限三种。授予权限(GRANT):将指定数据库对象上的指定操作权限授予指定数据库用户。撤销权限(REVOKE):指撤销或删除以前授予的权限及停用其他用户继承的权限。拒绝权限(DENY):指拒绝其他用户授予的权限及继承的权限。1使用SQLServerManagementStudio管理权限(1)授予数据库上的权限(2)授予数据库对象上的权限(3)拒绝和撤销数

224、据库及表的权限2使用T-SQL语句管理权限(1)授予权限利用GRANT语句可以给数据库用户、数据库角色或数据库对象授予相关的权限。语法格式如下:GRANTALL|permission(column,.n),.nONsecurableTOprincipal,.nWITHGRANTOPTIONAS(2)拒绝权限拒绝权限使用DENY语句,它可以拒绝给当前数据库内的用户授予的权限。其语法格式如下:DENYALL|permission(column,.n),.nONsecurableTOprincipal,.nCASCADEASprincipal(3)撤销权限撤销权限使用REVOKE语句,它可撤销以前给

225、数据库用户授予或拒绝的权限。其语法格式如下:REVOKEGRANTOPTIONFORALL|permission(column,.n),.nONsecurableTO|FROMprincipal,.nCASCADEAS14.1SQLServer2008数据安全性概述14.2SQLServer2008中安全主体的安全属性设置与维护操作14.3SQLServer2008中的安全性验证14.3.1SQLServer2008系统身份验证14.3.2SQLServer2008数据库用户验证14.3.3SQLServer2008安全性中几个角色间关系探讨14.3SQLServer2008中的安全性验证中的

226、安全性验证SQLServer2008的安全性验证分为两个层次,分别是Windows身份验证、SQLServer身份验证(统称系统身份验证)及数据库用户验证。14.3.1SQLServer2008系统身份验证1Windows验证模式2SQLServer验证模式14.3.2SQLServer2008数据库用户验证在SQLServer2008系统身份验证后即进入数据库用户验证,它可用SQLServerManagementStudio为工具以人机界面方式进入后作身份验证,这就是第二层身份验证。14.3.3SQLServer2008安全性中几个角色间关系探讨在SQLServer2008安全性中特别重视角

227、色,一般安全主体都赋予一定的角色,在验证中也通过主体角色实现。目前有三类不同的角色,即系统管理员sa、数据库拥有者dbo以及其他角色。下面对它们进行介绍。(1)系统管理员sa(2)dbodbo是DatabaseOwner的简称,如果说sa是实例级别的最高权限者,那dbo就是数据库级别的最高权限者,它相当于数据库管理员。这个用户也同样不能被删除,每一个属于sysadmin的服务器角色都会映射到数据库的dbo用户。服务器的相关操作一般由sa完成。数据库的创建一般由sa完成,数据库结构的修改和数据库的删除也可以由sa完成。(3)其他角色除了上述两个角色外,其他角色的权限都是局部的,它们大都由sa或d

228、bo授予用户。一般来说,除非确有必要,主体尽量不要使用sa与dbo。每个主体所使用的角色应与它的安全需求相匹配,过度和不足均会出现安全上的问题 第第15章章数据库设计数据库设计本篇从工程角度工程角度介绍数据库应用系统的开发。也就是说,从软件工程的五个开发阶段为基础介绍数据库应用系统开发,特别是其中的数据库开发,它也可称为数据工程数据工程。第15章数据库设计数据库设计本章的数据库设计(包含需求分析)中的下列几项内容:v数据库需求分析;v数据库概念设计;v数据库逻辑设计;v数据库物理设计。在数据库应用系统中的一个核心问题就是设计一个符合环境要求又能满足用户需求、性能良好的数据库,这就是数据库设计(

229、databasedesign)的主要任务。第第15章章数据库设计数据库设计15.1数据库设计概述15.2需求分析需求分析15.2.1 需求调查需求调查15.2.2 数据流图数据流图15.2.3 数据字典数据字典15.2.4 系统分析文档系统分析文档在数据库设计的整个过程中需求分析是基础,需求分析的好坏直接影响到最终数据模型。需求分析从调查客观世界问题求解目标对象着手,并作出分析,得到数据流程图及数据字典,最终按一定规范要求以文档形式写出需求说明书.需求分析包括下面的内容:需求调查;数据流程图;数据字典;系统分析说明书。15.2.1需求调查1需求调查内容(1)系统目标与边界(2)业务流程调查(5

230、)薄弱环节调查(4)约束条件调查(3)单据、报表及台账等数据源调查2调查方式(1)查阅书面材料(3)面谈(2)实地调查15.2.2数据流图数据流图15.2.3数据字典数据字典1数据项数据项数据项是数据基本单位,它包括如下内容:数据项名;数据项说明;数据类型;长度;取值范围;约束;与其他项的关联。2数据结构数据结构数据结构由数据项组成,它给出了数据基本结构单位,如数据记录即一种数据结构。它包括:数据结构名;数据结构说明;数据结构组成:数据项/数据结构;数据结构约束。3数据存储数据存储数据存储是数据结构保存之处,也是数据流来源与去向之一,它包括:数据存储名;数据存储说明;输入的数据流;输出的数据流

231、;组成:数据结构;数据量;存取频度;存取方式。4数据处理数据处理数据处理给出处理的说明信息,它包括:数据处理名;数据处理说明;输入数据(数据结构);输出数据(数据结构);处理算法。v15.3数据库的概念设计数据库的概念设计v15.3.1数据库概念设计概述15.1数据库设计概述15.2需求分析15.3数据库的概念设计15.3.1数据库概念设计概述15.3.2数据库概念设计的过程15.3.3概念设计说明书数据库概念设计是建立在需求分析基础上的,其目的是分析数据间的内在语法/语义关联,在此基础上建立一个数据的抽象模型。数据库概念设计所使用的方法常用的是E-R方法,它有三个基本概念必须区分开来,它们是

232、属性、实体、联系。属性与实体是基本对象,而联系则是实体间的语法/语义关联。15.3.2数据库概念设计的过程数据库概念设计的过程在本节中采用视图集成法进行设计,而模型的抽象表示采用E-R方法。其具体步骤如下:1分解分解首先将需求分析中的数据流图及数据字典进行分解,组成若干以数据存储为单位,具有一定独立逻辑功能的目标进行视图设计。2视图设计视图设计(1)实体与属性设计(2)联系设计(3)E-R图设计3视图集成视图集成例例15.2某大学有关学生修读课程登录查询系统的概念设计某大学有关学生修读课程登录查询系统的概念设计流程。流程。1)需求分析)需求分析(1)需求调查某大学有多类学生,其中有大学生(本科

233、生与专科生),他们属教务处管理;有研究生(硕士生与博士生),他们属研究生处管理。教务处与研究生处管理学生的简历、课程状况以及学生选课情况和成绩。教务处与研究生处登录上述相关信息,能随时查询並维护这些信息。(2)数据流图学生修读课程登录查询系统的数据流图如图15.5所示。(3)数据字典数据结构与数据项(有关数据项细节从略):数据结构与数据项(有关数据项细节从略):数据结构1:大学生(学号,姓名,性别,系别,何时入学,班级,班主任姓名,本/专科,选读课程,成绩)。数据结构2:研究生(学号,姓名,性别,系别,入学时间,导师姓名,研究方向,硕/博,选读课程,成绩)。数据结构3:大学生课程(可简称课程1

234、)(课程号,课程名,学分,教师,必/选修)。数据结构4:研究生课程(可简称课程2)(课程号,课程名,学分,教师,必/选修)。数据存储:数据存储:大学生数据存储:输入:大学生简历、课程状况及大学生修课与成绩。输出:同上。数据结构:大学生、大学生课程。数据量:大学生数据10000个;大学生课程数600个。存取频度:每日平均300500。存取方式:应用程序访问为主,人机直接交互为辅。研究生数据存储:输入:研究生简历、课程状况及研究生修课与成绩。输出:同上。数据结构:研究生、研究生课程。数据量:研究生数据1000个;研究生课程数70个。存取频度:每日平均4050。存取方式:应用程序访问为主,人机直接交

235、互为辅。数据处理:(略)15.4数据库的逻辑设计数据库的逻辑设计15.4.1数据库逻辑设计基本方法数据库逻辑设计的基本方法是将E-R图转换成指定RDBMS中的关系模式。此外,还包括关系的规范化、性能调整以及约束条件设置。最后是关系视图的设计。1.从从E-R图到关系模式的转换图到关系模式的转换(1)属性的处理原则上E-R图中的属性与关系中的属性是一一对应的,即E-R图中的一个属性对应于关系中的一个属性。(2)实体集的处理原则上讲,一个实体集可用一个关系表示。(3)联系的转换2规范化关系数据库的规范化即关系模式中的属性间要满足一定的约束关系,否则会出现数据的异常现象,从而造成操作不能正确执行。为避

236、免此种现象出现,一般须对数据库中的关系模式制定一些标准规范。目前常用的规范有五种,凡满足此类规范的模式称范式,它们分别称第一范式、第二范式、第三范式、BC范式及第四范式等。它们可分别简写为:1NF、2NF、3NF、BCNF及4NF。2)概念设计)概念设计(1)视图设计:可以构建两个视图,它们分别是:教务处有关于大学生的视图:该视图共有两个实体、一个联系及相应若干属性,具体如下:实体大学生:学号,姓名,性别,系别,何时入学,班级,班主任姓名,学生类别(本/专科)。实体课程1:课程号,课程名,学分,教师,课程类别(必/选修)。联系选课:成绩。图15.6 教务处关于学生的E-R图研究生处有关于研究生

237、的视图:该视图共有两个实体、一个联系及相应若干个属性,具体如下:实体研究生:学号,姓名,性别,系别,入学时间,导师姓名,研究方向,学生类别(硕/博)。实体课程2:课程号,课程名,学分,教师,课程类别(必/选修)。联系选课:成绩。它们可以构成E-R图,如图15.7所示。(2)视图集成抽取。在这两个视图中,可将大学生与研究生两个实体中的相同属性部分抽取成新实体:学生。经抽取后,这两个实体就变成为三个实体。此外,还须设置两个新联系以建立新、老实体间的关联。这样,经抽取后,两个实体就演变成为三个实体与两个联系如下:实体学生:学号,姓名,性别,系别,入学时间,学生类别。实体大学生:大学生学号,班级,班主

238、任姓名。实体研究生:研究生学号,导师姓名,研究方向。联系学生-大学生。联系学生-研究生。等同。在这两个视图中有如下几个等同:实体课程1与实体课程2等同(包括相应的属性)。两个视图中的联系选课等同(包括相应的属性)。聚合。抽取后的三个实体与两个联系以及等同后的一个实体与一个联系可作聚合,最终集成成为一个视图并可用E-R图表示。冲突和解决。在视图合并过程中有一些冲突需作统一并作一致的表示:将实体名“课程1”与“课程2”统一成为实体名:“课程”。在“课程”中增加属性:“课程性质”,分为“本专科生课程”与“研究生课程”两种。将属性名“何时入学”与“入学时间”统一成为“入学时间”。将学生类别中的不同域“

239、本/专”与“硕/博”统一成为“本/专/硕/博”。图15.8 两个视图集成15.3.3概念设计说明书在做完概念设计后,须编写概念设计说明书,其内容应包括:视图分解;视图的E-R图;集成后的E-R图。数据库的概念设计说明书一般须有规范化的书写方法,在本书中将不做详细介绍。一般而言,一个关系模式至少需满足第三范式,因此第三范式成为鉴别关系模式是否合理的最基本条件。下面介绍判别第三范式的非形式化方法,这个方法有两种判别原则,它们是:(1)原子属性原则)原子属性原则按第一范式要求(同样,也是第三范式要求),关系模式中的属性均为原子属性原子属性,也就是说,属性数据均为基本项。因此凡出现有非原子属性者必须进

240、行分解。非原子属性经常出现的有集合型和元组型两种,其转换办法是集集合属性纵向展开而元组属性则横向展开。合属性纵向展开而元组属性则横向展开。(2)“一事一地一事一地”原则原则“一事一地”原则是判别第三范式的基本原则。所谓“一事一地”(onefactoneplace)原则即一件事放一张表,不同事则放在不同表中的原则。前面的学生数据库中学生(S)、课程(C)与修读(SC)是不相干的三件事,因此必须放在三张不同表中,这样所构成的模式必满足第三范式,而任何其中两张表的组合必不满足第三范式。(3)关系模式的规范化处理数据库逻辑设计由E-R图到关系模式后须对这种模式作规范化处理,其具体方法是:实施原子属性原

241、则:逐个检查模式中的属性,若出现有非原子性者按原子属性原则进行转换处理,最后使模式中的所有属性均为原子的。实施“一事一地”原则:逐个检查模式中的所有关系表,是否为独立事情,否则须作关系表的分解,使得每个关系表都是一个独立的事情。15.4.2关系视图设计逻辑设计的另一个重要内容是关系视图的设计。它是在关系模式基础上所设计的直接面向操作用户的视图,它可以根据用户需求随时构建。关系视图一般由同一数据库下的表或视图组成,它由视图名、视图列名以及视图定义和视图说明等几部分组成。15.4.3一个逻辑设计实例一个逻辑设计实例例15.6例15.2的逻辑设计。1E-R图转换成关系表图转换成关系表E-R图中共有四

242、个实体与三个联系:实体1学生:学号,姓名,性别,系别,入学时间,学生类别。实体2大学生:大学生学号,班级,班主任姓名。实体3研究生:研究生学号,导师姓名,研究方向。实体4课程:课程号,课程名,学分,教师,课程类别(必/选修),课程性质(大学生/研究生)。联系1选课:成绩。联系2学生-大学生。联系3学生-研究生。它们可以转换成关系表如下:(1)实体1可以转换成关系表:学生S(sno,sn,sex,sd,sjt,sc)。(2)实体4可以转换成关系表:课程C(cno,cn,cr,ct,cc,cp)。(3)联系1是一种n:m联系,可以转换成关系表:选课SC(sno,cno,g)。(4)联系2是一种1:

243、n联系,可以归并到实体2。(5)联系3是一种1:n联系,可以归并到实体3。(6)实体2可以转换成关系表:大学生US(usno,sno,usc,usm)。(7)实体3可以转换成关系表:研究生GS(gsno,sno,gsa,gsd)。2.规范化规范化关系表S、C、SC、US及GS均满足“一事一地”原则及原子属性原则,因此满足第三范式。3.细节处理与性能调整细节处理与性能调整无须作细节处理与性能调整。4.约束条件设置约束条件设置(1)学生分类sc=本科,专科,硕士生,博士生;(2)课程分类cc=必修课,选修课;(3)课程性质cp=u,g;(4)成绩g100ANDg0;(5)学生性别sex=m,f;(

244、6)S主键为(sno);(7)C主键为(cno);(8)SC主键为(sno,cno);(9)SC外键为S中的sno及C中cno;(10)US主键为(sno);(11)GS主键为(sno)。5.关系视图关系视图(1)大学生视图US(usno,usn,usex,usd,usjt,usc,usc,usm)=SELECTUS.usno,S.sn,Ssex,S.sd,S.sjt,S.sc,US.usc,US.usmFROMS,USWHEREUS.usno=S.sno(2)研究生视图GS(gsno,gsn,gsex,gsd,gsjt,gsc,gsa,gsd)=SELECTGS.usno,S.sn,S.se

245、x,S.sd,S.sjt,S.sc,GS.gsa,GS.gsdFROMS,GSWHEREGS.gsno=S.sno(3)大学生课程视图UC(ucno,ucn,ucr,uct,ucc)=SELECTcno,cn,cr,ct,ccFROMCWHEREcp=u(4)研究生课程视图GC(gcno,gcn,gcr,gct,gcc)=SELECTcno,cn,cr,ct,ccFROMCWHEREcp=g(5)大学生选课视图USC(usno,ucno,ug)=SELECTUS.usno,UC.ucno,SC.gFROMSC,US,UCWHEREUS.usno=SC.snoANDUC.ucno=SC.cno(

246、6)研究生选课视图GSC(gsno,gcno,gg)=SELECTGS.usno,GC.gcno,SC.gFROMSC,GS,GCWHEREGS.gsno=SC.snoANDGC.gcno=SC.cno6.逻辑设计最终结果(1)6个关系表:S、SC,C、US、GS。(2)6个视图:US、GS、UC、GC、USC、GSC。(3)11个约束。15.5数据库的物理设计数据库的物理设计数据库物理设计是在逻辑设计基础上进行的,其主要目标是对数据库内部物理结构建调整并选择合理的存取路径,以提高数据库访问速度及有效利用存储空间。在现代关系数据库中已大量屏蔽了内部物理结构,因此留给用户参与物理设计的余地并不多

247、,一般的RDBMS中留给用户参与物理设计的内容大致有如下几种:1存取方法的设计索引设计;集簇设计;Hash设计。2存储结构设计文件设计;数据存放位置设计;系统配置参数设计。现就这两个方面的设计作介绍。15.5.3一个物理设计实例下面用一个实例以说明整个物理设计的全过程。例15.7例15.5的物理设计。(1)索引设计S的sno上建立索引;C的cno上建立索引;SC的(sno,cno)上建立索引。(2)文件设计建立一个主文件;建立一个日志文件。第16章数据库管理数据库管理v按照数据工程的开发原理,在完成数据库设计后即进入编码阶段,也就是数据库生成阶段。此后,即数据库的运行与维护阶段。此两部分工作即

248、称为数据库管理。数据库管理的实施是须要有工具的协助与支撑的,它称为数据库管理工具。同时,数据库管理实施还须有专业人员操作,他们称数据库管理员。因此,本章数据库管理由下面几部分内容组成:数据库生成;数据库运行维护;数据库管理工具;数据库管理员。第第16章章数据库管理数据库管理16.1数据库生成16.2数据库运行与维护16.3数据库管理工具16.4数据库管理员16.1数据库生成16.1.1数据库生成的先置条件数据库生成即数据工程中的编码。在此阶段中必须有一些先置条件,它们分别是:1.数据库设计数据库生成必须在完成数据库设计的基础上进行,它是数据库生成的最基本条件。2.平台数据库生成必须建立在一定的

249、平台之上。它包括网络、硬件平台、操作系统平台以及数据库管理系统平台等。3.人员数据库生成必须有专业的数据库管理员。16.1.2数据库生成内容与过程数据库生成的内容很多,它们包括如下一些内容:内容:1.服务器配置2.数据库建立3.表定义4.完整性约束条件定义5.视图定义6.索引定义7.安全性约束条件定义8.存储过程与函数定义9.数据加载10.运行参数设置图16.1 数据库生成全过程示意图生成后的数据库可以提供如下资源:生成后的数据库可以提供如下资源:数据资源:数据资源:这是数据库提供的主要资源。程序资源:程序资源:这是数据库提供的又一种资源,近年来它显得越来越重要。元数据资源:元数据资源:包括数

250、据库中的规则(如数据结构规则、完整性约束规则及安全性约束规则等)及参数,可统称为元数据。它们存储于数据库内统一称数据字典。数据字典的有效使用可以充分的提高数据库使用范围与能力。系统资源系统资源:包括由DBMS所提供的信息服务资源。16.1数据库生成16.2数据库运行与维护16.2.1数据库运行监督16.2.2数据库维护16.2数据库运行与维护数据库运行与维护在完成数据库生成并经统一测试后即进入运行维护阶段。在此阶段中数据库是一个独立部分称数据库运行维护,它可分为数据库运行监督与数据库维护两个部分。16.2.1数据库运行监督1.数据库生成代码出错监督2.数据库操作出错监督3.数据库效率监督16.

251、2.2数据库维护数据库维护在软件工程中,软件维护可分为四种,它们是:纠错性维护、适应性维护、完善性维护及预防性维护。而在数据工程中它亦分为这四种,但其实质内容与软件工程中有所不同。1.纠错性维护之一数据库生成代码纠错性维护2.纠错性维护之二数据库操作纠错性维护3适应性维护之一数据库调优4适应性维护之二数据库重组5完善性维护数据库重构6.预防性维护第第16章章数据库管理数据库管理16.1数据库生成16.2数据库运行与维护16.3数据库管理工具16.4数据库管理员16.3数据库管理工具数据库管理工具为完成数据管理必须有一定数据管理工具,目前提供数据管理工具的有:1DBMS中的SQL语句目前大量的数

252、据管理功能均由DBMS中的SQL语句完成,这涉及SQL中的数据定义、数据操纵、数据控制及数据交换等语句,它们所提供的均为一些常用的管理功能。2DBMS中的数据服务在DBMS目前均有数据服务提供数据管理功能,它们一般以过程形式或专用工具形式出现。但由于数据服务并无一定标准,因此其所提供的能力因系统而异。但是不管如此,数据管理的大部分功能一般都由数据服务提供。3第三方专门工具某些个别数据管理功能需有特殊功能或DBA有特殊需求,可用专门的工具如数据库监控工具、故障恢复工具等,它们在市场中均能购买到。4自编工具少量的数据管理功能如数据加载工具及数据展示工具等,它们与环境紧密相关,因此可由DBA自行编制

253、完成。16.4数据库管理员数据库管理员DBA是管理数据库的核心人物,一般由若干人员组成,他是数据库的监护人,也是数据库与用户间的联系人。DBA具有最高级别的特权,他对数据库系统应有足够的了解与熟悉,一个数据库能否正常、成功的运行,DBA是关键。一般讲,DBA除了完成数据库管理的工作外,它还需要完成相关的行政管理工作以及参与数据库设计的部分工作,其具体任务如下:(1)参与数据库设计的各个阶段的工作,对数据库有足够的了解。(2)负责数据库的生成。(3)负责数据库的运行维护。(4)帮助与指导数据库用户。(5)制定必要的规章制度,并组织实施。第17章数据库编程数据库编程数据库编程主要介绍目前流行的三种

254、数据库编程,它们是:自含式数据库语言T-SQL编程;调用层接口工具ADO编程;Web接口工具ASP编程。第第17章章数据库编程数据库编程17.1数据库编程概述17.2T-SQL编程17.3ADO编程17.1数据库编程概述数据库编程概述1.何为数据库编程数据库编程亦称SQL编程,数据库编程主要用于数据库应用系统开发中的代码生成阶段,它用于编写数据库生成程序及数据库应用程序。数据库生成程序是生成数据库的程序,它包括服务器设置、数据库定义、表定义、视图定义、索引定义、完整性及安全性规则定义、触发器定义、存储过程定义及函数定义等多项内容。数据库应用程序是应用程序的一个部分,它是以应用程序与数据库作数据

255、交换为主的接口程序。它是包含有SQL语句的应用程序。三种数据库编程工具目前流行的三种数据库编程工具是:自含式数据库语言:也称自含式SQL,SQLServer2008中的T-SQL就是自含式SQL。它主要用于数据库生成程序编制,有时也可用于数据库应用程序编制。调用层接口工具:SQLServer2008中的ADO编程,主要用于数据库应用程序编制。Web接口工具:SQLServer2008中的ASP编程,主要用于数据库应用程序编制。17.2T-SQL编程编程本节介绍SQLServer2008中的T-SQL编程。T-SQL是一种完整的程序设计语言,它可以独立编程,它将传统语言中的主要部分与SQL中的基

256、本操作及游标、诊断等相结合,形成一种完整的自含式数据库语言。它目前已替代传统的嵌入式语言成为数据库应用中最为常见的一种编程语言。在T-SQL的数据交换中,它的编程步骤如下:(1)用DECLARE作变量声明。(2)定义游标并打开。(3)用T-SQL编程(一般是一个循环结构)。在其间有数据交换,用FETCH获取数据并用全局变量fetch_status以获取诊断信息。(4)在编程结束后用CLOSE及DEALLOCATE语句关闭游标。17.3ADO编编程程本节介绍SQLServer2008中的ADO编程。目前,它是最常用的调用层接口方法之一。ADO编程开发的一般步骤是:(1)启动VC,新建一个工程;(

257、2)ADO接口编码;(3)应用程序编码。第第18章章数据库应用系统组成与开发数据库应用系统组成与开发在计算机应用中可以有很多应用系统,其中面向面向数据处理并以数据库为核心数据处理并以数据库为核心的应用系统称为数据库应用系统。数据库应用系统有三部分内容:数据库应用系统概述;数据库应用系统组成;数据库应用系统开发步骤。第第18章章数据库应用系统组成与开发数据库应用系统组成与开发18.1数据库应用系统概述18.2数据库应用系统组成18.2.1数据库应用系统基础平台18.2.2数据库应用系统的资源管理层18.2.3数据库应用系统的业务逻辑层18.2.4数据库应用系统的应用表现层18.2.5应用系统的用

258、户层18.3数据库应用系统开发的八个步骤18.1数据库应用系统概述数据库应用系统概述1.数据库应用系统组成从系统观点看,数据库应用系统是以数据库为核心,直接面向用户,为数据处理领域应用服务的一种系统,它是人、机相结合的系统,同时也是硬、软件相结合的系统,它包括人、硬件、软件与数据资源等多种资源相结合的综合性系统。因此它的组成不仅与数据库有关,而是由多种内容按一定逻辑关系所结构而成。本章介绍这种系统的组成。2.数据库应用系统开发步骤在本书的前面部分主要介绍以遵从数据工程开发原则为主,但是考虑到数据库应用系统的综合性,它还包括大量软件与硬件,它是软、硬件集成体,所以在开发中要考虑到非数据库中的软件

259、因素以及硬件的因素。故而数据库应用系统的开发步骤中除了数据工程、软件工程中的开发步骤外还需增加新的步骤,构成数据库应用系统开发的完整过程。18.2数据库应用系统组成数据库应用系统组成数据库应用系统由基础平台层、资源管理层、业务逻辑层、应用表现层及用户层等五部分按图18.1所示结构组成。1.硬件层2.系统软件层系统软件层包括如下的内容:(1)操作系统:操作系统是软、硬件接口,它管理硬件资源与调度软件,它为整个系统提供资源服务。常用的有Windows、UNIX及Linux,此外,还有MacOS及Android等。(2)语言处理系统:语言处理系统为开发业务逻辑提供主要的工具和手段。常见的有C、C+、

260、C#及Java等。(3)数据库(管理)系统:数据库(管理)系统是整个系统的数据管理机构。它为资源管理层提供服务。常用的有Oracle、SQLServer等。3.支撑软件层(1)中间件:(2)接口软件(4)其他辅助开发工具(3)Web开发工具4.基础平台的结构18.2.2数据库应用系统的资源管理层数据库应用系统的资源管理层主要用于对系统的数据管理,也称数据层,这种管理包括文件管理、数据库管理及Web管理等三部分。8.2.3数据库应用系统的业务逻辑层业务逻辑层是数据库应用系统中保存与执行应用程序的场所,在B/S结构中它一般存放于Web服务器或应用服务器内,在C/S结构中则存放于客户机内。在该层中一

261、般由两部分组成,它们是:应用开发工具以及应用程序。18.2.4数据库应用系统的应用表现层应用表现层有两种,一种是系统与用户直接接口,它要求可视化程度高、使用方便,该层在C/S结构中存放于客户机中,而在B/S结构中则存放于Web服务器中。它一般由界面开发工具以及应用界面两部分组成18.2.5应用系统的用户层用户层是应用系统的最终层,它是整个系统的服务对象。在用户层中用户是具有一定访问权限的系统使用者。它有两类含义:(1)用户是使用系统的人,一般情况下用户都具有此类含义。(2)有时,用户也可以是另一个系统,此时即是两个系统间的机机交互而不是人机交互。18.3数据库应用系统开发的八个步骤数据库应用系

262、统开发的八个步骤1.计划制订2.需求分析3.软件设计(1)应用程序设计(2)数据库设计4.系统平台设计5.软件详细设计6.代码生成7.测试8.运行维护图18.2 数据库应用系统开发八个步骤示意图第第19章章数据库在事务处理领域中的应用数据库在事务处理领域中的应用 数据库的应用一般分为两部分,它们是事务型应用与分析型应用。事务型应用 事务型应用又称联机事务处理(OnLine Transaction Processing, OLTP),它具有事务处理特色,其主要操作特点是:数据结构稳定:短事务性:数据操作出现频率高。2分析型应用 分析型应用具有分析处理特性,其主要是:分析型应用具有由“数据”通过分

263、析而形成“规则”的特点。分析型应用的数据具有海量的、总结性的、与历史有关的、涉及面宽的多种特点。分析型应用具有长事务性、操作类型多等特性 第第19章章数据库在事务处理领域中的应用数据库在事务处理领域中的应用19.1数据库在电子商务中的应用19.2数据库在客户关系管理中的应用19.3数据库在企业资源规划中的应用第第19章章数据库在事务处理领域中的应用数据库在事务处理领域中的应用19.1数据库在电子商务中的应用19.1.1电子商务简介19.1.2电子商务发展历程19.1.3电子商务的特点与优势9.1.4电子商务应用系统的构成19.2数据库在客户关系管理中的应用19.3数据库在企业资源规划中的应用1

264、9.1.1电子商务简介电子商务是指在计算机网络上销售与购买商品并实现整个贸易过程中各阶段交易活动的电子化。电子商务源于英文的ElectronicCommerce,简称EC,其内容实际上包括两个方面,一个是电子方式,另一个是商贸活动1电子方式电子方式是电子商务所采用的手段(1)计算机网络技术(2)数据库技术2商贸活动(1)B2C模式(2)B2B模式19.1.3电子商务的特点与优势1高效性2方便性3透明性5改变商业运作模式4提供有效服务19.1.4电子商务应用系统的构成从计算机的角度看,电子商务是一种数据库应用系统,它在数据库支撑下完成各种商务上的相关业务。一般而言,电子商务应用系统由如下几部分组

265、成:1基础平台层2资源管理层数据层3业务逻辑层应用层业务逻辑层也可称应用层即电子商务的业务处理层,它包括电子商务的各种业务活动,由相关软件编制而成包括如下内容:(1)电子交易(2)订单管理(3)电子洽谈(4)电子支付(5)电子服务(6)网上广告(7)资料收集(8)综合查询(9)统计分析4应用表现层一界面层电子商务应用系统与外部的接口很多,如银行、税务、海关以及众多的使用客户及专用客户,因此必须有多个接口,它们称应用表现层也称界面层。一般而言,界面大致可分两种:(1)直接用户接口其所采用的技术可以是可视化技术以及Web技术,其形式是多样化的,如菜单、窗户、报表、图表、文字等形式,也可以是图形、图

266、像、语音、视频、音频等形式。(2)间接用户接口此种界面所面向的是应用程序间接口,它们之间的界面实际上是一种数据交互接口,它可由一组软/硬件通过网络实现,如电子商务与银行、税务、海关间的接口。5.用户层最后是使用电子啇务系统的用户。它们是直接用户或间接用户。图19.3基于电子商务的数据库应用系统第第19章章数据库在事务处理领域中的应用数据库在事务处理领域中的应用19.1数据库在电子商务中的应用19.2数据库在客户关系管理中的应用19.2.1客户关系管理介绍19.2.2CRM内容的确定19.2.3CRM应用系统的构成19.3数据库在企业资源规划中的应用19.2数据库在客户关系管理中的应用数据库在客

267、户关系管理中的应用19.2.1客户关系管理介绍客户关系管理(CustomerRelationshipManagement,CRM),是1999年由美国GartnerGroupInc公司首先提出,CRM是一个以客户为中心信息系统,它可为企业提供全方位的管理视角,赋予企业完善与客户交流能力,最大化客户收益率。CRM在美国一经提出立即受到广泛响应,并迅速发展到全球。在我国,CRM于2001年开始有介绍,2002年相关的系统(包括国外引进以及国内开发)也陆续出现,有关应用也逐渐推广。CRM应具有如下三个特性:v(1)CRM的内容包括企业运营、销售与服务等范围应以客户为中心,并以建立企业与客户良好关系为

268、目的。v(2)CRM的构架应是集成客户相关信息,提供服务与及时分析为一体的集成系统。v(3)CRM是以数据库技术与网络技术为核心的计算机信息系统,它具有最新技术的支撑。19.2.2CRM内容的确定内容的确定CRM内容是从“客户关系”的理解出发,即是企业中与客户有关的所有管理,它包括1信息管理2客户服务3客户管理与市场管理4客户关系分析19.2.3CRM应用系统的构成一个CRM应用系统从结构上看,与电子商务应用系统类似,但其内容则有所不同,它由如下几个部分组成:1基础平台层2资源管理层数据层3业务逻辑层应用层4.应用表现层界面层5.用户层图19.4 基于CRM的数据库应用系统第第19章章数据库在

269、事务处理领域中的应用数据库在事务处理领域中的应用19.1数据库在电子商务中的应用19.2数据库在客户关系管理中的应用19.3数据库在企业资源规划中的应用19.3.1企业资源规划介绍19.3.2企业资源规划发展史19.3.3企业资源规划的基本内容19.3.4ERP应用系统构成19.3数据库在企业资源规划中的应用数据库在企业资源规划中的应用企业资源规划是目前最为流行的一种企业信息化构建的方式。企业资源规划(EnterpriseResourcePlanning,ERP)是20世纪90年代由美国加特纳公司提出的一种企业信息化管理理念,它也是用计算机技术管理现代企业的一种方法,其主要思想是:(1)企业的

270、主要任务是生产产品,而其目标是所生产的产品质量好、成本低及时间短。(2)产品生产是按供应链(supplychain)的方式进行的。企业生产从原料加工成半成品再进一步加工成产品的过程是一种“流”的过程,而驱动该“流”的是“供应”,这种“供应”包括:物料供应、资金供应、信息供应、人力供应等,它们间一环套一环构成一种“链”的关系。(3)在供应链中起主导作用的是三种流,它们是物流、资金流与信息流:19.3.2企业资源规划发展史1MRP2MRP3ERP19.3.3企业资源规划的基本内容1信息部分ERP提供共享、集成数据,它包括生产管理中的数据、物料数据、财务数据以及人力资源数据等。2处理部分处理部分给出

271、了ERP中的业务活动,它包括生产管理、物资管理、财务管理及人力资源等多方面内容。1)生产管理模块2)物流管理模块3)财务管理模块4)人力资源管理模块19.3.4ERP应用系统构成1基础平台层2资源管理层数据层3业务逻辑层应用层4应用表现层界面层5.用户层图19.5基于ERP的数据库应用系统第第20章章数据库在分析领域中的应用数据库在分析领域中的应用20.1数据分析的基本概念20.1.1数据分析内容组成20.1.2数据分析的结构组成20.2数据仓库的基本原理20.3联机分析处理20.4数据挖掘20.5数据分析中的建模与规则展示20.6数据分析系统整体结构20.7数据分析系统在SQLServer2

272、008中的实现数据分析(DataAnalysis,DA)是20世纪80年代发展起来的一种计算机应用,是包括计算机硬件、软件及数据的一种集成系统。它利用现现代计算机网络中的海量数据(或大数据)资源进代计算机网络中的海量数据(或大数据)资源进行分析以取得隐藏在内的规律性知识,称规则。行分析以取得隐藏在内的规律性知识,称规则。它可用图20.1表示。20.1.1数据分析内容组成(1)数据(2)分析方法分析算法与分析模型(3)规则(rule)20.1.2数据分析的结构组成数据分析是一种新的、扩充的数据库应用系统,它是以数据库的扩充数据仓库为核心,以数据处理中的分析型处理为特点的数据库应用系统。其结构组成

273、有下面五层:1基础平台层2资源管理层数据层3业务逻辑层应用层5用户层4应用表现层界面层图20.3 数据分析系统结构示意图第第20章章数据库在分析领域中的应用数据库在分析领域中的应用20.1数据分析的基本概念20.2数据仓库的基本原理20.2.1概论20.2.2数据仓库特点20.2.3数据仓库组成20.3联机分析处理20.4数据挖掘20.5数据分析中的建模与规则展示20.6数据分析系统整体结构20.7数据分析系统在SQLServer2008中的实现20.2数据仓库的基本原理数据仓库的基本原理20.2.1概论数据库系统作为数据管理手段主要用于事务处理,它拥有大量数据资源,这些资源可为数据分析提供基

274、础支持。但是,作为事务处理与分析决策在处理的特点与要求上有明显的不同,同时,传统数据库中的数据与分析所需要的数据也有明显不同,这主要表现在如下几个方面:(1)分析所需数据是总结性数据,而数据库中是操作性数据,它们详细、烦琐,对分析缺乏使用价值。正如目前一般人所言,数据库中“数据丰富、信息贫困”。(2)分析数据不仅需要当前数据,还需要大量历史数据以便于分析趋势及预测未来。(3)分析需要多方面的数据,如一个企业在作决策时,不仅需要本单位数据,还需要大量协作单位,如供货商、客户、运输部门以及金融、税收、保险、工商等方面数据。因而获取数据的范围可来自多种数据库,其中数据源的异构性及分布性是其特色。(4

275、)分析数据不需更新,但需定时刷新,因此,分析数据大量的是快照性数据。(5)分析数据的操作以“读操作”为主,与一般数据库的多种操作方式不同。20.2.2数据仓库特点据仓库与数据库明显不同的特点可用Inmon的一句名言表示。Inmon说:“数据仓库是一个面向主题的、集成面向主题的、集成的、不可更新的、随时间不断变化的数据集合的、不可更新的、随时间不断变化的数据集合。”在这句话中,他给出了数据仓库的四大特点,下面对其作具体的解释。1.面向主题2.数据集成3.数据不可更新4.数据随时间不断变化20.2.3数据仓库组成一个完整的数据仓库的体系结构一般由四个层次组成。(1)第一层:数据源层。(2)第二层:

276、数据抽取层。(3)第三层:数据仓库管理层。(4)第四层:数据集市(datamart)层。1.数据源数据仓库的数据来源于多种数据源,从形式上讲它们可以是下述来源:(1)大、中型关系数据库:如Oracle、SQLServer等。(2)桌面数据库:如Access、FoxBase等。(3)文件及其他:如Excel、Word、图像文件、图形文件等。(4)互联网上数据:如网页等数据、E-mail数据。2.数据抽取(1)数据提取:根据数据仓库要求收集并提取数据源中的数据。(2)数据转换与清洗:所谓数据转换即将数据源中的数据根据一定规则转换成数据仓库中的数据;而所谓数据清洗即将进入数据仓库中的数据对不符合语法

277、、语义要求的脏数据作清除,以保证数据仓库中数据的正确性。(3)数据加载与刷新:数据加载即将数据源中的数据经清洗与转换后装入主数据仓库内,从而形成数据仓库中的初始数据,而在此后不同的时间段内尚需不断更新数据,此时的数据装入称为数据刷新。3.数据仓库管理层数据仓库管理层一般由数据仓库管理系统完成,其管理方法与传统关系数据库管理系统类似。因此,一般用传统数据库管理系统作适当改变后用作数据仓库管理,如可用Oracle、DB2、SQLServer等作适当改进即作为数据仓库管理系统,有时也可用专用的系统管理。4.数据集市层数据仓库是一种反映主题的全局性数据组织,但全局性数据组织往往太大,在实际应用中将它们

278、按部门或特定任务建立反映子主题的局部性数据组织,它们即数据集市(datamart)。第第20章章数据库在分析领域中的应用数据库在分析领域中的应用20.1数据分析的基本概念20.2数据仓库的基本原理20.3联机分析处理20.3.1OLTP与OLAP20.3.2OLAP的基本概念20.3.3OLAP的基本数据模式星形与雪花模式20.3.4OLAP的多维数据结构数据立方体及超立方体20.3.5OLAP多维结构的物理存储20.3.6OLAP的分析操作20.4数据挖掘20.5数据分析中的建模与规则展示20.6数据分析系统整体结构20.7数据分析系统在SQLServer2008中的实现20.3联机分析处理

279、联机分析处理20.3.1OLTP与OLAP传统的数据库操作是以简单的、原始的、可重复使用的例行短事务为主,如银行出纳记账、民航售票、电话计费等即属于此类操作。这种应用称为联机事务处理(联机事务处理(On-LineTransactionProcessing,OLTP)。)。这种应用构成了数据库系统应用的主要特征。而另一种应用则是分析型操作,它们是以大量的、总结性的与历史有关的、涉及面广的以数据分析为主的操作,如连锁商店的销售统计、国民经济投入产出效益统计等。这种以分析为主的应这种以分析为主的应用称为联机分析处理(用称为联机分析处理(On-LineAnalyticalProcessing,OLAP

280、)。)。20.3.2OLAP的基本概念在OLAP中有如下几个基本概念:1对象(object)2维(dimension)3层(layer)20.3.3OLAP的基本数据模式星形与雪花模式OLAP中的数据是为分析而用的,它们的模式结构应以便于分析为宜。在传统数据库中数据模式以二维表为主,而在OLAP中则以多维表为主,这种多维表可以有两种结构方式:星形模式(starschema)与雪花模式(snowflakeschema),它们构成了OLAP的概念模式20.3.4OLAP的多维数据结构数据立方体及超立方体在上节的星形模式与雪花模式基础上可以构建OLAP逻辑模型多维数据模型。多维数据模型由多维数据结构

281、与多维数据操作两部分组成,下面逐一介绍。1OLAP多维数据结构2OLAP多维结构的操作(1)切片(slice)(2)切块(dice)(3)旋转(rotate)(4)钻探20.3.5OLAP多维结构的物理存储OLAP多维结构有两种物理存储形式:一种是用传统RDBMS存储的形式,称为关系OLAP或简称ROLAP(RelationalOLAP);另一种是用多维数据库(multi-dimensionaldatabase)存储的形式,称为多维OLAP或简称MOLAP(Multi-dimensionalOLAP)20.3.6OLAP的分析操作OLAP是一种验证型的分析方法,它的操作特点是以人机交互为主,其

282、操作步骤如下:(1)OLAP操作在开始前用户必有主题,用户可以将主题设计为OLAP的某些模式,如星形模式、雪花模式等。(2)用户利用所提供的OLAP工具建成OLAP多维数据模型。(3)利用多维数据模型所提供的五种操作:切片、切块、旋转、上探和下钻可以得到展示结果。(4)用户可以反复使用这五种操作,探究模式中事实表中度量与角度、深度间的关系,发现其内在规律。(5)最终用户可以得到一些与量、角度、深度有关的规则与模式。第第20章章数据库在分析领域中的应用数据库在分析领域中的应用20.1数据分析的基本概念20.2数据仓库的基本原理20.4数据挖掘20.4.1数据挖掘的方法20.4.2数据挖掘的步骤2

283、0.5数据分析中的建模与规则展示20.6数据分析系统整体结构20.7数据分析系统在SQLServer2008中的实现20.4数数据据挖挖掘掘在数据库及数据仓库中存储有大量的数据,它们具有规范的结构形式与可靠的来源,它们的数量大、保存期间长,是一种极为宝贵的数据资源财富,充分开发、利用这些资源财富是目前计算机界的一项重要工作。1数据资源的查询服务2数据资源的演绎3数据资源的归纳20.4.1数据挖掘的方法目前常用的数据挖掘方法很多,在这里,简单介绍下面三类常用算法。1关联分析(association)2分类分析(classifier)3聚类分析(clustering)20.4.2数据挖掘的步骤数据

284、挖掘一般可由下面五个步骤组成。1数据集成2数据归约3挖掘5表示4评价第第20章章数据库在分析领域中的应用数据库在分析领域中的应用20.1数据分析的基本概念20.2数据仓库的基本原理20.3联机分析处理20.4数据挖掘20.5数据分析中的建模与规则展示20.6数据分析系统整体结构20.7数据分析系统在SQLServer2008中的实现20.5数据分析中的建模与规则展示数据分析中的建模与规则展示1.数据分析中的建模2.数据分析中的结果展示(2)网上发布形式。可以通过网络技术在网上发布各类结果,也可以通过Web发布。(1)本地表示形式。20.6数据分析系统整体结构数据分析系统整体结构20.7数据分析

285、系统在数据分析系统在SQLServer2008中的实现中的实现在传统数据库管理系统中一般都仅有事务型应用,但自本世纪开始以来,数据库管理系统产品中都陆续出现数据仓库、OLAP及数据挖掘的功能,从而有了数据分析应用,这就是现代数据库管理系统。目前所有大、中型数据库管理系统产品,如Oracle、DB2及SQLServer等都有数据分析应用。它们均以数据服务的形式出现。在SQLServer2008及以后版本中都有完整的数据分析应用功能,其具体的工具即为数据分析服务工具SSAS(SQLServerAnalysisServices)以及工具包SQLServer业务智能开发平台BIDS(BusinessI

286、ntelligenceDevelopmentStudio,SQLServer)。这些工具(或工具包)中包含数据仓库、OLAP及数据挖掘的功能,因此具有数据分析应用能力。我们可以用它们开发数据分析应用。第第19章章数据库在事务处理领域中的应用数据库在事务处理领域中的应用 数据库的应用一般分为两部分,它们是事务型应用与分析型应用。事务型应用 事务型应用又称联机事务处理(OnLine Transaction Processing, OLTP),它具有事务处理特色,其主要操作特点是:数据结构稳定:短事务性:数据操作出现频率高。2分析型应用 分析型应用具有分析处理特性,其主要是:分析型应用具有由“数据”

287、通过分析而形成“规则”的特点。分析型应用的数据具有海量的、总结性的、与历史有关的、涉及面宽的多种特点。分析型应用具有长事务性、操作类型多等特性 第第19章章数据库在事务处理领域中的应用数据库在事务处理领域中的应用19.1数据库在电子商务中的应用19.2数据库在客户关系管理中的应用19.3数据库在企业资源规划中的应用第第19章章数据库在事务处理领域中的应用数据库在事务处理领域中的应用19.1数据库在电子商务中的应用19.1.1电子商务简介19.1.2电子商务发展历程19.1.3电子商务的特点与优势9.1.4电子商务应用系统的构成19.2数据库在客户关系管理中的应用19.3数据库在企业资源规划中的

288、应用19.1.1电子商务简介电子商务是指在计算机网络上销售与购买商品并实现整个贸易过程中各阶段交易活动的电子化。电子商务源于英文的ElectronicCommerce,简称EC,其内容实际上包括两个方面,一个是电子方式,另一个是商贸活动1电子方式电子方式是电子商务所采用的手段(1)计算机网络技术(2)数据库技术2商贸活动(1)B2C模式(2)B2B模式19.1.3电子商务的特点与优势1高效性2方便性3透明性5改变商业运作模式4提供有效服务19.1.4电子商务应用系统的构成从计算机的角度看,电子商务是一种数据库应用系统,它在数据库支撑下完成各种商务上的相关业务。一般而言,电子商务应用系统由如下几

289、部分组成:1基础平台层2资源管理层数据层3业务逻辑层应用层业务逻辑层也可称应用层即电子商务的业务处理层,它包括电子商务的各种业务活动,由相关软件编制而成包括如下内容:(1)电子交易(2)订单管理(3)电子洽谈(4)电子支付(5)电子服务(6)网上广告(7)资料收集(8)综合查询(9)统计分析4应用表现层一界面层电子商务应用系统与外部的接口很多,如银行、税务、海关以及众多的使用客户及专用客户,因此必须有多个接口,它们称应用表现层也称界面层。一般而言,界面大致可分两种:(1)直接用户接口其所采用的技术可以是可视化技术以及Web技术,其形式是多样化的,如菜单、窗户、报表、图表、文字等形式,也可以是图

290、形、图像、语音、视频、音频等形式。(2)间接用户接口此种界面所面向的是应用程序间接口,它们之间的界面实际上是一种数据交互接口,它可由一组软/硬件通过网络实现,如电子商务与银行、税务、海关间的接口。5.用户层最后是使用电子啇务系统的用户。它们是直接用户或间接用户。图19.3基于电子商务的数据库应用系统第第19章章数据库在事务处理领域中的应用数据库在事务处理领域中的应用19.1数据库在电子商务中的应用19.2数据库在客户关系管理中的应用19.2.1客户关系管理介绍19.2.2CRM内容的确定19.2.3CRM应用系统的构成19.3数据库在企业资源规划中的应用19.2数据库在客户关系管理中的应用数据

291、库在客户关系管理中的应用19.2.1客户关系管理介绍客户关系管理(CustomerRelationshipManagement,CRM),是1999年由美国GartnerGroupInc公司首先提出,CRM是一个以客户为中心信息系统,它可为企业提供全方位的管理视角,赋予企业完善与客户交流能力,最大化客户收益率。CRM在美国一经提出立即受到广泛响应,并迅速发展到全球。在我国,CRM于2001年开始有介绍,2002年相关的系统(包括国外引进以及国内开发)也陆续出现,有关应用也逐渐推广。CRM应具有如下三个特性:v(1)CRM的内容包括企业运营、销售与服务等范围应以客户为中心,并以建立企业与客户良好

292、关系为目的。v(2)CRM的构架应是集成客户相关信息,提供服务与及时分析为一体的集成系统。v(3)CRM是以数据库技术与网络技术为核心的计算机信息系统,它具有最新技术的支撑。19.2.2CRM内容的确定内容的确定CRM内容是从“客户关系”的理解出发,即是企业中与客户有关的所有管理,它包括1信息管理2客户服务3客户管理与市场管理4客户关系分析19.2.3CRM应用系统的构成一个CRM应用系统从结构上看,与电子商务应用系统类似,但其内容则有所不同,它由如下几个部分组成:1基础平台层2资源管理层数据层3业务逻辑层应用层4.应用表现层界面层5.用户层图19.4 基于CRM的数据库应用系统第第19章章数

293、据库在事务处理领域中的应用数据库在事务处理领域中的应用19.1数据库在电子商务中的应用19.2数据库在客户关系管理中的应用19.3数据库在企业资源规划中的应用19.3.1企业资源规划介绍19.3.2企业资源规划发展史19.3.3企业资源规划的基本内容19.3.4ERP应用系统构成19.3数据库在企业资源规划中的应用数据库在企业资源规划中的应用企业资源规划是目前最为流行的一种企业信息化构建的方式。企业资源规划(EnterpriseResourcePlanning,ERP)是20世纪90年代由美国加特纳公司提出的一种企业信息化管理理念,它也是用计算机技术管理现代企业的一种方法,其主要思想是:(1)

294、企业的主要任务是生产产品,而其目标是所生产的产品质量好、成本低及时间短。(2)产品生产是按供应链(supplychain)的方式进行的。企业生产从原料加工成半成品再进一步加工成产品的过程是一种“流”的过程,而驱动该“流”的是“供应”,这种“供应”包括:物料供应、资金供应、信息供应、人力供应等,它们间一环套一环构成一种“链”的关系。(3)在供应链中起主导作用的是三种流,它们是物流、资金流与信息流:19.3.2企业资源规划发展史1MRP2MRP3ERP19.3.3企业资源规划的基本内容1信息部分ERP提供共享、集成数据,它包括生产管理中的数据、物料数据、财务数据以及人力资源数据等。2处理部分处理部

295、分给出了ERP中的业务活动,它包括生产管理、物资管理、财务管理及人力资源等多方面内容。1)生产管理模块2)物流管理模块3)财务管理模块4)人力资源管理模块19.3.4ERP应用系统构成1基础平台层2资源管理层数据层3业务逻辑层应用层4应用表现层界面层5.用户层图19.5基于ERP的数据库应用系统第第20章章数据库在分析领域中的应用数据库在分析领域中的应用20.1数据分析的基本概念20.1.1数据分析内容组成20.1.2数据分析的结构组成20.2数据仓库的基本原理20.3联机分析处理20.4数据挖掘20.5数据分析中的建模与规则展示20.6数据分析系统整体结构20.7数据分析系统在SQLServ

296、er2008中的实现数据分析(DataAnalysis,DA)是20世纪80年代发展起来的一种计算机应用,是包括计算机硬件、软件及数据的一种集成系统。它利用现现代计算机网络中的海量数据(或大数据)资源进代计算机网络中的海量数据(或大数据)资源进行分析以取得隐藏在内的规律性知识,称规则。行分析以取得隐藏在内的规律性知识,称规则。它可用图20.1表示。20.1.1数据分析内容组成(1)数据(2)分析方法分析算法与分析模型(3)规则(rule)20.1.2数据分析的结构组成数据分析是一种新的、扩充的数据库应用系统,它是以数据库的扩充数据仓库为核心,以数据处理中的分析型处理为特点的数据库应用系统。其结

297、构组成有下面五层:1基础平台层2资源管理层数据层3业务逻辑层应用层5用户层4应用表现层界面层图20.3 数据分析系统结构示意图第第20章章数据库在分析领域中的应用数据库在分析领域中的应用20.1数据分析的基本概念20.2数据仓库的基本原理20.2.1概论20.2.2数据仓库特点20.2.3数据仓库组成20.3联机分析处理20.4数据挖掘20.5数据分析中的建模与规则展示20.6数据分析系统整体结构20.7数据分析系统在SQLServer2008中的实现20.2数据仓库的基本原理数据仓库的基本原理20.2.1概论数据库系统作为数据管理手段主要用于事务处理,它拥有大量数据资源,这些资源可为数据分析

298、提供基础支持。但是,作为事务处理与分析决策在处理的特点与要求上有明显的不同,同时,传统数据库中的数据与分析所需要的数据也有明显不同,这主要表现在如下几个方面:(1)分析所需数据是总结性数据,而数据库中是操作性数据,它们详细、烦琐,对分析缺乏使用价值。正如目前一般人所言,数据库中“数据丰富、信息贫困”。(2)分析数据不仅需要当前数据,还需要大量历史数据以便于分析趋势及预测未来。(3)分析需要多方面的数据,如一个企业在作决策时,不仅需要本单位数据,还需要大量协作单位,如供货商、客户、运输部门以及金融、税收、保险、工商等方面数据。因而获取数据的范围可来自多种数据库,其中数据源的异构性及分布性是其特色

299、。(4)分析数据不需更新,但需定时刷新,因此,分析数据大量的是快照性数据。(5)分析数据的操作以“读操作”为主,与一般数据库的多种操作方式不同。20.2.2数据仓库特点据仓库与数据库明显不同的特点可用Inmon的一句名言表示。Inmon说:“数据仓库是一个面向主题的、集成面向主题的、集成的、不可更新的、随时间不断变化的数据集合的、不可更新的、随时间不断变化的数据集合。”在这句话中,他给出了数据仓库的四大特点,下面对其作具体的解释。1.面向主题2.数据集成3.数据不可更新4.数据随时间不断变化20.2.3数据仓库组成一个完整的数据仓库的体系结构一般由四个层次组成。(1)第一层:数据源层。(2)第

300、二层:数据抽取层。(3)第三层:数据仓库管理层。(4)第四层:数据集市(datamart)层。1.数据源数据仓库的数据来源于多种数据源,从形式上讲它们可以是下述来源:(1)大、中型关系数据库:如Oracle、SQLServer等。(2)桌面数据库:如Access、FoxBase等。(3)文件及其他:如Excel、Word、图像文件、图形文件等。(4)互联网上数据:如网页等数据、E-mail数据。2.数据抽取(1)数据提取:根据数据仓库要求收集并提取数据源中的数据。(2)数据转换与清洗:所谓数据转换即将数据源中的数据根据一定规则转换成数据仓库中的数据;而所谓数据清洗即将进入数据仓库中的数据对不符

301、合语法、语义要求的脏数据作清除,以保证数据仓库中数据的正确性。(3)数据加载与刷新:数据加载即将数据源中的数据经清洗与转换后装入主数据仓库内,从而形成数据仓库中的初始数据,而在此后不同的时间段内尚需不断更新数据,此时的数据装入称为数据刷新。3.数据仓库管理层数据仓库管理层一般由数据仓库管理系统完成,其管理方法与传统关系数据库管理系统类似。因此,一般用传统数据库管理系统作适当改变后用作数据仓库管理,如可用Oracle、DB2、SQLServer等作适当改进即作为数据仓库管理系统,有时也可用专用的系统管理。4.数据集市层数据仓库是一种反映主题的全局性数据组织,但全局性数据组织往往太大,在实际应用中

302、将它们按部门或特定任务建立反映子主题的局部性数据组织,它们即数据集市(datamart)。第第20章章数据库在分析领域中的应用数据库在分析领域中的应用20.1数据分析的基本概念20.2数据仓库的基本原理20.3联机分析处理20.3.1OLTP与OLAP20.3.2OLAP的基本概念20.3.3OLAP的基本数据模式星形与雪花模式20.3.4OLAP的多维数据结构数据立方体及超立方体20.3.5OLAP多维结构的物理存储20.3.6OLAP的分析操作20.4数据挖掘20.5数据分析中的建模与规则展示20.6数据分析系统整体结构20.7数据分析系统在SQLServer2008中的实现20.3联机分

303、析处理联机分析处理20.3.1OLTP与OLAP传统的数据库操作是以简单的、原始的、可重复使用的例行短事务为主,如银行出纳记账、民航售票、电话计费等即属于此类操作。这种应用称为联机事务处理(联机事务处理(On-LineTransactionProcessing,OLTP)。)。这种应用构成了数据库系统应用的主要特征。而另一种应用则是分析型操作,它们是以大量的、总结性的与历史有关的、涉及面广的以数据分析为主的操作,如连锁商店的销售统计、国民经济投入产出效益统计等。这种以分析为主的应这种以分析为主的应用称为联机分析处理(用称为联机分析处理(On-LineAnalyticalProcessing,O

304、LAP)。)。20.3.2OLAP的基本概念在OLAP中有如下几个基本概念:1对象(object)2维(dimension)3层(layer)20.3.3OLAP的基本数据模式星形与雪花模式OLAP中的数据是为分析而用的,它们的模式结构应以便于分析为宜。在传统数据库中数据模式以二维表为主,而在OLAP中则以多维表为主,这种多维表可以有两种结构方式:星形模式(starschema)与雪花模式(snowflakeschema),它们构成了OLAP的概念模式20.3.4OLAP的多维数据结构数据立方体及超立方体在上节的星形模式与雪花模式基础上可以构建OLAP逻辑模型多维数据模型。多维数据模型由多维数

305、据结构与多维数据操作两部分组成,下面逐一介绍。1OLAP多维数据结构2OLAP多维结构的操作(1)切片(slice)(2)切块(dice)(3)旋转(rotate)(4)钻探20.3.5OLAP多维结构的物理存储OLAP多维结构有两种物理存储形式:一种是用传统RDBMS存储的形式,称为关系OLAP或简称ROLAP(RelationalOLAP);另一种是用多维数据库(multi-dimensionaldatabase)存储的形式,称为多维OLAP或简称MOLAP(Multi-dimensionalOLAP)20.3.6OLAP的分析操作OLAP是一种验证型的分析方法,它的操作特点是以人机交互为

306、主,其操作步骤如下:(1)OLAP操作在开始前用户必有主题,用户可以将主题设计为OLAP的某些模式,如星形模式、雪花模式等。(2)用户利用所提供的OLAP工具建成OLAP多维数据模型。(3)利用多维数据模型所提供的五种操作:切片、切块、旋转、上探和下钻可以得到展示结果。(4)用户可以反复使用这五种操作,探究模式中事实表中度量与角度、深度间的关系,发现其内在规律。(5)最终用户可以得到一些与量、角度、深度有关的规则与模式。第第20章章数据库在分析领域中的应用数据库在分析领域中的应用20.1数据分析的基本概念20.2数据仓库的基本原理20.4数据挖掘20.4.1数据挖掘的方法20.4.2数据挖掘的

307、步骤20.5数据分析中的建模与规则展示20.6数据分析系统整体结构20.7数据分析系统在SQLServer2008中的实现20.4数数据据挖挖掘掘在数据库及数据仓库中存储有大量的数据,它们具有规范的结构形式与可靠的来源,它们的数量大、保存期间长,是一种极为宝贵的数据资源财富,充分开发、利用这些资源财富是目前计算机界的一项重要工作。1数据资源的查询服务2数据资源的演绎3数据资源的归纳20.4.1数据挖掘的方法目前常用的数据挖掘方法很多,在这里,简单介绍下面三类常用算法。1关联分析(association)2分类分析(classifier)3聚类分析(clustering)20.4.2数据挖掘的步

308、骤数据挖掘一般可由下面五个步骤组成。1数据集成2数据归约3挖掘5表示4评价第第20章章数据库在分析领域中的应用数据库在分析领域中的应用20.1数据分析的基本概念20.2数据仓库的基本原理20.3联机分析处理20.4数据挖掘20.5数据分析中的建模与规则展示20.6数据分析系统整体结构20.7数据分析系统在SQLServer2008中的实现20.5数据分析中的建模与规则展示数据分析中的建模与规则展示1.数据分析中的建模2.数据分析中的结果展示(2)网上发布形式。可以通过网络技术在网上发布各类结果,也可以通过Web发布。(1)本地表示形式。20.6数据分析系统整体结构数据分析系统整体结构20.7数

309、据分析系统在数据分析系统在SQLServer2008中的实现中的实现在传统数据库管理系统中一般都仅有事务型应用,但自本世纪开始以来,数据库管理系统产品中都陆续出现数据仓库、OLAP及数据挖掘的功能,从而有了数据分析应用,这就是现代数据库管理系统。目前所有大、中型数据库管理系统产品,如Oracle、DB2及SQLServer等都有数据分析应用。它们均以数据服务的形式出现。在SQLServer2008及以后版本中都有完整的数据分析应用功能,其具体的工具即为数据分析服务工具SSAS(SQLServerAnalysisServices)以及工具包SQLServer业务智能开发平台BIDS(BusinessIntelligenceDevelopmentStudio,SQLServer)。这些工具(或工具包)中包含数据仓库、OLAP及数据挖掘的功能,因此具有数据分析应用能力。我们可以用它们开发数据分析应用。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号