电子教案-《SQL-Server数据库应用与开发》课件

上传人:桔**** 文档编号:577904515 上传时间:2024-08-23 格式:PPT 页数:340 大小:3.45MB
返回 下载 相关 举报
电子教案-《SQL-Server数据库应用与开发》课件_第1页
第1页 / 共340页
电子教案-《SQL-Server数据库应用与开发》课件_第2页
第2页 / 共340页
电子教案-《SQL-Server数据库应用与开发》课件_第3页
第3页 / 共340页
电子教案-《SQL-Server数据库应用与开发》课件_第4页
第4页 / 共340页
电子教案-《SQL-Server数据库应用与开发》课件_第5页
第5页 / 共340页
点击查看更多>>
资源描述

《电子教案-《SQL-Server数据库应用与开发》课件》由会员分享,可在线阅读,更多相关《电子教案-《SQL-Server数据库应用与开发》课件(340页珍藏版)》请在金锄头文库上搜索。

1、SQL Server数据库应用与开发数据库应用与开发第第1章章 数据库及数据库及SQL Server2005简介简介1.1 数据库的发展数据库的发展 1.3关系数据库管理系统1.2数据库系统模型数据库系统模型 1.4 SQL Server 2005简介简介主要内容主要内容数据库、数据库三种模型数据库、数据库三种模型数据库管理系统相关知识数据库管理系统相关知识关系数据库操作及规范。关系数据库操作及规范。SQL SERVER 2005的新特性的新特性SQL SERVER 2005的安装及配置的安装及配置介绍了介绍了T-SQL语言。语言。1.1 数据库的发展数据库的发展1.1.1 数据库概念数据库概

2、念1.数据数据数据是能够在计算机中存贮用于描述事物的记录符号数据是能够在计算机中存贮用于描述事物的记录符号它包括两个方面:一是描述事物特性的数据内容;二是存它包括两个方面:一是描述事物特性的数据内容;二是存储在某种媒体上的数据形式。储在某种媒体上的数据形式。数据处理是指将数据转换成信息的过程。数据处理是指将数据转换成信息的过程。 2.数据库数据库数据库(数据库(DataBase 简称简称DB)是按一定组织结构存贮在计算)是按一定组织结构存贮在计算机中相关数据的集合。它不仅包括数据本身,而且还包括机中相关数据的集合。它不仅包括数据本身,而且还包括相关事物间的联系。它的特点是具有一定的组织结构,数

3、相关事物间的联系。它的特点是具有一定的组织结构,数据库中的数据还是相关的。据库中的数据还是相关的。数据库可以被多个用户、多个应用程序共享。其数据结构数据库可以被多个用户、多个应用程序共享。其数据结构独立于使用数据的程序,对数据的增加、删除、修改和检独立于使用数据的程序,对数据的增加、删除、修改和检索由系统软件统一进行。索由系统软件统一进行。3. 数据库管理系统数据库管理系统 数据库管理系统数据库管理系统(DataBase Management System ,简称简称DBMS)是在操作系统的支持下为用户提供数据库建立、数是在操作系统的支持下为用户提供数据库建立、数据操纵、数据库维护的管理软件。

4、它有以下几个功能:据操纵、数据库维护的管理软件。它有以下几个功能: 1)数据定义)数据定义 2)数据操纵功能)数据操纵功能 3)数据库的运行管理)数据库的运行管理 4)数据库的建立与维护功能)数据库的建立与维护功能4数据库系统数据库系统 数据库系统(数据库系统(DataBase System,简称,简称DBS)由数据库、)由数据库、数据库管理系统、应用系统、数据库管理员和用户五部分数据库管理系统、应用系统、数据库管理员和用户五部分构成构成。 1.1.2 数据库理论发展数据库理论发展1.1.人工管理阶段人工管理阶段 2.2.文件系统文件系统3.3.数据库系统数据库系统 数据库系统与人工管理和文件

5、系统相比有如下特点:1)数据结构化,采用特定的数据模型2)数据共享性高,减少数据冗余3)数据独立性高4)有统一的数据控制功能客观存在并且可以相互区别的事物称为实体。描述实体的特性称为属性。实体间的对应关系称为联系实体间联系的种类是指一类实体中可能出现的每一个实体与另一类实体中多少个具体实体存在联系联系可以归结为三种类型:一对一联系、一对多联系、多对多联系1.2数据库系统模型数据库系统模型数据模型通常由数据结构、数据操作和完整数据模型通常由数据结构、数据操作和完整 性约束性约束三部分组成。三部分组成。数据结构是研究对象类型的集合。数据结构是研究对象类型的集合。数据操作是指对数据库中各种对象的实例

6、允许执行的操作数据操作是指对数据库中各种对象的实例允许执行的操作的集合,包括操作及有关的操作规则。的集合,包括操作及有关的操作规则。数据约束条件是一组完整性规则的集合数据约束条件是一组完整性规则的集合。1.2 数据库系统模型数据库系统模型网状模型网状模型的基本特征是一个父结点允许有多个子结点,一个的基本特征是一个父结点允许有多个子结点,一个子结点也允许有多个父结点。网状模型有两个特点:子结点也允许有多个父结点。网状模型有两个特点:有一个以上结点无父结点;有一个以上结点无父结点;至少有一个结点有多于一个的父结点至少有一个结点有多于一个的父结点。 1.2.1 网状模型网状模型1.2.2 层次模型层

7、次模型层次模型是以记录型结点构成的树型结构。它适合描述现实世界中主次分明的结构关系有且只有一个结点没有双亲结点,这个结点称为根结点;根以外的其它结点有且只有一个双亲结点层次型模型数据之间是1:N的关系。层次模型在进行数据操纵过程中要注意完整性约束条件层次数据库中不仅要存储数据本身,还要存储数据之间的层次关系1.2.3 关系模型关系模型关系模型中数据的逻辑结构是一张二维表,它由行和列组成。关系模型反映属性间一对一关系,也可反映属性间一对多的关系和多对多的关系关系的各种操作必须满足完整性约束条件,关系的完整性约束条件包括三大类:实体完整性、参照完整性和用户定义的完整性。在关系数据模型中,实体及实体

8、间的联系都用表来表示,表以文件形式存储。关系数据模型有以下优点:关系模型数据结构简单、清晰,用户易懂易用;关系模型具有更高的数据独立性、更好的安全保密性。1.2.4 面向对象数据模型面向对象数据模型面向对象数据模型(OO模型)是用面向对象观点来描述现实世界实体或对象的逻辑组织、对象间限制、联系等的模型。1主要的核心概念主要的核心概念1)对象对象是由一组数据结构和在这组数据结构上的操作的程序代码封装起来的基本单位。现实世界中的任一实体都模型化为一个对象每个对象都有一个唯一不变的标识称为对象标识。一个对象包括属性集合、方法集合和消息集合。属性描述对象的状态、组成和特性。方法描述了对象的行为特性2)

9、封装)封装封装是对象的外部界面与内部实行隔离的一种抽象,外封装是对象的外部界面与内部实行隔离的一种抽象,外部与对象的通信只能通过消息。部与对象的通信只能通过消息。每一个对象是其状态与行为的封装。每一个对象是其状态与行为的封装。封装的意义在于将对象的实现与对象应用互相隔离,有封装的意义在于将对象的实现与对象应用互相隔离,有利于提高数据独立性。利于提高数据独立性。封装隐藏了数据结构与程序代码等细节,提高程序的可封装隐藏了数据结构与程序代码等细节,提高程序的可靠性。靠性。3)类)类共享同样属性和方法集的所有对象的集合称为对象类,共享同样属性和方法集的所有对象的集合称为对象类,简称类。简称类。一个对象

10、是某一类的一个实例。一个对象是某一类的一个实例。4)类的层次结构在面向对象数据库模式中,一组类可形成一个类层次。如果类C1有一个子类C2,则称类C1为类C2的超类或父类。子类还可以定义子类,这样一组类形成一个有层次的结构,称为类层次。子类可以具有父类的所有属性、消息和方法,还可以有自己独特的父类没有的属性和方法。5)继承子类具有父类特性的机制我们称之为继承。继承有两个优点:一方面它是建模的工具,提供了对现实世界简明而精确的描述;另一方面它提供了信息重用机制,由于子类可以继承父类的特性,这样就可以避免许多重复定义工作。2面向对象数据库语言面向对象数据库语言在面向对象数据库(OODB)中,面向对象

11、数据库语言(OODB语言)用于描述面向对象数据库模式,说明并定义对象实例。OODB语言应具有以下功能:类的定义与操纵、方法的定义、对象的操纵。3模式演进模式演进面向对象数据模式为适应需求的变化而发生变化过程称为模式演进。模式演进过程包括建新的类、删除旧的类、修改类的属性和方法等。模式演进必须保持模式的一致性。它由模式一致性约束来保证。模式一致性约束包括唯一性约束、存在性约束和子类型约束等4对象对象-关系数据库关系数据库面向对象数据库必须满足两个条件:支持面向对象的数据模型、支持传统数据库系统所有的数据库特征。面向对象数据库系统必须保持传统数据库系统的数据存取方式和数据独立性,即应继承第二代数据

12、库系统已有的技术,对象-关系数据系统就是按这样的目标将关系数据库系统与面向对象数据库系统两方面的特征相结合。对象-关系数据库系统除具有关系数据库的各种特点外,还应具有扩充数据类型、支持复杂对象、支持继承、提供通用的规则系统等功能 1.3.1关系数据库规范化关系数据库规范化规范化的数据库设计可以尽可能地避免系统在应用过程中出现问题。不合理的关系模式可能会造成很多操作上问题:数据冗余更新异常插入异常删除异常1.3 关系数据库管理系统关系数据库管理系统1. 关系的性质关系的性质一个关系就是一张二维表格。一列对应一个字段,称为属性;一行对应一条记录,称为元组。一个关系中要有一个关键字,称为主键。关键字

13、可以唯一地标识一个元组。每一列上的数据属于同一种属性;没有完全相同的行,两行之间可以有重复的字段但不能所有字段都重复;行与行间顺序可互换;列与列间顺序可互换;列的名称在表中要唯一 2. 数据依赖数据依赖操作异常与数据依赖有关,数据依赖是元组间相互关系。函数依赖如果在关系R中,数据元素Y的取值依赖于数据元素X的取值,那么称Y函数据依赖于X,或称为X决定Y,记作X-Y。传递依赖如果X,Y,Z分别是R中三个属性,Z函数据依赖于Y,Y函数据依赖于X,那么Z也函数依赖于X,称为Z传递依赖于X。3. 第一规范化形式(第一规范化形式(1NF)关系模式要满足的条件称为规范化形式,简称为范式。第一范式要求元组中

14、的每一个数据项都不可再分,都是原子项,记作1NF。即要求二维表格中每一个属性都是单一的不可再分的数据。4. 第二规范化形式(第二规范化形式(2NF) 如果一个关系符合第一范式,并且每一个非关键字属性都完全依赖于主关键字,那么这个关系模式符合第二规范化形式简记为2NF。5. 第三规范化形式(第三规范化形式(3NF) 如果一个关系符合第二范式,并且所有非关键字属性间不存在函数依赖关系,那么称这个关系符合第三规范化形式,简记为3NF。3NF的实质是从符合2NF的关系中除去传递依赖。6. 规范化形式间的关系规范化形式间的关系规范化的基本思想是逐步消除数据依赖中不合适的部分,使模式的各关系模式达到某种程

15、序的“分离”,即“一事一地”的模式设计原则。任何一个高层的规范化形式总是能够满足低层的规范化形式。为了提高规范化程度,必须对较低层的规范化形式的关系模式进行分解,即将一个低层的的关系模式分解成几个更小、更紧凑的关系模式。规范化程度低会造成数据冗余和操作异常,但是规范化程度低检索直接,处理比较简单;规范化程度高可以消除操作异常和减少数据冗余,但是在检索时要访问更多的关系表,需要做更多的关联操作,比较复杂。1、传统的关系运算、传统的关系运算进行传统的关系运算的两个关系必须具有相同的结构。并:两个关系的并运算是由这两个关系的元组组成的集合。交:两个关系R和S,它们的交是由既属于R又属于S的元组组成的

16、集合。交运算的结果是R和S的共同元组。差:两个关系R和S,R差S的结果是由属于R但不属于S的元组组成的集合,即差运算是从R中去掉S中也有的元组。 1.3.2 关系运算关系运算 2、专门的关系运算、专门的关系运算1)选择:从关系中找出满足条件元组的操作称为选择。选择是对关系表从行的角度水平方向抽取记录,经过运算得到的结果可以形成新的关系,但其中的元组是原关系的一个子集。2)投影:从关系模式中指定若干个属性组成新的关系称为投影。投影是从列的角度纵向对关系进行分解,经过投影运算可以得到一个新的关系,其包含的属性的个数小于等于原有关系,或者属性的排列顺序不同。3)联接:联接运算是将两个关系拼接成一个关

17、系,生成的新的关系包含两个关系满足条件的元组。联接是通过联接条件来控制的,联接条件中将出现两个表中的公共属性名,或者具有相同语义、可比的属性。SQL语言全称为结构化查询语言(语言全称为结构化查询语言(Structured Query Language),),SQL语言有如下的特点语言有如下的特点1)综合统一综合统一:SQL集数据定义、操纵、控制功能与一体,语言集数据定义、操纵、控制功能与一体,语言风格统一。数据操作符统一,每一种操作都只用一种操作符。风格统一。数据操作符统一,每一种操作都只用一种操作符。2)高度非过程化高度非过程化:用用SQL语言进行数据操作,无需了解存取路语言进行数据操作,无

18、需了解存取路径,存取路径的选择及操作过程由系统自动完成。径,存取路径的选择及操作过程由系统自动完成。3)面向集合的操作方式面向集合的操作方式:SQL语言采用集合操作方式,不仅操语言采用集合操作方式,不仅操作对象、查找结果可以是元组的集合,而且一次插入、删除、作对象、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。更新操作的对象也可以是元组的集合。4)提供两种使用方式提供两种使用方式:SQL语言既是自含式语言,能够独立地语言既是自含式语言,能够独立地以联机交互的方式使用,它又是嵌入式语言,能够嵌入到高级以联机交互的方式使用,它又是嵌入式语言,能够嵌入到高级语言中供

19、程序员设计程序时使用。语言中供程序员设计程序时使用。5)语言简洁,易学易用语言简洁,易学易用:SQL核心功能只需要核心功能只需要9个动词就可以个动词就可以完成数据查询、定义、操纵和控制的功能。完成数据查询、定义、操纵和控制的功能。1.3.3 T-SQL语言简介语言简介1.3.3.1 T-SQL概述概述T-SQL(Transact-SQL)语言是)语言是Microsoft公司在公司在SQL Server数据库管理系统中数据库管理系统中SQL的实现。它遵守的实现。它遵守Entry Level ANSI SQL-92的标准,用户和研发人员能使用标准的关系语的标准,用户和研发人员能使用标准的关系语句对

20、表进行选择、更新、插入和删除记录。句对表进行选择、更新、插入和删除记录。T-SQL语言由下面语言由下面4个部分组成:个部分组成:数据控制语言(数据控制语言(DCL):进行安全性管理。包括):进行安全性管理。包括GRANT、DENY和和REVOKE等。等。数据定义语言(数据定义语言(DDL):执行数据库任务,创建数据库及其):执行数据库任务,创建数据库及其对象。包括对象。包括CREATE、ALTER和和DROP等。等。数据操纵语言(数据操纵语言(DML):操纵数据库中各对象。包括):操纵数据库中各对象。包括SELECT、INSERT、UPDATE和和DELETE等。等。附加的语言元素:附加的语言

21、元素:Transact-SQL语句的附加语言元素。包语句的附加语言元素。包括变量、运算符、函数、流程控制语句和注释等括变量、运算符、函数、流程控制语句和注释等1标识符标识符 数据库对象的名称即为其标识符。对象标识符是在定数据库对象的名称即为其标识符。对象标识符是在定义对象时创建的。标识符随后用于引用该对象。义对象时创建的。标识符随后用于引用该对象。常规标识符格式规则:常规标识符格式规则:1)第一个字符必须是下列字符之一:)第一个字符必须是下列字符之一: Unicode 标准标准 3.2 所定义的字母。所定义的字母。Unicode 中定义中定义的字母包括拉丁字符的字母包括拉丁字符 a-z 和和

