sqlserver培训资料.ppt
Sqlserver 2000,技术支持部整理、转载 2005年2月,提纲,1.Sqlserver简介2.Transact sql语言3.服务器管理4.数据库管理5.数据库对象操作6.Sqlserver权限管理7.Sqlserver代理服务8.Sqlserver数据复制9.Sqlserver数据转换,技术支持法则,请牢记以下内容法则一:在做任何维护操作以前,将数据做一次安全的备份法则二:利用替换法进行问题对比分析(新建一个帐套、打开另外一个帐套、换到另外一台机器、用一个不同的版本),内 容 简 介,SQL Server 2000是Microsoft公司最新推出的大型数据库管理系统,它建立在成熟而强大的关系模型基础上,可以很好地支持客户机/服务器网络模式,能够满足各种类型的企事业单位对构建网络数据库的需求,并且在易用性、可扩展性、可靠性以及数据仓库等方面确立了世界领先的地位。,第1章 SQL Server 关系数据库简介,1.1 SQL Server 特点 1.2 SQL Server的安装和配置1.3 SQL Server 工具和实用程序,SQL Server 关系数据库简介,SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。SQL Server近年来不断更新版本,1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和用户见面;SQL Server 2000是Microsoft公司于2000年推出的最新版本。,1.1 SQL Server 特点,1真正的客户机/服务器体系结构。2图形化用户界面,使系统管理和数据库管理更加直观、简单。3丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。4SQL Server与Windows NT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。SQL Server也可以很好地与Microsoft BackOffice产品集成。,1.1 SQL Server 特点,5具有很好的伸缩性,可跨越从运行Windows 95/98,xp的膝上型电脑到运行Windows 2000的大型多处理器等多种平台使用。6对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上。7SQL Server提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMS中才有。,SQL Server 2000与以前版本相比较又具有以下新特性,1支持XML(Extensive Markup Language,扩展标记语言)2强大的基于Web的分析3支持OLE DB和多种查询4支持分布式的分区视图,1.2.1 SQL Server 本版,SQL Server 2000常见的版本 企业版(Enterprise Edition)标准版(Standard Edition)个人版(Personal Edition)开发者版(Developer Edition),1、安装、运行SQL Server 2000的硬件需求,(1)计算机Inter及其兼容计算机,Pentium 166Mz或者更高处理器或DEC Alpha和其兼容系统。(2)内存(RAM)企业版最少64MB内存,其他版本最少需要32MB内存,建议使用更多的内存。(3)硬盘空间完全安装(Full)需要180MB的空间,典型安装(Typical)需要170MB的空间,最小安装(Minimum)需要65MB的空间,只安装管理工具Client tools only 90 MB。,2、安装、运行SQL Server 2000的软件需求,SQL Server 2000企业版必须运行于安装Windows NT Server Enterprise Edition 4.0或者Windows2000 Advanced Server以及更高版本的操作系统下。SQL Server 2000标准版必须运行于安装Windows NT Server Enterprise Edition 4.0、Windows NT Server 4.0、Windows 2000 Server以及更高版本的操作系统下。SQL Server 2000 个人版可在多种操作系统下运行,如可运行于Windows 9x,Windows NT 4.0或Windows 2000的服务器版或工作站版的操作系统下。SQL Server 2000 开发者版可运行于上述Windows 9x以外的所有操作系统下。,1.2.2 SQL Server 2000的安装,SQL Server 2000的安装过程与其它Microsoft Windows系列产品类似。用户可根据向导提示,选择需要的选项一步一步地完成。,1.2.3 SQL Server 升级,如果计算机中安装有旧的SQL Server版本,那么安装SQL Server 2000时需要做以下工作,以确保系统能退回到升级前的状态。1.检查操作系统是否满足安装要求。2.检查磁盘空间是否足够安装新的SQL Server 2000版本。3.备份包括系统数据库在内的所有数据库。4.备份操作系统的注册表,用于恢复原有的SQL Server。5.关闭任何与旧的SQL Server相关的应用程序。6.安装SQL Server 2000数据库管理系统。,1.2.4 SQL Server 系统数据库简介,SQL Server 2000有6个系统数据库 1.Master数据库是SQL Server系统最重要的数据库,它记录了SQL Server系统的所有系统信息。这些系统信息包括所有的登录信息、系统设置信息、SQL Server的初始化信息和其它系统数据库及用户数据库的相关信息。2.Model数据库是所有用户数据库和Tempdb数据库的模板数据库,它含有Master数据库所有系统表的子集,这些系统数据库是每个用户定义数据库需要的。,1.2.4 SQL Server 系统数据库简介,3.Msdb数据库是代理服务数据库,为其警报、任务调度和记录操作员的操作提供存储空间。4.Tempdb是一个临时数据库,它为所有的临时表、临时存储过程及其它临时操作提供存储空间。5.Pubs和Northwind数据库是两个实例数据库,它们可以作为SQL Server的学习工具。,1.2.5 SQL Server 系统表简介,系统目录是由描述SQL Server 系统的数据库、基表、视图和索引等对象的结构的系统表组成。SQL Server 经常访问系统目录,检索系统正常运行所需的必要信息。,几个最重要的系统表 1,1.Sysobjects表SQL Server 的主系统表sysobjects出现在每个数据库中,它对每个数据库对象含有一行记录。2.Syscolumns表系统表syscolumns出现在master数据库和每个用户自定义的数据库中,它对基表或者视图的每个列和存储过程中的每个参数含有一行记录。3.Sysindexes表系统表sysindexes出现在master数据库和每个用户自定义的数据库中,它对每个索引和没有聚簇索引的每个表含有一行记录,它还对包括文本/图像数据的每个表含有一行记录。,几个最重要的系统表 2,4.Sysusers表系统表sysusers出现在master数据库和每个用户自定义的数据库中,它对整个数据库中的每个Windows NT用户、Windows NT用户组、SQL Server 用户或者SQL Server 角色含有一行记录。5.Sysdatabases表系统表sysdatabases对SQL Server 系统上的每个系统数据库和用户自定义的数据库含有一行记录,它只出现在master数据库中。,几个最重要的系统表 3,6.Sysdepends表系统表Sysdepends对表、视图和存储过程之间的每个依赖关系含有一行记录,它出现在master数据库和每个用户自定义的数据库中。7.Sysconstraints表系统表sysconstraints对使用CREATE TABLE或者ALTER TABLE语句为数据库对象定义的每个完整性约束含有一行记录,它出现在master数据库和每个用户自定义的数据库中。,1.3 SQL Server 工具和实用程序,1.3.1 企业管理器1.3.2 服务管理器1.3.3 查询分析器1.3.4 分布式事务处理协调器1.3.5 性能监视器,1.3.6 导入和导出数据1.3.7 SQL Server 分析器1.3.8 服务器网络实用工具 客户端网络实用工具1.3.10 联机帮助文档,1.3.1 企业管理器,企业管理器是基于一种新的被称为微软管理控制台(Microsoft Management Console)的公共服务器管理环境,它是SQL Server中最重要的一个管理工具。企业管理器不仅能够配置系统环境和管理SQL Server,而且由于它能够以层叠列表的形式来显示所有的SQL Server对象,因而所有SQL Server对象的建立与管理都可以通过它来完成。,利用企业管理器可以完成的操作有,管理SQL Server 服务器;建立与管理数据库;建立与管理表、视图、存储过程、触发程序、角色、规则、默认值等数据库对象,以及用户定义的数据类型;备份数据库和事务日志、恢复数据库;复制数据库;设置任务调度;设置警报;提供跨服务器的拖放控制操作;管理用户帐户;建立Transact-SQL命令语句以及管理和控制SQL Mail。,图:SQL Server 企业管理器(Enterprise Manager)界面,1.3.2 服务管理器(Service Manager),SQL Server 服务管理器是在服务器端实际工作时最有用的实用程序,其界面如图1-21所示。服务管理器用来启动、暂停、继续和停止数据库服务器的实时服务,其提供的服务包括:SQL Server、SQL Server Agent、MSDTC(Microsoft Distributed Transaction Coordinator,微软分布式事务协调器),microsoft search。,图:SQL Server 服务管理器(Service Manager)界面,1.3.3 查询分析器(Query Analyzer),SQL Server 2000新的图形化查询分析器用于输入和执行Transaction-SQL语句,并且迅速查看这些语句的结果,以分析和处理数据库中的数据。这是一个非常实用的工具,对掌握SQL语言,深入理解SQL Server的管理工作有很大帮助。,1.3.4 分布式事务处理协调器(Distributed Transaction Coordinator),用于提供和管理不同服务器之间的分布式事务处理,这些服务器必须是基于Windows NT或Windows 9x/2000系列操作系统的服务器。,性能监视器(Performance Monitor),它将Windows NT操作系统的性能监视器和SQL Server集成起来,使用它可以查看和统计SQL Server系统的运行情况,查找影响系统性能的主要因素,从而为改进和优化系统、提高系统性能提供依据。,1.3.6 导入和导出数据(Imput and Export Data,导入和导出数据采用DTC 导入/导出向导来完成。此向导包含了所有的DTC(Data Transformation Services)工具,提供了在OLE DB数据源之间复制数据的最简捷的方法。,1.3.7 SQL Server 分析器(Profiler),是一个图形化的管理工具,用于监督、记录和检查SQL Server 数据库的使用情况。对系统管理员来说,它是一个连续实时地捕获用户活动情况的间谍。,1.3.7 SQL Server 分析器(Profiler),是一个图形化的管理工具,用于监督、记录和检查SQL Server 数据库的使用情况。对系统管理员来说,它是一个连续实时地捕获用户活动情况的间谍。,1.3.8 服务器网络实用工具(Server Network Utility),用来配置服务器端网络连接和设置相关参数等,1.3.9 客户端网络实用工具(Client Network Utility),用来配置客户端的网络连接、管理和测定客户端的网络库等。,1.3.10 联机帮助文档(Books Online),SQL Server 2000提供了大量的联机文档,它具有索引和全文搜索能力,可根据关键词来快速查找用户所需信息。,第2章 Transact-SQL语言,2.1 数据定义语言(DDL)2.2 数据操纵语言(DML)2.3 数据控制语言(DCL)2.4 系统存储过程2.5 其它语言元素,Transact-SQL语言主要组成部分,数据定义语言(DDL,Data Definition Language)数据操纵语言(DML,Data Manipularion Language)数据控制语言(DCL,Data Control Language)系统存储过程(System Stored Procedure)一些附加的语言元素,2.1 数据定义语言(DDL),数据定义语言是指用来定义和管理数据库以及数据库中的各种对象的语句,这些语句包括CREATE、ALTER和DROP等语句。在SQL Server 2000中,数据库对象包括表、视图、触发器、存储过程、规则、缺省、用户自定义的数据类型等。这些对象的创建、修改和删除等都可以通过使用CREATE、ALTER、DROP等语句来完成。,程序清单2-1:创建数据库表的一个例子,CREATE TABLE publishers(pub_id char(4)NOT NULL CONSTRAINT UPKCL_pubind PRIMARY KEY CLUSTERED CHECK(pub_id IN(1389,0736,0877,1622,1756)OR pub_id LIKE 990-90-9),pub_name varchar(40)NULL,city varchar(20)NULL,state char(2)NULL,country varchar(30)NULL DEFAULT(USA),USE pubsGOALTER VIEW yourviewASSELECT title,mycount=ROWCOUNT,ytd_sales FROM titles WHERE type=mod_cookGOSELECT*FROM yourviewGO,程序清单2-2:修改视图的一个例子,程序清单2-3:删除触发器的一个例子,/*下面的例子将删除触发器employee_insupd。*/USE pubsIF EXISTS(SELECT name FROM sysobjects WHERE name=employee_insupd AND type=TR)DROP TRIGGER employee_insupdGO,2.2 数据操纵语言(DML),数据操纵语言是指用来查询、添加、修改和删除数据库中数据的语句,这些语句包括SELECT、INSERT、UPDATE、DELETE等。在默认情况下,只有sysadmin、dbcreator、db_owner或db_datawriter等角色的成员才有权利执行数据操纵语言。,1、SELECT语句,SELECT语句的语法形式如下:SELECT select_list INTO new_table FROM table_source WHERE search_condition GROUP BY group_by_expression HAVING search_condition ORDER BY order_expression ASC|DESC COMPUTE clauseFOR BROWSE,几种常用语句的用法1,SELECT子句用于指定所选择的要查询的特定表中的列,它可以是星号(*)、表达式、列表、变量等。INTO子句用于指定所要生成的新表的名称。FROM子句用于指定要查询的表或者视图,最多可以指定16个表或者视图,用逗号相互隔开。WHERE子句用来限定查询的范围和条件。GROUP BY子句是分组查询子句。HAVING子句用于指定分组子句的条件。,几种常用语句的用法 2,GROUP BY子句、HAVING子句和集合函数一起可以实现对每个组生成一行和一个汇总值。ORDER BY子句可以根据一个列或者多个列来排序查询结果,在该子句中,既可以使用列名,也可以使用相对列号。ASC表示升序排列,DESC表示降序排列。COMPUTE子句使用集合函数在查询的结果集中生成汇总行。COMPUTE BY子句用于增加各列汇总行。,SELECT子句的语法形式,SELECT子句的语法形式如下所示:SELECT ALL|DISTINCT TOP n PERCENT WITH TIES:=*|table_name|view_name|table_alias.*|column_name|expression|IDENTITYCOL|ROWGUIDCOL AS column_alias|column_alias=expression,.n,程序清单2-4:显示居住在加利福尼亚州且姓名不为 McBadden 的作者列,USE pubsSELECT au_fname,au_lname,phone AS TelephoneFROM authorsWHERE state=CA and au_lname McBaddenORDER BY au_lname ASC,au_fname ASC,程序清单2-5:使用两个相关子查询查找作者姓名,这些作者至少参与过一本受欢迎的计算机书籍的创作。,USE pubsSELECT au_lname,au_fnameFROM authorsWHERE au_id IN(SELECT au_id FROM titleauthor WHERE title_id IN(SELECT title_id FROM titlesWHERE type=popular_comp),程序清单2-6:显示含有本年度截止到现在的当前销售额的行,然后按type以递减顺序计算书籍的平均价格和预付款总额。,USE pubsSELECT CAST(title AS char(20)AS title,type,price,advanceFROM titlesWHERE ytd_sales IS NOT NULLORDER BY type DESCCOMPUTE AVG(price),SUM(advance)BY typeCOMPUTE SUM(price),SUM(advance),程序清单2-7:先删除表T1,然后又创建一个带有四个列的表T1。最后利用INSERT 语句插入一些数据行,这些行只有部分列包含值。,IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME=T1)DROP TABLE T1GOCREATE TABLE T1(column_1 int identity,column_2 varchar(30)CONSTRAINT default_name DEFAULT(column default),续,column_3 int NULL,column_4 varchar(40)INSERT INTO T1(column_4)VALUES(Explicit value)INSERT INTO T1(column_2,column_4)VALUES(Explicit value,Explicit value)INSERT INTO T1(column_2,column_3,column_4)VALUES(Explicit value,-44,Explicit value)SELECT*FROM T1,程序清单2-8:一个简单的修改更新语句,UPDATE publishersSET city=Atlanta,state=GA,程序清单2-9:一个带有WHERE条件的修改语句,UPDATE authors SET state=PC,city=Bay City WHERE state=CA AND city=Oakland,程序清单2-10:通过 UPDATE 语句使用来自另一个表的信息,其修改表 titles 中的 ytd_sales 列,以反映表 sales 中的最新销售记录,UPDATE titles SET ytd_sales=titles.ytd_sales+sales.qty FROM titles,sales WHERE titles.title_id=sales.title_id AND sales.ord_date=(SELECT MAX(sales.ord_date)FROM sales),2.3 数据控制语言(DCL),数据控制语言(DCL)是用来设置或者更改数据库用户或角色权限的语句,这些语句包括GRANT、DENY、REVOKE等语句,在默认状态下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成员才有权利执行数据控制语言。,1、GRANT语句,GRANT语句是授权语句,它可以把语句权限或者对象权限授予给其他用户和角色。授予语句权限的语法形式为:GRANT ALL|statement,.n TO security_account,.n,授予对象权限的语法形式为:,GRANT ALL PRIVILEGES|permission,.n(column,.n)ON table|view|ON table|view(column,.n)|ON stored_procedure|extended_procedure|ON user_defined_function TO security_account,.n WITH GRANT OPTION AS group|role,2、DENY语句,DENY语句用于拒绝给当前数据库内的用户或者角色授予权限,并防止用户或角色通过其组或角色成员继承权限。否定语句权限的语法形式为:DENY ALL|statement,.n TO security_account,.n,否定对象权限的语法形式为:,DENY ALL PRIVILEGES|permission,.n(column,.n)ON table|view|ON table|view(column,.n)|ON stored_procedure|extended_procedure|ON user_defined_function TO security_account,.n CASCADE,3、REVOKE语句,REVOKE语句是与GRANT语句相反的语句,它能够将以前在当前数据库内的用户或者角色上授予或拒绝的权限删除,但是该语句并不影响用户或者角色从其他角色中作为成员继承过来的权限。收回语句权限的语法形式为:REVOKE ALL|statement,.n FROM security_account,.n,收回对象权限的语法形式为:,REVOKE GRANT OPTION FOR ALL PRIVILEGES|permission,.n(column,.n)ON table|view|ON table|view(column,.n)|ON stored_procedure|extended_procedure|ON user_defined_function TO|FROM security_account,.n CASCADE AS group|role,2.4 系统存储过程,系统存储过程是SQL Server系统创建的存储过程,它的目的在于能够方便地从系统表中查询信息,或者完成与更新数据库表相关的管理任务或其它的系统管理任务。系统存储过程可以在任意一个数据库中执行。系统存储过程创建并存放于系统数据库master中,并且名称以sp_或者xp_开头。,系统存储过程的部分示例如下:,sp_addtype:用于定义一个用户定义数据类型。sp_configure:用于管理服务器配置选项设置。xp_sendmail:用于发送电子邮件或寻呼信息。sp_stored_procedures:用于返回当前数据库中的存储过程的清单。,sp_help:用于显示参数清单和其数据类型。sp_depends:用于显示存储过程依据的对象或者依据存储过程的对象。sp_helptext:用于显示存储过程的定义文本。sp_rename:用于修改当前数据库中用户对象的名称。,系统存储过程的部分示例如下:,2.5 其它语言元素,2.5.1 注释2.5.2 变量2.5.3 运算符2.5.4 函数2.5.5 流程控制语句,2.5.1 注释,注释是程序代码中不执行的文本字符串(也称为注解)。在SQL Server中,可以使用两种类型的注释字符:一种是ANSI标准的注释符“-”,它用于单行注释;另一种是与C语言相同的程序注释符号,即“/*/”。,2.5.2 变量,变量是一种语言中必不可少的组成部分。Transact-SQL语言中有两种形式的变量,一种是用户自己定义的局部变量,另外一种是系统提供的全局变量。,1.局部变量,局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限制在程序内部。局部变量可以作为计数器来计算循环执行的次数,或是控制循环执行的次数。另外,利用局部变量还可以保存数据值,以供控制流语句测试以及保存由存储过程返回的数据值等。局部变量被引用时要在其名称前加上标志“”,而且必须先用DECLARE命令定义后才可以使用。,2.全局变量,全局变量是SQL Server系统内部使用的变量,其作用范围并不仅仅局限于某一程序,而是任何程序均可以随时调用。全局变量通常存储一些SQL Server的配置设定值和统计数据。用户可以在程序中用全局变量来测试系统的设定值或者是Transact-SQL命令执行后的状态值。,使用全局变量时应该注意以下几点:,全局变量不是由用户的程序定义的,它们是在服务器级定义的。用户只能使用预先定义的全局变量。引用全局变量时,必须以标记符“”开头。局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。,2.5.3 运算符,运算符是一些符号,它们能够用来执行算术运算、字符串连接、赋值以及在字段、常量和变量之间进行比较。在SQL Server 2000中,运算符主要有以下六大类:算术运算符、赋值运算符、位运算符、比较运算符、逻辑运算符以及字符串串联运算符。,1算术运算符,算术运算符可以在两个表达式上执行数学运算,这两个表达式可以是数字数据类型分类的任何数据类型。算术运算符包括加(+)、减()、乘(*)、除(/)和取模(%)。,1算术运算符,算术运算符可以在两个表达式上执行数学运算,这两个表达式可以是数字数据类型分类的任何数据类型。算术运算符包括加(+)、减()、乘(*)、除(/)和取模(%)。,2赋值运算符,Transact-SQL 中只有一个赋值运算符,即等号(=)。赋值运算符使我们能够将数据值指派给特定的对象。另外,还可以使用赋值运算符在列标题和为列定义值的表达式之间建立关系。,3位运算符,位运算符使我们能够在整型数据或者二进制数据(image 数据类型除外)之间执行位操作。此外,在位运算符左右两侧的操作数不能同时是二进制数据。,表2-1 位运算符,4比较运算符,比较运算符用于比较两个表达式的大小或是否相同,其比较的结果是布尔值,即TRUE(表示表达式的结果为真)、FALSE(表示表达式的结果为假)以及UNKNOWN。除了 text、ntext 或 image 数据类型的表达式外,比较运算符可以用于所有的表达式。,5逻辑运算符,逻辑运算符可以把多个逻辑表达式连接起来。逻辑运算符包括AND、OR和NOT等运算符。逻辑运算符和比较运算符一样,返回带有 TRUE 或 FALSE 值的布尔数据类型。,6字符串串联运算符,字符串串联运算符允许通过加号(+)进行字符串串联,这个加号即被称为字符串串联运算符。例如对于语句SELECT abc+def,其结果为abcdef。,运算符的优先等级从高到低如下所示,括号:();乘、除、求模运算符:*、/、%;加减运算符:+、-;比较运算符:=、=、!=、!、!;位运算符:、&、|;逻辑运算符:NOT;逻辑运算符:AND;逻辑运算符:OR。,2.5.4 函数,在Transact-SQL语言中,函数被用来执行一些特殊的运算以支持SQL Server的标准命令。Transact-SQL 编程语言提供了三种函数:行集函数:行集函数可以在Transact-SQL语句中当作表引用。聚合函数:聚合函数用于对一组值执行计算并返回一个单一的值。标量函数:标量函数用于对传递给它的一个或者多个参数值进行处理和计算,并返回一个单一的值。,SQL Server中最常用的几种函数,字符串函数日期和时间函数数学函数转换函数系统函数聚合函数其它函数,字符串函数,字符串函数可以对二进制数据、字符串和表达式执行不同的运算,大多数字符串函数只能用于char和varchar数据类型以及明确转换成char和varchar的数据类型,少数几个字符串函数也可以用于binary和varbinary数据类型。此外,某些字符串函数还能够处理text、ntext、image数据类型的数据。,字符串函数的分类:,基本字符串函数:UPPER、LOWER、SPACE、REPLICATE、STUFF、REVERSE、LTRIM、RTRIM。字符串查找函数:CHARINDEX、PATINDEX。长度和分析函数:DATALENGTH、SUBSTRING、RIGHT。转换函数:ASCH、CHAR、STR、SOUNDEX、DIFFERENCE。,2日期和时间函数,日期和时间函数用于对日期和时间数据进行各种不同的处理和运算,并返回一个字符串、数字值或日期和时间值。在SQL Server 2000中,日期和时间函数的类型如表2-5所示;另外,表2-6列出了日期类型的名称、缩写形式以及可接受的值。,表2-5 日期和时间函数的类型,程序清单2-33:从GETDATE函数返回的日期中提取月份数。,SELECT DATEPART(month,GETDATE()AS Month Number运行结果为:Month Number-5,程序清单2-34:从日期 03/12/1998 中返回月份数、天数和年份数,SELECT MONTH(5/29/2003)as 月,DAY(5/29/2003)as 日,YEAR(5/29/2003)年运行结果为:月 日 年-5 29 2003,3数学函数,数学函数用于对数字表达式进行数学运算并返回运算结果。数学函数可以对SQL Server提供的数字数据(decimal、integer、float、real、money、smallmoney、smallint 和 tinyint)进行处理。,程序清单2-35,在同一表达式中使用CEILING()、FLOOR()、ROUND()函数。select ceiling(13.4),floor(13.4),round(13.4567,3)运行结果为:-14 13 13.4570,4转换函数,一般情况下,SQL Server会自动处理某些数据类型的转换。例如,如果比较 char 和 datetime 表达式、smallint 和 int 表达式、或不同长度的 char 表达式,SQL Server 可以将它们自动转换,这种转换被称为隐性转换。但是,无法由SQL Server自动转换的或者是SQL Server自动转换的结果不符合预期结果的,就需要使用转换函数做显示转换。转换函数有两个:CONVERT和CAST。,CONVERT和CAST函数,CAST(expression AS data_type)CONVERT函数允许用户把表达式从一种数据类型转换成另一种数据类型,还允许把日期转换成不同的样式。其语法形式为:CONVERT(data_type(length),expression,style),程序清单2-36:,USE pubsSELECT title,ytd_salesFROM titlesWHERE CAST(ytd_sales AS char(20)LIKE 15%AND type=trad_cook运行结果为:Title ytd_sales-Fifty Years in Buckingham Palace Kitchens15096,5系统函数,系统函数用于返回有关SQL Server系统、用户、数据库和数据库对象的信息。系统函数可以让用户在得到信息后,使用条件语句,根据返回的信息进行不同的操作。与其它函数一样,可以在SELECT语句的SELECT和WHERE子句以及表达式中使用系统函数。,程序清单2-38,返回 Northwind 数据库的 Employees 表中的首列的名称。USE NorthwindSELECT COL_NAME(OBJECT_ID(Employees),1)运行结果为:EmployeeID,6聚合函数,聚合函数可以返回整个或者几个列或者一个列的汇总数据,它常用来计算SELECT语句查询的统计值。聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用。常用的聚合函数 应用举例,程序清单2-41至2-44如下:,程序清单2-41,select avg e_wage as dept_avgWagefrom employeegroup by dept_id,程序清单2-42,select dept_id as dept_id count*as e_numfrom employeegroup by dept_idhaving count*3,2.5.5 流程控制语句,流程控制语句是指那些用来控制程序执行和流程分支的命令,在SQL Server 2000中,流程控制语句主要用来控制SQL语句、语句块或者存储过程的执行流程。,1 IFELSE语句,IFELSE语句是条件判断语句,其中,ELSE子句是可选的,最简单的IF语句没有ELSE子句部分。IFELSE语句用来判断当某一条件成立时执行某段程序,条件不成立时执行另一段程序。SQL Server允许嵌套使用IFELSE语句,而且嵌套层数没有限制。,IFELSE语句的语法形式,IF Boolean_expression sql_statement|statement_block ELSE sql_statement|statement_block,2BEGINEND语句,BEGINEND语句能够将多个Transact-SQL语句组合成一个语句块,并将它们视为一个单元处理。在条件语句和循环等控制流程语句中,当符合特定条件便要执行两个或者多个语句时,就需要使用BEGINEND语句,其语法形式为:BEGIN sql_statement|statement_block END,3CASE函数,CASE函数可以计算多个条件式,并将其中一个符合条件的结果表达式返回。CASE函数按照使用形式的不同,可以分为简单CASE函数和搜索CASE函数。,1、CASE函数的语法形式,CASE input_expressionWHEN when_expression THEN result_expression.n ELSE else_result_expressionEND,2、搜索 CASE函数的语法形式,CASEWHEN Boolean_expression THEN result_e