版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一篇SQLServer2008 基础知识篇第 1 章SQL Server2008 入门知识在现代社会中,数据库技术的应用无处不在。重要的信息系统开发的各个领域,如管理信息系统(MIS)、企业资源计划()、客户关系管理系统()、决策支持系统(DSS)和智能信息系统(IIS)等,都离不开数据库技术强有力的支持。发布的SQL Server 产品是一个典型的关系型数据库管理系统,以其强大的功能、由操作的简便性、可靠的安全性,得到很多用户的认可,应用也越来越广泛。特别是最新发布的版本 SQL Server 2008,它在 SQL Server 2005 的强大功能之上,为用户提供了一个更完整的数据管理
2、和分析解决方案。本章首先将介绍有关数据库理论的基础知识,然后介绍 SQL Server 2008 入门知识,包括:SQL Server 2008 体系结构、新增功能与特性、安装方法和配置方法等。了解数据库模型了解关系数据库的概念和术语了解关系数据库的完整性规则掌握 1NF、2NF 和 3NF熟悉 E-R 模型了解 SQL Server 2008 的体系结构了解 SQL Server 2008 的新特性 掌握 SQL Server 2008 的安装熟悉 SQL Server 2008 的配置数据库是数据库管理系统的,它包含了系统运行所需的全部数据。用户通过对系统的操作以实现对数据库数据的调用,从
3、而返回不同的数据结果。要熟练地操作和管理数据库,首先必须了解数据库的一些基本概念和组成部分。1.1.1数据库概念1.1 数据库数据库就是数据存放的地方,是需要长期存放在计算机内的有组织并且可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和易扩展性,可以为不同的用户共享使用。,具有较小的冗余度、高的数据独立性和数据库中的数据通过数据库管理系统(Database Management System,DBMS)来管理,数据库管理系统是指数据库系统中对数据进行管理的系统,也是数据库系统的组成部分,用户对数据库的一切操作,包括定义、查询、更新以及各种控制,都是通过数据库管理系统进行的。在通常情
4、况下,人们常常将数据库管理系统称为数据库。例如,平时常说的 Acs、SQLServer、Oracle 和等数据库,其实都属于 DBMS 范围。1.1.2数据库模型根据具体数据需求的不同,数据库可以使用多种类型的系统模型(模型是指数据库管理系统中数据的结构),其中较为常见的有层次模型(Hierarchical M)、网状模型(NetworkM)和关系模型(Relation M层次模型)3 种。层次型数据库使用结构模型作为自己的结构。这是一种树型结构,它由节点和连线组成,其别类地点表示实体,连线表示实体之间的关系。在这种在不同的层次之下,如图 1-1 所示。结构中,数据将根据需要分门图 1-1 层
5、次结构模型从图 1-1 中可以看出,层次模型的优点是数据结构类似金字塔,不同层次之间的关联性直接而且简单;缺点是由于数据纵向发展,横向关系难以建立,数据可能会重复出现,造成管理维护的不便。2网状模型在网状模型中,数据将组成网中的节点,而和之间的关联组成节点之间的连线,从而了一个复杂的网状结构,如图 1-2 所示。使用这种结构的数据库的优点是它很容易反映实体之间的关联,同时还避免了数据的重复性;缺点是这种关联错综复杂,而且当数据库逐渐增多时,将很难对结构中的关联进行维护。尤其是当数据库变得越来越大时,关联性的会非常复杂。图 1-2 网状结构模型3关系模型关系型数据库就是基于关系模型的数据库,它使
6、用的结构是多个二维表格。在每个二维表格中,每一行称为一条,一个对象的信息;每一列称为一个字段,对象的一个属性。数据表与数据表之间存在相应的关联,这些关联将被用来查询相关的数据,如图 1-3 所示。图 1-3 关系结构模型从上图可以看出,此处使用项目的将【员工数据】表和【项目】表关联起来。使用这种模型的数据库优点是结构简单、格式唯一、理论基础严格,而且数据表之间相对独立,可以在不影响其他数据表的情况下进行数据的增加、修改和删除。在进行查询时,还可以根据数据表之间的关联性,从多个数据表中查询抽取相关的信息。这种结构是目前市场上使用最广泛的数据模型,使用这种结构的数据库管理系统很多,本书将详细介绍的
7、公司的产品 SQL Server 2008 就使用这种结构。关系数据库(Relational Database,RDB)就是指基于关系模型的数据库。关系数据库系统是一种重要的数据库数据模型,不但其理论成熟,而且其应用范围较网状和层次数据库系统也广得多。目前,关系型数据库管理系统已成为流行的数据库系统,各种实现方法和优化方法比较完善。关系数据库的设计拥有一整套完善的规范化理论,确保设计的数据库尽量减少数据冗余及异常现象。1.2.1关系数据库概念1.2 关系数据库关系数据库是利用数据库进行数据组织的式,是现代流行的数据管理系统中应用最为普遍的一种,也是最有效率的数据组织方式之一。关系数据库建立在集
8、合论坚固的数学基础之上,是集合论在数据组织领域的应用。在关系数据库里,所有的数据都按表(按关系理论的术语,表应该被称为“关系”)进行组织和管理。1关系数据库的结构关系数据库是由数据表和数据表之间的关联组成的。其中数据表通常是一个由行和列组成的二维表,每一个数据表分别说明数据库中某一特定的方面或部分的对象及其属性。数据表中的行通常叫做或元组,它代表众多具有相同属性的对象中的一个;数据库表中的列通常叫对象的共有属性。表 1-1 是某学校的【学生信息】做字段或属性,它代表相应数据库表中表。表 1-1 【学生信息】表从这个学生信息表中可以清楚地看到,该表中的数据都是学校学生的具体信息。其中,表中的每条
9、代表一名学生的完整信息,每一个字段代表学生的一方面信息,这样就组成了一个相对独立于其他数据表之外的【学生信息】表。可以对这个表进行添加、删除或修改操作,而完全不会影响到数据库中其他的数据表。2关系数据库中表的关联等在关系型数据库中,表的关联是一个非常重要的组成部分。表的关联是指数据库中的数据表与数据表之间使用相应的字段实现数据表的连接。通过使用这种连接,无须再将相同的数据多次,同时,这种连接在进行多表查询时也非常重要。在图 1-4 所示的【项目计划】表中,使用“”列将【项目计划】表同【】表连接起来;使用“ 通过项目名称查询项目名称,然后使用“销员】表就可以实现。员”列将【项目计划】表同【员】表
10、连接起来。这样,在想的工资或者员时,只需要告知管理系统需要查询的项目”和“员”列关联【项目计划】表、【】表和【营在数据库设计过程中,所有的数据表名称都是唯一的。因此不能将不同的数据表命名为相同的名称。但是在不同的表中,可以存在同名的列。学号姓名性别出 生 日 期民族2005010101女1987-01-122005010102张女1985-05-152005010201男1985-10-152005010202女1988-04-252005020101女1985-03-27图 1-4 表的关联1.2.2关系数据库术语关系数据库的特点在于它将每个具有相同属性的数据独立地存在一个表中。对任何一个表
11、而言,用户可以新增、删除和修改表中的数据,而不会影响表中的其他数据。下面来了解一下关系数据库中的一些基本术语。键码(Key)关系模型中的一个重要概念,在关系中用来标识行的一列或多列。主关键字(Primary Key)它是被挑选出来,作为表行的唯一标识的候选关键字,一个表中只有一个主关键字,主关键字又称为主键。主键可以由一个字段,也可以由多个字段组成,分别称为单字段主键或多字段主键。候选关键字(Candidate Key)它是唯一标识表中的一行而又不含多余属性的一个属性集。公共关键字(Common Key)在关系数据库中,关系之间的联系是通过相容或相同的属性或属性组来表示的。如果两个关系中具有相
12、容或相同的属性或属性组,那么这个属性或属性组被称为这两个关系的公共关键字。外关键字(Foreign Key)如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外关键字。由此可见,外关键字表示了两个关系之间的联系,外关键字又称为外键。主键与外键的列名称可以是不同的。但必须要求它们的值集相同,即主键所在表中出现的数据一定要和外键所在表中的值匹配。1.2.3关系数据库管理系统功能关系数据库管理系统从功能上划分主要可分为 4 部分:数据库模式定义语言、数据库语言、数据库系统运行控制和数据库1数据库模式定义语言与服务。数据库模式定义语言是用于描述数据库中要的现实世界实体的语言。一
13、个数据库模式包含该数据库中所有实体的描述定义。这些定义包括结构定义、操作方法定义等。不同的数据库管理系统提供的数据库模式定义语言不同,关系数据库都使用 SQL 语言描述关系模式。关系数据库的模式通过 SQL 语言中的 CREATE 语句实现。2数据库语言关系数据库管理系统提供的数据库语言是终端用户、应用程序实现对数据库中的数据进行各种的语言。数据库示输出等。3数据库系统运行控制语言包括的基本操作功能有:增加、删除、修改、检索、显关系数据库管理系统实现对数据库的,是在数据库管理程序控制下完成的。它是关系数据库管理系统运行的,主要包括事务管理和并发控制、数据完整性约束检查、数据库的建立和4数据库数
14、据库的、通信功能。与服务主要是指对数据库和数据对象的安全保护,以及数据库的初始化、恢复和重构等。数据库的服务性功能主要是指数据库初始化数据的装入,数据的导入/导出、数据发布,图形化报表的显示和输出功能等。1.2.4关系模型完整性规则根据关系数据理论和 Codd 准则的定义,一种语言必须能处理与数据库的所有通信问题,这种语言有时也称为综合数据语言。该语言在关系型数据库管理系统中就是 SQL。SQL 的使用主要通过数据 、数据定义和数据管理 3 种操作实现。关系模型的完整性规则是对数据的约束。关系模型提供了 3 类完整性规则:实体完整性规则、参照完整性规则和用户定义完整性规则。其中实体完整性规则和
15、参照完整性规则是关系模型必须满足的完整性约束条件,称为关系完整性规则。实体完整性实体完整性指关系的主属性(主键的组成部分)不能是空值。现实世界中的实体是可区分的,即它们具有某种唯一性标识。相应地,关系模型中以主键作为唯一性标识,主键中的属性即主属性不能取空值(“不知道”或“无意义”的值)。如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与现实世界的环境相一个完整的实体。参照完整性,因此这个实体一定不是如果关系的外键 R1 与关系 R2 中的主键相符,那么外键的每个值必须在关系 R2 中主键的值中找到或者是空值。用户定义完整性它是针对某一具体的实际数据库的约束条件。它由应
16、用环境所决定,反映某一具体应用所涉及的数据必须满足的要求。关系模型提供定义和检验这类完整性的机制,以便用的、系统的方法处理,而不必由应用程序承担这能。关系模型原理的是“规范化”概念,规范化是把数据库组织成在保持数据完整性的同时最小化冗余数据的结构的过程。规范化的数据库是符合关系模型规则的数据库,通常把这些规则称为范式。范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求即满足不同的范式,目前关系数据库有 6 种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、 Boyce-Codd 范式(BCNF)、第四范式(4NF)和第五范式(5NF)。在实际的数据库设
17、计过程中,通常需要用到的是前 3 类范式,下面将依次介绍。1.3.1第一范式第一范式是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。第一范式包括下列指导原则。数组的每个属性只能包含一个值。关系中的每个数组必须包含相同数量的值。关系中的每个数组一定不能相同。第一范式是对关系模式的最起码的要求,是所有范式的基础,不满足第一范式的数据库模式不能称为关系数据库。如表 1-2 所示,以【学生信息】表为例,其中的最后一个数组了第一范式。在最后一个数组中,“”属性包含了 3 个值。“入学时间”属性也包含了 3 个值,也就是说把原本的 3
18、条放进了一条的位置。表 1-2第一范式的关系如果要将这些数据规范化,就必须使每个属性只包含一个值,每个数组包含相同数量的值,并且每个数组各不相同,如表 1-3 所示。这时的数据才符合第一范式。简而言之,第一范式就是无重复的列。表 1-3 符合第一范式的关系姓名性别入 学 时 间姓名性别入 学 时 间女2005男2005男2004女2004女2005男2003,熊建军男2004,2005,20061.3 范式理论1.3.2第二范式如果一个数据表已经满足第一范式,而且该数据表中的任何一个非主键字段的数值都依赖于该数据表的主键字段,那么该数据表满足第二范式,即 2NF。例如,在下面的【项目计划】表中
19、,数据表的主键是项目。其中“部门”字段完全信赖于“”字段,而不是取决于项目,因此,该数据表不满足第二范式。但该数据表中的其他字段都完全依赖于该表的主键字段“项目”,因此,可以将该数据表拆分为【项目计划】表和【部门数据】表,以满足第二范式,如图 1-5 所示。图 1-5 第二范式1.3.3第三范式如果一个数据表已经满足第二范式,而且该数据表中的任何两个非主键字段的数据值之间不存在函数依赖关系,那么该数据表满足第三范式,即 3NF。例如,在【员工数据】表中,“奖金”字段的数年值是“工资”字段的 10%,因此,这两个字段之间存在着函数依赖关系,所以该数据表不满足第三范式。可以将“奖金”字段从该数据女
20、2005男2005男2004女2004女2005男2003男2004男2005熊建军男2006表中去掉,以满足第三范式,如图 1-6 所示。“奖金”字段和“工资”字段之间存在函数依赖关系,将“奖金”字段从该数据中去掉,以满足第三范式【员工数据】表图 1-6 第三范式实际上,第三范式就是要求不要在数据库中可以通过简单计算得出的数据。这样不但可以节省空间,而且在拥有函数依赖的一方发生变动时,避免了修改成倍数据的麻烦,同时也避免了在这种修改过程中可能造成的人为错误。通过前面 3 种范式的对比可以看出,数据表规范化的程度越高,数据冗余就越少,同时造成人为错误的可能性也就越小;同时,规范化的程度赿高,在
21、查询检索时需要做的关联等工作就越多,数据库在操作过程上需要的数据表以及之间的关联也就赿多。因此,在数据库设计的规范化过程中,需要根据数据库需求的实际情况,选择一个折中的规范化程序。在数据库设计过程中,数据建模是第一步,它将确定要在数据库中保留什么信息和确认各种信息之间存在什么联系。这需要使用 E-R 数据模型来描述和定义。E-R(Entity-Relationship)数据模型,即实体关系数据模型,是于 1976 年。它是早期的语义数据模型。该数据模型最初提出是用于数据库设计的,是面向问题的概念性数据模型。它用简单的图形反映了现实世界中存在的事物或数据及它们之间的关系。1.4.1实体模型实体是
22、观念世界中描述客观事物的概念,可以是具体的事物,例如一本书、一条街、一朵鲜花等;也可以是抽象的事物,例如一个容量、一个城市、一种气体或一种感受等。同一类实体的所有实例就该对象的实体集。实体集是实体的集合,由该集合中实体的结构或形式表示,而实例则是实体集中某个特例,如学号为 2004101001 的学生是“学生信息”实体集中的一个实例,通过其属性值表示。通常实体集中有多个实体实例。例如,数据库中体集中的实例,如图 1-7 所示。的每个学生信息都是“学生信息”实1.4 E-R 模型工资奖金1谢男60006002男6600660图 1-7 实体集和实例在图 1-9 所示的学生实体中,每一个学生特性的
23、信息都是一个实体属性。例如,这里学生实体的学号、数据信息。、民族和所属班级等属性就组一个学生实例的基本根据系统的需求,每个属性都有它的数据类型和特性。特性包括指定该属性在某些情况下是否必需的,属性是否有默认值以及属性的取值限制等。为了区分和管理多个不同的实体实例,要求每个实体实例都要有标识符。例如,在图 1-9所示的学生实体中,可以由学号或者来标识。但通常情况下不用来标识,因为可能出现相同的学生,而使用具有唯一标识的学号来标识学生,则会避免这种情况的发生。可以简单地将实体标识符理解为表的主键,可以由实体的一个或多个属性多个属性组成,那么称其为复合标识符。如果标识符由1.4.2关系模型实体之间是
24、通过关联进行联系的。E-R 模型中包括了关联集和关联实例的概念。关联集反映出实体集之间的关联,而关联实例则是用来关联实体实例的。关联的度是指它所关联的实体数目,大多数的关系都是二元的。有 3 种二元关联:11、1N、NM,分别用来表示实体间的一对一、一对多、多对多关系。一对一关联一对一关联( 即 1 1 关联) 表示某种实体实例仅和另一个类型的实体实例相关联。图 1-8 所示的“班级信息_辅导员信息”关联将一个班级和一个辅导员关联起来。根据该图所示,每个班级只能有一个辅导员,并且一个辅导员只能负责一个班级。一对多关联一对多关联(即 1N 关联)表示多种实体实例可以和多个其他类型的实体实例关联。
25、图1-9 所示为一对多关联,图中的“班级信息_学生信息”关联将一个班级实例与多个学生实例关联起来。根据这个图,可以看出一个班级可以有多个学生,而某个学生只能属于一个级。班图 1-8 一对一关联图 1-9 一对多关联在 1N 关联时,1 和 N 的位置是不可以任意调换的。当 1 处于班级实例而 N 处于学生实例时,表示一个班级对多个学生。如果将 1 和 N 的位置调换过来的话,则为 N1。此时,表示某个班级只可以有一个学生,而一个学生可以属于多个班级,这显然不是想要的关系。3多对多关联第三种二元关联是多对多关联(即 NM 关联),如图 1-10 所示。该图中的“学生信息_教师信息”关联将多个学生
26、实例和多个教师实例关联起来,表示一个学生可以有多个教师,一个教师也可以有多个学生。图 1-10 多对多关联在创建 1:N 关系时,可以根据实际需求来确定 N 的值。例如,规定一个班级最多 30 个学生,则在图 1-11 中的 1:N 关系就可以改为 1:30。SQL Server 2008 是一个全面的、集成的、端到端的数据解决方案,它为组织中的用户提供了一个更安全可靠和更高效的,用于企业数据和 BI 应用。SQL Server 2008 的体系结构是指对SQL Server 2008 的组成部分和这些组成部分之间关系的描述ServiSQL Server 2008 系统由 4 个部分组成:数据
27、库引擎ysis Servi、Reporting和egration Servi,如图 1-11 所示。通过选择不同的服务器类型,来完成不同的数据库操作。这 4 种服务之间存在的关系如图1-12 所示。下面将对这 4 种服务分别进行介绍。1.5 SQL Server 2008 体系结构图 1-11 连接到的服务器类型图 1-12 SQL Server 2008 系统的体系结构图1数据库引擎数据库引擎是SQL Server 2008 系统的服务,它是和处理关系(表格)格式的数据或 XML 文档数据的服务,负责完成数据的、处理和安全管理。例如,创建数据库、创建表、创建视图、数据查询和数据库等操作,都是
28、由数据库引擎完成的。通常情况下,使用数据库系统实际上就是在使用数据库引擎。因为数据库引擎也是一个复杂的系统,它本身包含了许多功能组件,例如,、全文搜索等。2ysis Serviysis Servi的主要作用是通过服务器和客户端技术的组合提供联机分析处理(Onlineytical Prosing,OLAP)和数据挖掘功能。使用ysis Servi,用户可以设计、创建和管理包含来自于其他数据源的结构,通过对数据进行多角度的分析,可以使管理对业务数据有更全面的理解。另外,通过使用构造和应用,实现知识的发现、表示和管理。ysis Servi,用户可以完成数据挖掘模型的例如,使用SQL Server 2
29、008 系统提供的ysis Servi服务在学校的学生信息管理系统中完成对学生数据的挖掘分析,从而发现高学生成绩、了解学生管理情况等提供有效的支持。有价值的信息和知识,为有针对性地提相对来说,联机事务处理(Onlinesing,OLTP)由数据库引擎负责OLAPTraning Pro完成。3Reporting ServiSQL Server 2008 Reporting Servi是一种基于服务器的解决方案,用于生成从多种关系数据源和数据源提取内容的企业报表,发布能以各种格式查看的报表,以及集中管理安全性和订阅。创建的报表可以通过基于 Web 的连接进行查看,也可以作为应用程序的一部分进行查看
30、。WindowsSQL Server 2008 系统提供的 Reporting Servi通过使用,用户可以方便地定义和发布满足自己需求的报表。无论是报表的布局格式,还是报表的数据源,用户都可以借助工具轻松地实现。这种服务极大地方便了企业的管理工作,满足了管理对高效、规范管理的要求。例如,使用SQL Server 2008 系统提供的 Reporting Servi服务在学校的学生信息管理系统中,可以很方便地生成 PDF、Excel、Word 等特定格式的报表。4egration Serviegration Servi是一个数据集成,负责完成有关数据的提取、转换和加载等操作。对于ysis Se
31、rvi来说,数据库引擎是一个重要的数据源,而如何将数据源中的数据经过适ysis Servi中以便进行各种分析处理,这正是egration Servi当的处理并加载到所要解决。重要的是,egration Servi可以高效地处理各种各样的数据源,例如,SQLServer、Oracle、Excel、XML 文档、文本文件等。在 SQL Server 2005 的基础上,SQL Server 2008 又推出了许多新的特性和关键的改进,使得它成为至今为止最强大和最全面的 SQL Server 版本。在本节中详细介绍2008 中的重要新增功能和增强特性。SQL Server1.6.1新的日期数据类型在
32、 SQL Server 2008 中引入了 4 种 datetime 数据类型,分别为 date、time、datetimeoffset 和 datetime2,此外还增加了新的 datetime 函数功能。本节将 一下 4 种新数据类型的功能和用法。1date 数据类型在 SQL Server 2005 中,没有专门只用来日期(不包括时间)的特定数据类型,只能使用 datetime 或 smalldatetime 数据类型来完成此操作。但是,当输入日期之后,会显示还有一个时间的组分需要输入,其初始显示为 12:00 AM。如果只想在输出结果中显示日期那一部分,就必须修改输出格式。大部分情况下
33、,可以使用getdate()函数来当前日期。要在SQL Server 2005中的 smalldatetime 或 datetime 列中保存 getdate()的函数值,同时也会保存当前的时间,而这可能会很多问题。例如,如果使用以下的语句,想根据给定的日期来搜索:SELECTFROM tblDate Where Date = 2008-08-08*由于 Date 列里含有时间组分,这个命令将无法正常执行,因此,必须执行以下的查询操作:SELECTFROM tblDate Where datediff(d,Date,2008-08-08) =0*1.6 SQL Server 2008 新增功能
34、与特性尽管上面的查询操作可以行得通,不过 Date 列中符合要求的索引很可能不会被使用。不过还是可以使用上面的查询操作调出少量的。虽然可以利用工作区,但很明显有必要增加一种去掉时间值的 date 数据类型来减少潜在的错误。来看看以下的语法:DECLARE dt AS dateSET dt = getdate() PRdt以上的输出结果只有日期,不包括时间部分。date 数据类型的取值范围从 0001-01-01到 9999-12-31。2time 数据类型就像日期数据类型一样,如果只想时间数据而不需要日期部分,就可以利用 time 数据类型。下面就是利用 time 数据类型进行查询的例子:DE
35、CLARE dt AS timeSET dt = getdate() PRdt以上输出结果只包含时间部分,其取值范围从 00:00:00.0000000 到 23:59:59.9999999。3datetime2 数据类型新的 datetime2 数据类型也是一种数据时间混合的数据类型,不过其时间部分秒数的小数部分可以保留不同位数的值,比原来的 datetime 数据类型取值范围要广。用户可以根据自己的需要通过设置不同的参数来设定小数位数,最高可以设到小数点后 7 位(参数为 7),也可以不要小数部分(参数为 0),以此类推。以下是利用 datetime2 的查询语句:DECLARE dt7
36、datetime2(7)SET dt7 = getdate()PRdt7该语句的输出结果中时间的秒数部分精确到小数点后第七位。2008-06-3 12:15:11.23400004datetimeoffset 数据类型如果把日期和时间数据保存在一列里,是不会提示该日期和时间属于哪一个时区的。时区的提示非常重要,特别是当处理数据包含了多个不同时区的国家时。新的 datetimeoffset 数据类型可以定义一个日期和时间组合,其中时间以 24 小时制显示,并带有时区提示。下面的语句说明了 datetimeoffset 数据类型的用法:DECLARESET dt DECLAREdt datetim
37、eoffset(0)= 2007-12-04 21:20:30 -1:00dt1 datetimeoffset(0)SET dt1 = 2007-12-04 21:20:30 +5:00SELECT DATEDIFF(hh,dt,Dt1)1.6.2LINQ 语言LINQ 是 Language-egrated Query(语言集成查询)的简称,是微软集成在.NET 3.5 中的一项新技术,它能够将查询功能直接引入到.NET Framework 3.5 所支持的编程语言(如 C#、Visual Basic 等)中。查询操作可以通过编程语言自身来传达,而不是以字符串嵌入到应用程序代码中。LINQ 主
38、要由 4 种不同的技术组成:LINQ to Objects、LINQ to SQL、LINQ to DataSet 和 LINQ to XML,它们分别查询和处理对象数据(如集合等)、关系数据(如 SQL Server 数据库等)、DataSet对象数据和 XML 结构(如 XML 文件)数据。使用 LINQ 可以大量减少了查询或操作数据库或数据源中的数据的代码,并在一定程度上避免了 SQL 注入,提供了应用程序的安全性。借助于 LINQ 技术,可以使用一种类似 SQL 的语法来查询所支持的数据源有 SQL Server、XML 以及内存中的数据集合。开发的数据。目前为止 LINQ也可以使用其
39、提供的扩展框架添加的数据源,例如或者 Oracle 等。首先来看一个很简单的 LINQ 查询例子,查询一个数组中小于 100 的数字,并按照大小顺序排列:class Programsic void Main(string args) arr = new var m = from n in foreach (var nConsole.Wri 15, 8, 4, 80, 120, 3, 1, 1317;arr where n 100 orderby n select n;)ine(n);Console.ReadLine();上述代码除了 LINQ 查询语法外,其他都是大家所熟悉的语法,而 LINQ
40、 查询语法跟 SQL查询语法很相似,除了先后顺序。1.6.3HierarchyId 类型首次在 SQL Server对于关系型数据库来说,表现树状的层次结构始终是一个问题2005 尝试解决这个问题,那就是使用称为通用数据表表达式(Common Table Expres的实现方式。s,CTE)虽然 CTE 可以在数据库架构中良好地运行,但是为头等概念来使用的方式,也就是在 SQL Server 2008 中实现了另一种将此类层次结构作“HierarchyId”数据类型。在传统的层次结构中,一条仅仅了一个指向它父的,这使得一条能够获得它在层次结构中的相对位置,而不是绝对位置。改变某条的父数据行是一
41、个原子更新操作,它不会影响到该 一个 HierarchyId 类型的字段出现的还有一系列函数。GetAn的任何子。了在层次结构中的准确位置。与 HierarchyId 类型同时tor 和 GetDescendant 方法可以用来遍历树。ToString 和 Parse方法用于 HierarchyId 类型二进制与字符串表现形式之间的转换。GetDescendant 方法实际上不返回那些子,而是返回那些潜在的子节点的位置。向树中插入一个新的时,必需调用 GetDescendant 方法来获得指定父的最后一个子节点的位置,然后才能获得紧跟着该位置之后的空隙。1.6.4增强 XML 功能在 SQL
42、Server 2000 中推出了与 XML 相关的功能以及 Tran-SQL 关键字 FORXML 和 OPENXML,这使得开发可以编写 Tran-SQL 代码来获取 XML 流形式的查询结果,并将一个 XML 文档分割成一个 rowset。SQL Server 2005 显著地扩展了这些 XML 功能,推出了一个支持 XSD schema 验证、基于 XQuery 的操作和 XML 索引的本地的 XML 数据类型。SQL Server 2008 建立在之前版本的 XML 功能基础之上,做了改进来迎接客户在和数据库中的 XML 数据时所的。在 SQL Server 2008 中与 XML 相
43、关的主要改进包括如下几方面。改进了 schema 的验证能力。增强了对 XQuery 的支持。增强了 XML 数据语言(DML)的功能。增强了 XML schema 验证功能用户可以使用一个或多个XSD schema 执行遵从性检查,以此来验证 XML 数据。一个 schema为某个特定的 XML 数据结构定义被允许的 XML 元素和属性,并通常用于确保 XML 文档按正确的结构包含进了所要求的所有数据元素。在 SQL Server 2005 中的 XML schema 支持实现了一个广泛的纯 XML schema 规格的子集,并涵盖了最常见的 XML 验证场景。SQL Server 2008
44、 扩展了这个支持,使得它包含下面新增加的由客户确定的 schema 验证要求。对 lax 验证的支持。对 datetime、time 和 date 验证的完全支持,包括时区信息的保存。改进了对 union 和 list 类型的支持。增强了 XQuerySQL Server 2005 所支持的XQuery 语法包括被称作FLWOR 表达式的FOR、WHERE、ORDERBY 和 RETURN 条件子句,用户可以使用它来循环迭代一个 XML 文档的节点和返回结果值。SQL Server 2008 增加了对 LET 条件子句的支持,它是用来在 XQuery 表达式中对变量进行赋值的,例如下面的示例:
45、DECLAREx XMLSET SunanItemItem/ZhuHongtaoItem ProductID=2 Price=1.99ty=1/s x.query(for $in /s/let $count :=count($ order by $count return/Items/Item)$/Customer$count)运行上述例子将会返回下面的 XML 结果: ZhuHongtao 1 Sunan 33XML DML 增强像使用 XQuery 表达式对 XML 数据执行操作一样,XML 数据类型支持 XML DML 表达式,通过它的 modify 方法来执行 INSERT、REPLA
46、CE VALUE of 和 DELETE 操作。还可以使用这些XML DML 表达式来一个 XML 列或变量中的 XML 数据。SQL Server 2008 增加了对在一个要执行XML 数据到一个现有的 XML 结构中去的INSERT 表达式中使用 XML 变量的支持。例如,假设这里包括一个名为BooksList 的 XML 变量:C# 2008 入门经典 网络服务器安全配置现在,可以使用下面的代码将一本新的书籍到产品列表中:DECLARE newBook xmlSET newBook = 数据库系统原理与应用 SET BooksList.modify(insert sql:variable
47、(newBook) as lasto (/Books)1)运行了这个代码之后,BooksList 变量会包括以下 XML。C# 2008 入门经典 网络服务器安全配置数据库系统原理与应用1.6.5Tran-SQL 语言增强SQL Server 2008 再次对 Tran-SQL 语句进行了进一步增强,本节将会对这些功能进行简要介绍和描述。1Tran-SQL 行构造器Tran例如:-SQL 行构造器(Row Constructors)用来在 INSERT 语句中多行数据。CREATE TABLE #a (Column1 nvarchar(max), Column2 nvarchar(max);
48、GOINSERTO #a VALUES (1, 1),(2, 2);2FORFOREEK 提示EEK 是一个新的表提示(Table Hs),它用来指定 SQL Server 查询优化程序如何更高效地执行查询。该提示指示优化程序对查询的表和视图通过索引检索来作为唯一的查询执行路径,也就是强制通过索引检索数据。3GROU新的 TranSETS-SQL 对 GROUP BY 子句增加了 GROUSETS、ROLLUP 和 CUBE 操作符。还有一个新的函数 grou_id(),它相比 grou()函数返回分组级别的信息。WITHROLLUP、WITH CUBE 和 ALL 等非 ISO 标准语法已经
49、不再有效。4兼容性级别新的ALTER DATABASE SET COMPATIBILITY_LEVEL 语法替换了程。它用来设置特定数据库的兼容性级别。其语法形式为:plevel过ALTER DATABASE database_nameSET COMPATIBILITY_LEVEL = 80 | 90 | 100 用户可以为以 database_name 为名称的数据库设置特定兼容性级别,其中参数的可选值:80、90 和 100 分别代表 SQL Server 2000、SQL Server 2005 和 SQL Server 2008。5用户自定义表数据类型现在,SQL Server 提供一种新的用户自定义数据类型自定义表数据类型(Use
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 60947:2025 SER EN-FR Low-voltage switchgear and controlgear - ALL PARTS
- 山东省德州市第二中学2024-2025学年高三上学期第三次学情检测历史试题(含答案)
- 广东省肇庆市2025届高中毕业班第二次模拟考试生物学试题(含答案)
- 重大版小学英语四年级上册期末试卷(含答案含听力原文无音频)
- 2025年度大型储藏室购置与仓储运营管理合同3篇
- 2024设计图纸合同-智能家居系统设计3篇
- 2024版基础设施施工协议
- 2024年游览的景物作文300字
- 2024版电商园区供应链合同
- 2024润滑油品牌授权合作合同样本3篇
- 教育管理学课件-管理、教育管理和教育管理学之概述
- 2025年广西事业单位联考招聘高频重点提升(共500题)附带答案详解
- 真需求-打开商业世界的万能钥匙
- 2025五金配件购销合同范本
- 2025年中储粮储运限公司公开招聘高频重点提升(共500题)附带答案详解
- AS16571992固定平台走道楼梯与梯子的设计施工与安装
- 《锂离子电池用二氟草酸硼酸锂》
- 【MOOC】《形势与政策》(北京科技大学)中国大学MOOC慕课答案
- 中学生心理健康教育主题班会课件
- 税务新政策培训
- 2024-2030年中国第三方检测认证行业发展创新模式及投资规划分析报告版
评论
0/150
提交评论