22、A-Z,以及来自其他语言的字,以及来自其他语言的字母字符。下划线母字符。下划线 ( _ )、“at”符号符号 () 或者数字符号或者数字符号 (#)。 在在 SQL Server 中,某些位于标识符开头位置的符号中,某些位于标识符开头位置的符号具有特殊意义。以具有特殊意义。以“at”符号符号“”开头的标识符表示局开头的标识符表示局部变量或参数。以一个数字符号部变量或参数。以一个数字符号“#”开头的标识符表示开头的标识符表示临时表或过程。以两个数字符号临时表或过程。以两个数字符号 “#”开头的标识符表示开头的标识符表示全局临时对象。全局临时对象。2)不允许嵌入空格或其他特殊字符。)不允许嵌入空格

23、或其他特殊字符。 在在 Transact-SQL 语句中使用标识符时,必须用双引语句中使用标识符时,必须用双引号或括号分隔不符合规则的标识符。号或括号分隔不符合规则的标识符。2对象的引用对象的引用完整的对象名称由四个标识符组成:服务器名称、数据库名完整的对象名称由四个标识符组成:服务器名称、数据库名称、架构名称和对象名称。其格式如下:称、架构名称和对象名称。其格式如下: server. database . schema_name . object_name指定了所有四个部分的对象名称称为指定了所有四个部分的对象名称称为完全限定名称完全限定名称。在。在 Microsoft SQL Server

24、 2005 中创建的每个对象必须具有唯中创建的每个对象必须具有唯一的完全限定名称。例如,如果所有者不同,同一个数据库一的完全限定名称。例如,如果所有者不同,同一个数据库中可以有两个名为中可以有两个名为 xyz 的表。的表。大多数对象引用使用由三个部分组成的名称。默认服务器为大多数对象引用使用由三个部分组成的名称。默认服务器为本地服务器。由四个部分组成的名称通常用于分布式查询或本地服务器。由四个部分组成的名称通常用于分布式查询或远程存储过程调用远程存储过程调用3批处理批处理批处理是包含一个或多个批处理是包含一个或多个 Transact-SQL 语句的组,语句的组,SQL Server 将批处理的

25、语句编译为一个可执行单元,称为执行计划。将批处理的语句编译为一个可执行单元,称为执行计划。执行计划中的语句每次执行一条。执行计划中的语句每次执行一条。编译错误(如语法错误)可使执行计划无法编译。因此未执行批编译错误(如语法错误)可使执行计划无法编译。因此未执行批处理中的任何语句。运行时错误(如算术溢出或违反约束)会产处理中的任何语句。运行时错误(如算术溢出或违反约束)会产生以下影响之一:生以下影响之一: 大多数运行时错误将停止执行批处理中当前语句和它之后的语大多数运行时错误将停止执行批处理中当前语句和它之后的语句。句。某些运行时错误(如违反约束)仅停止执行当前语句,而继续某些运行时错误(如违反

26、约束)仅停止执行当前语句,而继续执行批处理中其他所有语句。执行批处理中其他所有语句。在运行时发生错误之前执行的语句不受影响,唯一的例外是如在运行时发生错误之前执行的语句不受影响,唯一的例外是如果批处理在事务中而且错误导致事务回滚,在这种情况下回滚运果批处理在事务中而且错误导致事务回滚,在这种情况下回滚运行到错误之前所进行的未提交的数据修改。行到错误之前所进行的未提交的数据修改。1.3.3.2 T-SQL流程控制流程控制T-SQL提供了用于编程的代码语法结构,可以用来进行顺序、提供了用于编程的代码语法结构,可以用来进行顺序、选择、循环等程序设计。选择、循环等程序设计。1SET语句语句SET语句为

27、声明的变量赋值。其语法格式为:语句为声明的变量赋值。其语法格式为:SET locl_variable=expression在使用赋值语句时要求指定的值与变量的数据类型相符。例如在使用赋值语句时要求指定的值与变量的数据类型相符。例如下面的语句声明了变量并进行赋值。下面的语句声明了变量并进行赋值。DECLARE A INTDECLARE B CHAR(10)SET A=365SET B= OlympicGO2IFELSE语句语句IFELSE的语句格式为:的语句格式为:IF Boolean_expressionsql_statement|statement_blockELSEsql_statemen

28、t|statement_blockIFELSE语句对条件表达式进行判断,如果表达式结果为语句对条件表达式进行判断,如果表达式结果为TRUE,则执行,则执行IF后面的语句;可选的后面的语句;可选的ELSE引入另一个引入另一个SQL语句,如果条件表达式结果为语句,如果条件表达式结果为FALSE,则执行,则执行ELSE后面的后面的语句。语句。3BEGINEND语句语句在程序设计中,往往要执行的操作不是一个简单的在程序设计中,往往要执行的操作不是一个简单的SQL语句语句就能够完成的,经常需要多条语句来完成一个任务。使用就能够完成的,经常需要多条语句来完成一个任务。使用BEGINEND可以将一组语句封闭

29、起来成为一个组,每次执可以将一组语句封闭起来成为一个组,每次执行都完成一组这样的语句。行都完成一组这样的语句。语法格式为:语法格式为:BEGINsql_statement|statement_blockEND并且并且BEGINEND语句可以嵌套使用语句可以嵌套使用4WHILE、BREAK、CONTINUE语句语句 WHILE语句用来设置需要重复执行的语句块,即循环执行。在WHILE后面指定的条件表达式,只要其值为TRUE,指定的语句块就执行。在循环的语句块中通过设置BREAK可以无条件地退出循环,而执行CONTINUE可以使循环重新开始执行。5RETURN语句语句 RETURN从查询中无条件退

30、出。当程序执行中遇到RETURN语句,立即从过程、批处理或语句块中退出,RETURN之后的语句不执行。 6WAITFOR语句语句 WAITFOR称为延迟语句,设定在达到指定时间或时间间隔之前,或者指定语句至少修改或返回一行之前,阻止执行批处理、存储过程或事务。其语法格式为: WAITFORDELAYtime_to_pass/*设定等待时间*/TIMEtime_to_execute/*设定等待到某一时刻*/7GOTO语句语句 GOTO语句将执行语句无条件地跳转到标签外,并从标签位置继续执行。8TRYCATCH语句语句 用于进行内部错误测试9GO语句语句 GO是一个程序段落结束的标识,通常用在一段

31、程序的结尾处,标识此段程序至此结束。不参与程序的运行。 1.4SQLServer2005简介1.4.1 SQL Server发展发展 SQLServer是美国微软公司推出的关系数据库管理系统,用户可以更方便快捷地管理数据库、设计开发应用程序。它有两种工作模式:一种是C/S(客户机/服务器)的工作模式,它使用TransactSQL语言在服务器与客户机间传送请求和答复。另一种是B/S(浏览器/服务器)工作模式,SQLServer2005与XML结合下支持实现。SQLServer2005共有5个版本,分别是企业版(Enterprise)、开发版(Development)、工作组版(Workgroup

32、)、标准版(Standard)、简易版(Express)。SQLServer2005的不同版本用于满足企业和个人的不同需求。1.4.2 SQL Server 2005新增功能新增功能1通过SQLServerManagementStudio工具集成了所有SQLServer2005服务。2增加了对用户自定义数据进行加密的功能,使安全性得到提高。3增加了对64位系统的支持,增强了复制的能力。4提供了故障转移集群和数据库镜像技术,使可用性更高。5引入了.NET规范语言,使之和VS.NET紧密结合在一起6对XML支持更强大,提供了新的XML数据类型,可以在数据库中存储XML文件。7提供更强大的T-SQL

33、语言。8能使用SMTP发送电子邮件。9数据转换功能更强大。10可用HTTP直接访问SQLServer。11引入了新了SQLServer应用程序框架,包括ServiceBroker、NotificationServices、SQLServerMobile和SQLServerExpress。12提供了基于服务器的企业级报表环境工具ReportingServices,可以通过WebServices进行管理。1.4.3 安装安装SQL Server 20051安装安装SQL Server 2005的系统要求的系统要求 CPU要求至少是P3处理器以下,主频最低要求600MHz,建议使用1GHz以上。内存

34、最小要求512M,建议使用1G以上。硬盘需求大小取决于安装组件的多少,但至少要有1.66G的可用硬盘空间用来存放安装过程中产生的临时文件。 除此之外,还要求IE6.0SP1及以上版本,如果安装报表服务器要求IIS5.0以上版本,ASP.NET2.0版本。MDAC要求Microsoft数据访问组件2.8SP1或更高版本。2安装安装SQL Server 2005在安装SQLServer2005时如果操作系统不是Windows2003则需要单独安装三个组件:MicrosoftWindowsInstaller3.1或更高版本、MDAC2.8SP1或更高版本、MicrosoftWindows.NETFr

35、amework2.0。建议不要使用已有其它作用的服务器用于安装SQLServer2005,以免服务器性能下降。1.4.4 服务器的后台服务服务器的后台服务SQLServer2005安装安毕后,其服务器端组件是以“服务”的形式在计算机系统中运行,“服务”是一种在后台运行的应用程序。运行的服务不在桌面上显示,在后台完成需要的操作。可以在操作系统【管理工具】的【服务】中查看。1SQL ServerSQLServer服务就是SQLServer2005的数据引擎,是SQLServer2005的核心服务。2SQL Server Active Directory Helper这个服务用于支持与活动目录Act

36、iveDirectory的集成,它由所有已安装的实例共享,并且只能安装一次。3SQL Server AgentSQLServer代理,它按计划好的任务自动执行数据库管理员安排的作业4SQL Server Analysis Services提供联机分析处理(OLAP)和数据挖掘的服务。5SQL Server Browser它为所有SQLServer实例共享,它的功能是将SQLServer的连接信息6SQL Server FullText Search它的功能是是快速创建结构化和半结构化数据的内容和属性的全文索引7SQL Server Integration Services执行如FTP、SQL语

37、句和电子邮件消息传递等工作流功能的任务8SQL Server Reporting Services管理、执行、呈现、计划和传递报表。9SQL Server VSS Writer它是SQLServer编写服务器1.4.5 客户端上的管理工具客户端上的管理工具1SQL Server Management Studio这是SQLServer2005中最重要的用得最频繁的工具,它集成了SQLServer2000中的企业管理器、查询分析器等功能为一体,还可以用它来编写XML语句。它在【开始】|【所有程序】|【MicrosoftSQLServer2005】菜单中。2Reporting Services配置

38、配置 它是用于报表服务配置,管理报表服务器。在【开始】|【所有程序】|【MicrosoftSQLServer2005】|【配置工具】菜单中。3SQL Server Configuration ManagerSQLServer配置管理器,用于管理与SQLServer有关的连接服务。在【开始】|【所有程序】|【MicrosoftSQLServer2005】|【配置工具】菜单中。4SQL Server错误和使用情况报告错误和使用情况报告 在【开始】|【所有程序】|【MicrosoftSQLServer2005】|【配置工具】菜单中。 5SQL Server外围应用配置器外围应用配置器 它可以启用、禁

39、用、SQLServer2005安装的一些功能、服务和远程连接,以增加SQLServer的安全性。它在【开始】|【所有程序】|【MicrosoftSQLServer2005】|【配置工具】菜单中。6SQL Server Profiler它是SQLServer事件探查器,用于从服务器上捕获SQLServer2005事件的工具。可以查找导致SQLServer运行慢的查询;捕获导致某个问题的SQL语句;监视SQLServer性能等。它在【开始】|【所有程序】|【MicrosoftSQLServer2005】|【性能工具】菜单中。7数据库引擎优化顾问数据库引擎优化顾问 可以完成对数据库的优化。它在【开始

40、】|【所有程序】|【MicrosoftSQLServer2005】|【性能工具】菜单中。8Visual Studio 2005利用它可以创建与SQLServer2005相连的AnalysisServices项目、IntegrationServices项目、报表服务器项目和报表模型项目等。它在【开始】|【所有程序】|【MicrosoftVisualStudio2005】中。 1.4.6启动及配置SQLServer20051连接到服务器连接到服务器 通过客户端管理工具SQLServerManagementStudio可以连接到服务器上。2添加服务器注册添加服务器注册 把常用的服务器进行注册可以方便

41、以后的管理和使用。在SQLServerManagementStudio的【已注册服务器】窗口里列出的是常用的服务器与实例名。但这里保存的只是服务器连接信息,并不是真正已连接到服务器上了,在连接时还要指定服务器类型、名称、身份验证信息。3停止或暂停服务停止或暂停服务 单击【开始】|【所有程序】|【MicrosoftSQLServer2005】|【配置工具】,选择【SQLServerConfigurationManager】 4配置服务启动模式配置服务启动模式 在SQLServer2005的服务中,有些服务是默认自动启动的,如SQLServer5配置服务器配置服务器 在SQLServerManag

42、ementStudio中的【对象资源管理器】窗口里,右击要配置的服务器名,在快捷菜单中选【属性】 第第2章章 数据库管理数据库管理2.1 SQL SERVER2.1 SQL SERVER中数据库概述中数据库概述 2.2 2.2 数据库管理数据库管理 主要内容主要内容熟悉数据库及其对象熟悉数据库及其对象学习文件和文件组及事务日志学习文件和文件组及事务日志了解创建数据库系统的几个阶段和原则了解创建数据库系统的几个阶段和原则熟练掌握创建和管理数据库熟练掌握创建和管理数据库2.1 SQL SERVER2.1 SQL SERVER中数据库概述中数据库概述2.1.1 数据库及其对象数据库及其对象 1.数据

43、库数据库 在在SQL SQL Server Server 20052005中中数数据据库库是是数数据据和和数数据据库库对对象象的的集集合合,以以磁磁盘盘文文件件的的方方式式存存放放在在计计算算机机里里。数数据据处处理理是是指指将将数据转换成信息的过程。数据转换成信息的过程。2.常见的数据库对象常见的数据库对象 表:表:是具体组织和存储数据的对象,由列和行组成。其中是具体组织和存储数据的对象,由列和行组成。其中每一列都代表一个相同类型的数据。每一列都代表一个相同类型的数据。 记录:记录:在表的结构建立完毕之后,表中的每一行数据就是在表的结构建立完毕之后,表中的每一行数据就是一条记录。一条记录。

44、主键:主键:是表中的一列或多列的组合。它的值能唯一地确定是表中的一列或多列的组合。它的值能唯一地确定一条记录。一条记录。外键:外键:是这样一列或多列的组合,它存在于是这样一列或多列的组合,它存在于A表中,但不表中,但不是是A表的主键;它同时也存在于表的主键;它同时也存在于B表中,且是表中,且是B表的主键,表的主键,那么称这一列或多列是那么称这一列或多列是A表相对于表相对于B表的外键。外键是用来表的外键。外键是用来实现表与表之间的关系的。实现表与表之间的关系的。索引:索引:是某个表中一列或若干列值的集合和相应的指向表是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清

45、单。它提供了数中物理标识这些值的数据页的逻辑指针清单。它提供了数据库中编排表中数据的内部方法。据库中编排表中数据的内部方法。约束:约束:是是SQL Server实施数据一致性和数据完整性的方法或实施数据一致性和数据完整性的方法或者说是一套机制,它包括主键约束、外键约束、者说是一套机制,它包括主键约束、外键约束、Unique约约束、束、Check约束、缺省值和允许空等六种机制。约束、缺省值和允许空等六种机制。默认值:默认值:功能就是在数据表中插入数据时,对没有指定具功能就是在数据表中插入数据时,对没有指定具体值的字段,数据库会自动提供默认的数据。体值的字段,数据库会自动提供默认的数据。规则:规则

46、:是用来限制数据表中字段的有限范围,以确保列中是用来限制数据表中字段的有限范围,以确保列中数据完整性的一种方式。数据完整性的一种方式。存储过程:存储过程:是一组经过编译的可以重复使用的是一组经过编译的可以重复使用的Transact-SQL代码的组合。它是经过编译存储到数据库中的,所以运行代码的组合。它是经过编译存储到数据库中的,所以运行速度要比执行相同的速度要比执行相同的SQL语句要快。语句要快。触发器:触发器:是一种特殊的存储过程,与表格相关联。当用户是一种特殊的存储过程,与表格相关联。当用户对数据进行插入、修改、删除或数据库(表)建立、修改、对数据进行插入、修改、删除或数据库(表)建立、修

47、改、删除时激活,并自动执行。删除时激活,并自动执行。2.1.2 文件和文件组文件和文件组1文件文件 文件是数据库的操作系统文件,文件是数据库的操作系统文件,SQL Server 2005SQL Server 2005中中的每个数据库都由多个文件组成,的每个数据库都由多个文件组成,SQL Server 2005 SQL Server 2005 数数据库有以下三种类型的文件。据库有以下三种类型的文件。 1)1)主要数据文件主要数据文件 2)2)次要数据文件次要数据文件 3)3)日志文件日志文件2 文件组文件组 出于方便对数据库文件的管理的考虑,可以将数据库出于方便对数据库文件的管理的考虑,可以将数

48、据库文件分成不同的文件组。文件组可以对此进程提供帮助。文件分成不同的文件组。文件组可以对此进程提供帮助。系统管理员可以为每个磁盘驱动器创建文件组,然后将特系统管理员可以为每个磁盘驱动器创建文件组,然后将特定的表、索引、或表中的定的表、索引、或表中的 text、ntext 或或 image 数据指派给数据指派给特定的文件组。特定的文件组。SQL Server 2005提供了三种文件组类型,它提供了三种文件组类型,它们分别是主要文件组,用户自定义文件组和默认文件组。们分别是主要文件组,用户自定义文件组和默认文件组。1)主要文件组)主要文件组2)用户自定义文件组)用户自定义文件组3)默认文件组)默认

49、文件组事务日志是存放恢复数据所需的所有信息,是数据库中已发生的所有修改和执行每次修改的事务的一连串记录。当数据库损坏时,管理员可以使用事务日志还原数据库。每一个数据库必须至少拥有一个事务日志文件,允许拥有多个日志文件。 事务日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中。对于任何事务过程,事务日志都有非常全面的记录,根据这些记录可以将数据文件恢复成事务前的状态。2.1.3 事务日志事务日志 数据库设计是建立数据库及其应用系统的核心和基础,它数据库设计是建立数据库及其应用系统的核心和基础,它要求对于指定的应用环境,构造出较优的数据库模式,建立要求对

50、于指定的应用环境,构造出较优的数据库模式,建立起数据库应用系统,并使系统能有效地存储数据,满足用户起数据库应用系统,并使系统能有效地存储数据,满足用户的各种应用需求。一般按照规范化的设计方法,常将数据库的各种应用需求。一般按照规范化的设计方法,常将数据库设计分为若干阶段:设计分为若干阶段:1需求分析阶段需求分析阶段2概念设计阶段概念设计阶段3逻辑结构设计阶段逻辑结构设计阶段4物理结构设计阶段物理结构设计阶段5数据库实施阶段数据库实施阶段6数据库运行和维护阶段数据库运行和维护阶段2.1.4 数据库设计过程数据库设计过程1 1用用 SQL Server Management StudioSQL S

51、erver Management Studio创建数据库创建数据库1)从桌面上依次选择【开始】|【所有程序】|【MicrosoftSQLServer2005】|【SQLServerManagementStudio】,打开SQLServerManagementStudio窗口,设置好服务器类型、服务器名称、身份验证、用户名和密码,并单击【连接】按钮。2)在【对象资源管理器】窗口里选择【数据库】节点并单击鼠标右键,弹出快捷菜单,选择【新建数据库】命令,如图2.1所示。2.2 数据库管理数据库管理 2.2.1 数据库创建数据库创建3)出现新建数据库窗口,窗口由【常规】、【选项】和【文件组】三个选项组

52、成。比如要创建“BJGL”班级管理数据库,可在【常规】项的【数据库名称】文本框中输入BJGL。4)在各个选项中可以设置它们的参数值,比如在【数据库名称】文本框中输入要创建的数据库名称;在【所有者】文本框里输入数据库的拥有者;在【数据库文件】编辑框内的【逻辑名称】列输入文件名;在【初始大小】列设置初始值大小,在【自动增长】列设置自动增长的大小等。5)然后单击【确定】按钮,在【数据库】的树形结构中,就可看到刚创建的BJGL数据库,如图2.2所示。2 用用 T-SQL 命令创建数据库命令创建数据库CREATE DATABASE database_nameON ,.n , ,.n LOG ON ,.n

53、 COLLATE collation_name进一步把定义为:PRIMARY(NAME=logical_file_name,FILENAME=OS_file_name,SIZE=size,MAXSIZE=max_size|UNLIMITED,FILEGROWTH=growth_increment) ,.n把定义为:FILEGROUP filegroup_name,.n对以上语法中的符号及参数作如下说明:表示可选语法项,省略时各参数取默认值。,.n:表示前面的内容可以重复多次。:表示必选项,有相应参数时,中的内容是必选的。:表示在实际的语句中要用相应的内容替代。文字大写:说明该文字是T-SQL的

54、关键字。文字小写:说明该文字是用户提供的T-SQL语法的参数。database_name:是用户所要创建的数据库名称,最长不能超过128个字符,在一个SQLServer实例中,数据库名称是唯一的。ON:指定存放数据库的数据文件信息,说明数据库是根据后面的参数创建的。LOGON:指定日志文件的明确定义。如没有它,系统会自动创建一个为所有数据文件总和1/4大小或512K大小的日志文件。COLLATEcollation_name:指定数据库默认排序规则。规则名称可以是Windows排序规则名称,也可以是SQL排序规则名称。:指定文件的属性。NAMElogical_file_name:定义数据文件的逻

55、辑名称,此名称在数据库中必须唯一。ILENAMEOS_file_name:定义数据文件的物理名称,包括物理文件使用的路径名和文件名。SIZEsize:文件属性中定义文件的初始值,指定为整数。MAXSIZEmax_size:文件属性中定义文件可以增长到的最大值,可以使用KB、MB、GB或TG后缀,默认值是MB。指定为整数。如果没有指定或写unlimited,那么文件将增长到磁盘变满为止。FILEGROWTHgrowth_increment:定义文件的自动增长,growth_increment定义每次增长的大小。filegroup:定义对文件组的控制。2.2.2 修改数据库配置修改数据库配置1 1

56、用用 SQL Server Management StudioSQL Server Management Studio修改数据库修改数据库配置配置1)启动SQL Server Management Studio,连接上数据库实例,展开【对象资源管理器】里的树型目录,定位到要修改的数据库上。2)右击要修改的数据库,例如我们选择“学生数据库”,弹出快捷菜单,选择【属性】选项。图 2.3 数据库属性窗口2 用用 T-SQL 命令修改数据库配置命令修改数据库配置ALTER DATABASE database_nameADD FILE ,.n TO FILEGROUP filegroup_name|AD

