SQL Server 2000 数据库管理系统

上传人:仙*** 文档编号:33627206 上传时间:2021-10-18 格式:PPT 页数:179 大小:585.50KB
返回 下载 相关 举报
SQL Server 2000 数据库管理系统_第1页
第1页 / 共179页
SQL Server 2000 数据库管理系统_第2页
第2页 / 共179页
SQL Server 2000 数据库管理系统_第3页
第3页 / 共179页
点击查看更多>>
资源描述
1SQL Server 2000SQL Server 2000数据库管理系统数据库管理系统 2关于关于 SQL Server SQL Server SQL Server SQL Server 是一个是一个关系数据库关系数据库管理系统。管理系统。它最初是由它最初是由MicrosoftMicrosoft、SybaseSybase和和Ashton-TateAshton-Tate三三家公司联合开发的,于家公司联合开发的,于19881988年推出了第一个年推出了第一个OS/2OS/2版版本。本。后来,后来,Ashton-TateAshton-Tate公司退出了公司退出了SQL ServerSQL Server的开发。的开发。而在而在Windows NTWindows NT推出后,推出后,MicrosoftMicrosoft与与SybaseSybase在在SQL ServerSQL Server的开发上就分道扬镳了:的开发上就分道扬镳了:vMicrosoftMicrosoft将将SQL Server SQL Server 移植到移植到Windows NTWindows NT系统上,系统上,专注于开发推广专注于开发推广SQL ServerSQL Server的的Windows NTWindows NT版本;版本;vSybase Sybase 则较专注于则较专注于SQL ServerSQL Server在在UNIXUNIX操作系统上的操作系统上的应用。应用。我们介绍的是我们介绍的是Microsoft SQL ServerMicrosoft SQL Server 。3 SQL ServerSQL Server 2000 2000是是MicrosoftMicrosoft公司推出的公司推出的SQL SQL ServerServer数据库管理系统的一个重要版本。数据库管理系统的一个重要版本。该版本继承了该版本继承了SQL Server 4.0SQL Server 4.0版本的优点,同版本的优点,同时又比它增加了许多更先进的功能:时又比它增加了许多更先进的功能:v具有具有使用方便使用方便、可伸缩性好可伸缩性好与相关软件与相关软件集成程度高集成程度高等优点。等优点。v可跨越从运行可跨越从运行Microsoft Windows Microsoft Windows 9898的膝上型电脑的膝上型电脑到运行到运行Microsoft Windows Microsoft Windows 20002000的大型多处理器的服的大型多处理器的服务器等多种平台使用。务器等多种平台使用。SQL Server 2000SQL Server 2000包括包括4 4个常见版本:个常见版本: 4(1 1)企业版()企业版(Enterprise EditionEnterprise Edition)q 支持所有的SQL Server 2000 特性,可作为大型Web 站点、企业OLTP(联机事务处理)以及数据仓库系统等的产品数据库服务器。(2 2)标准版()标准版(Standard EditionStandard Edition)q 用于小型的工作组或部门。(3 3)个人版()个人版(Personal EditionPersonal Edition)q 用于单机系统或客户机。(4 4)开发者版()开发者版(Developer EditionDeveloper Edition)q 用于程序员开发应用程序,这些程序需要SQL Server 2000 作为数据存储设备。v此外,此外,SQL Server 2000 SQL Server 2000 还有还有Desktop EngineDesktop Engine(桌(桌面引擎)和面引擎)和Windows CEWindows CE 版,用户可以根据实际情况选版,用户可以根据实际情况选择所要安装的择所要安装的SQL Server 2000 SQL Server 2000 版本。版本。 54.14.1SQL Server 2000SQL Server 2000的新特性的新特性 4.1.14.1.1数据库增强数据库增强 1. 1. 支持扩展标示语言支持扩展标示语言XMLXML(Extensible Markup LanguageExtensible Markup Language)SQL Server 2000 SQL Server 2000 对对XML XML 的支持表现在以下几个方面:的支持表现在以下几个方面:q可以通过URL(Uniform Resource Locator)访问SQL Serverq支持XML-Data 模式q可检索编写XML 数据qSQL Server 2000 OLE DB 增加了对XML 文档的支持2. 2. 新的数据类型新的数据类型qSQL Server 2000 中增加了3 种新的数据类型:BIGINT、SQL_VARIANT和TABLE。3. 3. 数据行中的数据行中的TextText类型数据类型数据q SQL Server 2000 中可以将TEXT 和IMAGE 类型的数据直接存放到表的数据行中,而不是存放到不同的数据页中,这就减少了用于存储TEXT 和IMAGE 类型的空间并相应减少了磁盘处理这类数据的I/O 数量。64. 4. 用户自定义函数用户自定义函数q SQL Server 2000 扩展了Transact-SQL语言的可编程性,用户可以创建自己的Transact-SQL函数。用户自定义函数可以返回一个数量值或表。5. 5. 索引增强索引增强q 可以在计算列上创建索引,这是一个很大的改进。6. 6. 全文检索增强全文检索增强q 全文检索中增加了改变跟踪和图形过滤的功能,其中,图形过滤功能允许对存储在IMAGE类型列中的文档数据进行查询和创建索引。7. 7. 索引化视图索引化视图q 索引化视图允许在视图上创建索引,这就大大提高了需要频繁进行连接查询的程序的性能。8. 8. 分布式查询增强分布式查询增强q SQL Server 2000 引入了OPENROWSET()的函数,它可以指定在分布式查询中的一个特定的连接信息,分布式查询优化器的功能有了进一步的提高,授予了OLE DB 数据源更多的SQL 操作权。9. 9. 触发器类型触发器类型q 创建触发器时可以通过FOR 子句来指定触发器类型为INSTEAD OF 型或AFTER 型,不同类型的触发器执行的时机不同。710. 10. 级联参考完整性约束级联参考完整性约束q 级联参考完整性约束可以控制在删除或更新有外键约束的数据时所采取的操作,这种控制是通过在CREATE TABLE 或ALTER TABLE 命令中的REFERENCES 子句中加入ON DELETE 或ON UPDATE 子句来实现的。11. Collation 11. Collation 增进增进q SQL Server 2000 用Collation 来替代Code pages 和Sort Orders,它比以前的版本提供了更多对Collation 的支持,并引入了一个基于Windows Collations 的新的Collation集合,可以指定数据库级或列级的Collation。 84.1.24.1.2联合数据库服务器联合数据库服务器 SQL Server 2000 SQL Server 2000 支持分布式的分区视图,可支持分布式的分区视图,可以跨越多个服务器水平地分割表。以跨越多个服务器水平地分割表。1. 1. 多个多个SQL Server SQL Server 实例实例q SQL Server 2000 支持在同一计算机上同时运行多个关系数据库实例,每个实例有其独立的系统和用户数据库集合,应用程序采用与连接不同计算机上的SQL Server 实例大致相同的方式连接同一计算机上的各个实例。2. Failover 2. Failover 群集增强群集增强q 对Failover 群集的管理有了较大的改善,可以方便地安装、配置和管理一个SQL Server 2000的Failover 群集。3. 3. 网络库(网络库(Net-LibraryNet-Library)增强)增强q 简化了客户机配置并支持同一计算机上的多实例连接。4. Kerberos 4. Kerberos 和安全授权和安全授权q SQL Server 2000 使用Kerberos 来支持客户机和服务器之间相互的身份验证,使用Kerberos 和授权来支持复合认证以及SQL Server 注册。95. 5. 备份(备份(BackupBackup)和还原()和还原(RestoreRestore)增强)增强q SQL Server 2000 引入了一个更容易理解的模型来指定备份和还原的选项,同时还支持使用事务日志标识来还原工作到指定点或进行数据库的部分还原。6. 6. 对公用操作的可伸缩性增强对公用操作的可伸缩性增强q 增强的公用操作包括快速差异备份并行的数据库一致性校验和并行扫描。7. 7. 复制增强复制增强q SQL Server 2000 改进并增强了合并复制、快照复制和事务复制等功能,并在复制中增加了可变化的订阅功能,因而实施、监视和管理复制变得更加容易。8. 8. 数据转换服务增强数据转换服务增强(1 1)支持键和约束。)支持键和约束。(2 2)DTS DTS 支持键和约束可以使用数据导入导出向导支持键和约束可以使用数据导入导出向导从源表向目标表移动主键、外键和约束。从源表向目标表移动主键、外键和约束。10(3 3)新的定制任务)新的定制任务q SQL Server 2000 DTS Designer 和DTS 对象模型提供了新的自定义任务功能从而可以创建执行任务的包或设置基于实时环境属性的变量,包括从或向Internet 以及FTP 站点导入数据、发送数据、以异步方式运行包、创建互相发送消息的包、创建执行其它包的包以及在同一事务中包含多个包执行。(4 4)将)将DTS DTS 包保存在包保存在VB VB 文件中文件中q 将DTS 包保存到Microsoft Visual Basic 文件中,可以允许将通过DTS 导入向导、DTS导出向导或DTS Designer 创建的包与Visual Basic 程序结合在一起或被需要引用DTS 对象模型组件的Visual Basic 开发者用作原型。9. SQL Server Analysis Services9. SQL Server Analysis Servicesq SQL Server 4.0 中的OLAP(Online Analytical Processing)服务转变为SQL Server 2000 中的分析服务(Analysis Services),分析服务还包括了新的数据挖掘功能。10. SQL Server Meta Data Services10. SQL Server Meta Data Servicesq SQL Server 4.0 中的贮藏室(Repository)部分在SQL Server 2000 中转化为元数据服务(Meta Data Services)。114.24.2SQL Server 2000SQL Server 2000的主要组件的主要组件 SQL Server 2000 SQL Server 2000 提供了一整套的提供了一整套的管理工具管理工具和和实用程序实用程序,使,使用这些工具和程序,可以设置和管理用这些工具和程序,可以设置和管理SQL Server SQL Server 进行数据库进行数据库管理和备份,并保证数据的安全和一致。管理和备份,并保证数据的安全和一致。下面,对这些组件做一个简单的介绍。下面,对这些组件做一个简单的介绍。1企业管理器(企业管理器(Enterprise Manager)q企业管理器是SQL Server 中最重要的管理工具,在使用SQL Server的过程中大部分的时间都是和它打交道。q通过企业管理器可以管理所有的数据库系统工作和服务器工作,也可以调用其它的管理开发工具。2查询分析器(查询分析器(Query Analyzer)q查询分析器用于执行Transaction-SQL 命令等SQL 脚本程序,以查询分析或处理数据库中的数据,这是一个非常实用的工具,对掌握SQL 语言、理解SQL Server 的工作有很大帮助。q使用查询分析器的熟练程度是衡量一个SQL Server 用户水平的标准。 123服务管理器(服务管理器(Service Manager)q服务管理器用于启动、暂停或停止SQL Server 的4种服务:、DTC(Distributed Transaction Coordinator 分布式事务协调器)MSSQL Server OLAP serviceSQL ServerSQL Server Agent4客户端网络实用工具(客户端网络实用工具(Client Network Utility)q客户端网络实用工具用于配置客户端的连接、测定网络库的版本信息以及设定本地数据库的相关选项。5服务器网络实用工具(服务器网络实用工具(Server Network Utility)q服务器网络实用工具用于配置服务器端的连接、测定网络库的版本信息。6导入和导出数据(导入和导出数据(Import and Export Data)q导入和导出数据采用 DTS Import/Export 向导来完成,此向导包含了所有的DTS(Data Transformation Services 数据转换服务)工具提供了在OLE DB数据源之间复制数据的最简捷的方法。 137.在在IIS中配置中配置SQL XML支持(支持(Configure SQL XML Support in IIS)qIIS(Internet Information Services 因特网信息服务),此工具可以在运行IIS的计算机上定义、注册虚拟目录,并在虚拟目录和SQL Server 实例之间创建关联。8事件探查器(事件探查器(Profiler)q事件探查器的功能是监视SQL Server 数据库系统引擎事件,主要用于监听SQL Server 系统的运行性能。9联机丛书(联机丛书(Books Online)qSQL Server 2000 提供了大量的联机文档,用户可以便捷地查询到许多很有价值的信息。q一个优秀的SQL Server 管理员必然是使用联机文档的高手。v另外,在安装另外,在安装SQL Server 2000 SQL Server 2000 的同时,安装了的同时,安装了SQL SQL ServerServer的升级向导的升级向导q在“开始”菜单的“程序”项中,将鼠标移到“Microsoft SQL Server版本切换”上即可看到SQL Server 升级向导。qSQL Server 升级向导用于将一个6.5 版本的SQL Server 的设置和数据库复制升级到本机上安装的SQL Server 2000 中。 144.34.3Transact-SQLTransact-SQL程序设计程序设计 在在Transact-SQL Transact-SQL 语言中标准的语言中标准的SQL SQL 语句畅通语句畅通无阻。无阻。Transact-SQL Transact-SQL 也有类似于也有类似于SQL SQL 语言的分类不语言的分类不过做了许多扩充。过做了许多扩充。在第在第3 3章中,我们曾介绍了标准章中,我们曾介绍了标准SQLSQL语言的语法语言的语法及其基本使用方法,在此只介绍及其基本使用方法,在此只介绍Transact-SQL Transact-SQL 语言中的其它部分。语言中的其它部分。4.3.14.3.1变量变量 4.3.24.3.2流程控制命令流程控制命令 4.3.34.3.3其它命令其它命令 4.3.44.3.4常用函数常用函数 154.3.1变量变量 Transact-SQL Transact-SQL 中可以使用两种变量:中可以使用两种变量:局部变量局部变量和和全局变量全局变量。 1局部变量局部变量v局部变量是用户可自定义的变量,它的作用范围仅在程序内部。局部变量是用户可自定义的变量,它的作用范围仅在程序内部。v在程序中通常用来储存从表中查询到的数据,或当作程序执行在程序中通常用来储存从表中查询到的数据,或当作程序执行过程中暂存变量使用。过程中暂存变量使用。v局部变量必须以局部变量必须以 开头,而且必须先用开头,而且必须先用DECLAREDECLARE 命令说明后才命令说明后才可使用。其说明形式如下:可使用。其说明形式如下: DECLARE 变量名 变量类型,变量名变量类型v在在Transact-SQL Transact-SQL 中不能像在一般的程序语言中一样使用中不能像在一般的程序语言中一样使用“变变量量= =变量值变量值”来给变量赋值,必须使用来给变量赋值,必须使用SELECTSELECT 或或SET SET 命令来设定命令来设定变量的值。其语法如下:变量的值。其语法如下:SELECT 局部变量= 变量值SET 局部变量量= 变量值【例例】声明一个长度为声明一个长度为 8 8 个字符的变量个字符的变量idid,并赋值。,并赋值。 declare id char(8)select id =10010001162全局变量全局变量v全局变量是全局变量是SQL Server SQL Server 系统内部使用系统内部使用的变量,其作用范围并的变量,其作用范围并不局限于某一程序,而是任何程序均可随时调用。不局限于某一程序,而是任何程序均可随时调用。v全局变量通常存储一些全局变量通常存储一些SQL Server SQL Server 的配置设定值和效能统计的配置设定值和效能统计数据。用户可在程序中用全局变量来测试系统的设定值或数据。用户可在程序中用全局变量来测试系统的设定值或Transact-SQL Transact-SQL 命令执行后的状态值。命令执行后的状态值。v全局变量不是由用户的程序定义的,它们是在服务器级定义的,全局变量不是由用户的程序定义的,它们是在服务器级定义的,只能使用预先说明及定义的全局变量。只能使用预先说明及定义的全局变量。v引用全局变量时必须以引用全局变量时必须以“”开头。开头。v局部变量的名称不能与全局变量的名称相同,否则会在应用中局部变量的名称不能与全局变量的名称相同,否则会在应用中出错。出错。3注释符注释符在在Transact-SQL Transact-SQL 中可使用两类注释符:中可使用两类注释符:1 1ANSI ANSI 标准的注释符标准的注释符“-”用于用于单行单行注释。注释。2 2与与C C 语言相同的程序注释符号,即语言相同的程序注释符号,即“/ /* * */ /”,/ /* * 用用于注释文字的开头,于注释文字的开头,* */ /用于注释文字的结尾,可在程序中标识用于注释文字的结尾,可在程序中标识多多行行文字为注释。文字为注释。 174.3.2流程控制命令流程控制命令 Transact-SQL Transact-SQL 语言使用的流程控制命令与常见的程序语言使用的流程控制命令与常见的程序设计语言类似,主要有以下几种控制命令。设计语言类似,主要有以下几种控制命令。 4.3.2.14.3.2.1BEGINBEGINENDEND其语法如下:其语法如下:BEGINBEGIN ENDENDBEGINBEGINEND END 用来设定一个用来设定一个程序块程序块,将在,将在BEGINBEGINEND END 内的所有程序视为一个单元执行。内的所有程序视为一个单元执行。BEGINBEGINEND END 经常在经常在条件语句条件语句(如(如IFIFELSEELSE)中使用。)中使用。在在BEGINBEGINEND END 中可中可嵌套嵌套另外的另外的BEGINBEGINEND END 来定义另来定义另一程序块。一程序块。 184.3.2.24.3.2.2IF IF ELSE ELSE其语法如下:其语法如下:IF IF ELSE ELSE 条件表达式式条件表达式式 其中其中: :v 可以是各种表达式的组合,但表达式的值可以是各种表达式的组合,但表达式的值必须是逻辑值必须是逻辑值“真真”或或“假假”。vELSE ELSE 子句是可选的,最简单的子句是可选的,最简单的IF IF 语句没有语句没有ELSE ELSE 子句部子句部分。分。vIFIFELSE ELSE 用来判断当某一条件成立时执行某段程序,条用来判断当某一条件成立时执行某段程序,条件不成立时执行另一段程序。件不成立时执行另一段程序。v如果不使用程序块,如果不使用程序块,IF IF 或或ELSE ELSE 只能执行一条命令。只能执行一条命令。vIF ELSE IF ELSE 可以进行嵌套,在可以进行嵌套,在Transact-SQL Transact-SQL 中最多可嵌套中最多可嵌套32 32 级。级。 19【例例】从从SCSC数据表中求出学号为数据表中求出学号为S1S1同学的平均同学的平均成绩,如果此平均成绩大于或等于成绩,如果此平均成绩大于或等于6060分,则输出分,则输出“passpass”信息。信息。if if ( (select avgselect avg(score) (score) fromfrom sc sc wherewhere sno=S1 sno=S1 group bygroup by sno)=60 sno)=60 beginbegin printprint pass pass endend 204.3.2.34.3.2.3CASECASECASE CASE 命令有两种语句格式:命令有两种语句格式:格式格式1 1:CASE CASE WHEN WHEN THEN THEN WHEN WHEN THEN THEN ELSE ELSE ENDEND该语句的执行过程是:该语句的执行过程是:v将将CASECASE后面表达式的值与各后面表达式的值与各WHENWHEN子句中的表达式的值进行比较,子句中的表达式的值进行比较,v如果二者相等,则返回如果二者相等,则返回THENTHEN后的表达式的值,然后跳出后的表达式的值,然后跳出CASECASE语语句,否则返回句,否则返回ELSEELSE子句中的表达式的值。子句中的表达式的值。vELSEELSE子句是可选项。当子句是可选项。当CASECASE语句中不包含语句中不包含ELSEELSE子句时,如果所子句时,如果所有比较失败时,有比较失败时,CASECASE语句将返回语句将返回NULLNULL。 21【例例】从学生表从学生表S S中,选取中,选取SNOSNO,SEXSEX,如果,如果SEXSEX为为“男男”则输出则输出“M M”,如果为,如果为“女女”输出输出“F F”。SELECT SNO,SELECT SNO, SEX= SEX= CASECASE sex sex WHEN WHEN 男男 THEN M THEN M WHEN WHEN 女女 THEN F THEN F END ENDFROM SFROM S 22格式格式2 2:CASECASEWHEN WHEN THEN THEN WHEN WHEN THEN THEN ELSE ELSE ENDEND该语句的执行过程是:该语句的执行过程是:v首先测试首先测试WHENWHEN后的表达式的值后的表达式的值v如果其值为真,则返回如果其值为真,则返回THENTHEN后面的表达式的值,否后面的表达式的值,否则测试下一个则测试下一个WHENWHEN子句中的表达式的值子句中的表达式的值v如果所有如果所有WHENWHEN子句后的表达式的值都为假,则返回子句后的表达式的值都为假,则返回ELSEELSE后的表达式的值后的表达式的值v如果在如果在CASECASE语句中没有语句中没有ELSEELSE子句,则子句,则CASECASE表达式返表达式返回回NULLNULL。 23注:注:CASE CASE 命令可以嵌套到命令可以嵌套到SQL SQL 命令中。命令中。【例例】从从SCSC表中查询所有同学选课成绩情况,凡成绩为表中查询所有同学选课成绩情况,凡成绩为空者输出空者输出“未考未考”、小于、小于6060分输出分输出“不及格不及格”、6060分至分至7070分输出分输出“及格及格”、7070分至分至9090分输出分输出“良好良好”、大于或、大于或等于等于9090分时输出分时输出“优秀优秀”。SELECT SNO,CNO, SELECT SNO,CNO, SCORE= SCORE= CASE CASE WHEN SCORE IS NULL THEN WHEN SCORE IS NULL THEN 未考未考 WHEN SCORE60 THEN WHEN SCORE=60 AND SCORE=60 AND SCORE=70 AND SCORE=70 AND SCORE=90 THEN WHEN SCORE=90 THEN 优秀优秀 END ENDFROM SCFROM SC 244.3.2.44.3.2.4WHILEWHILECONTINUECONTINUEBREAKBREAK其语法如下:其语法如下:WHILE WHILE BEGINBEGIN BREAKBREAKCONTINUECONTINUE 命令行或程序块命令行或程序块 ENDENDWHILE WHILE 命令在设定的条件成立时,会重复执行命令行命令在设定的条件成立时,会重复执行命令行或程序块。或程序块。CONTINUE CONTINUE 命令可以让程序跳过命令可以让程序跳过CONTINUE CONTINUE 命令之后的命令之后的语句,回到语句,回到WHILE WHILE 循环的第一行,继续进行下一次循环。循环的第一行,继续进行下一次循环。BREAK BREAK 命令则让程序完全跳出循环,结束命令则让程序完全跳出循环,结束WHILE WHILE 命令命令的执行。的执行。WHILE WHILE 语句也可以嵌套。语句也可以嵌套。 25如:如:以下程序计算以下程序计算1 1100100之间所有能被之间所有能被3 3整除的数的个整除的数的个数及总和。数及总和。DECLARE S SMALLINT,I SMALLINT,NUMS SMALLINT DECLARE S SMALLINT,I SMALLINT,NUMS SMALLINT SET S=0SET S=0SET I=1SET I=1SET NUMS=0SET NUMS=0WHILEWHILE (I=100) (I=100) BEGIN BEGIN IF (I%3=0) IF (I%3=0) BEGINBEGIN SET S=S+I SET S=S+I SET NUMS=NUMS+1 SET NUMS=NUMS+1 ENDEND SET I=I+1 SET I=I+1 END ENDPRINT SPRINT SPRINT NUMSPRINT NUMS 264.3.2.54.3.2.5WAITFORWAITFOR其语法如下:其语法如下:WAITFOR DELAY WAITFOR DELAY | TIME | TIME | ERROREXIT | PROCESSEXIT | MIRROREXIT| ERROREXIT | PROCESSEXIT | MIRROREXITWAITFOR WAITFOR 命令用来暂时停止程序执行,直到所设定的命令用来暂时停止程序执行,直到所设定的等待时间已过或所设定的时间已到才继续往下执行。等待时间已过或所设定的时间已到才继续往下执行。其中其中时间时间必须为必须为DATETIMEDATETIME 类型的数据,但不能包类型的数据,但不能包括日期。括日期。各关键字含义如下:各关键字含义如下:1 1DELAYDELAY:用来设定等待的时间,最多可达用来设定等待的时间,最多可达24 24 小时小时2 2TIMETIME:用来设定等待结束的时间点用来设定等待结束的时间点3 3ERROREXITERROREXIT:直到处理非正常中断直到处理非正常中断4 4PROCESSEXITPROCESSEXIT:直到处理正常或非正常中断直到处理正常或非正常中断5 5MIRROREXIMIRROREXI: 直到镜像设备失败直到镜像设备失败 27【例例】等待等待1 1 小时小时2 2 分零分零3 3 秒后才执行秒后才执行SELECT SELECT 语句。语句。waitfor waitfor delaydelay 01:02:0301:02:03select select * * from employee from employee 284.3.2.64.3.2.6GOTOGOTO语法如下:语法如下:GOTO GOTO 标识符标识符GOTO GOTO 命令用来改变程序执行的流程,使程序命令用来改变程序执行的流程,使程序跳到标有标识符的指定的程序行再继续往下执行。跳到标有标识符的指定的程序行再继续往下执行。作为跳转目标的标识符可为数字与字符的组合。作为跳转目标的标识符可为数字与字符的组合。但必须以但必须以“:”结尾。结尾。在在GOTO GOTO 命令行,标识符后不必跟命令行,标识符后不必跟“:” 29如:如:求求1 12 23 31010的总和。的总和。DECLARE S SMALLINT,I SMALLINTDECLARE S SMALLINT,I SMALLINTSET I=1SET I=1SET S=0SET S=0BEG:BEG:IF (I=10)IF (I=表达式的最小整数FLOOR 返回=表达式的最小整数ROUND 取整数,小数的第一位上四舍五入符号函数ABS 返回表达式的绝对值SIGN 测试参数的正负号,返回0、1或-1,其它函数PI 返回值为,即3.1415926535897936RAND 求0-1间的随机浮点数表表4.1 Transact-SQL 4.1 Transact-SQL 的算术函数的算术函数 444.3.4.34.3.4.3字符串函数字符串函数字符串函数对字符串函数对二进制数据二进制数据、字符串字符串和和表达式表达式执行不同的执行不同的运算。运算。此类函数作用于此类函数作用于CHARCHAR、VARCHARVARCHAR、BINARYBINARY 和和VARBINARYVARBINARY 数据类型以及可以隐式转换为数据类型以及可以隐式转换为CHAR CHAR 或或VARCHARVARCHAR的数据类的数据类型。型。可以在可以在SELECT SELECT 语句的语句的SELECT SELECT 和和WHERE WHERE 子句以及表达子句以及表达式中使用字符串函数。式中使用字符串函数。常用的字符串函数有:常用的字符串函数有:1 1字符转换函数字符转换函数(1 1)ASCIIASCII()()q ASCII()函数返回字符表达式最左端字符的ASCII 码值。v在在ASCII ASCII 函数中,纯数字的字符串可不用函数中,纯数字的字符串可不用“”括起来,但括起来,但含其它字符的字符串必须用含其它字符的字符串必须用“”括起来使用,否则会出错。括起来使用,否则会出错。 45(2 2)CHARCHAR()()q CHAR()函数用于将ASCII 码转换为字符。q如果没有输入0 255 之间的ASCII 码值,CHAR()函数会返回一个NULL 值。(3 3)LOWERLOWER()()q LOWER()函数把字符串全部转换为小写。(4 4)UPPERUPPER()()q UPPER()函数把字符串全部转换为大写。(5 5)STRSTR()()q STR()函数把数值型数据转换为字符型数据。其语法如下:其语法如下:STR( length )q自变量length 和decimal 必须是非负值。qlength 指定返回的字符串的长度。qdecimal 指定返回的小数位数。q如果没有指定长度,缺省的length 值为10 ,decimal 缺省值为0 。q小数位数大于decimal 值时,STR()函数将其下一位四舍五入。q指定长度应大于或等于数字的符号位数+小数点前的位数+小数点位数+小数点后的位数。q如果小数点前的位数超过了指定的长度,则返回指定长度的*。462 2去空格函数去空格函数(1 1)LTRIMLTRIM()()q LTRIM()函数把字符串头部的空格去掉。(2 2)RTRIMRTRIM()()q RTRIM()函数把字符串尾部的空格去掉。v在许多情况下,往往需要得到头部和尾部都没有空在许多情况下,往往需要得到头部和尾部都没有空格字符的字符串,这时可将上两个函数嵌套使用。格字符的字符串,这时可将上两个函数嵌套使用。 473 3取子串函数取子串函数(1 1)LEFTLEFT()()q LEFT()函数返回部分字符串。其语法如下:LEFTLEFT(,)q LEFT()函数返回的子串是从字符串最左边起到第integer_expression 个字符的部分。q若integer_expression 为负值,则返回NULL 值。(2 2)RIGHTRIGHT()()q RIGHT()函数返回部分字符串。其语法如下:RIGHTRIGHT(,)q RIGHT()函数返回的子串是从字符串右边第integer_expression 个字符起到最后一个字符的部分。q若integer_expression 为负值,则返回NULL 值。(3 3)SUBSTRINGSUBSTRINGqSUBSTRING()函数返回部分字符串。其语法如下:SUBSTRING ( , SUBSTRING ( , length)length)q SUBSTRING()函数返回的子串是从字符串左边第starting_ position 个字符起length个字符的部分。q其中表达式可以是字符串或二进制串或含字段名的表达式。qSUBSTRING()函数不能用于TEXT 和IMAGE 数据类型。 484 4字符串比较函数字符串比较函数(1 1)CHARINDEXCHARINDEX()()q CHARINDEX()函数返回字符串中某个指定的子串出现的开始位置。其语法如下:CHARINDEX CHARINDEX ( ,)q 其中,substring _expression 是所要查找的字符表达式,qexpression 可为字符串也可为列名表达式。q如果没有发现子串,则返回0 值。q此函数不能用于TEXT 和IMAGE 数据类型。(2 2)PATINDEXPATINDEX()()q PATINDEX()函数返回字符串中某个指定的子串出现的开始位置。其语法如下:PATINDEX PATINDEX ( ,column_ name)q 其中子串表达式前后必须有百分号“%” ,否则返回值为0。q与CHARINDEX()函数不同的是,PATINDEX()函数的子串中可以使用通配符,且此函数可用于CHAR、VARCHAR和TEXT 数据类型。 49(3 3)SOUNDEXSOUNDEX()()q SOUNDEX()函数返回一个四位字符码。其语法如下:SOUNDEX SOUNDEX ()q SOUNDEX()函数将character _expression 转换为4 个字符的声音码。q其中第一个码为原字符串的第一个字符,第二到第四个字符则为数字,是该字符串的声音字母所对应的数字,但是忽略了除首字母外的串中的所有元音字母。qSOUNDEX()函数可用来查找声音相似的字符串。q但SOUNDEX()函数对数字和汉字均只返回0 值。50(4 4)DIFFERENCEDIFFERENCE()()q DIFFERENCE()函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异。其语法如下:DIFFERENCE DIFFERENCE (,)q 值的差异是用0、1、2、3、4 来表示的,含义如下:0 两个SOUNDEX()函数返回值的第一个字符不同1 两个SOUNDEX()函数返回值的第一个字符相同2 两个SOUNDEX()函数返回值的第一、二个字符相同3 两个SOUNDEX()函数返回值的第一、二、三个字符相同4 两个SOUNDEX()函数返回值完全相同 515 5字符串操作函数字符串操作函数(1 1)QUOTENAMEQUOTENAME()()q QUOTENAME()函数返回被特定字符括起来的字符串。其语法如下:QUOTENAME QUOTENAME ( ,quote_ quote_ charactercharacter)q 其中,quote_ character 标明括字符串所用的字符,如“”、“(”、“”等,缺省值为“ ”。(2 2)REPLICATEREPLICATE()()q REPLICATE()函数返回一个重复character_expression 指定次数的字符串。其语法如下:REPLICATE REPLICATE (character_expressioncharacter_expression,integer_expressioninteger_expression)q 如果integer_expression 值为负值,则REPLICATE 函数返回NULL 串。(3 3)REVERSEREVERSE()()q REVERSE()函数将指定的字符串的字符排列顺序颠倒。其语法如下:REVERSE REVERSE ()q 其中,character_expression 可以是字符串常数或一个列的值。 52(4 4)REPLACEREPLACE()()qREPLACE()函数返回被替换了指定子串的字符串。其语法如下:REPLACE REPLACE (,)qREPLACE()函数用string_expression3 替换在string_expression1 中的子串string_expression2。(5 5)SPACESPACE()()qSPACE()函数返回一个有指定长度的空白字符串。其语法如下:SPACE SPACE ()q如果integer_expression 值为负值,则SPACE 函数返回NULL 串。 53(6 6)STUFFSTUFF()()q STUFF()函数用另一子串替换字符串指定位置长度的子串。其语法如下:STUFFSTUFF(,start_ position,)q 如果起始位置为负或长度值为负,或者起始位置大于character_expression1 的长度,则STUFF()函数返回NULL 值。q如果length 长度大于character_expression1 的长度,则character_expression1 只保留首字符。 544.3.4.44.3.4.4数据类型转换函数数据类型转换函数在一般情况下,在一般情况下,SQL Server SQL Server 会自动完成数据类型的转会自动完成数据类型的转换。换。例如,例如,可以直接将字符数据类型或表达式与可以直接将字符数据类型或表达式与DATATIME DATATIME 数据类型或表达式比较;当表达式中用了数据类型或表达式比较;当表达式中用了INTEGERINTEGER、SMALLINTSMALLINT或或TINYINT TINYINT 时,时,SQL Server SQL Server 也可将也可将INTEGER INTEGER 数数据类型或表达式转换为据类型或表达式转换为SMALLINTSMALLINT数据类型或表达式,这数据类型或表达式,这称为称为隐式转换隐式转换。如果不能确定如果不能确定SQL Server SQL Server 是否能完成隐式转换或者使是否能完成隐式转换或者使用了不能隐式转换的其它数据类型,就需要使用数据类用了不能隐式转换的其它数据类型,就需要使用数据类型转换函数做显式转换了。型转换函数做显式转换了。此类函数有两个:此类函数有两个:1 1CASTCAST()()q CAST()函数语法如下:CAST CAST ( AS length AS length ) 552 2CONVERTCONVERT()()q CONVERT 函数语法如下:CONVERT CONVERT ( length length , ,stylestyle)q data_ type 为SQL Server 系统定义的数据类型,用户自定义的数据类型不能在此使用。qlength 用于指定数据的长度缺省值为30。q把CHAR 或VARCHAR 类型转换为诸如INT 或SAMLLINT 这样的INTEGER 类型,结果必须是带正号(+)或负号(-)的数值。qTEXT 类型到CHAR 或VARCHAR 类型的转换最多为8000 个字符,即CHAR 或VARCHAR数据类型是最大长度。qIMAGE 类型存储的数据转换到BINARY 或VARBINARY 类型,最多为8000 个字符。q把整数值转换为MONEY 或SMALLMONEY 类型,按定义的国家的货币单位来处理,如人民币、美元、英镑等。qBIT 类型的转换把非零值转换为1,并仍以BIT 类型存储。q试图转换到不同长度的数据类型,会截短转换值并在转换值后显示“+”,以标识发生了这种截断。q用CONVERT()函数的style 选项能以不同的格式显示日期和时间。qstyle 是将DATATIME 和SMALLDATETIME 数据转换为字符串时所选用的由SQL Server 系统提供的转换样式编号,不同的样式编号有不同的输出格式,如表4.2所示。 56表表4.2 DATATIME 4.2 DATATIME 和和SMALLDATETIME SMALLDATETIME 类型数据的转换格式类型数据的转换格式style1 style2 style1 style2 标准标准 输出格式输出格式 0 或100 缺省 mon dd yyyy hh:mi Am/Pm1 101 USA mm/dd/yy2 102 ANSI yy.mm.dd3 103 UK/French dd/mm/yy4 104 German dd.mm.yy5 105 Italian dd-mm-yy6 106 dd mon yy7 107 mon dd yy8 108 hh:mi:ss9 109 mon dd yyyy hh:mi:sss Am/Pm10 110 USA mm=dd-yy11 111 Japan yy/mm/dd12 112 ISO yymmdd13 113 Europe dd mon yyyy hh:mi:ss:mmm(24h)14 114 hh:mi:ss:mmm(24h)20 120 ODBC1 yyyy-mm-dd hh:mi:ss(24h)21 121 ODBC2 yyyy-mm-dd hh:mi:ss:mmm(24h)574.3.4.54.3.4.5日期函数日期函数日期函数用来操作日期函数用来操作DATETIME DATETIME 和和SMALLDATETIME SMALLDATETIME 类型的类型的数据,执行算术运算。数据,执行算术运算。与其它函数一样,可以在与其它函数一样,可以在SELECT SELECT 语句的语句的SELECT SELECT 和和WHERE WHERE 子句以及表达式中使用日期函数。子句以及表达式中使用日期函数。1 1DAYDAY()vDAYDAY()函数返回()函数返回date_expression date_expression 中的日期值。中的日期值。2 2MONTHMONTH()vMONTHMONTH()函数返回()函数返回date_expression date_expression 中的月份值。中的月份值。v与与DAYDAY()函数不同的是,()函数不同的是,MONTHMONTH()函数的参数为整数时,一()函数的参数为整数时,一律返回整数值律返回整数值1 1,即,即SQL Server SQL Server 认为其是认为其是1900 1900 年年1 1 月。月。3 3YEARYEAR()vYEARYEAR()函数返回()函数返回date_expression date_expression 中的年份值。中的年份值。在使用日期函数时,其日期值应在在使用日期函数时,其日期值应在1753 1753 年到年到9999 9999 年年之间,这是之间,这是SQL Server SQL Server 系统所能识别的日期范围,否则系统所能识别的日期范围,否则会出现错误。会出现错误。 584 4DATEADDDATEADD()()DATEADDDATEADD()函数语法如下:()函数语法如下:DATEADD( )vDATEADDDATEADD()函数返回指定日期()函数返回指定日期date date 加上指定的额加上指定的额外日期间隔外日期间隔number number 产生的新日期。产生的新日期。v参数参数“datepartdatepart”在日期函数中经常被使用,它用来在日期函数中经常被使用,它用来指定构成日期类型数据的各组件,如年、季、月、日、指定构成日期类型数据的各组件,如年、季、月、日、星期等。其取值如表星期等。其取值如表4.34.3所示。所示。 59表表4.3 4.3 日期函数中日期函数中datepart datepart 参数的取值参数的取值datepart datepart 缩写缩写 取值取值year yy,yyyy 1753 9999quarter qq,q 1 4month mm,m 1 12day of year dy,y 1 366day dd,d 1 31week wk,ww 1 54weekday dw 1 7hour hh 0 23minute mi,n 0 59second ss,s 0 59millisecond ms 0 999605 5DATEDIFFDATEDIFF()()DATEDIFFDATEDIFF()函数语法如下:()函数语法如下:DATEDIFF(,)vDATEDIFFDATEDIFF()函数返回两个指定日期在()函数返回两个指定日期在datepart datepart 方方面的不同之处,即面的不同之处,即date2 date2 超过超过date1date1的差距值,其结果的差距值,其结果值是一个带有正负号的整数值针。值是一个带有正负号的整数值针。v对不同的对不同的datepartdatepart,DATEDIFFDATEDIFF()函数所允许的最()函数所允许的最大差距值不一样,如:大差距值不一样,如:qdatepart 为second 时DATEDIFF 函数所允许的最大差距值为68 年;qdatepart 为millisecond 时,DATEDIFF() 函数所允许的最大差距值为24 天20 小时30 分23 秒647 毫秒。 616 6DATENAMEDATENAME()()DATENAMEDATENAME()函数语法如下:()函数语法如下:DATENAME(,)vDATENAMEDATENAME()函数以字符串的形式返回日期的指定()函数以字符串的形式返回日期的指定部分此部分,由部分此部分,由datepart datepart 来指定。来指定。7.DATEPART7.DATEPART()()DATEPARTDATEPART()函数语法如下:()函数语法如下:DATEPART(,)vDATEPARTDATEPART()函数以整数值的形式返回日期的指定()函数以整数值的形式返回日期的指定部分,此部分由部分,此部分由datepart datepart 来指定。来指定。vDATEPARTDATEPART(dddd,datedate)等同于)等同于DAYDAY(datedate)vDATEPARTDATEPART(mmmm,datedate)等同于)等同于MONTHMONTH(datedate)vDATEPARTDATEPART
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!