1、融智技术学院融智技术学院第第7 7章章 数据库基础知识数据库基础知识数据库的发展历史很悠久,从数据库的发展历史很悠久,从19世纪世纪60年代开始出现年代开始出现的网状、层次数据库系统,到今天的以面向对象为特征的数的网状、层次数据库系统,到今天的以面向对象为特征的数据库系统,数据库已经经历了数次变革。数据库是利用计算据库系统,数据库已经经历了数次变革。数据库是利用计算机技术统一管理的相关数据的集合,它能动态地存储大量的机技术统一管理的相关数据的集合,它能动态地存储大量的相互关联的数据。相互关联的数据。Microsoft SQL Server 2005是本章将要是本章将要重点介绍的内容,它是微软推
2、出的最新数据库,它较之前的重点介绍的内容,它是微软推出的最新数据库,它较之前的SQL数据库系列在很多方面都有改进,如全文检索、查询引数据库系列在很多方面都有改进,如全文检索、查询引擎、统计信息等。因为本书的重点不在数据库本身,所以对擎、统计信息等。因为本书的重点不在数据库本身,所以对这些细节就不再详述。这些细节就不再详述。融智技术学院融智技术学院7.1 7.1 SQL ServerSQL Server的安装的安装SQL Server 2005提供了提供了6个版本,包括个版本,包括Express版、版、企业版、工作组版、标准版、开发人员版和企业评估版。本企业版、工作组版、标准版、开发人员版和企业
3、评估版。本书采用的是开发人员版,它的最大优势是对计算机没有什么书采用的是开发人员版,它的最大优势是对计算机没有什么苛刻的要求,可以运行在苛刻的要求,可以运行在Windows 2000 Professional SP4及更高版本上,或者运行在所有及更高版本上,或者运行在所有Windows XP SP2以及以及更高版本上,也可以运行在更高版本上,也可以运行在Windows XP的的64位操作系统,位操作系统,以及以及Windows Server 2003的的64位版本上。接下来开始介位版本上。接下来开始介绍绍SQL Server 2005的安装步骤。的安装步骤。融智技术学院融智技术学院7.2 7.
4、2 Transact-SQLTransact-SQL语言语言Transact-SQL是微软对是微软对SQL(Structure Query Language,结构化查询语言)的扩展。它是一种交互式查结构化查询语言)的扩展。它是一种交互式查询语言,功能强大且简单易学。它具有自己的数据类型、表询语言,功能强大且简单易学。它具有自己的数据类型、表达式和关键字等,并且可以嵌入到高级语言中进行使用,在达式和关键字等,并且可以嵌入到高级语言中进行使用,在下一章有关下一章有关ADO.NET的操作中,将会用到嵌入式的的操作中,将会用到嵌入式的Transact-SQL。融智技术学院融智技术学院7.2.1 7.2
5、1 Transact-SQLTransact-SQL的特点的特点Transact-SQL是用户唯一能和数据库引擎进行交互的是用户唯一能和数据库引擎进行交互的语言,其特点如下语言,其特点如下:语言一体化语言一体化两种使用方式两种使用方式非过程化语言非过程化语言符合人类的思维习惯,容易理解。符合人类的思维习惯,容易理解。融智技术学院融智技术学院7.2.2 7.2.2 数据控制语言数据控制语言Transact-SQL数据控制语言的主要由数据控制语言的主要由5种语言组成,种语言组成,下面详细介绍。下面详细介绍。数据控制语言是用来约束或改变数据库用户或角色权限数据控制语言是用来约束或改变数据库用户或角
6、色权限的语句,包括的语句,包括GRANT、REVOKE和和DENY等语句。这主要等语句。这主要是为数据库的安全性服务的,防止不具有权限的用户对数据是为数据库的安全性服务的,防止不具有权限的用户对数据库进行修改。库进行修改。融智技术学院融智技术学院7.2.3 7.2.3 数据定义语言数据定义语言数据定义语言用于创建数据库和数据库对象,用于执行数据定义语言用于创建数据库和数据库对象,用于执行数据库操作。例如数据库、表、视图、存储过程、触发器和数据库操作。例如数据库、表、视图、存储过程、触发器和函数等,都必须先经过定义才能使用。常用的语句包括函数等,都必须先经过定义才能使用。常用的语句包括CREAT
7、E、ALTER和和DROP等。其中等。其中CREATE表示创建数据表示创建数据库及其对象,库及其对象,ALTER表示修改数据库及其对象,表示修改数据库及其对象,DROP表示表示删除数据库及其对象。删除数据库及其对象。融智技术学院融智技术学院7.2.4 7.2.4 数据操纵语言数据操纵语言数据操纵语言主要是用于操作表或视图中的数据。比如数据操纵语言主要是用于操作表或视图中的数据。比如对于刚创建的表而言,需要往里添加数据,此时需要用到插对于刚创建的表而言,需要往里添加数据,此时需要用到插入语句入语句INSERT;如果需要删除数据则用如果需要删除数据则用DELETE语句;而语句;而需要检索数据则用需
8、要检索数据则用SELECT语句;需要修改或更新数据则用语句;需要修改或更新数据则用UPDATE语句。语句。融智技术学院融智技术学院7.2.5 7.2.5 事务管理语言事务管理语言事务管理语言主要包括事务的创建、提交和回滚等操作,事务管理语言主要包括事务的创建、提交和回滚等操作,分别为分别为BEGIN TRANSACTION、COMMIT TRANSACTION和和ROLLBACK TRANSACTION。融智技术学院融智技术学院7.2.6 7.2.6 其他附加语言其他附加语言除了前面的除了前面的4种语言以外,种语言以外,Transact-SQL还包括一些还包括一些其他语言,如变量、常量、运算符
9、表达式、函数、控制流其他语言,如变量、常量、运算符、表达式、函数、控制流语言、数据类型和注释等。语言、数据类型和注释等。融智技术学院融智技术学院7.3 7.3 表表表是数据库中的主要对象,用于存储各种信息,它是数表是数据库中的主要对象,用于存储各种信息,它是数据库中其他对象的基础。数据库中的表一般分为永久性表和据库中其他对象的基础。数据库中的表一般分为永久性表和临时表,本节只讨论永久性表。对于表的操作包括创建、修临时表,本节只讨论永久性表。对于表的操作包括创建、修改和删除表的结构以及查询表中的数据等,本节将进行详细改和删除表的结构以及查询表中的数据等,本节将进行详细说明。说明。融智技术学院融
10、智技术学院7.3.1 7.3.1 创建、修改和删除表创建、修改和删除表表的创建需要用到表的创建需要用到CREATE关键字,关键字,如果用户在创建表的过程中忽略了某些因素,则需要对如果用户在创建表的过程中忽略了某些因素,则需要对表的结构进行修改。如果需要在当前表中添加一列,代码如表的结构进行修改。如果需要在当前表中添加一列,代码如下所示。下所示。ALTER TABLE student ADD birthday varchar(20)null为为student表添加了一个新列表添加了一个新列birthday,数据类型为数据类型为varchar,长度为长度为20,可以为空。如果需要删除列,代码如,可
11、以为空。如果需要删除列,代码如下所示。下所示。ALTER TABLE student DROP birthday融智技术学院融智技术学院7.3.2 7.3.2 操纵表中的数据操纵表中的数据操纵数据主要包括插入、修改、删除数据等主要操作,下操纵数据主要包括插入、修改、删除数据等主要操作,下面将详细介绍。面将详细介绍。(1)插入数据:表是用来存储数据的,所以在表创建完)插入数据:表是用来存储数据的,所以在表创建完以后需要往表中插入数据。常用的操作是使用以后需要往表中插入数据。常用的操作是使用INSERT INTOVALUES语句。语句。(2)修改数据:)修改数据:UPDATE语句可以修改表中的一行
12、或多语句可以修改表中的一行或多行数据。行数据。(3)删除数据:)删除数据:DELETE语句用于删除表中的一行或多语句用于删除表中的一行或多行数据。行数据。(4)检索数据:表中的数据检索是用户的常见操作,通)检索数据:表中的数据检索是用户的常见操作,通过检索数据可以把数据库中满足用户需求的信息提取出来。过检索数据可以把数据库中满足用户需求的信息提取出来。融智技术学院融智技术学院7.3.3 7.3.3 主键约束主键约束本节将介绍约束机制在表的管理中的应用,约束能确保本节将介绍约束机制在表的管理中的应用,约束能确保数据完整性,通过限制表中行或列中的数据以及表之间的数据数据完整性,通过限制表中行或列中
13、的数据以及表之间的数据来实现数据完整性。约束有几种类型,分别为主键约束、外键来实现数据完整性。约束有几种类型,分别为主键约束、外键约束、唯一性约束、约束、唯一性约束、CHECK约束和缺省约束。约束和缺省约束。融智技术学院融智技术学院7.3.4 7.3.4 外键约束外键约束外键约束用于限制一个表中的某写列,与其他表中的某外键约束用于限制一个表中的某写列,与其他表中的某些列的关联,从而实现表之间的依赖关系。些列的关联,从而实现表之间的依赖关系。融智技术学院融智技术学院7.3.5 7.3.5 唯一性约束唯一性约束这种约束用于限制表中的某一列或多列中不能存在相同这种约束用于限制表中的某一列或多列中不能
14、存在相同的行数据,它和主键约束比较类似。但需要注意它们之间的的行数据,它和主键约束比较类似。但需要注意它们之间的区别,一是在一个表中可以同时添加多个唯一性约束,而主区别,一是在一个表中可以同时添加多个唯一性约束,而主键约束只能出现一次;二是在唯一性约束中,最多可以允许键约束只能出现一次;二是在唯一性约束中,最多可以允许出现一个空值,而在主键约束中不允许出现空值。出现一个空值,而在主键约束中不允许出现空值。融智技术学院融智技术学院7.3.6 7.3.6 CHECKCHECK约束约束CHECK约束用于对表中的某一列数据进行范围限制。约束用于对表中的某一列数据进行范围限制。融智技术学院融智技术学院7
15、3.7 7.3.7 缺省约束缺省约束如果向某个表插入数据时,数据的某一列中具有很多相如果向某个表插入数据时,数据的某一列中具有很多相同的元素,此时可以采用缺省约束,定义它为需要输入的元同的元素,此时可以采用缺省约束,定义它为需要输入的元素。素。融智技术学院融智技术学院7.4 7.4 存储过程存储过程存储过程封装了一组可以重用的存储过程封装了一组可以重用的Transact-SQL语句。语句。它存储在服务器上,支持用户自定义的变量(包括接受和返它存储在服务器上,支持用户自定义的变量(包括接受和返回用户参数),并且已经通过了预编译。存储过程内似于其回用户参数),并且已经通过了预编译。存储过程内似于
16、其他编程中使用的函数,可以对大量复杂的操作进行封装,只他编程中使用的函数,可以对大量复杂的操作进行封装,只需要提供一个输入和输出接口。需要提供一个输入和输出接口。融智技术学院融智技术学院7.4.1 7.4.1 创建存储过程创建存储过程存储过程用存储过程用PROCEDURE语句表示。语句表示。融智技术学院融智技术学院7.4.2 7.4.2 执行和删除存储过程执行和删除存储过程存储过程的执行可以直接运用存储过程的执行可以直接运用EXECUTE命令。命令。融智技术学院融智技术学院7.4.3 7.4.3 存储过程向导存储过程向导在在SQL Server Management Studio中,提供了存储
17、中,提供了存储过程向导,包括创建、修改和删除存储过程。本节将利用该过程向导,包括创建、修改和删除存储过程。本节将利用该向导,重新创建上一节中的存储过程二。向导,重新创建上一节中的存储过程二。融智技术学院融智技术学院7.5 7.5 触发器触发器触发器是一种特殊的存储过程,但触发器能自动执行。比触发器是一种特殊的存储过程,但触发器能自动执行。比如,试图对表进行如,试图对表进行DELETE、INERT和和UPDATE操作时,那么操作时,那么该表中相应操作类型的触发器就会被自动执行,以拒绝不合法该表中相应操作类型的触发器就会被自动执行,以拒绝不合法的操作,从而达到保护数据的目的。的操作,从而达到保护数
18、据的目的。融智技术学院融智技术学院7.5.1 7.5.1 创建和使用触发器创建和使用触发器TRIGGER是触发器的关键字,触发器可以在表或视图是触发器的关键字,触发器可以在表或视图中创建;为了隐藏触发器创建文本,可以使用中创建;为了隐藏触发器创建文本,可以使用WITH ENCRYPTION;AFTER触发器是在数据变动(触发器是在数据变动(INSERT、UPDATE和和DELETE等操作)完成之后才被激活;而等操作)完成之后才被激活;而INSTEAD OF触发器是在数据变动完成之前被激活,并取代触发器是在数据变动完成之前被激活,并取代INSERT、UPDATE和和DELETE等操作。等操作。融
19、智技术学院融智技术学院7.5.2 7.5.2 SQL ServerSQL Server中的触发器向导中的触发器向导同存储过程一样,同存储过程一样,SQL Server Management Studio也提供了触发器向导,本节将对上一节中的例子,利用触发也提供了触发器向导,本节将对上一节中的例子,利用触发器向导进行实现。器向导进行实现。融智技术学院融智技术学院7.6 7.6 事务和锁事务和锁事务是指一个单元的工作,要么全部执行,要么全部不事务是指一个单元的工作,要么全部执行,要么全部不执行。事务用于保证对同一数据的不同修改作为一个单元来处执行。事务用于保证对同一数据的不同修改作为一个单元来处理
20、从而保证数据的一致性和完整性。在多用户系统中,锁机理,从而保证数据的一致性和完整性。在多用户系统中,锁机制是十分必要的。它允许事务锁定一定的资源,不让其他事务制是十分必要的。它允许事务锁定一定的资源,不让其他事务访问。在本节中,将对以上两个概念进行说明。访问。在本节中,将对以上两个概念进行说明。融智技术学院融智技术学院7.6.1 7.6.1 事务事务事务作为一个工作单元,它具有事务作为一个工作单元,它具有4个属性,分别为原子个属性,分别为原子性、一致性、隔离性和持久性。原子性是指事务在执行过程性、一致性、隔离性和持久性。原子性是指事务在执行过程中出现的任何错误都将导致事务所作的操作均失败;一
21、致性中出现的任何错误都将导致事务所作的操作均失败;一致性是指如果事务执行失败,则应回滚到事务执行前的状态;隔是指如果事务执行失败,则应回滚到事务执行前的状态;隔离性是指事务在执行时与其他并行事务相互独立;持久性是离性是指事务在执行时与其他并行事务相互独立;持久性是指当事务执行完成后,它所作的操作将会永久地存储在数据指当事务执行完成后,它所作的操作将会永久地存储在数据库中。库中。融智技术学院融智技术学院7.6.2 7.6.2 锁锁锁允许事务锁定不同的资源,在多用户操作同一数据库锁允许事务锁定不同的资源,在多用户操作同一数据库的过程中,锁为数据一致性提供了重要保证。的过程中,锁为数据一致性提供了重
22、要保证。SQL Server 2005中常用的锁类型如下所示。中常用的锁类型如下所示。共享(共享(S)锁:允许事务并行地读同样的数据,但不能锁:允许事务并行地读同样的数据,但不能进行其他修改或删除操作。进行其他修改或删除操作。排他(排他(X)锁:用于锁定事务对数据的更新操作,在更锁:用于锁定事务对数据的更新操作,在更新期间,不允许其他事务访问。新期间,不允许其他事务访问。更新(更新(U)锁:更新锁是共享锁的一种特例,主要用于锁:更新锁是共享锁的一种特例,主要用于对对UPDATE语句的支持。在语句的支持。在UPDATE语句中,数据必须在它语句中,数据必须在它被更新前读取。在读取数据时,该锁类型转
23、化为共享锁,在被更新前读取。在读取数据时,该锁类型转化为共享锁,在更新数据时转化为排他锁。更新数据时转化为排他锁。融智技术学院融智技术学院7.7 7.7 小结小结本章主要介绍了本章主要介绍了SQL Server 2005的相关基础知识,这的相关基础知识,这是为下一章所要介绍的是为下一章所要介绍的ADO.NET访问数据库做准备的。通访问数据库做准备的。通过对表、存储过程、触发器和事务的讲解,让读者能更好地过对表、存储过程、触发器和事务的讲解,让读者能更好地理解数据库的结构及功能。理解数据库的结构及功能。Transact-SQL语言是语言是SQL Server 2005中的查询语言,它的功能强大并且简单易学,中的查询语言,它的功能强大并且简单易学,在应用程序中访问数据库会常常用到这些语言,读者应该好在应用程序中访问数据库会常常用到这些语言,读者应该好好掌握。好掌握。