57、D LOG FILE ,.n|REMOVE FILE logical_file_name|ADD FILEGROUP filegroup_name|REMOVE FILEGROUP filegroup_name|MODIFY FILE |MODIFY NAME=new_database_name|MODIFYFILEGROUP filegroup_namefilegroup_property|NAME=new_filegroup_name对各子句说明如下:对各子句说明如下:ADD FILE ,.nTO FILEGROUP filegroup_name:向指定的文件组中添加新的数据文件。向指定的

58、文件组中添加新的数据文件。ADD LOG FILE ,.n:增加新的日志文件。增加新的日志文件。REMOVE FILE logical_file_name:从数据库系统表中从数据库系统表中删除文件描述和物理文件。删除文件描述和物理文件。ADD FILEGROUP filegroup_name:增加一个文件组。增加一个文件组。REMOVE FILEGROUP filegroup_name: 删除指定的文删除指定的文件组。件组。MODIFY FILE :修改物理文件。修改物理文件。MODIFY NAME=new_database_name:重命名数据重命名数据库。库。MODIFYFILEGROUP

59、 filegroup_name:修改指定文件修改指定文件组的属性。组的属性。例例2-1:用:用T-SQL命令把命令把“学生数据库学生数据库”重命名为重命名为“教师数教师数据库据库”,可用如下命令。,可用如下命令。ALTER DATABASE 学生数据库学生数据库MODIFY NAME=教师数据库教师数据库执行后会得到执行后会得到“数据库名称数据库名称教师数据库教师数据库 已设置已设置”这样的这样的提示消息。提示消息。例例2-2:为:为“成绩数据库成绩数据库”增加一个数据库文件,可运用增加一个数据库文件,可运用如下语句。如下语句。ALTER DATABASE 成绩数据库成绩数据库 ADD FIL

60、E (NAME=新增的数据文件,新增的数据文件, FILENAME=D: SCORE成绩数据库新增的数成绩数据库新增的数据文件据文件.ndf)注意:需要保证注意:需要保证“学生数据库学生数据库”和和“成绩数据库成绩数据库”存在。存在。2.2.3 分离与附加数据库分离与附加数据库 2.2.3.1 分离数据库分离数据库1用用 SQL Server Management Studio分离数据库分离数据库用用 SQL Server Management Studio分离数据库的具体步骤如下。分离数据库的具体步骤如下。1)在)在【对象资源管理器对象资源管理器】窗口里,展开树形目录,定位到要窗口里,展开树

61、形目录,定位到要分离的数据库如分离的数据库如“BJGL”上单击鼠标右键,在弹出的快捷菜单上单击鼠标右键,在弹出的快捷菜单中,选择中,选择【任务任务】|【分离分离】命令命令。2用用 T-SQL命令分离数据库命令分离数据库用用T-SQL语句可以分离数据库,语法格式如下。语句可以分离数据库,语法格式如下。sp_detach_dbdbname= dbname, skipchecks= skipchecks ,keepFulltextIndexFile= keepFulltextIndexFile 参数说明如下。参数说明如下。dbname= dbname:要分离的数据库名称。:要分离的数据库名称。ski

62、pchecks= skipchecks:定义是否运行更新统计信息的操:定义是否运行更新统计信息的操作。作。keepFulltextIndexFile= keepFulltextIndexFile :与数据库有:与数据库有关的关的full-text文件是否要分离,默认值为文件是否要分离,默认值为true。例例2-3:用:用T-SQL语句分离语句分离“xsgl”数据库,使用的命令如下。数据库,使用的命令如下。SP_detach_db dbname=xsgl注意:需要保证注意:需要保证“xsgl”数据库数据库”存在。存在。 2.2.3.2 附加数据库附加数据库1. 用用 SQL Server Man

63、agement Studio附加数据附加数据库库用用 SQL Server Management Studio附加数据库的具体步附加数据库的具体步骤如下。骤如下。1)在)在【对象资源管理器对象资源管理器】窗口中,在窗口中,在【数据库数据库】节点上单节点上单击鼠标右键,弹出快捷菜单,选择击鼠标右键,弹出快捷菜单,选择【附加附加】命令。命令。2)出现)出现【附加数据库附加数据库】对话框,单击对话框,单击【添加添加】按钮,出现按钮,出现【定位数据库文件定位数据库文件】对话框对话框,在这个对话框里,默认只显在这个对话框里,默认只显示数据库的数据文件,即示数据库的数据文件,即“mdf”文件。文件。2用用

64、 T-SQL命令附加数据库命令附加数据库用T-SQL语句也可以附加数据库,语法格式如下。CREATEDATABASEdatabase_nameON,.nFORATTACHWITH|ATTACH_REBUILD_LOG对以上各参数简要说明如下。database_name:要附加的数据库名称。ATTACH_REBUILD_LOG:重建日志文件。2.2.4 脱机与联机数据库脱机与联机数据库 2.2.4.1 脱机数据库脱机数据库 1. 用用 SQL Server Management Studio脱机数据库脱机数据库用 SQL Server Management Studio脱机数据库的具体步骤如下。

65、1)启动SQL Server Management Studio,连接到本地数据库默认实例。2)在【对象资源管理器】窗口里,展开树形目录,定位到要脱机的数据库如“BJGL”上单击鼠标右键,在弹出的快捷菜单中,选择【任务】|【脱机】命令。3)弹出如图2.6所示的【使数据库脱机】对话框,单击【关闭】按钮即可完成操作。2. 用用 T-SQL 命令脱机数据库命令脱机数据库用T-SQL语句也可以脱机数据库,语法格式比较简单。 ALTER DATABASE database_name set OFFLINE 例2-4:用T-SQL语句使“xsgl”脱机,命令如下。ALTER DATABASE xsgl s

66、et OFFLINE图 2.6 脱机数据库成功窗口2.2.4.2 联机数据库联机数据库1. 用用 SQL Server Management Studio联机数据库联机数据库用SQLServerManagementStudio联机数据库的具体步骤如下。1)启动SQLServerManagementStudio,连接到本地数据库默认实例。2)在【对象资源管理器】窗口里,展开树形目录,定位到“BJGL”上单击鼠标右键,在弹出的快捷菜单中,选择【任务】|【联机】命令。2. 用用 T-SQL 命令联机数据库命令联机数据库用T-SQL语句亦可联机数据库,语法格式如下:ALTERDATABASEdatab

67、ase_namesetONLINE例2-5:用T-SQL语句使“xsgl”联机,命令如下。ALTERDATABASExsglsetONLINE2.2.5 删除数据库删除数据库1 1 用用 SQL Server Management StudioSQL Server Management Studio删除数据库删除数据库1)在)在【对象资源管理器对象资源管理器】中,定位在目标数据库上单击鼠标右中,定位在目标数据库上单击鼠标右键,在弹出的快捷菜单中选择键,在弹出的快捷菜单中选择【删除删除】。2用用 T-SQL 命令删除数据库命令删除数据库该命令的语法如下。该命令的语法如下。DROP DATABAS

68、E database_name,.nDROP DATABASE database_name,.n其中其中database_namedatabase_name是要删除的数据库名称,可以同时删除多个是要删除的数据库名称,可以同时删除多个数据库。数据库。例例2-62-6:要删除:要删除“BJGLBJGL”数据库,可使用如下命令:数据库,可使用如下命令:DROP DATABASE BJGLDROP DATABASE BJGL2.2.6 收缩数据库收缩数据库1 用用 SQL Server Management Studio收缩数据收缩数据库和文件库和文件用SQLServerManagementStudi

69、o收缩数据库和文件的具体步骤如下:1)在【对象资源管理器】中,定位在目标数据库上单击鼠标右键,在弹出的快捷菜单中选择【任务】|【收缩】|【数据库】。2)出现【收缩数据库】对话框,选中并设置相应的值,点击【确认】。3)如果想收缩数据库的指定数据文件或日志文件,可右击相应的数据库,弹出快捷菜单,选择【任务】|【收缩】|【文件 图 2.10 收缩数据库窗口 图 2.12 收缩文件窗口2 用用 T-SQL命令收缩数据库和文件命令收缩数据库和文件1)使用T-SQL收缩数据库使用T-SQL语言可以缩小整个数据库的所有数据文件和日志文件,或只缩小指定的某个(某些)文件。缩小整个数据库的语法结构如下:DBCC

70、SHRINKDATABASE(database_name,target_percent,NOTRUNCATE|TRUNCATEONLY)参数说明如下:database_name:要缩小的数据库的名称。target_percent:指收缩数据库的比例。NOTRUNCATE:指在数据库文件中保留收缩数据库时释放出来的空间。如没有定义参数,缩小的空闲空间将归还给操作系统。TRUNCATEONLY:将数据文件中未使用的空间释放给操作系统,以减少数据库文件的大小。2)使用T-SQL收缩文件,其语法格式如下:DBCCSHRINKFILE(file_name|file_id,target_size|,EMP

71、TYFILE|NOTRUNCATE|TRUNCATEONLY)参数说明如下:file_name|file_id:要收缩文件的逻辑文件名称或者文件ID号。target_size:缩小文件的目标空间大小,单位为MB,用整数表示。例2-7:使用DBCCSHRINKFILE命令将xsgl数据库的数据库文件的大小缩小到1MB.在查询编辑器中输入如下命令。USExsglgoDBCCSHRINKFILE(xsgl,1)第第3章章 数据表的管理数据表的管理3.1表的创建及修改表的创建及修改 3.3 表中数据的检索表中数据的检索3.2表中数据的修改表中数据的修改主要内容主要内容了解SQLServer2005的数

72、据类型掌握表的创建和表结构的修改方法掌握表中数据的插入、删除和修改操作掌握表中数据的检索方法3.1表的创建及修改表的创建及修改3.1.1 数据类型数据类型数据类型是数据库的重要特性之一,SQLServer提供了多种系统数据类型,也可以由用户自定义数据类型。1.1.逻辑类型逻辑类型2.整数整数类类型型3.浮点浮点类类型型4.字符字符类类型型5.二二进进制制类类型型6.时间时间数据数据类类型型7.货币货币数据数据类类型型3.1.2 创建表创建表在SQLServer2005中提供两种创建表的方式:一种是在SQLServerManagementStudio中创建表,另一种方式是通过执行T-SQL语句创

73、建表。1在在SQL Server Management Studio中中创创建表建表2用用T-SQL语语句句创创建表建表例3-1创建一个教师表CREATTABLE教师表(教师编号INTIDENTITY(1,1)NOTNULL,/*设置标识规范*/教师姓名CHAR(8)NOTNULL,职称CHAR(6)DEFAULT讲师,/*设置默认值约束*/专业方向CHAR(20),系CHAR(10),联系方式CHAR(30)GO3.1.3 修改表结构修改表结构1在在SQL Server Management Studio中修改表中修改表2用用T-SQL语语句修改表句修改表:ALTERTABLE例3-2要修改

74、教师表的教师编号为6位字符,删除职称列:ALTERTABLE教师表ALTERCOLUMN教师编号char(6)GOALTERTABLE教师表DROPCOLUMN职称GO3.1.4 删除表删除表 将表从数据库中删除,不仅删除了表的结构,还将表从数据库中删除,不仅删除了表的结构,还包括表中的所有对象,该表的结构定义、数据、全文索引、包括表中的所有对象,该表的结构定义、数据、全文索引、约束和索引都从数据库中永久删除。约束和索引都从数据库中永久删除。 如果要删除通过如果要删除通过 FOREIGN KEY 和和 UNIQUE 或或 PRIMARY KEY 约束相关联的表,则必须先删除具有约束相关联的表,

75、则必须先删除具有 FOREIGN KEY 约束的表。如果要删除约束的表。如果要删除 FOREIGN KEY 约束中引约束中引用的表但不能删除整个外键表,则必须删除用的表但不能删除整个外键表,则必须删除 FOREIGN KEY 约束。约束。 3.1.4 删除表删除表1在在SQL Server Management Studio中删除表中删除表2用用T-SQL语句删除表语句删除表删除表的T-SQL语句是:DROPTABLEtable_name例3-3删除数据库“教务管理”中的“成绩”表DROPTABLE成绩3.1.5 临时表临时表临时表存储在系统数据库tempdb中,当不再使用时会自动删除。临时表

76、有两种类型:本地的和全局的。本地临时表的名称以单个数字符号 “#”打头,它们仅对当前的用户连接是可见的,当用户从SQLServer实例断开连接时被删除。全局临时表的名称以两个数字符号“#”打头,创建后对任何用户都是可见的,当所有引用该表的用户从SQLServer断开连接时被删除。3.2表中数据的修改表中数据的修改3.2.1 表中数据的插入表中数据的插入INSERT 语句可向表中添加一个或多个新行。其语法格式如语句可向表中添加一个或多个新行。其语法格式如下:下:INSERT INTO table_or_view (column_list) VALUES(data_values,n)使用使用INS

77、ERTSELECT语句还可以将一个表中的数据插入到另语句还可以将一个表中的数据插入到另一个表中,例如:一个表中,例如:INSERT 课程课程 SELECT * FROM 基础课程表基础课程表3.2.2 表中数据的删除表中数据的删除在对象资源管理器中通过菜单命令删除表;在对象资源管理器中通过菜单命令删除表;使用删除语句使用删除语句DELETE也可实现对记录的删除。也可实现对记录的删除。语法格式:语法格式:DELETE table_or_view FROM table_sources WHERE search_condition3.2.3 表中数据的字段值的修改表中数据的字段值的修改UPDATE

78、语句可以更改表或视图中单行、行组或所有行语句可以更改表或视图中单行、行组或所有行的数据值。其语法格式如下:的数据值。其语法格式如下:UPDATE table_name SET column_name=expression|DEFAULT|NULL ,n FROM tablelist WHERE condition例3-5设置课程号小于“199”的课学分为4分UPDATE课程SET学分=4WHERE课程号1993.2.4 数据关系图的使用数据关系图的使用数据库关系图设计器数据库关系图设计器3.3.1 SELECT语句概述语句概述数据的查询是通过数据的查询是通过SELECT语句完成的。的主要子句可

79、归语句完成的。的主要子句可归纳如下:纳如下:SELECTselect_listINTOnew_table_nameFROMtable_listWHEREsearch_conditionsGROUPBYgroup_by_listHAVINGsearch_conditionsORDERBYorder_listASC|DESC3.3 表中数据的检索表中数据的检索3.3.2 列的检索列的检索选择列是限定返回某些列组成结果集。选择列是限定返回某些列组成结果集。1选择所有列选择所有列选择所有的列,既可以在查询中逐一地列示出所有的列名,也可以使用符号“*”。例3-6查询本校教师信息SELECT*FROM本校

80、教师2选择指定的列选择指定的列若要选择表中的特定列,应在选择列表中明确地列出每一列,在列与列之间用逗号隔开。例:SELECT教师编号,教师姓名,系,专业方向,职称FROM本校教师行的检索可以将通过限定条件返回结果的行组成结果集。1使用使用DISTINCT消除重复行消除重复行使用DISTINCT消除重复行的语法格式如下:DISTINCTcolumn_name,column_nameDISTINCT关键字对其后面所指定的列消除重复行。一个SELECT语句中只能有一个DISTINCT,而且必须放在所有的列名之前。3.3.3 行的检索行的检索图 3.20 结果集中的重复行图 3.21 消除重复行的结果

81、集2使用使用 TOP 子句限制结果集中返回的行数子句限制结果集中返回的行数TOP子句指定返回的行数,语法格式为:TOP(expression)PERCENTWITHTIES其中,expression是指定返回行数的数值表达式,如果指定了PERCENT,则是指返回的结果集行的百分比(由expression指定)。3.3.3 行的检索行的检索3使用使用WHERE子句限定返回行的条件子句限定返回行的条件在SELECT语句中使用WHERE子句指定查询的条件,使系统将符合条件的行作为结果。WHERE子句的语法格式:WHEREANDAND|OR1)比较搜索条件:在WHERE子句中对表达式进行比较,可使用比

82、较运算符和逻辑运算符。3.3.3 行的检索行的检索3使用使用WHERE子句限定返回行的条件子句限定返回行的条件WHERE子句的语法格式:WHEREANDAND|OR2)范围搜索条件:范围搜索返回介于两个指定值之间的所有值。在SELECT语句中用BETWEEN关键字指定要搜索的包括范围。例3-13查询成绩在60分到70分之间的学号、课程和成绩:use教务管理SELECT学号,课程号,成绩FROM成绩WHERE成绩BETWEEN60AND703.3.3 行的检索行的检索3使用使用WHERE子句限定返回行的条件子句限定返回行的条件WHERE子句的语法格式:WHEREANDAND|OR3)列表搜索条件

83、:在WHERE子句中使用关键字IN或OR运算符指定可选的取值。例3-14查询成绩表中“高等数学”和“大学语文”课程的成绩(课程号分别为101和102)。use教务管理SELECT学号,课程号,成绩FROM成绩WHERE课程号=101OR课程号=102或use教务管理SELECT学号,课程号,成绩FROM成绩WHERE课程号IN(101,102)3.3.3 行的检索行的检索3使用使用WHERE子句限定返回行的条件子句限定返回行的条件WHERE子句的语法格式:WHEREANDAND|OR4)搜索条件中的模式匹配:使用LIKE关键字来限定模式匹配查询。LIKE子句中可使用的通配符3.3.3 行的检索

84、行的检索通配符含义%包含零个或多个字符的任意字符串。_任何单个字符。 指定范围(例如 a-f)或集合(例如 abcdef)内的任何单个字符。不在指定范围(例如 a - f)或集合(例如 abcdef)内的任何单个字符3使用使用WHERE子句限定返回行的条件子句限定返回行的条件WHERE子句的语法格式:WHEREANDAND|OR5)NULL值的处理:空值表示值未知。空值不同于空白或零值。没有两个相等的空值。若要在查询中测试空值,可在WHERE子句中使用ISNULL或ISNOTNULL。例3-17查询成绩表中无成绩的学号和课程。USE教务管理SELECT学号,课程号FROM成绩WHERE成绩IS

85、NULLGO3.3.3 行的检索行的检索3.3.4 数据算术运算数据算术运算在对表进行查询时,有时需要对所查询的某些列使用表达式进行计算,SELECT语句支持表达式的使用。通过在带有算术运算符、函数、转换或嵌套查询的选择列表中使用数值列或数值常量,可以对数据进行计算和运算。算术运算符允许对数值数据进行加、减、乘、除运算。查询语句中支持的算术运算符包括:+,-,*,/,%(模运算)。例:以计算结果作为派生列输出3.3.5 数据转换数据转换有时在查询中需要将结果以另外一种形式显示出来,例如成绩的显示,有时需要分数有时需要等级,如“优秀”、“及格”等。可以使用CASE子句指定数据的转换。例3-19查

86、询学生成绩,以“优秀”、“良好”、“合格”和“不及格”的等级显示结果。USE教务管理SELECT学号,课程号,成绩,等级=CASEWHEN成绩=85THEN优秀WHEN成绩=70AND成绩=60AND成绩70THEN合格WHEN成绩60THEN不及格ENDFROM成绩GO3.3.6 函数的应用函数的应用SELECT查询也可以放在用户自定义的函数中,通过调用函数执行数据库查询。例3-20定义一个函数来计算全体学生某门课程的平均分数。通过调用这个函数来查询“101”、“201”和“301”号的课程的平均分。CREATEFUNCTIONaveragescore(coursechar(3)RETURN

87、SINTASBEGINDECLAREavg_scoreINTSELECTavg_score=(SELECTAVG(成绩)FROM成绩WHERE课程号=course)RETURNavg_scoreENDGO例:调用函数:USE教务管理SELECTdbo.averagescore(101)3.3.7 数据汇总数据汇总在对表数据进行查询时,经常需要对结果进行汇总计算。可以使用聚集函数对数据进行计算。例3-20统计选修“301”号课程的总分,平均分和最高分。USE教务管理SELECTSUM(成绩)AS总成绩,AVG(成绩)AS平均成绩,MAX(成绩)AS最高成绩FROM成绩WHERE课程号=301GO

88、函数名说明AVG求平均值COUNT(xolumn_name)统计列中数据项数COUNT(*)统计行数MAX求最大值MIN求最小值SUM求和STDEV求标准偏差VAR求方差常用聚集函数3.3.7 数据汇总数据汇总除使用聚集函数进行汇总外,还可以使用COMPUTE关键字对结果进行汇总计算。COMPUTE可以生成合计作为附加的汇总列,出现在结果集的最后。例3-21查询家住江苏省的学生,输出学号、姓名和家庭住址,并统计学生人数。USE教务管理SELECT学号,姓名,家庭住址FROM学生WHERE家庭住址LIKE江苏%COMPUTECOUNT(学号)GO3.3.8 连接查询连接查询在实际查询中,有时所需

89、要的信息来自于不同的表,需要在查询中将这些表进行连接方能得到完整的信息。连接条件可通过以下方式定义两个表在查询中的关联方式:1.指定每个表中要用于联接的列。典型的联接条件在一个表中指定一个外键,而在另一个表中指定与其关联的键。2.指定用于比较各列的值的逻辑运算符(例如=或)。3.3.8 连接查询连接查询1内部连接内部连接内部联接是使用比较运算符比较要联接列中的值的联接。使用FROMWHERE子句能够将表进行连接,语法格式为:SELECTcolumn_name,coluumn_name,/* /*指定输出的列指定输出的列* */ /FROMtable_name,table_name,/* /*指

90、定连接的表指定连接的表* */ /WHEREcondition/* /*指定连接条件或选择条件指定连接条件或选择条件* */ /例3-22查询学生姓名、所选课程和各科成绩。表及表结构如下:学生(学号,姓名,性别,身份证号,出生年月,联系电话,民族,家庭住址,邮编)课程(课程号,课程名,学时,学分)成绩(学号,课程号,成绩)3.3.8 连接查询连接查询2外部连接外部连接外部连接会返回FROM子句中提到的至少一个表或视图中的所有行,只要这些行符合任何WHERE或HAVING搜索条件。MicrosoftSQLServer2005对FROM子句中指定的外部连接使用下列关键字:LEFTOUTERJOIN

91、或LEFTJOINRIGHTOUTERJOIN或RIGHTJOINFULLOUTERJOIN或FULLJOIN其中LEFT表示左外连接,RIGHT表示右外连接,FULL表示完全外连接。3.3.8 连接查询连接查询2外部连接外部连接例:左外连接、右外连接、完全外连接。例:左外连接、右外连接、完全外连接。 左外连接查询右外连接查询完全外连接3.3.8 连接查询连接查询3交叉连接交叉连接在FROM子句中关键字CROSS表示交叉连接,又称为自然连接,即生成一个笛卡尔积。没有WHERE子句的交叉连接将产生连接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。交叉连接查询3.

92、3.9 联合查询联合查询UNION操作符将两个或两个以上的查询结果全并为一个结果集。UNION语句的语法格式为:|()UNIONALL|()UNIONALL|()n其中,指明了查询的详细说明或查询表达式。UNION为合并操作符。ALL表示合并所有数据行到结果集中,包括值重复的数据行。如果不指定此选项,则重复的数据行只显示一行。3.3.9 联合查询联合查询例3-26查询所有的教师姓名,包括本校教师和外聘教师。表及表结构为:本校教师(教师编号,教师姓名,职称,专业方向,系)外聘教师(教师编号,教师姓名,职称,专业方向,工作单位,联系方式)查询语句为:3.3.10嵌套查询嵌套查询也称“子查询”。外部

93、的SELECT语句称为外围查询(也称为父查询),内部的SELECT语句称为子查询。子查询的结果将作为外围查询的参数使用。1无关子查询无关子查询无关子查询,子查询在外围查询之前进行,然后返回结果集供外围查询使用。对应于SQL语句来说,如果被嵌套的查询中不包含对于外围查询的引用,则成为无关子查询。最常用的无关子查询方式是IN或NOTIN子句,其语法格式如下:SELECTselect_listFROMtable_nameWHEREconditionNOTIN(SELECTselect_listFROMtable_nameWHEREcondition)3.3.10嵌套查询2相关子查询相关子查询相关子查

94、询是指在执行子查询时需要使用的到外围查询的数据。这时,外围查询首先选择数据提供给子查询,然后子查询再对数据进行比较,执行结束后再将它的查询结果返回给外围查询中。相关子查询使用的关键字通常包括:EXISTS,AND,SOME,ANY、ALL等。EXISTS一般直接写在WHERE关键字后面,不写列名、常量或表达式,此时子查询的SELECT列表一般由“*”组成。关键字EXISTS在相关子查询中使用,使用时,对外表中的每一行子查询都要运行一遍,该行的值也要在子查询的WHERE子句中被使用,这样,通过EXISTS子句就能将外层表中的各行数据依次与子查询处理的内层表中的数据进行存在性比较,得到所需要的结果

95、。3.3.11排序要求记录按某种顺序输出,因此需要对表中的行进行排序。使用ORDERBY子句对查询结果进行排序,其语法格式为:SELECTselect_listFROMtable_nameWHEREconditionORDERBYcolumn_name|alias|positionASC|DESC排序可以是升序的(ASC),也可以是降序的(DESC)。如果未指定是升序还是降序,就默认为ASC。例3-32查询选修了“301”号课程的学生,并按分数从高到低的顺序输出学生的学号和成绩。第第4章章 索引及数据完整性索引及数据完整性4.1 索引索引 4.3 SQL SERVER数据完整性数据完整性4.2

96、 全文索引全文索引主要内容主要内容索引类型、数据完整性的分类索引类型、数据完整性的分类创建索引的方法创建索引的方法掌握索引的维护掌握索引的维护各种约束及默认值各种约束及默认值数据完整性的实现数据完整性的实现4.1.1 索引的简介及分类索引的简介及分类 索索引引是是某某个个表表中中一一列列或或若若干干列列值值的的集集合合和和相相应应的的指指向向表表中中物物理理标标识识这这些些值值的的数数据据页页的的逻逻辑辑指指针针清清单单。它它提提供供了了数数据库中编排表中数据的内部方法。据库中编排表中数据的内部方法。 通常情况下一个表的存储是由两部分组成的,一通常情况下一个表的存储是由两部分组成的,一部分用来

97、存放表的数据页面,另一部分存放索引页面。索部分用来存放表的数据页面,另一部分存放索引页面。索引就存放在索引页面上,通常,索引页面相对于数据页面引就存放在索引页面上,通常,索引页面相对于数据页面来说小得多。来说小得多。 唯一索引和非唯一索引唯一索引和非唯一索引聚集索引和非聚集索引聚集索引和非聚集索引单列索引、复合索引和包含性列索引单列索引、复合索引和包含性列索引视图索引视图索引全文索引全文索引 4.1.2 索引的分类索引的分类4.1.2 创建索引的注意事项创建索引的注意事项1.要合理的建立索引,而不要认为索引越多越好,要合理的建立索引,而不要认为索引越多越好,否则不仅达不到提高性能的目的,反而会

98、适得其反否则不仅达不到提高性能的目的,反而会适得其反 2.每个表只能有一个聚簇每个表只能有一个聚簇(聚集聚集)索引索引 3.聚集索引适合于检索连续键值聚集索引适合于检索连续键值 表4.1合理使用聚集索引和非聚集索引 4.1.3 创建索引创建索引创建索引的方法有直接和间接的方法创建索引的方法有直接和间接的方法 1.直接方法直接方法2.间接方法间接方法4.1.3.1 间接创建索引间接创建索引1. 主键索引(主键索引(Primary Key约束)约束)1)打开打开SQL Server Management Studio,连接到本地数据库,连接到本地数据库实例,在实例,在【对象资源管理器对象资源管理器

99、】中展开目录树中展开目录树“数据库数据库”|“xuesheng”|“表表”|“学生学生”,单击鼠标右键,选,单击鼠标右键,选择择【修改修改】命令,系统打开表设计器窗口。命令,系统打开表设计器窗口。2)在表设计器中,选择)在表设计器中,选择“学号学号”字段,单击字段,单击【表设计器表设计器】工具栏中的工具栏中的【设置主键设置主键】工具,则在字段工具,则在字段“学号学号”字段的字段的前面多了一个小钥匙的图标。如图前面多了一个小钥匙的图标。如图4.1所示。所示。 图4.1 利用设置主键间接创建索引2. 唯一约束(唯一约束(Unique约束)约束)例例4-1:创建一个成绩表,其中包含主键和:创建一个成

100、绩表,其中包含主键和Unique约束,创建后约束,创建后查看其索引信息。其相应的查看其索引信息。其相应的SQL命令如下:命令如下:USE xueshengCREATE TABLE 成绩成绩( 学号学号 INT NOT NULL,课程号课程号 NUMERIC UNIQUE, /*唯一约束唯一约束* */成绩成绩 NUMERIC )4.1.3.2 在在SQL Server Management Studio中创建索引中创建索引1打开“SQLServerManagementStudio”窗口,连接到本地实例,在【对象资源管理器】窗口中,依次展开XUEXIAO-6BNZNGY|数据库|xuesheng

101、|索引的树型目录。2右击“索引”,在弹开的快捷菜单中选择【新建索引】命令,如图4.5所示。图4.5 直接方法创建索引4.1.3.3 用用Create index 语句创建索引语句创建索引CREATEUNIQUECLUSTERED|NONCLUSTEREDINDEXindex_nameONtable|view(columnASC|DESC,.n)withPAD_INDEX,FILLFACTOR=fillfactor,IGNORE_DUP_KEY,DROP_EXISTING,STATISTICS_NORECOMPUTE,SORT_IN_TEMPDBONfilegroupCREATEINDEX命令创

102、建索引各参数说明如下: UNIQUE:用于指定为表或视图创建唯一索引,即不允许存在索引值相同的两行。 CLUSTERED:用于指定创建的索引为聚集索引。 NONCLUSTERED:用于指定创建的索引为非聚集索引。ON:表示可以在表或视图上创建索引,这里指定表或视图的名称和相应的列名称。index_name:用于指定所创建的索引的名称。 table:用于指定创建索引的表的名称。 view:用于指定创建索引的视图的名称。 ASC|DESC:用于指定具体某个索引列的升序或降序排序方向。 Column:用于指定被索引的列。PAD_INDEX:为非叶级索引页指定填充度。FILLFACTOR=fillfa

103、ctor:用于指定在创建索引时,每个索引页的数据占索引页大小的百分比,fillfactor的值为1到100。IGNORE_DUP_KEY:指定出先冗余数据的系统行为。 DROP_EXISTING:用于指定应删除并重新创建已命名的先前存在的聚集索引或者非聚集索引。 STATISTICS_NORECOMPUTE:用于指定过期的索引统计不会自动重新计算。 SORT_IN_TEMPDB:用于指定创建索引时的中间排序结果将存储在 tempdb数据库中。 ONfilegroup:用于指定存放索引的文件组。例4-2:为表“学生”中字段“学号”创建一聚集索引。 usexueshengIFEXISTS(SELE

104、CTnamefromsysindexeswherename=PK_XH)DROPINDEXxuesheng.PK_XHGOCREATEINDEXPK_XHON学生(学号)例4-3:为表“学生”中 字段“姓名”创建了一个唯一聚集索引,要求使用FILLFACTOR子句。usexueshengIFEXISTS(SELECTnamefromsysindexeswherename=XM_索引)DROPINDEXxuesheng.XM_索引GOCREATEUNIQUECLUSTEREDINDEXXM_索引 ON学生(姓名)withpad_index,fillfactor=20,ignore_dup_key

105、,drop_existing,statistics_norecompute4.1.4 查看修改索引查看修改索引1. 使用使用SQL Server Management Studio查看修改索引查看修改索引 2. 利用利用T-SQL查看修改索引查看修改索引 例例4-8: 查看学生表中的所有索引信息,其代码如下:查看学生表中的所有索引信息,其代码如下: Exec sp_helpindex 学生学生4.1.5 重新生成索引重新生成索引例4-10:重新生成xuesheng数据库中的学生表里的PK_学生,并设置索引填充,填充因子为60,其代码如下: ALTERINDEXPK_学生 ON学生 REBUIL

106、DWITH(PAD_INDEX=ON,FILLFACTOR=60)4.1.6 禁用索引禁用索引1.利用利用SQL Server Management Studio禁用索引禁用索引2.使用使用T-SQL语句中的语句中的DISABLE参数禁用索引参数禁用索引例4-12:禁用学生表中的XM_索引这一唯一索引。并查看学生表信息。 ALTERINDEXXM_索引 ON学生 DISABLEGO运行后,再次使用select*from学生,则可以显示数据表中信息。4.1.7 删除索引删除索引利用利用T-SQL的的DROP INDEX语句删除索引语句删除索引 例4-13:将成绩表中的课程号字段的UQ_成绩_02

107、3D5A04删除。 USExueshengGODROPINDEX成绩.UQ_成绩_023D5A044.1.8 视图索引视图索引例4-15:创建一视图,并为该视图建立聚集索引,然后用索引视图检索数据。 USExueshengGOSETANSI_PADDING,ANSI_NULLSONGOCREATEVIEWxuesheng_VIEW/*建立视图名为xuesheng_VIEW*/WITHSCHEMABINDINGASSELECT姓名,学号 FROMDBO.学生 GOSETNUMERIC_ROUNDABORTOFFGOSETARITHABORT,ANSI_PADDING,ANSI_WARNINGS,

108、CONCAT_NULL_YIELDS_NULLON图4.18运行结果 GOCREATEUNIQUECLUSTEREDINDEXVIEW_学生 ON学生(学号,姓名)|*在视图上建立聚集索引*|GOSELECT*FROMxuesheng_viewGO运行结果如图4.18所示。 图4.18 运行结果表4.3常规索引与全文索引比较4.2 全文索引全文索引 全文索引包含在全文索引目录中(全文索引包含在全文索引目录中(Full-Text Catalogs),),通常是由同一数据库中的一个或多个表的全文索引构成一个通常是由同一数据库中的一个或多个表的全文索引构成一个全文索引目录。一个表只能有一个全文索引,

109、因此每个有全全文索引目录。一个表只能有一个全文索引,因此每个有全文索引的表只隶属于一个全文索引目录。文索引的表只隶属于一个全文索引目录。 4.2.1 全文索引介绍全文索引介绍 全文目录是存储全文索引的地方,全文目录必须保存在与全文目录是存储全文索引的地方,全文目录必须保存在与SQL Server实例相关联的本地硬盘上,每个全文目录可以用于实例相关联的本地硬盘上,每个全文目录可以用于满足数据库内的一个或多个表的索引需求。要想创建全文索满足数据库内的一个或多个表的索引需求。要想创建全文索引,首先必须创建全文目录。引,首先必须创建全文目录。 4.2.2 全文目录管理全文目录管理4.2.2.1 启动全

110、文搜索启动全文搜索1.选择windows操作系统的【管理工具】|【服务】中,对【SQLServerFulltextSearch】进行启动。如图4.19所示。图4.19 利用windows启动全文搜索2.可以直接在SQLServer2005中依次选择【管理】|【全文搜索】,单击右键选择【启动】命令即可。如教材中图4.20所示。3.利用T-SQL命令实现对应的T-SQL语句命令格式如下:sp_fulltext_databaseaction=action其中action=action表示将要执行的操作。action的数据类型为varchar(20),可以是enable和disable两个值。其中en

111、able表示在当前数据库中启用全文索引;disable表示对于当前数据库中,删除文件系统中所有的全文目录,并且将该数据库标记为已经禁用全文索引。此操作并不在全文目录或表级上更改任何全文索引元数据。4.2.2.2 创建全文目录创建全文目录在在SQL Server Management Studio创建全文索引目录创建全文索引目录使用使用T-SQL语句创建全文目录语句创建全文目录 创建全文目录的创建全文目录的T-SQL语句格式为:语句格式为: CREATE FULLTEXT CATALOG catalog_name /*全文目全文目录名称录名称/ ON FILLEGROUP filegroup /

112、*包含全文目录的文件包含全文目录的文件组名默认是主文件组组名默认是主文件组*/ IN PATH rootpath /*全文目录的路径全文目录的路径*/WITH /*指定将应用于该目录的选项指定将应用于该目录的选项*/AS DEFAULT /*指定该全文目录为默认目录指定该全文目录为默认目录*/AUTHORIZATION owner_name /*将全文目录的所有者将全文目录的所有者设为数据库用户名或角色的名称设为数据库用户名或角色的名称*/4.2.3 创建全文索引创建全文索引例4-18为“学生”表的“姓名”、“家庭住址”2个字段创建全文索引,其代码如下:CREATEFULLTEXTINDEXO

113、N学生(姓名,家庭住址TYPECOLUMN扩展名)KEYINDEXPK_学生ONSQL全文目录4.2.4 使用全文搜索查询使用全文搜索查询在一个表中创建了全文索引后,才可以对表中的数据进行全文检索。进行全文检索需要在SELECT命令的WHERE字句中使用Transact-SQL谓词:CONTAINS和FRETEXT。4.2.4.1 使用使用CONTAINS搜索搜索简单词的搜索方式简单词的搜索方式简单词就是搜索一个或多个特定的词或短语。简单词就是搜索一个或多个特定的词或短语。例例4-19: 搜索学生表中的家庭住址中含有搜索学生表中的家庭住址中含有“黑龙江省黑龙江省”的记录,的记录,其代码如下:其

114、代码如下: SELECT * FROM 学生学生 WHERE CONTAINS (家庭住址家庭住址,黑龙江省黑龙江省)前缀词的搜索方式前缀词的搜索方式例例4-20: 搜索学生表中的家庭住址中含有搜索学生表中的家庭住址中含有“上海上海”开头的单词的开头的单词的记录,其代码如下:记录,其代码如下: SELECT * FROM 学生学生 WHERE CONTAINS (家庭住址家庭住址, 上海上海* *)其中其中* *只能放在英文字母之后,代表一个或多个字符。只能放在英文字母之后,代表一个或多个字符。 邻近词的搜索方式邻近词的搜索方式例例4-21: 搜索学生表中家庭住址中与黑龙江省考生相关的记录。搜

115、索学生表中家庭住址中与黑龙江省考生相关的记录。 use xueshengSELECT * FROM 学生学生 WHERE CONTAINS (家庭住址家庭住址, 黑龙江省黑龙江省 NEAR家庭住家庭住址址 )FREETEXT的语法代码为: FREETEXT(column_name|(column_list)|*,freetext_string,LANGUAGElanguage_term)其中:column_name:字段名column_list:字段列表*表示所有字段freetext_string:要搜索的字符串LANGUAGElanguage_term:用于单词断字、词干分析、同义词查询以及

116、干扰词删除特定的语言 4.2.4.2 使用使用FREETEXT搜索搜索例4-22查询“黑龙江省”的学生信息。 usexueshengSelect*from学生 Wherefreetext(家庭住址,黑龙江省)4.3.1 数据完整性概念数据完整性概念数据完整性是指数据库中的数据在逻辑上的一致性和准确性。 在关系数据库系统中,比较重要的完整性有实体完整性、域完整性、参照完整性和用户自定义的完整性等。 4.3 SQL SERVER数据完整性数据完整性4.3.2 域完整性域完整性域完整性又称列完整性,是指给定列的输入有效性。强制域有效性的方法有:限制类型(通过数据类型)、格式(通过CHECK约束和规则

117、)或可能值的范围(通过FOREIGNKEY约束、CHECK约束、DEFAULT定义、NOTNULL定义和规则来实现)。4.3.3 实体完整性实体完整性实体完整性又称行完整性,是指将行定义为特定表的惟一实体。要求表中有一个主键,并且其值不能为空且不允许有重复的值与之对应。实体完整性强制表的标识符列或主键的完整性(通过索引、UNIQUE约束、PRIMARYKEY约束或IDENTITY属性来实现)。4.3.4 参照完整性参照完整性参照完整性又称引用完整性,是指主表中的数据与从表中的数据的一致性。在输入或删除其中一个表的记录时,另一个表对应的约束应满足,即参照完整性保持表之间已定义的关系。在SQLSe

118、rver中,参照完整性基于外键与主键之间或外键与惟一键之间的关系(通过FOREIGNKEY和CHECK约束)。参照完整性确保键值在所有表中一致。这样的一致性要求不能引用不存在的值,如果键值更改了,那么在整个数据库中,对该键值的所有引用要进行一致的更改。 4.3.5 完整性的实现完整性的实现4.3.5.1 使用使用PRIMARY KEY约束实现约束实现4.3.5.2 利用利用CHECK约束实现约束实现4.5.3.3 UNIUE约束约束4.3.5.4 使用使用Forein Key约束约束4.3.5.5 使用默认值约束使用默认值约束4.3.5.1 使用使用PRIMARY KEY约束实现约束实现对于任

119、何一个数据表中,通常具有包含唯一标识表中每一行的值的一列或一组列。这样的一列或多列称为表的主键(PRIMARYKEY),用于强制表的实体完整性。在创建或修改表时,可以通过定义PRIMARYKEY约束来创建主键。 定义主键的方法可以参照4.1.3.1间接创建索引中创建。 4.3.5 完整性的实现完整性的实现4.3.5.2 利用利用CHECK约束实现约束实现 1. 通过通过SQLServerManagementStudio创建与删除创建与删除CHECK约约束束 如教材中的图如教材中的图4.24、4.25所示。所示。2. 利用利用SQL语句在创建表的同时创建语句在创建表的同时创建CHECK约束约束例

120、4-23对数据库xuesheng中的学生表,要求其年龄在0到30岁以内。 USExueshengCREATETABLE学生 (学号 char(6)notnull,姓名 char(6)null,年龄 smallintnotnullCHECK(年龄=0),出生日期 datetimenotnull)3. 修改表时创建修改表时创建CHECK约束约束例例4-24修改数据库修改数据库xuesheng中的学生表,要求其年龄在中的学生表,要求其年龄在30岁以岁以内。内。 USE xuesheng ALTER TABLE 学生学生 ADD CONSTRAINT 年龄年龄 CHECK (年龄年龄=0)4.5.3.

121、3 UNIUE约束约束UNIQUE约束在列集内强制执行值的惟一性。可以使用UNIQUE约束确保在非主键列中不输入重复的值。尽管UNIQUE约束和PRIMARYKEY约束都强制唯一性,但想要强制一列或多列组合(不是主键)的唯一性时应使用UNIQUE约束而不是PRIMARYKEY约束。 定义唯一键的方法可以参照4.1.3.1间接创建索引中创建。可以对一个表定义多个 UNIQUE约束,但只能定义一个 PRIMARYKEY约束。 对于UNIQUE约束中的列,表中不允许有两行包含相同的非空值。主键也强制执行惟一性,但主键不允许空值。UNIQUE约束优先于惟一索引。4.3.5.4 使用使用Forein K

122、ey约束约束1. 利用表设计器实现利用表设计器实现2. 利用数据库对象实现利用数据库对象实现使用FOREIGNKEY约束需要注意的问题1.一个表最多可以有可以建立一个或者多个FOREIGNKEY约束,最多可以建253个FOREIGNKEY约束。2.创建FOREIGNKEY约束的主表字段可以是主键约束也可以是UNIQUE约束。3.创建FOREIGNKEY约束的表可以和同数据库中其他表间建立约束,也可以和它本身建立FOREIGNKEY约束。例如:总经理也是公司成员中的一员,则可以将总经理字段(zjl)和成员(cy)字段间建立FOREIGNKEY约束。4.建立FOREIGNKEY约束的主表和子表间两

123、个字段的数据类型和数据宽度必须相同。5.创建FOREIGNKEY约束前应该确定那个表是主表,那个是子表。假如A表删了一条记录,表B也要删一条对应的记录,这时候应该在表B上设定关系,A是主表,B是子表(有的称为从表)。4.3.5.5 使用默认值约束使用默认值约束1. 创建默认值创建默认值 例例4-25 创建字符默认值创建字符默认值 unknown。 use xuesheng go create default 家庭住址家庭住址 as unknown go2. 删除默认值删除默认值例4-26删除默认值。 如果默认值没有绑定到列或用户定义的数据类型,可以很容易地使用 DROPDEFAULT将其除去。

124、如下为删除用户创建的名为族别_hz的默认值。 usepubsgoifexists(selectnamefromsysobjectswherename=族别_hzandtype=c)dropdefault族别_hzgoSQL Server数据库应用与开发数据库应用与开发主编主编 李德有李德有 彭德林彭德林中国水利水电出版社中国水利水电出版社第第5章章 视图视图5.1 视图简介及其优点视图简介及其优点 5.3 视图的维护视图的维护5.2 视图的创建视图的创建主要内容主要内容明确了视图的基本概念明确了视图的基本概念 视图的优点视图的优点 叙述了视图的创建方法叙述了视图的创建方法 简要介绍了视图的维护

125、简要介绍了视图的维护 5.1 视图简介及其优点视图简介及其优点5.1.1 视图视图 视图是一种数据库对象,用它可创建一个自定义的结果集,包含其他数据表中的字段。可认为视图是一个虚拟的从一个或多个基表(或视图)导出的数据表,对其操作与对实际表的操作是一样的。 5.1.2 视图优点视图优点1. 复杂性低复杂性低 视图不仅可以简化用户对数据的理解,也可以简化他们的操作 2. 安全性高安全性高 通过视图用户只能查询和修改他们所能见到的数据 3. 逻辑数据独立性强逻辑数据独立性强 视图对数据库重构提供了一定程度的逻辑独立性 在在SQL Server Management Studio中创建视图中创建视图

126、:打开企业管理器窗口,在企业管理器左边的【对象资源管理器】框中展开数据库服务器,展开“数据库”文件夹,展开指定的数据库在教务管理数据库下选择“视图”命令 在【表】的选项卡中的列表框中列出了所有可用的表 5.2.1 在在SQL Server Management Studio中创建视图中创建视图5.2 视图的创建视图的创建在窗体中部的列表框中,可以设置字段的别名设定(Alias)、是否输出(output)、排序方式(sortorder)等选项,同时也可以在行标题处对字段进行显示顺序的调整对表中各个字段的关系可以进行设定,设定的方式为拖动一个表中的字段到另一个表中相应的字段上完成了字段连接后,单击

127、工具栏上的按钮或在窗体右键菜单中选择【执行SQL】命令在窗体下部出现执行结果显示框,显示执行结果单击工具栏上的按钮,或在菜单中选择【保存】命令保存视图5.2.2 使用使用Create view语句语句使用Transact-SQL命令CREATEVIEW创建视图的语法格式为:CREATEVIEW,(column,n)WITHENCRYPTIONSCHEMABINDINGVIEW_METADATAASWITHCHECKOPTION其中:database_name:当前数据库名称;owner:当前数据库的拥有者;view_name:表示视图名称column,n:用于指定视图中包含的一列或者多列的名称

128、,用逗号分开;select_statement:构成视图文本的主体,利用SELECT命令从表中或视图中选择列构成新视图的列WITHCHECKOPTION:保证在对视图执行数据修改后,通过视图仍能够看到这些数据。如果对某一行数据进行修改,导致该行记录不满足这一条件,但由于在创建视图时使用了WITHCHECHOPTION选项,所以查询视图时,结果集中仍包括该条记录,同时修改无效。ENCRYPTION:表示对视图文本进行加密,这样当查看syscomments表时,所见的text字段值只是一些乱码。SCHEMABINDING:表示在select_statement语句中如果包含表、视图或引用用户自定义

129、函数,则表名、视图名或函数名前必须有所有者前缀。 VIEW_METADATA :表示如果某一查询中引用该视图且要求返回浏览模式的元数据时,那么SQLServer将向DBLIB和OLEDBAPIS返回视图的元数据信息。5.2.3 创建视图注意事项创建视图注意事项使用SQLServerManagementStudio和Transac-SQL命令创建视图时需要注意:只能在当前数据库中创建视图,在视图中最多只能引用1024列视图的名称必须满足SQLServer2005中规定的标识符的命名规则,且对每个用户必须是唯一的视图的名称不能与已存在的当前数据表的名称相同。如果视图中某一列是函数、数学表达式、常量

130、或来自多个表的列名相同,则必须为列定义名字如果视图引用的表被删除,则当使用该视图时将返回一条错误信息,如果创建具有相同的表的结构的新表来替代已删除的表视图则可以使用,否则必须重新创建视图5.3.1 视图的查看与修改视图的查看与修改存放视图信息的系统表主要有以下几个: Sysobjects:存放视图的名称等基本信息 Syscolumns:存放视图中定义的列 Sysdepends:存放视图的依赖关系 Syscomments:存放视图定义的文本5.3 视图的维护视图的维护5.3.1.1 视图的查看视图的查看 1.1.使用使用SQL Server Management Studio查看视查看视图图具体

131、操作步骤如下: 打开SQLServerManagementStudio,在SQLServerManagementStudio左边的对象资源管理器窗格中,展开指定的服务器,打开要查看视图的数据库文件夹,选择教务管理数据库 打开数据库文件夹,打开数据库下的视图目录,在右侧窗格中会列出当前数据库中的所有视图 如果要查看视图的基本信息,可以右击某个要查看的视图 2. 使用系统存储过程查看视图信息使用系统存储过程查看视图信息 具体有如下用法:Sp_help系统存储过程:Sp_help可以显示数据库对象的特征信息。它的使用方法为:Sp_help数据库对象名称Sp_depends系统存储过程:Sp_depe

132、nds用于显示数据库对象所依赖的对象。它的使用方法为:Sp_depends数据库对象名称Sp_helptext系统存储过程:Sp_helptext可以显示视图、触发器或存储过程等在系统表中的定义,它们可以在任何数据库对象上运行。它的使用方法为:Sp_helptext数据库对象名称5.3.1.2 视图的修改视图的修改1.使用使用SQL Server Management Studio修改视图修改视图2. 使用使用Transact-SQL语句修改视图语句修改视图使用Transact-SQL语句修改视图语法如下:ALTERVIEWview_name(column,.n)ASWITHCHECKOPTI

133、ON3. 重命名视图重命名视图 使用SQLServerManagementStudio修改视图使用系统存储过程查看视图信息 具体用法如下: Sp_rename,通过视图修改数据时应该注意的问题有以下几个: 修改视图中的数据时,不能同时修改两个或者多个基表不能修改那些值是自动产生的字段如果在创建视图时指定了WITHCHECKOPTION选项,那么所有使用视图修改数据库信息时,必须保证修改后的数据满足视图定义的范围;执行UPDATE、DELETE命令时,所删除与更新的数据必须包含在视图的结果集中。Timestamp和binary类型字段不能编辑。5.3.2 编辑视图中数据编辑视图中数据5.3.2.

134、1 插入数据记录插入数据记录1.用SQLServerManagementStudio在视图中添加数据 2.用Transact-SQL语句在视图中添加数据具体语法如下:InsertIntoVIWE_NAMEValues() 5.3.2.2 更新数据记录更新数据记录1.用SQLServerManagementStudio在视图中更新数据2.用Transact-SQL语句在视图中更新数据具体语法如下:UpdateSet=Where条件字句1.用SQLServerManagementStudio在视图中删除数据在SQLServerManagementStudio中,打开要删除记录的数据表对应的视图,在

135、返回的数据记录窗口中直接删除记录即可 .2.用Transact-SQL语句在视图中删除数据具体语法如下:DeletefromWhere=5.3.2.3 删除数据记录删除数据记录在SQLServer2005中每个数据库的系统视图里都有一个系统自带的,文件名称为“INFORMATION_SCHEMA.VIEWS”的视图,该视图里记录了该数据库中的所有视图的信息,使用“select*fromINFORMATION_SCHEMA.VIEWS”可以查看该视图的信息如果不想让别人看到该视图的内容,可以使用WITHENCRYPTIO参数来为视图加密创建完加密视图后,在SQLServerManagementS

136、tudio中也不能对其进行修改5.3.3 加密视图加密视图5.3.4 限制视图所用的表限制视图所用的表创建视图的代码,有几个必需要注意的地方:只有使用了withschemabinding之后,才能限制被引用的数据表或视图不能被修改或是删除。使用了withschemabinding参数之后,在select*代表所有的字段,必须指定字段名。使用了withschemabinding参数之后,在select语句里所用到的数据表或视图名,必须要用owner.object方式来表示。5.3.5 检查视图的数据变动检查视图的数据变动使用视图还可以达到约束的功能,当视图中有新纪录插入或被修改时,若不符合视图的

137、创建条件时,将会被拒绝执行,要实现该功能,要使用WITHCHECKOPTION参数。已经用了“WITHCHECKOPTION”设定了数据检查,在对该视图里的数据进行操作时,如果不能符合当初创建视图时设定的条件,则不能执行改操作。但是在该视图里所引用的数据表里,还是可以执行的 5.3.6 视图的删除视图的删除1. 在在SQL Server Management Studio删除视图删除视图打开SQLServerManagementStudio,选择要删除的视图,右击该视图的名字,从弹出的快捷菜单中选择【删除】命令。在出现的删除对象对话框中,选择要删除的视图进行删除。在删除对象对话框中,单击显示依

138、赖关系按钮,显示和视图有关的表格和视图,单击确定按钮,即可删除该视图 2. 用用Transact-SQL语句删除视图语句删除视图可以使用Transact-SQL语句中的DROPVIWE命令删除视图命令如下:DROPVIWEVIWE_NAME第6章存储过程主要内容存储过程及其创建存储过程及其创建执行存储过程执行存储过程管理存储过程的方法管理存储过程的方法 第六章存储过程6.1存储过程概述6.2存储过程的创建6.3存储过程的维护6.1存储过程概述6.1.1存储过程简介 SQLServer提供了一种方法:可以将一些预先编译的SQL语句集中起来由SQLServer数据库服务器来完成,以实现某个任务,这

139、就是存储过程。 6.1存储过程概述6.1.2存储过程优点 1.存储过程是SQLServer数据库服务器上一组预先编译好的Transact-SQL语句。2.存储程以一个名称存储在数据库中,可作为一个独立的数据库对象;可作为一个单元供用户在应用程序中调用。3.存储过程可以接收和输出参数,返回执行存储过程的状态值。4.一个存储过程可以调用另一个存储过程。5.存储过程会返回执行情况的状态代码给调用它的程序。 6.1存储过程概述6.1.2存储过程优点1.存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快。存储过程已经经过编译,无须经过SQL语句的再次分析,可以直接执行。根据经验,存储过程在数据库

140、上运行,平均要比SQL语句执行速度快上210倍。2.存储过程可以接受参数、输出参数、返回单个或多个结果集以及返回值。可以向程序返回错误原因。3.存储过程运行比较稳定,不会有太多的错误。只要一次成功,以后都会按这个程序运行。4.存储过程主要是在服务器上运行,减少对客户机的压力。 6.1存储过程概述6.1.2存储过程优点5.存储过程可以包含程序流、逻辑以及对数据库的查询。同时可以实体封装和隐藏了数据逻辑。6.存储过程可以在单个存储过程中执行一系列SQL语句。7.存储过程可以减轻服务器的负担。当用户的操作是针对于数据数据库对象的操作时,使用存储过程,只要直接发送存储过程的调用命令即可,从而增加了网络

141、流量,降低网络负担。如果使用单条调用语句的方式,网络上就必须传输大量的SQL语句。 6.1存储过程概述6.1.3存储过程分类1.系统存储过程 系统存储过程就是系统创建的存储过程,是在SQLServer安装成功后,就已经存储在系统数据库中了,目的在于能够方便地从系统表中查询信息或完成与更新数据库表相关的管理任务或其它的系统管理任务。 系统过程以“sp_”为开头,并存放在“sys”构架中,为数据库管理者所有。6.1存储过程概述存储过程概述6.1.3存储过程分类2.本地存储过程本地存储过程是在用户数据库中创建的存储过程。本地存储过程实际上就是用户存储过程,在以后的数据库开发中,涉及到的存储过程几乎都

142、是本地存储过程。这种存储过程是用户自己创建的普通数据库,完成特定数据库操作任务,其名称不能以“sp_”为前缀。6.1存储过程概述存储过程概述6.1.3存储过程分类3.临时存储过程临时存储过程首先是属于本地存储过程。我们在创建本地存储过程时,如果在本地存储过程的名称前有一个“#”,该存储过程就被称为局部临时存储过程,只能在一个用户会话中使用;如果在本地存储过程的名称前有两个“#”,该存储过程就被称为全局临时存储过程,可以在所有用户会话中使用。6.1存储过程概述存储过程概述6.1.3存储过程分类4.远程存储过程远程存储过程,顾名思义,就是指从远程服务器上调用的存储过程,也就是非本地服务器上的存储过

143、程。6.1存储过程概述存储过程概述6.1.3存储过程分类5.扩展存储过程扩展存储程序是指在SQLServer环境之外执行的动态链接库DLL。它们是以例如用C语言等编写的外部程序,以动态链接库(DLL)形式存储在服务器上,SQLServer可以动态装载并执行它们。扩展存储过程只能添加到Master数据库。6.1存储过程概述存储过程概述6.1.3存储过程分类6.CLR过程CLR存储过程是SQLServer2005新增的存储过程,是针对微软的.NETFramework公共语言运行时方法的引用,可以接受和返回用户提供的参数。CLR存储过程要在MicrosoftVisualStudio2005中来实现。

144、6.2存储过程的创建6.2.1使用Createprocedure语句 CREATEPROCEDUREprocedure_name;numberparameterdata_typeVARYING=defaultOUTPUT,.nWITHRECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTIONFORREPLICATIONASsql_statement.n6.2存储过程的创建例6-1:创建一个存储过程exp1,查询学生表中所有内容的。USE教务管理GOCREATEPROCEDUREexp1ASSELECT*FROM学生GO6.2存储过程的创建存储过程的创建例6-2:创建一个

145、存储过程exp2,加入一条学生记录到学生表中,并查询此表中所有学生的总学分。USE教务管理GOCREATEPROCEDUREexp2ch_学号nvarchar(10),ch_姓名nvarchar(max),ch_性别nvarchar(2),ch_身份证号nvarchar(14),da_出生年月datetime,ch_联系电话nvarchar(max),ch_民族nvarchar(max),ch_家庭住址nvarchar(max),ch_邮编nvarchar(6)ASINSERTINTO学生(学号,姓名,性别,身份证号,出生年月,联系电话,民族,家庭住址,邮编)VALUES(ch_学号,ch_姓

146、名,ch_性别,ch_身份证号,da_出生年月,ch_联系电话,ch_民族,ch_家庭住址,ch_邮编)GO6.2存储过程的创建存储过程的创建例6-3:创建一个存储过程exp3,给出一个性别,显示所有该型别的学生信息。USE教务管理GOCREATEPROCEDUREexp3ch_性别nvarchar(2)ASSELECT*FROM学生WHERE性别=ch_性别GO6.2存储过程的创建存储过程的创建 6.2.2在SQLServerManagementStudio中创建1.启动SQLServerManagementStudio,并登录所要使用的服务器,如图6.1所示。图 6.1 登录服务器6.2存

147、储过程的创建存储过程的创建 6.2.2在SQLServerManagementStudio中创建2.在SQLServerManagementStudio窗口左端的树状结构中,选择要创建存储过程的数据库,如教务管理数据库,鼠标左键单击+展开,如图6.2所示。图 6.2 展开数据库6.2存储过程的创建存储过程的创建 6.2.2在SQLServerManagementStudio中创建3.选择【可编程性】节点,鼠标左键单击+展开,如图6.3所示。图 6.3 展开可编程性节点图6.2存储过程的创建存储过程的创建 4.选择【存储过程】节点,单击鼠标右键,在弹出的菜单中选择【新建存储过程】命令,如图6.4

148、所示。图 6.4 新建存储过程6.2存储过程的创建存储过程的创建 5.在打开的文本框中输入创建存储过程的Transact-SQL语句就可,如图6.5所示。图 6.5 弹出的存储过程输入窗口6.2存储过程的创建存储过程的创建 6.2.3存储过程的执行1.使用Transact-SQL语句执行存储过程EXECUTEreturn_statur=procedure_name;number|procedure_name_varparameter=value|variableOUTPUT|DEFAULT,nWITHRECOMPILE6.2存储过程的创建存储过程的创建 6.2.3存储过程的执行1.使用Tran

149、sact-SQL语句执行存储过程例6-4:执行存储过程exp1。EXECUTEexp1执行结果将显示所有学生的信息。6.2存储过程的创建存储过程的创建 6.2.3存储过程的执行2.使用SQLServerManagementStudio执行存储过程(1).启动SQLServerManagementStudio,并登录所要使用的服务器,在SQLServerManagementStudio窗口左端的树状结构中,选择要创建存储过程的数据库,如教务管理数据库,鼠标左键单击+展开,如图6.6所示。图 6.6 展开数据库6.2存储过程的创建存储过程的创建 6.2.3存储过程的执行(2).选择【可编程性】节点

150、下的【存储过程】节点,显示存储在数据库中的所有的存储过程,如图6.7所示。图 6.7 选择存储过程6.2存储过程的创建存储过程的创建 6.2.3存储过程的执行(3).在要执行的存储过程上单击鼠标右键,在弹出的快捷菜单中选择【执行存储过程】命令,如图6.8所示。图 6.8 选择执行存储过程6.2存储过程的创建存储过程的创建 6.2.3存储过程的执行(4).选择【执行存储过程】命令后,会弹出【执行过程】窗口,在该窗口中显示了系统得状态、存储过程的参数等相关信息,单击【确定】按钮则开始执行该存储过程。如图6.9所示。图 6.9 显示执行过程对话框6.2存储过程的创建存储过程的创建 6.2.3存储过程

151、的执行(5).存储过程执行完后,会返回执行的结果,在窗口的右下角,会看到执行的结果,以及执行存储过程的相关消息。如图6.10所示。图 6.10 显示执行结果6.2存储过程的创建存储过程的创建 6.2.4存储过程参数的使用1.带输入参数的存储过程例6-5:创建一个带输入参数的存储过程,完成输入一个学号,如果存在,则显示“该学号存在”,如果不存在该学号,则显示“该学号不存在”。CREATEPROCEDUREexp4ch_学号nvarchar(10)ASBEGINDECLAREbit_existbitIFEXISTS(SELECT*FROM学生WHERE学号=ch_学号)SELECTbit_exis

152、t=1ELSESELECTbit_exist=0IFbit_exist=1PRINT该学号存在ELSEPRINT该学号不存在END6.2存储过程的创建存储过程的创建 6.2.4存储过程参数的使用2.带输出参数的存储过程例6-6:创建一个带OUTPUT参数的存储过程,根据输入的课程号,统计该课程的所有学生的总成绩。USE教务管理GOCREATEPROCEDUREexp5ch_课程号nvarchar(10),all_scoreintoutputASSELECTall_score=sum(成绩)FROM成绩WHERE课程号=ch_课程号GO6.2存储过程的创建存储过程的创建 6.2.5创建及使用存储

153、过程注意事项1.不要使用sp_prefixsp_prefix是为系统存储过程保留的。数据库引擎将始终首先在主数据库中查找具有此前缀的存储过程。这意味着当引擎首先检查主数据库,然后检查存储过程实际所在的数据库时,将需要较长的时间才能完成检查过程。而且,如果碰巧存在一个名称相同的系统存储过程,则您的过程根本不会得到处理。6.2存储过程的创建6.2.5创建及使用存储过程注意事项2.尽量少用可选参数在频繁使用可选参数之前,请仔细考虑。通过执行额外的工作会很轻易地影响性能,而根据为任意指定执行输入的参数集合,这些工作时不需要的。您可以通过对每种可能的参数组合使用条件编码来解决此问题,但这相当费时并会增大

154、出错的几率。 6.2存储过程的创建存储过程的创建 3.在可能的情况下使用OUTPUT参数通过使用OUTPUT参数返回标量数据,可以略微提高速度并节省少量的处理功率。在应用程序需要返回单个值的情况下,请尝试此方法,而不要将结果集具体化。在适当的情况下,也可以使用OUTPUT参数返回光标,但是我们将在后续文章中介绍光标处理与基于集合的处理在理论上的分歧。6.2存储过程的创建存储过程的创建 4.提供返回值使用存储过程的返回值,将处理状态信息返回给进行调用的应用程序。在您的开发组中,将一组返回值及其含义标准化,并一致地使用这些值。这会使得处理调用应用程序中的错误更加容易,并向最终用户提供有关问题的有用

155、信息。6.2存储过程的创建存储过程的创建 5.始终使用注释您可能不会始终维护此代码。但其他人员将来可能想要了解它的用途。6.2存储过程的创建存储过程的创建 6.2.6临时存储过程例6-7:创建一个临时存储过程,输出学生表中的所有信息。USE教务管理GOCREATEPROCEDURE#exp6ASSELECT*FROM学生GO如果建立该临时存储过程的用户断开连接后,该临时存储过程就会被删除。6.2存储过程的创建存储过程的创建 6.2.7加密存储过程如果用户不想让其他人查看存储过程的定义文本,可以在定义存储过程的同时,对其进行加密,来保护代码的安全性,通过加密的存储过程可以正常使用,但是无法查看该

156、存储过程的内容,在SQLServerManagementStudio中也不能修改,只能通过ALTER语句来修改。例6-8:创建一个加密的存储过程。USE教务管理GOCREATEPROCEDUREexp7性别nvarchar(2)WITHENCRYPTIONASSELECT*FROM学生表WHERE性别=性别GO6.2存储过程的创建存储过程的创建 6.2.7加密存储过程例6-8:创建一个加密的存储过程。USE教务管理GOCREATEPROCEDUREexp7性别nvarchar(2)WITHENCRYPTIONASSELECT*FROM学生表WHERE性别=性别GO6.2存储过程的创建存储过程的

157、创建 6.2.8查看源代码其语法格式为:sp_helptext存储过程名称例6-9:查看存储过程exp2的源代码。sp_helptextexp2GO执行后,就会看到所要查看的存储过程的源代码。如图6-11所示。图 6-11 运行sp_helptext的结果6.2存储过程的创建存储过程的创建 6.2.9设计存储过程组设计存储过程组,其主要目的是为了删除操作的方便。在SQLServer2005中,可以将多个存储过程放在一个组中,即允许存储过程分组。在同一组中的存储过程可以执行相关的一些操作,当然,也可以执行一些不相关的操作。当删除存储过程组时,就会把存储过程组中的所有存储过程都删除。6.2存储过程

158、的创建存储过程的创建 6.2.9设计存储过程组例6-10:创建一个存储过程组,其中包含两个存储过程,一个是查询学生表中所有的数据,一个是根据性别来查询学生表中的数据。USE教务管理GOCREATEPROCEDUREexp8;1ASSELECT*FROM学生GOCREATEPROCEDUREexp9;2性别char(2)ASSELECT*FROM学生WHERE性别=性别GO6.3存储过程的维护6.3.1存储过程修改 ALTERPROCEDUREprocedure_name;numberparameterdata_typeVARYING=defaultOUTPUT,.nWITHRECOMPILE|

159、ENCRYPTION|RECOMPILE,ENCRYPTIONFORREPLICATIONASsql_statement.n6.3存储过程的维护6.3.1存储过程修改例6-11:修改存储过程exp1,使其按学号排序。ALTERPROCEDUREexp1ASSELECT*FROM学生ORDERBY学号GO注意:如果在ALERTPROCEDURE中使用了WITHENCTYPTION保留字,那么在查看修改后的存储过程源代码时,是看不到的。 6.3存储过程的维护6.3.2存储过程删除 使用命令删除存储过程 :DROPPROCEDUREschema_name.procedure,n其中,schema_n

160、ame为架构名,procedure为存储过程或存储过程组的名称。 例6-11:将存储过程exp1从数据库中删除,则执行:DROPPROCEDUREexp1例6-12:删除存储过程组exp8,其代码如下:DROPPROCEDUREexp86.3存储过程的维护6.3.2存储过程删除使用企业管理起删除存储过程 :1.连接服务器,打开指定的数据库,如打开教务管理数据库,鼠标左键单击数据库下的【可编程性】下的【存储过程】节点,就会看到教务管理中的所有的存储过程。如图6-12所示。图 6-12选择要删除的存储过程图 6-13选择删除命令2.在要删除的存储过程上单击鼠标右键,在弹出的快捷菜单中选择【删除】命

161、令,就可完成删除操作。如图图6-13所示。3.会弹出【删除对象】窗口,在该窗口中显示当前要删除的存储过程的相关信息,如果确认要删除,请单击【确定】按钮。如图图6-14所示。 6.3存储过程的维护6.3.2存储过程删除图 6-12 选择要删除的存储过程图 6-13 选择删除命令图 6-14 删除对象对话框6.3存储过程的维护6.3.3错误信息处理 1.系统变量ERROR通过系统变量ERROR可以返回错误代码。系统变量ERROR在执行每一个T_SQL语句之后会得到一个值。如果是成功的执行,ERROR的值为0,如果出现错误,则ERROR中会包含错误信息。2.RETURE语句RETURE语句表示从查询

162、或者存储过程中非正常的退出。RETURE语句可以在存储过程中的任何一处退出,并且是立即执行的语句,在其后的语句都不执行。RETURE语句的语法格式为:RETUREinteger_expression6.3存储过程的维护6.3.3错误信息处理3.系统存储过程sp_addmessage使用系统存储过程sp_addmessage可以自定义错误的信息,具体语法格式为:sp_addmessagemsgnum=msg_id,severity=severity,msgtext=msg,lang=language,with_log=with_log,replace=replace6.3存储过程的维护6.3.3

163、错误信息处理4.RAISERROR语句指从数据库应用程序中调用指定的错误消息。用RAISERROR语句可以触发错误信息,客户端可以从sysmessages表中检索条目,或者使用用户指定的 严重度和状态信息动态地生成一条信息。RAISERROR语句的语法格式为:RAISERROR(msg_id|msg_str,severity,state,argument,n)WITHoption,n参数说明参照系统存储过程sp_addmessage。 6.3存储过程的维护6.3.5CLR存储过程 CLR存储过程的创建 :1.启动对CLR的支持。2.创建CLR存储过程,编写代码。6.3存储过程的维护6.3.5C

164、LR存储过程CLR存储过程的测试 :1.在MicorsoftVisualStudio2005界面的右侧,选择【解决方案资源管理器】【Test Scripts】【test.sql】,鼠标右键选择【打开】,会弹出。如图6-20所示。图 6-20打开test.sql2.在MicorsoftVisualStudio2005界面的左侧会打开test.sql,转到最后一行,将“select要运行项目,请编辑项目中的 Test.sql文件。此文件位于解决方案资源管理器的 TestScripts文件夹中。”改成:execClrStored50,即将所有学生的成绩都加50分。3.打开【开始】【所有程序】【Mic

165、rosoftSQLServer2005】【配置工具】【SQLServer外围应用配置器】。在打开的窗口中选择最下面的“功能的外围应用配置器”选项。如图6-21所示。图 6-21SQLServer2005外围应用配置器4.在打开的窗口中选择【CLR集成】,单击【确定】按钮。如图6-22所示。图 6-22启动CLR集成5.回到MicorsoftVisualStudio2005界面,按F5执行整个方案,执行成功后,你会看到成绩表中所有学生的成绩都增加了50分。6.3存储过程的维护6.3.5CLR存储过程CLR存储过程的测试 :图 6-20 打开test.sql图 6-21 SQL Server 20

166、05外围应用配置器6.3存储过程的维护6.3.5CLR存储过程CLR存储过程的测试 :图 6-22 启动CLR集成本章小结1.存储过程是存储在服务器上的一组Transact-SQL语句。2.使用存储可以使一些重复性的工作能过存储下来,在下次需要时可以直接使用。3.存储过程的类型,包括5种:系统存储过程、本地存储过程、临时存储过程、远程存储过程和扩展存储过程。4.存储过程的创建方法。5.存储过程执行的方式。6.存储过程可以使用输入参数和输出参数。7.存储过程的维护与管理工作。 SQL Server数据库应用与开发数据库应用与开发主编主编 李德有李德有 彭德林彭德林中国水利水电出版社中国水利水电出

167、版社第第7章章 触发器触发器7.1 触发器简介触发器简介 7.3 DDL触发器触发器7.2 DML触发器的使用触发器的使用主要内容主要内容明确了触发器的基本概念、用途,类型以明确了触发器的基本概念、用途,类型以及工作原理及工作原理了解了解DML触发器触发器DDL触发器的使用触发器的使用 7.1 触发器简介触发器简介7.1.1 触发器概念触发器概念触发器是在对表进行插入(INSERT)、更新(UPDATE)或删除(DELETE)操作时自动执行的存储过程,它是一种特殊类型的存储过程。 触发器这种特殊类型的存储过程,是在基表被修改时自动执行的内嵌过程。 触发器是独立存储在数据库中的独立对象。触发器是

168、现代数据库管理系统用于响应数据变化的一种机制。触发器是实现数据维护规则的有效机制。 7.1.2 触发器用途触发器用途触发器的用途有:1.比较不同版本的数据。2.读取其他数据库的表中的数据。3.在数据库中所有的相关表中级联所作的修改或删除。4.回滚无效的修改。5.强制实现比由CHECK约束提供的限制更为复杂的限制。6.执行本地和远程存储过程。在SQLSERVER2005中,触发器分为两大类: DML触发器:DML触发器是当数据库服务器中发生数据操作语言事件时执行的存储过程。DML触发器又分为两大类:AFTER触发器和INSTEADOF触发器。 DDL触发器:DDL触发器是在响应数据定义语言事件时

169、执行的存储过程。 7.1.3 触发器类型触发器类型在SQLSERVER2005中三种类型的“动作”可以激活DML触发器,即INSERT、 DELETE以及UPDATE。 After触发器在操作完成后再被激活执行触发器里的SQL语句 InsteadOf触发器是在对记录的操作进行之前就被激活,执行触发器中的SQL语句,而不再执行原来的SQL操作 DDL触发器是在响应数据定义语言(DDL)语句时触发,一般用于在数据库中执行管理任务。 7.1.4 触发器工作原理触发器工作原理7.2 DML触发器的使用触发器的使用1.DML触发器是由DML语句触发的。2.DML触发器的基本要点:触发时机:指定触发器的出

170、发时间。触发事件:引起触发器被触发的事件。条件谓词:当触发器中包含多个触发事件的组合时,为了分别针对不同的事件进行不同的处理,需要使用Oracle提供的条件谓词。3.INSERTING当触发事件是INSERT时,为真。4.UPDATING(COLUMNX):当触发事件是UPDATE时,如果修改了column_x列,为真。5.DELETING:当触发时间是DELETE时,取值为真。7.2.1 After触发器工作原理触发器工作原理AFTER触发器是这记录改变完之后,才会被激活执行,且只能在表上定义。它主要用于记录变更后的处理或检查,一旦发现错误可用RollbackTransaction语句回滚本

171、次操作。当使用AfterTable修改一个表的结构以后,会使该表上的触发器变得无效。要使触发器重新发挥作用,就需要重新编译各个触发器。After触发器触发器只能建在数据表上。7.2.2 Instead Of触发器工作原理触发器工作原理InsteadOf触发器用于取代原来的操作,在记录变更之前发生,它并不去执行原来的插入、更新、删除操作,而去执行触发器本身所定义的操作。InsteadOf触发器是定义在复杂视图上的触发器。注意事项 如下:After触发器只能用于数据表中,InsteadOf触发器可以用于数据表中和视图中,但两种触发器都不可以建立在临时表上。一个数据表可以有多个触发器,但一个触发器只

172、能对应一个表。在同一个数据表中,对每个操作而言可以建立许多个After触发器,但InsteadOf触发器针对每个操作只能建立一个。如果针对某个操作既设置了After触发器又设置了InsteadOf触发器,则InsteadOf触发器一定会被激活,After触发器就不一定了。7.2.3 DML触发器注意事项触发器注意事项CreateTRIGGERtrigger_nameONtable|viewWITHENCRYPTIONFOR|AFTER|INSTEADOFDelete,Insert,UpdateWITHAPPENDNOTFORREPLICATIONASIFUpdate(column)AND|or

173、Update(column).n|IF(COLUMNS_UpdateD()bitwise_operatorupdated_bitmask)comparison_operatorcolumn_bitmask.nsql_statement.n7.2.4 设计设计After触发器触发器参数trigger_name:是触发器的名称。Table|view:是在其上执行触发器的表或视图,有时称为触发器表或触发器视图。WITHENCRYPTION加密:syscomments表中包含CreateTRIGGER语句文本的条目。AFTER:指定触发器只有在触发SQL语句中指定的所有操作都已成功执行后才激发。INS

174、TEADOF:指定执行触发器而不是执行触发SQL语句,从而替代触发语句的操作。Delete,Insert,Update:是指定在表或视图上执行哪些数据修改语句时将激活触发器的关键字。WITHAPPEND:指定应该添加现有类型的其它触发器。NOTFORREPLICATION:表示当复制进程更改触发器所涉及的表时,不应执行该触发器。AS:是触发器要执行的操作。sql_statement:是触发器的条件和操作。触发器条件指定其它准则,以确定Delete、Insert或Update语句是否导致执行触发器操作。7.2.5 设计设计Instead Of 触发器触发器InsteadOf触发器在工作时,SQL

175、Server服务器接到执行SQL语句请求以后,先建立临时的INSERT表和DELETE表,然后就激发InsteadOf触发器,至于那个SQL语句是如何执行就不管了。把执行权交给了InsteadOf触发器,由它完成之后的操作。7.2.6 修改修改DML触发器触发器1.使用SQLServerManagementStudio修改触发器内容2.使用Transact-SQL语句修改触发器内容可以使用系统存储过程sp_rename命令修改触发器的名字。其语法格式为:Sp_renameoldname,newname例如修改前面创建的学生_INSERT触发器的名称为学生2_INSERT的语句为:Sp_rena

176、me学生_INSERT,学生2_INSERT7.2.7 删除删除DML触发器触发器1.使用ServerManagementStudio删除触发器1)在ServerManagementStudio中展开指定的服务器和数据库,这里选中【教务管理】数据库。2)选择要创建触发器的表(如选择“学生”表),展开数据表,双击数据表结点下的【触发器】项,可以查看到已经存在的触发器3)在要进行删除的触发器上右击,在弹出的快捷菜单中选择【删除】命令。4)在弹出的删除对象对话框中显示了当前要删除的触发器相关信息,如果确认删除,则单击确定按钮,系统将删除触发器。2.使用系统存储命令删除触发器用系统命令DROPTRIG

177、GER删除指定的触发器,其语法形式如下:DROPTRIGGERTriggername例如删除触发器学生_INSERT的命令为:DROPTRIGGER学生_INSERT7.2.8禁用与启动DML触发器禁用触发器与删除触发器不同,禁用触发器时,仍会为数据表定义该触发器,只是在执行Delete语句、Insert语句或Update语句,除非重新启动触发器,否则不会执行触发器中的操作。在ServerManagementStudio中禁用与启动触发器,也不需要先查到触发器列表。在触发器列表里,右击其中一个触发器,在弹出的快捷菜单中选择【禁用】选项,即可禁用该触发器。7.3 DDL触发器触发器7.3.1 D

178、DL触发器简介触发器简介DDL触发器是SQLServer2005新增的一种特殊的触发器,它在响应数据定义语言 (DDL)语句时触发。一般有以下几种情况可以使用DDL触发器:数据库里的库架构或数据表结构很重要,不允许被修改。防止数据库或数据表被误操作删除。在修改某个数据表结构的同时在修改另一个数据表的结构。要记录对数据库结构操作的事件。7.3.2 设计设计DDL触发器触发器建立DDL触发器的语法代码如下:CREATETRIGGERtrigger_nameONALLSERVER|DATABASEWITH,.nFOR|AFTERevent_type|event_group,.nASsql_state

179、ment;.n|EXTERNALNAME;:=ENCRYPTIONEXECUTEASClause:=assembly_name.class_name.method_nametrigger_name:触发器的名称。每个 trigger_name必须遵循标识符规则,但 trigger_name不能以 #或 #开头。ALLSERVER:将 DDL触发器的作用域应用于当前服务器。如果指定了此参数,则只要当前服务器中的任何位置上出现 event_type或 event_group,就会激发该触发器。DATABASE:将 DDL触发器的作用域应用于当前数据库。如果指定了此参数,则只要当前数据库中出现 ev

180、ent_type或 event_group,就会激发该触发器 WITHENCRYPTION:对 CREATETRIGGER语句的文本进行加密。使用 WITHENCRYPTION可以防止将触发器作为 SQLServer复制的一部分进行发布。不能为 CLR触发器指定 WITHENCRYPTION。 EXECUTEAS:指定用于执行该触发器的安全上下文。允许您控制SQLServer实例用于验证被触发器引用的任意数据库对象的权限的用户帐户。event_type:执行之后将导致激发DDL触发器的Transact-SQL语言事件的名称。用于激发DDL触发器的DDL事件中列出了在DDL触发器中可用的事件。e

181、vent_group:预定义的Transact-SQL语言事件分组的名称。执行任何属于event_group的Transact-SQL语言事件之后,都将激发DDL触发器。用于激发DDL触发器的事件组中列出了在DDL触发器中可用的事件组。sql_statement:触发条件和操作。触发器条件指定其他标准,用于确定尝试的DML或DDL语句是否导致执行触发器操作。7.3.3 查看与修改查看与修改DDL触发器触发器在【查询编辑器】里可以输入SQL代码对DDL触发器进行修改。创建DDL触发器CREATETRIGGER(Transact-SQL)删除DDL触发器DROPTRIGGER(Transact-S

182、QL)修改DDL触发器ALTERTRIGGER(Transact-SQL)重命名DDL触发器SP_RENAMETRIGGER(Transact-SQL)禁用DDL触发器 DISABLETRIGGER(Transact-SQL)启用DDL触发器 ENABLETRIGGER(Transact-SQL)删除DDL触发器 DROPTRIGGER(Transact-SQL)第第8章章 SQL Server 系统管理系统管理8.1安全性管理安全性管理 8.3 数据库恢复数据库恢复8.2数据库备份数据库备份 8.4 数据复制数据复制 8.5 事务事务 8.6 锁锁 8.7 SQL Server 自动化管理自

183、动化管理 8.8 数据的导入与导出数据的导入与导出主要内容主要内容SQL Server 2005的安全机制数据库管理系统相关知识的安全机制数据库管理系统相关知识备份与恢复数据库备份与恢复数据库SQL SERVER 2005的新特性的新特性了解事务和锁了解事务和锁掌握掌握SQL Server 2005数据导入与导出的方法数据导入与导出的方法8.1安全性管理安全性管理8.1.1 认证模式与访问权限认证模式与访问权限 SQL Server 2005支持两种身份验证模式:支持两种身份验证模式:Windows身份身份验证模式和混合身份验证模式验证模式和混合身份验证模式1.Windows认证模式:采用认证

184、模式:采用Windows认证进程来确认用户的身份。认证进程来确认用户的身份。2.SQL Server认证模式认证模式:用户必须提供用户必须提供SQL Server管理员为其提供的管理员为其提供的登录名和登录密码,用户身份的验证由登录名和登录密码,用户身份的验证由SQL Server自身完成。自身完成。8.1.2 用户用户管理管理用户账号与登录账号用户账号与登录账号:一个合法的登录账号只表明该账号通一个合法的登录账号只表明该账号通过了过了Windows认证或认证或SQL Server认证,但不能表明其可以对认证,但不能表明其可以对数据库数据和数据对象进行某种或某些操作。数据库数据和数据对象进行某

185、种或某些操作。一个登录账一个登录账号总是与一个或多个数据库用户账号相对应,这样才可以号总是与一个或多个数据库用户账号相对应,这样才可以访问数据库。访问数据库。用户账号操作用户账号操作:1.添加用户2.删除用户3.授权8.1.3 角色管理角色管理 角色提供了一种把用户汇集成一个单元,以便角色提供了一种把用户汇集成一个单元,以便进行许可管理的方法。一个角色包含了许多成员,这些成进行许可管理的方法。一个角色包含了许多成员,这些成员都继承了角色所拥有的许可。员都继承了角色所拥有的许可。在在SQL Server中,角色有中,角色有两种主要类型:服务器角色和数据库角色两种主要类型:服务器角色和数据库角色。

186、1)Public角色角色2)固定服务器角色)固定服务器角色3)固定数据库角色)固定数据库角色4)用户自定义的角色)用户自定义的角色5)应用程序角色)应用程序角色 8.1.4 架构架构 架构是形成单个命名空间的数据库实体的集合。命架构是形成单个命名空间的数据库实体的集合。命名空间是一个集合,其中每个元素的名称都是唯一的。名空间是一个集合,其中每个元素的名称都是唯一的。 在在 SQL Server 2005 中,架构独立于创建它们的数据中,架构独立于创建它们的数据库用户而存在。可以在不更改架构名称的情况下转让架构库用户而存在。可以在不更改架构名称的情况下转让架构的所有权的所有权。完全限定的对象名称

187、现在包含四部分:完全限定的对象名称现在包含四部分: server.database.schema.object。默认架构默认架构:用于解析未使用其完全限定名称引用的对象的用于解析未使用其完全限定名称引用的对象的名称。名称。 8.2数据库备份数据库备份 为了为了防止计算机出现灾难事故而导致数据库被破防止计算机出现灾难事故而导致数据库被破坏,对数据库的备份工作是不可忽视的,要采取一定的备坏,对数据库的备份工作是不可忽视的,要采取一定的备份策略来保证数据库的安全,一旦计算机发生事故时,能份策略来保证数据库的安全,一旦计算机发生事故时,能够采取及时的恢复操作。够采取及时的恢复操作。 备份就是制作数据库

188、结构和数据的副本,以便在备份就是制作数据库结构和数据的副本,以便在数据库遭到破坏的时候能够修复数据库。数据库遭到破坏的时候能够修复数据库。会造成数据库破坏会造成数据库破坏的常见原因包括的常见原因包括:用户不正确的操作破坏了数据或数据被病毒破坏硬件故障,如磁盘损坏等遭遇自然灾害遭遇盗窃等意外事故 备份备份的内容不仅包括用户的数据库内容,还包括系统的内容不仅包括用户的数据库内容,还包括系统数据库的内容。数据库的内容。8.2.1 备份简介备份简介8.2.2 备份许可及介质备份许可及介质可以备份数据库的角色成员有:可以备份数据库的角色成员有:固定的服务器角色sysadmin固定的数据库角色db_own

189、er固定的数据库角色db_backupoperator用户自定义角色,并且授权这些角色执行备份数据库的许可备份介质:备份介质:1.磁盘2.磁带3.网络8.2.3 备份类型备份类型数据库备份包括完整备份和完整差异备份。完整备份数据库备份包括完整备份和完整差异备份。完整备份包含数据库中的所有备份,并且可以用作完整差异备份的包含数据库中的所有备份,并且可以用作完整差异备份的“基准备份基准备份”。完整差异备份仅记录自前一完整备份发生。完整差异备份仅记录自前一完整备份发生更改的数据扩展盘区数据。在更改的数据扩展盘区数据。在SQL server中,主要的备份类中,主要的备份类型有:型有:1.完整备份2.完

190、整差异备份3.部分备份4.部分差异备份5.文件和文件组备份6.文件差异备份7.事务日志备份8.2.4执行备份执行备份1完整备份完整备份2.完整差异备份完整差异备份打开SQLServerManagementStudio,在【对象资源管理器】中展开【数据库】,选择【教务管理】数据库,右键单击鼠标,在弹出的快捷菜单上选择【任务】、【备份】选项。进入数据库备份窗口。在【备份数据库教务管理】窗口中,选择备份类型为【差异】,在下面的【目标】窗格中,默认为【备份到:磁盘】,指定备份的文件位置,例如指定为D:diffBackUp,然后单击【确定】按钮。3使用使用backup命令备份命令备份例8-6使用back

191、up命令完整备份“教务管理”数据库。Backupdatabase教务管理Todisk=f:MSSQLBACKUP教务管理备份.bak例8-7使用backup命令对“教务管理”数据库进行差异备份。Backupdatabase教务管理Todisk=f:MSSQLBACKUP教务管理差异备份1.bakwithdifferential在对数据库进行备份时可以选择某种备份策略来进行备份。在对数据库进行备份时可以选择某种备份策略来进行备份。选择备份策略,一方面要基于数据库本身特点来考虑,另一选择备份策略,一方面要基于数据库本身特点来考虑,另一方面要考虑性能。方面要考虑性能。数据库本身比较小的情况:若此数据

192、库的数据是只读的或很少修改,则选用完整数据库备份策略是合适的。频繁修改的数据库:完整数据库备份和事务日志备份相结合的策略是比较流行的备份选择。需要很短的时间内恢复数据库:可以选择差异备份的策略。海量数据的数据库:选用文件或文件组备份比较适合。8.2.5 备份策略及性能考虑备份策略及性能考虑8.3.1 恢复的概念及模式恢复的概念及模式恢复是在数据库遭遇破坏后从一个或多个备份中还原数恢复是在数据库遭遇破坏后从一个或多个备份中还原数据库。还原的操作是在据库。还原的操作是在“恢复模式恢复模式”下进行的。下进行的。在在SQLServer2005数据库管理系统中有三种恢复模式数据库管理系统中有三种恢复模式

193、:简单恢复模式完整恢复模式大容量日志恢复模式8.3 数据库恢复数据库恢复8.3.2 恢复数据库注意事项恢复数据库注意事项准备工作:准备工作:1、恢复的权限、恢复的权限2、检查系统、检查系统3、检查文件、检查文件4、限制用户对数据库的访问,并备份事务日志、限制用户对数据库的访问,并备份事务日志1还原完整备份还原完整备份2还原完整差异备份:还原完整差异备份:还原完整差异备份的步骤与还原完整备份的步骤大体相同,只是在进入【还原数据库】的【常规】页窗口后,指定用于还原的备份集为先前进行了备份的差异备份集8.3.3 在在SQL Server Management Studio中恢中恢复数据库复数据库 8

194、.3.4 用用T-SQL语句恢复系统数据库语句恢复系统数据库RESTOREDATABASE语句用于恢复数据库,其语法格式为:RESTOREDATABASEdatabase_name|database_name_varFROM,.nWITHCHECKSUM|NO_CHECKSUM,CONTINUE_AFTER_ERROR|STOP_ON_ERROR,FILE=file_number|file_number,KEEP_REPLICATION,MEDIANAME=media_name|media_name_variable,MEDIAPASSWORD=mediapassword|mediapassw

195、ord_variable,MOVElogical_file_nameTOoperating_system_file_name,.n,PASSWORD=password|password_variable,RECOVERY|NORECOVERY|STANDBY=standby_file_name|standby_file_name_var8.3.5 建立自备份的维护计划建立自备份的维护计划SQLServer2005的数据库维护计划可以指定作业运行的时间,多个作业可以根据一个计划运行,多个计划也可以应用到一个作业。根据作业运行的时间的不现可将计划类型分为以下如图8.22所示的四种:8.4.1 复制

196、的概念复制的概念将数据和数据库对象从一个数据库复制和分发到另一个数据库,然后在数据库间进行同步,以维持一致性。1发布服务器发布服务器发布服务器是一种数据库实例,它通过复制向其他位置提供数据。2分发服务器分发服务器分发服务器也是一种数据库实例,它起着存储区的作用,用于复制与一个或多个发布服务器相关联的特定数据。3订阅服务器订阅服务器订阅服务器是接收复制数据的数据库实例。4项目项目项目用于识别发布中包含的数据库对象。5发布发布发布是来自一个数据库的一个或多个项目的集合,将多个项目分组成一个发布更便于指定一组作为一个单元复制的、具有逻辑关系的数据库对象和数据。6订阅订阅订阅是把发布副本传递到订阅服务

197、器的请求。8.4 数据复制数据复制8.4.2复制类型复制类型MicrosoftSQLServer提供3种复制类型:1事务性复制事务性复制2合并复制合并复制3快照复制快照复制8.4.3复制代理复制代理复制使用许多称为代理的独立程序执行与跟踪更改和分发数据关联的任务。默认情况下,复制代理作为SQLServer代理安排的作业运行。1SQL Server 代理代理SQLServer代理保存并安排复制中使用的代理,并提供运行复制代理的简便方法。SQLServer代理还控制和监视复制之外的操作。2快照代理快照代理快照代理准备已发布表的架构和初始数据文件以及其他对象、存储快照文件并记录分发数据库中的同步信息

198、。 3日志读取器代理日志读取器代理它将发布服务器上的事务日志中标记为复制的事务移至分发数据库中。4分发代理分发代理它将初始快照应用于订阅服务器,并将分发数据库中保存的事务移至订阅服务器。5合并代理合并代理合并代理与合并复制一起使用。它将初始快照应用于订阅服务器,并移动和协调所发生的增量数据更改。6队列读取器代理队列读取器代理队列读取器代理与包含排队更新选项的事务性复制一起使用。该代理运行于分发服务器,并将订阅服务器上所做更改移回至发布服务器。8.4.4 发布服务器与发布发布服务器与发布默认情况下,分发服务器与发布服务器是同一台服务器(本地发布服务器),也可以是与发布服务器不同的服务器(远程发布

199、服务器)。创建本地发布服务器的配置步骤:1.启动【新建发布向导】2.选择要发布数据的数据库3.选择发布类型4.选择发布项目5.设置筛选表行和快照代理,创建快照并设置快照运行时间6.设置快照代理安全性7.完成发布向导,创建本地发布8.4.5 订阅服务器与订阅订阅服务器与订阅订阅是对发布中的数据和数据库对象的副本进行请求。订阅定义将接收哪个发布以及接收的时间和位置。创建本地订阅的步骤:1.通过【订阅向导】生成本地订阅2.选择发布服务器中的数据库和发布3.选择发布代理位置4.选择订阅服务器,指定订阅数据库5.设置分发代理安全性,指定同步此订阅时,运行分发代理服务器的域或计算机账户6.指定代理的同步计

200、划7.初始化订阅8.创建订阅8.5.1 事务及工作原理事务及工作原理1事务事务事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。2事务特性事务特性 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。这四个特性简称为ACID特性。3SQL Server通过记录事务日志保持事务的持久性。通过记录事务日志保持事务的持久性。数据库系统一般采用记录日志和恢复机制来保证事务的一致性;采用并发控制机制来保证多个事务的交叉运行不影响这些事务的原子性。4事务的工作原理(事务的工作原理(COMMIT

201、,ROLLBACK,UNDO,REDO)8.5 事务事务8.5.2执行事务及执行模式执行事务及执行模式1事务的执行事务的执行应用程序主要通过指定事务启动和结束的时间来控制事务。2事事务务的的类类型型根据运行模式,SQLServer2005将事务分为4种类型:自动提交事务、显式事务、隐式事务和批处理事务。1)显式事务显式事务指每个事务通过API函数或通过发出Transact-SQLBEGINTRANSACTION语句来显式启动事务,以COMMIT或ROLLBACK语句显式结束。2)自动提交事务自动提交事务是指每条语句都是一个事务。3)隐式事务隐式事务是指在前一个事务完成时新事务隐式启动,但每个事

202、务仍以COMMIT或ROLLBACK语句显式完成。4)批范围的事务只适用于多个活动的结果集(MARS),在MARS会话中启动的Transact-SQL显式或隐式事务将变成批范围的事务。8.5.3 编写事务编写事务控制事务用到的T-SQL语句:1BEGIN TRANSACTION 语句语句2COMMI T TRANSACTION语语句句3ROLLBACK TRANSACTION 或或 ROLLBACK WORK 语句语句例8-12定义一个事务,将所有外聘教师的考评成绩定为良好,并提交该事务。BEGINTRANSACTIONEX_teacher_gradeUPDATE考评SET得分情况=良好WHE

203、RE档案类型=外聘GOCOMMITTRANSACTIONGO8.5.4 事务保存点事务保存点保存点提供了一种机制,用于回滚部分事务。在创建保存点后,可以执行ROLLBACKTRANSACTIONsavepoint_name语句以回滚到保存点,而不是回滚到事务的起点。语法格式为:SAVETRAN|TRANSACTIONsavepoint_name|savepoint_variable;8.5.5事务隔离级别事务隔离级别隔离级别定义一个事务必须与其他事务所进行的资源或数据更改相隔离的程度。 MicrosoftSQLServer2005的隔离级别由低到高包括:未提交读(隔离事务的最低级别,只能保证不

204、读取物理上损坏的数据)已提交读(数据库引擎的默认级别)可重复读可序列化(隔离事务的最高级别,事务之间完全隔离)Transact-SQL使用SETTRANSACTIONISOLATIONLEVEL语句设置隔离级别8.6.1 锁及其作用锁及其作用当多个用户并发地存取数据库时会产生多个事务同时存取同一数据的情况,如果对并发操作不加控制就可能会存取和存储不正确的数据,破坏事务的一致性和数据库的致性。由多用户并发事务执行所导致的数据不一致可能会导致下面几种情况:1丢失修改2不可重复读3脏读(DirtyRead)锁是防止其他事务访问指定的资源控制、实现并发控制的一种主要手段。封锁是指一个事务在对某个数据对

205、象操作之前,先向系统提出请求,对其加锁,在事务结束之后释放锁。在事务释放它的锁之前,其他事务不能更新此数据对象。8.6 锁锁8.6.2 锁的对象与模式锁的对象与模式1锁锁的的对对象象SQLServer具有多粒度锁定,允许一个事务锁定不同类型的资源。锁的对象包括下表所列的资源:资源资源说明说明RID用于锁定堆中的单个行的行标识符。KEY索引中用于保护可序列化事务中的键范围的行锁。PAGE数据库中的 8 KB 页,例如数据页或索引页。EXTENT一组连续的八页,例如数据页或索引页。HOBT堆或B树。保护索引或没有聚集索引的表中数据页堆的锁。TABLE包括所有数据和索引的整个表。FILE数据库文件。

206、APPLICATION应用程序专用的资源。METADATA元数据锁。ALLOCATION_UNIT分配单元。DATABASE整个数据库。8.6.2 锁的对象与模式锁的对象与模式2锁锁模模式式1)共享锁共享锁(S锁)允许并行事务读取同一种资源。2)排他锁排他锁(X锁)可以防止并发事务对资源进行访问。3)更新锁更新锁(U锁)可以防止常见的死锁。一次只有一个事务可以获得资源的更新锁(U锁)。如果事务修改资源,则更新锁(U锁)转换为排他锁(X锁)。4)意向锁数据库引擎使用意向锁来保护共享锁(S锁)或排他锁(X锁)放置在锁层次结构的底层资源上。意向锁有两种用途: 防止其他事务以会使较低级别的锁无效的方式

207、修改较高级别资源。提高数据库引擎在较高的粒度级别检测锁冲突的效率。8.6.3 死锁问题死锁问题死锁是有两个或以上的事务处于等待状态,每个事务都在等待另一个事务解除封锁,它才能继续执行下去,结果任何一个事务都无法执行,这种现象就是死锁。下面两种情况下可能会出现死锁:1两个事务同时锁定了两个单独的对象,并且第一个事务要求在另外一个事务锁定的对象上获得一锁;2在一个数据库中有若干个长时间运行的事务执行并操作。降低死锁的原则:1按同一顺序访问对象2避免事务中的用户交互3保持事务简短并在一个批处理中4使用低隔离级别8.6.4 查看锁信息查看锁信息MicrosoftSQLServer2005提供的获取有关

208、数据库引擎实例中的当前锁活动的信息的方法:使用SQLServerProfiler,可以指定用来捕获有关跟踪中锁事件的信息的锁事件类别。在系统监视器中,可以从锁对象指定计数器来监视数据库引擎实例中的锁级别。操作步骤:1.进入SQLServerProfiler窗口2.在SQLServerProfiler窗口中,选择【文件】菜单【新建跟踪】。3.在【跟踪属性】对话框中设置跟踪,设置跟踪名称和使用模板,可以将跟踪指定到文件存储,也可以保存到指定的表。4.完成跟踪的建立后,即可在SQLServerProfiler窗口中查处跟踪的事件。8.7.1 作业管理作业管理作业是一系列由SQLServer代理按顺序

209、执行的指定操作。一个作业可以执行各种类型的活动,作业可以运行重复或可计划的任务,然后它们可以通过生成警报来自动通知用户作业状态。必须启动SQLServer代理作业才能自动运行。创建作业的步骤:1在【SQL Server 代理】选择【新建作业】2设置作业名称3在【新建作业步骤】窗口设置各项内容8.7 SQL Server 自动化管理自动化管理8.7.2警报管理警报管理 对事件的自动响应称为【警报】。可以针对一个或多个事件定义警报,指定希望SQLServer代理如何响应发生的这些事件。1定义警报定义警报2创建警报创建警报8.7.3 通知通知 在发生警报时可以使用下列一种或多种方法通知操作员:电子邮

210、件通知、寻呼通知、netsend通知操作员。SQLServer代理可以使用数据库邮件或 SQLMail功能发送电子邮件。8.7.4 维护计划维护计划 计划管理作业就是定义使作业开始运行的条件。可以计划任何类型的作业。多个作业可以使用同一个作业计划。用户可以将计划附加到作业,也可以从作业分离计划。8.8.1 导入导出向导导入导出向导SQLServer2005提供了大容量地导入和导出数据的功能。“导出”是指将数据从SQLServer表复制到数据文件,“导入”是指将数据从数据文件加载到SQLServer表。例8-14把教务管理数据库中的数据导出到Excel文件中。例8-15从MicrosoftAcc

211、ess数据库导入数据到SQLServer中。8.8 数据的导入与导出数据的导入与导出8.8.2数据的导入与导出及数据类型转换数据的导入与导出及数据类型转换1导出数据的要求:导出数据的要求:导出文件、权限、记录顺序2导入数据的要求:导入数据的要求:格式、数据类型兼容性等3数据类型转换:数据类型转换:数据不兼容时的自动数据转换处理第第9章章 数据库应用程序开发数据库应用程序开发9.1游标的管理游标的管理 9.3管理系统开发实例9.2客户端访问客户端访问SQL Server的方式的方式主要内容主要内容游标的概念游标的概念游标的基本操作游标的基本操作应用程序访问数据库的过程应用程序访问数据库的过程OD

212、BC数据源的配置数据源的配置OLE DB接口的体系结构接口的体系结构利用利用ADO控件连接数据库的方法控件连接数据库的方法基于基于SQL Server 2005应用开发的基本流程应用开发的基本流程9.1游标的管理游标的管理9.1.1 游标的简介及用途游标的简介及用途1.游标的概念游标的概念 游标(游标(Cursor)是一种处理数据的方法,为了)是一种处理数据的方法,为了查看或者处理结果集中的数据,游标提供了在结果集中向查看或者处理结果集中的数据,游标提供了在结果集中向前或者向后浏览数据的能力。我们可以把游标看成一个在前或者向后浏览数据的能力。我们可以把游标看成一个在记录集中的指针,通过这个指针

213、既可以指向当前位置,又记录集中的指针,通过这个指针既可以指向当前位置,又可以指向结果集中的任意位置,并且允许用户对指定位置可以指向结果集中的任意位置,并且允许用户对指定位置的数据进行处理,可以把结果集中的数据放在数组、应用的数据进行处理,可以把结果集中的数据放在数组、应用程序或其他位置。程序或其他位置。 2.使用游标的优点使用游标的优点 允许程序对由查询语句允许程序对由查询语句SELECT返回的记录集中的每一行数返回的记录集中的每一行数据执行相同或不同的操作,而不是对整个行集合执行同一据执行相同或不同的操作,而不是对整个行集合执行同一个操作;个操作;提供对基于游标位置的行进行删除和更新的能力;

214、提供对基于游标位置的行进行删除和更新的能力; 游标实际上作为面向集合的数据库管理系统和面向行游标实际上作为面向集合的数据库管理系统和面向行的程序设计之间的桥梁,使这两种处理方式通过游标联系的程序设计之间的桥梁,使这两种处理方式通过游标联系起来。提供脚本、存储过程和触发器中使用的用于访问结起来。提供脚本、存储过程和触发器中使用的用于访问结果集中数据的果集中数据的T-SQL语句。语句。 1游标的声明:游标的声明:格式:DECLAREcursor_nameinsensitiveSCROLLCURSORlocalglobalstatic|keyset|dynamicFORselect_statemen

215、tforREADONLY|UPDATEOFcolumn_name_list9.1.2游标的基本操作游标的基本操作2游标的创建过程游标的创建过程1)打开MicrosoftSQLServerManager管理器。单击常用工具栏中的按钮,新建一个数据库查询文档,如图9.1所示。图 9. 1 新建查询2)在数据库引擎查询文档中输入如下代码:在数据库引擎查询文档中输入如下代码:Use xsDeclare hy1 cursor for Select * from 学生学生 where 性别性别=男男只读游标的创建:只读游标的创建:Use xsDeclare hy2 cursor forSelect * f

216、rom 学生学生where 入学成绩入学成绩500For read only更新游标的创建:更新游标的创建:Use xsDeclare hy3 cursor for Select * from 学生学生 where 班级班级=计算机计算机For update正确输入后,按键盘上的正确输入后,按键盘上的“F5”键执行键执行SQL语句,显示如下语句,显示如下提提示信息:示信息:Command(s) completed successfully。创建游标完毕。创建游标完毕。3游标的打开游标的打开格式:OPENGLOBALcursor_name|cursor_variable_name说明:Curso

217、r_name:要打开的游标名。cursor_variable_name:游标变量名,该变量名是引用了的一个游标。GLOBAL:用来说明打开的是全局游标,省略时打开局部游标。4游标数据的读取游标数据的读取创建游标并打开游标以后,利用T-SQL可以读取游标中的数据,语法格式如下:Fetchnext|prior|first|lastabsoluten|relativenFrom游标名into变量名5关闭游标:关闭游标:利用游标处理完数据之后,必须关闭游标,格式如下:Close游标名称6释放游标释放游标游标关闭以后并没有释放游标所占用的系统资源,因此关闭游标以后,必须释放游标才能释放游标所占的系统资源

218、,格式如下:Deallocate游标名称9.2 客户端访问客户端访问SQL SERVER的方式的方式数据库应用程序是通过SQLServer2005应用程序接口向SQLServer服务器发送SQL语句,实现数据库的访问。因此,要想访问数据库,必须学习使用SQLServer应用程序接口。SQLSERVER2005采用了分层的通信体系结构,把应用程序与底层的网络协议分隔开,用户可以通过数据库对象或API应用程序接口访问数据库。应用程序采用数据库应用程序接口(API)开发。数据库接口:是应用程序给SQLSERVER发送请求和处理SQLSERVER返回结果的接口。应用程序接口:数据库API定义一个应用程

219、序如何连接到数据库,包括两类数据库API:ODBC和OLEDB。ODBC:是一个标准的访问数据库的编程接口,支持使用ODBC数据对象接口写的应用程序或者组件。OLEDB:是一个基于组件对象模型(COM)的数据库访问接口,它支持使用OLEDB数据对象接口写的应用程序。数据库对象接口ADO(ActiveXDataObjects):是一个在简化数据模型中封装的OLEDBAPI,使用ADO进行开发要比使用OLEDB开发的速度快,OLEDB是使用ADO的基础,ADO可以在VB,VC,ASP中使用。9.2.1 ODBC接口接口ODBC定义:ODBC是OpenDatabaseConnectivity的英文简

220、写。它是一种用来在相关或不相关的DBMS中存取数据的,用C语言实现的标准应用程序数据接口。通过ODBCAPI,应用程序可以存取保存在多种不同DBMS中的数据,而不论每个DBMS使用了何种数据存储格式和编程接口。在使用ODBC连接SQLServer2005数据库之前,必须在ODBC中配置SQLServer数据源。数据源存储了如何与指定数据库连接的信息,有三种类型:文件DSN、系统DSN、用户DSN。在Windows2003的【控制面板】中的管理工具中选择【数据源(ODBC)】,如图9.7所示:图 9.7创建数据源窗口用户DSN:只能被当前登陆的用户管理和使用,只有创建者才能使用,只能在本地机器上

221、运行。系统DSN:对于同一计算机或服务器上的所有用户都可以使用。所有Windows下的应用程序都可以使用系统数据源。文件DSN:是以文件形式储存的数据源配置,是ODBC3.0以上版本增加的一种数据源。配置数据源的过程如下: 1点击“用户DSN”或者“系统DSN”后,点击【添加】按 钮,系统弹出如图9.8所示:图 9.8 配置数据源2在驱动程序中选择“SQLServer”驱动程序,点击完成按钮,弹出图9.9。图 9.9 配置数据源3在名称中输入新数据源的名称,用来被应用程序使用。在描述中输入该数据源的说明文字。在服务器中选择需要连接的数据库服务器的名称。然后单击【下一步】按钮出现图9.10:图

222、9.10配置数据源图 9.10 配置数据源4单击客户端配置可以配置客户端连接服务器使用的通讯协议和端口。在登录ID和密码中输入登录数据库的用户名和密码。单击【下一步】进入图9.11所示画面:图 9.11 配置数据源5更改默认数据库为当前数据库连接要访问的数据库单击【下一步】弹出图9.12:6单击测试数据源按钮,可以看到新数据源与数据库连接是否正确。 图 912 测试数据源9.2.2 OLE DB接口接口微软定义了OLEDB用户的4个主要层次:数据提供者:使用OLEDBSDK(软件开发工具)创建OLEDB提供者的人。提供者用户与数据库和事件交互作用,发信号通知特殊事件的发生。数据消费者:访问数据

223、库中信息的应用程序、系统驱动程序或者用户。数据服务提供者:创建用以增强用户或者数据库管理员使用管理数据库能力的独立应用程序的开发者部件开发者:创建应用程序部件或模块,以减少创建数据库应用程序所需的编码工作。如VB6.0提供的ADO组件。一般来说,数据库应用程序即OLEDB消费者是通过OLEDB用户界面和OLEDB提供者(Provider)来访问数据源,他们之间的关系如图9.13所示。 应用程序(OLEDB)消费者OLE DB界面(例如ADO 等)OLE DB提供者数据源图 9.13 OLE DB消费者和使用者之间的关系对于不同的OLEDB提供者,OLEDB提供不同级别的功能,但是他们都支持一个

224、通用的用户界面。不同的OLEDB数据源使用自己的数据源,他们之间的关系如图9.14所示。数据库应用程序ADO组件ODBC的OLE DB提供者其他数据源SQL SERVER 的OLE DB提 供 者 Excel的 OLE DB提供者其 他 的 OLE DB提供者EXCEL 电子表格数据ODBC驱动程序ODBC数据源SQL SERVER图 914 应用程序通过ADO 调用OLE DB的模型9.2.3 ADO组件组件Active数据对象(ActiveDataObjects):ADO实际是一种提供访问各种数据类型的连接机制。ADO设计为一种极简单的格式,通过ODBC的方法同数据库接口。可以使用任何一种

225、ODBC数据源,即不止适合于SQLServer、Oracle、Access等数据库应用程序,也适合于Excel表格、文本文件、图形文件和无格式的数据文件。ADO是基于OLEDB之上的技术,因此ADO通过其内部的属性和方法提供统一的数据访问接口方法。ADO可以编写OLEDB提供者对数据库中数据访问和操作的应用程序。其特点是易于使用、性能好、占用内存小。在ADO对象模型中,主要包括Connection、recordset、Command三个对象。其功能如下:Connection:是ADO对象连接数据库的第一步,通过Connection与sqlserver2005数据库建立连接。Command:通过

226、Connection与数据库建立连接后,Command对象承担数据库查询的任务,查询请求通过sql语句来描述。首先指定Command对象的CommandString属性为sql语句字符串,然后执行数据库查询动作,查询以后,将结果存储在recordset对象中。Recordset:在执行数据库查询后,结果保存在recordset对象中,然后利用程序设计语言来处理recordset对象中的记录。在使用recordset对象的open方法时,可通过Cursortype设置打开Recordset时应该使用的游标类型,其类型如下:仅向前游标(adOpenForward)为默认游标类型,记录集为只读,只能

227、在记录中向前移动。静态游标(AdOpenStatic)记录集为只读,允许记录集向前,向后移动,但其他用户所做的添加、更改不可见。键集游标(AdOpenKeyset)记录集为读写,允许记录集各种类型的移动,但无法看到其他用户对数据的更改。动态游标(AdOpenDynamic)记录集为读写,可用于查看对数据表所做的添加、更改和删除。1.使用使用ADO的简单流程:的简单流程:连接数据库。指定访问数据库的查询命令。执行命令。如果这个命令使数据按表中的形式返回,则将这些行存储在易于检查、操作或者更改的缓存中。可以使用缓存行的更改内容更改数据表。提供常规方法检测错误。关闭数据库连接。2利用利用ADO对象访

228、问数据库的过程对象访问数据库的过程VB6.0提供了提供了ActiveX数据对象,在程序中使用数据对象,在程序中使用ADO对象之对象之前,首先在声明工程中引用对象库前,首先在声明工程中引用对象库Microsoft AxtiveX Data Object Library,否则会出现类型为定义的编译错误。因为否则会出现类型为定义的编译错误。因为ADO对象对象 connection,recordset 包含在对象库中,添加包含在对象库中,添加步骤如下:步骤如下:1)启动)启动Visual Basic集成开发环境,然后选择工程菜单下集成开发环境,然后选择工程菜单下的的【引用引用】命令,打开引用对话框。命

229、令,打开引用对话框。图图 9.15 引用数据对象引用数据对象2)在列表中,单击)在列表中,单击Microsoft AxtiveX Data Object 2.6 Library项目左侧的复选框如图项目左侧的复选框如图9.15所示。单击所示。单击【确定确定】。图 9.15 引用数据对象3) 利用利用connection对象和数据库建立连接,其方法如下:对象和数据库建立连接,其方法如下:首先声明首先声明connection对象,既可以先定义一个对象,既可以先定义一个connection 类型的对象变量,然后建立该对象的实例,如:类型的对象变量,然后建立该对象的实例,如:Dim cn AS NEW

230、ADODB.ConnectionSet cn=NEW ADODB.Connection又可以在声明的同时创建该对象的实例如:又可以在声明的同时创建该对象的实例如:DIM cn AS NEW AODDB.Connection4) 然后应用然后应用connectiosn对象的对象的open方法与数据库建立连方法与数据库建立连接,语法如下:接,语法如下:Cn.open ConnectionString,userid,password参数说明:参数说明:connectionString:是一个是一个OLE DB连接字符串。连接字符串。Userid:建立数据库连接的用户名。建立数据库连接的用户名。Pas

231、sword:建立连接的用户名对应的密码。建立连接的用户名对应的密码。3通过通过Connection对象的对象的open方法与方法与SQL SERVER2005连接有如下两种:连接有如下两种:1)通过ODBC数据源建立连接。2)通过OLEDB连接字符串连接。4通过通过Connection对象的对象的execute方法对数据库方法对数据库 操作操作在建立数据库连接以后,可以通过Connection对象的execute方法执行在数据库中的记录的查询、修改等操作,操作的返回值是一个记录集。具体方法如下:Setrs=cn.execute(sql_str)其中参数sql_str是一个字符串,给出要执行的数

232、据库的sql语句或者存储过程等。5通过通过Connection对象的对象的close方法关闭数据库连接方法关闭数据库连接 在一次数据库操作结束之后,应该使用Connection对象的close方法关闭数据库的连接,并将这个对象变量从内存中释放。具体方法如下: Cn.closeCn=nothing9.3 管理系统开发实例管理系统开发实例 通过前面介绍的数据库基础知识以及使用方法,下面我们来学习如何用VISUALBASIC实现基于SQLServer2005数据库开发。本节以一个完整的实例来进行讲解。9.3.1 需求分析需求分析 随着学校的规模扩大,学生数量不断增加,因此学生的信息量也不断增加,因此

233、开发一个学生信息管理系统是十分必要的,其目的在于通过学生信息管理系统的管理功能来提高对学生管理的工作效率,实现信息的规范管理、科学统计和快速查询,从而减少工作人员的工作量。9.3.2 系统设计系统设计在本案例中系统主要功能提供了对学生信息的管理、成绩的管理以及毕业的管理。其功能具体如下:学生信息的输入、修改和查询学生成绩的输入、修改和查询学生的退学留级、毕业处理等9.3.3 系统功能模块设计系统功能模块设计 对上述各功能进行整理,按照结构化程序设计的要求,绘制如图9.17所示的系统功能图。学生信息管理系统学学生信息管理系统学生信息管理学生成绩管理学生信息管理学生成绩管理学学生信息管理系统学生信息管理学生成绩管理学生毕业管理学生信息录入学生信息查询学生信息浏览学生信息修改学生成绩录入学生成绩查询学生成绩浏览退学留级处理学生毕业处理打印毕业信息图 9.17 系统功能结构图关系

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

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

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