.数据库原理与应用07.Transact-SQL程序设计_第1页
.数据库原理与应用07.Transact-SQL程序设计_第2页
.数据库原理与应用07.Transact-SQL程序设计_第3页
.数据库原理与应用07.Transact-SQL程序设计_第4页
.数据库原理与应用07.Transact-SQL程序设计_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库原理与应用数据库原理与应用07.Transact-SQL07.Transact-SQL程序设计程序设计1 注释注释2 变量变量3 运算符运算符4 函数函数5 流程控制语句流程控制语句 使用全局变量时应该注意以下几点:使用全局变量时应该注意以下几点: 全局变量不是由用户的程序定义的,它们是在效劳全局变量不是由用户的程序定义的,它们是在效劳器级定义的。器级定义的。用户只能使用预先定义的全局变量。用户只能使用预先定义的全局变量。引用全局变量时,必须以标记符引用全局变量时,必须以标记符“开头。开头。局部变量的名称不能与全局变量的名称相同,否那局部变量的名称不能与全局变量的名称相同,否那么会在应用

2、程序中出现不可预测的结果。么会在应用程序中出现不可预测的结果。 常用的全局变量常用的全局变量ErrorRowCount Identity3 运算符运算符 运算符是一些符号,它们能够用来执行算术运算、运算符是一些符号,它们能够用来执行算术运算、字符串连接、赋值以及在字段、常量和变量之间进字符串连接、赋值以及在字段、常量和变量之间进行比较。在行比较。在SQL Server 2000中,运算符主要有以中,运算符主要有以下六大类:算术运算符、赋值运算符、位运算符、下六大类:算术运算符、赋值运算符、位运算符、比较运算符、逻辑运算符以及字符串串联运算符。比较运算符、逻辑运算符以及字符串串联运算符。1算术运

3、算符算术运算符 算术运算符可以在两个表达式上执行数学运算术运算符可以在两个表达式上执行数学运算,这两个表达式可以是数字数据类型分类的任何算,这两个表达式可以是数字数据类型分类的任何数据类型。算术运算符包括加数据类型。算术运算符包括加+、减、减、乘乘*、除、除/和取模和取模%。 2赋值运算符赋值运算符Transact-SQL 中只有一个赋值运算符,中只有一个赋值运算符,即等号即等号=。赋值运算符使我们能够将数据。赋值运算符使我们能够将数据值指派给特定的对象。另外,还可以使用赋值指派给特定的对象。另外,还可以使用赋值运算符在列标题和为列定义值的表达式之值运算符在列标题和为列定义值的表达式之间建立关

4、系。间建立关系。3位运算符位运算符位运算符使我们能够在整型位运算符使我们能够在整型数据或者二进制数据数据或者二进制数据image 数数据类型除外之间执行位操作。据类型除外之间执行位操作。此外,在位运算符左右两侧的操此外,在位运算符左右两侧的操作数不能同时是二进制数据。作数不能同时是二进制数据。 表表2-1 位运算符位运算符 运运 算算 符符 含含 义义 &(按位(按位 AND)按位按位 AND(两个操作数)。(两个操作数)。|(按位(按位 OR)按位按位 OR(两个操作数)。(两个操作数)。(按位互斥(按位互斥 OR)按位互斥按位互斥 OR(两个操作数)。(两个操作数)。4比较运算符比较运算符

5、比较运算符用于比较两个表达式的大小或比较运算符用于比较两个表达式的大小或是否相同,其比较的结果是布尔值,即是否相同,其比较的结果是布尔值,即TRUE表示表达式的结果为真、表示表达式的结果为真、FALSE表示表表示表达式的结果为假以及达式的结果为假以及UNKNOWN。除了。除了 text、ntext 或或 image 数据类型的表达式外,比较运算数据类型的表达式外,比较运算符可以用于所有的表达式。符可以用于所有的表达式。 5逻辑运算符逻辑运算符逻辑运算符可以把多个逻辑表逻辑运算符可以把多个逻辑表达式连接起来。逻辑运算符包括达式连接起来。逻辑运算符包括AND、OR和和NOT等运算符。逻辑运等运算符

6、。逻辑运算符和比较运算符一样,返回带有算符和比较运算符一样,返回带有 TRUE 或或 FALSE 值的布尔数据类型。值的布尔数据类型。6字符串串联运算符字符串串联运算符字符串串联运算符允许通字符串串联运算符允许通过加号过加号 (+) 进行字符串串联,进行字符串串联,这个加号即被称为字符串串联这个加号即被称为字符串串联运算符。例如对于语句运算符。例如对于语句SELECT abc+def,其结果,其结果为为abcdef。运算符的优先等级从高到低如下所示运算符的优先等级从高到低如下所示 括号:;括号:;乘、除、求模运算符:乘、除、求模运算符:*、/、%;加减运算符:加减运算符:+、- ;比较运算符:

7、比较运算符:=、=、=、!=、!、!;位运算符:位运算符:、&、|;逻辑运算符:逻辑运算符:NOT;逻辑运算符:逻辑运算符:AND;逻辑运算符:逻辑运算符:OR。4 函数函数在在Transact-SQL语言中,函数被用来执行一些特殊的运算以语言中,函数被用来执行一些特殊的运算以支持支持SQL Server的标准命令。的标准命令。Transact-SQL 编程语言提供了三种编程语言提供了三种函数:函数: 行集函数:行集函数可以在行集函数:行集函数可以在Transact-SQL语句中当作表引语句中当作表引用。用。 聚合函数:聚合函数用于对一组值执行计算并返回一个单一聚合函数:聚合函数用于对一组值执

8、行计算并返回一个单一的值。的值。 标量函数:标量函数用于对传递给它的一个或者多个参数值标量函数:标量函数用于对传递给它的一个或者多个参数值进行处理和计算,并返回一个单一的值。进行处理和计算,并返回一个单一的值。 SQL Server中最常用的几种函数中最常用的几种函数 字符串函数字符串函数日期和时间函数日期和时间函数数学函数数学函数转换函数转换函数系统函数系统函数聚合函数聚合函数其它函数其它函数 字符串函数字符串函数字符串函数可以对二进制数据、字符串和表达式字符串函数可以对二进制数据、字符串和表达式执行不同的运算,大多数字符串函数只能用于执行不同的运算,大多数字符串函数只能用于char和和va

9、rchar数据类型以及明确转换成数据类型以及明确转换成char和和varchar的数据类型,少数几个字符串函数也可以用于的数据类型,少数几个字符串函数也可以用于binary和和varbinary数据类型。此外,某些字符串函数据类型。此外,某些字符串函数还能够处理数还能够处理text、ntext、image数据类型的数据。数据类型的数据。 字符串函数的分类:字符串函数的分类:根本字符串函数:根本字符串函数:UPPER、LOWER、SPACE、REPLICATE、STUFF、REVERSE、LTRIM、RTRIM。字符串查找函数:字符串查找函数:CHARINDEX、PATINDEX。长度和分析函数

10、:长度和分析函数:DATALENGTH、SUBSTRING、RIGHT。转换函数:转换函数:ASCH、CHAR、STR、SOUNDEX、DIFFERENCE。 2日期和时间函数日期和时间函数日期和时间函数用于对日期和时间日期和时间函数用于对日期和时间数据进行各种不同的处理和运算,数据进行各种不同的处理和运算,并返回一个字符串、数字值或日期并返回一个字符串、数字值或日期和时间值。在和时间值。在SQL Server 2000中,中,日期和时间函数的类型如表日期和时间函数的类型如表2-5所所示;另外,表示;另外,表2-6列出了日期类型列出了日期类型的名称、缩写形式以及可接受的值。的名称、缩写形式以及

11、可接受的值。表表2-5 日期和时间函数的类型日期和时间函数的类型函函 数数参参 数数DATEADD(datepart,number,date)DATEDIFF(datepart,date1,date2)DATENAME(datepart,date)DATEPART(datepart,date)DAY(date)GETDATE()MONTH(date)YEAR( date )从从GETDATE函数返回的日期中函数返回的日期中提取月份数。提取月份数。 SELECT DATEPART(month, GETDATE() AS Month Number运行结果为:运行结果为:Month Number-4

12、 从日期从日期 04/12/2006 中返回月份数、天数和年份中返回月份数、天数和年份数。数。SELECT MONTH(04/12/2006), DAY(04/12/2006),YEAR(04/12/2006)运行结果为:运行结果为:- - -4 12 20063数学函数数学函数数学函数用于对数字表达式进行数学函数用于对数字表达式进行数学运算并返回运算结果。数学数学运算并返回运算结果。数学函数可以对函数可以对SQL Server提供的数提供的数字数据字数据decimal、integer、float、real、money、smallmoney、smallint 和和 tinyint进行处理。进行

13、处理。 在同一表达式中使用在同一表达式中使用CEILING、FLOOR、ROUND函数。函数。select ceiling(13.4), floor(13.4), round(13.4567,3)运行结果为:运行结果为:- - -14 13 13.45704转换函数转换函数一般情况下,一般情况下,SQL Server会自动处理某些数据类型会自动处理某些数据类型的转换。例如,如果比较的转换。例如,如果比较 char 和和 datetime 表达式、表达式、smallint 和和 int 表达式、或不同长度的表达式、或不同长度的 char 表达式,表达式,SQL Server 可以将它们自动转换,

14、这种转换被称为可以将它们自动转换,这种转换被称为隐性转换。但是,无法由隐性转换。但是,无法由SQL Server自动转换的或自动转换的或者是者是SQL Server自动转换的结果不符合预期结果的,自动转换的结果不符合预期结果的,就需要使用转换函数做显示转换。转换函数有两个:就需要使用转换函数做显示转换。转换函数有两个:CONVERT和和CAST。CONVERT和和CAST函数函数C A S T ( e x p r e s s i o n A S data_type )CONVERT函数允许用户把表达式从一函数允许用户把表达式从一种数据类型转换成另一种数据类型,还种数据类型转换成另一种数据类型,

15、还允许把日期转换成不同的样式。其语法允许把日期转换成不同的样式。其语法形式为:形式为:CONVERT (data_type(length),expression ,style)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 Kitchens 150965系统函数系统函数系统函数用于返回有关系统函数用于返回有关SQL

16、Server系统、用户、数据库和数据库对象的系统、用户、数据库和数据库对象的信息。系统函数可以让用户在得到信信息。系统函数可以让用户在得到信息后,使用条件语句,根据返回的信息后,使用条件语句,根据返回的信息进行不同的操作。与其它函数一样,息进行不同的操作。与其它函数一样,可以在可以在SELECT语句的语句的SELECT和和WHERE子句以及表达式中使用系统子句以及表达式中使用系统函数。函数。 返回返回 Northwind 数据库的数据库的 Employees 表表中的首列的名称。中的首列的名称。USE NorthwindSELECT COL_NAME(OBJECT_ID(Employees),

17、 1)运行结果为:运行结果为:EmployeeID6聚合函数聚合函数 聚合函数可以返回整个或者几个列聚合函数可以返回整个或者几个列或者一个列的汇总数据,它常用来或者一个列的汇总数据,它常用来计算计算SELECT语句查询的统计值。语句查询的统计值。聚合函数经常与聚合函数经常与 SELECT 语句的语句的 GROUP BY 子句一同使用。子句一同使用。用户自定义函数CREATE FUNCTION 创立用户定义函数,它是返回值的已保存的创立用户定义函数,它是返回值的已保存的 Transact-SQL 例程。用户定义函数不能例程。用户定义函数不能用于执行一组修改全局数据库状态的操作。与系统函数一样,用

18、户定义函数可以从查用于执行一组修改全局数据库状态的操作。与系统函数一样,用户定义函数可以从查询中唤醒调用。也可以像存储过程一样,通过询中唤醒调用。也可以像存储过程一样,通过 EXECUTE 语句执行。语句执行。用户定义函数用用户定义函数用 ALTER FUNCTION 修改,用修改,用 DROP FUNCTION 除去。除去。CREATE FUNCTION owner_name. function_name ( parameter_name AS scalar_parameter_data_type = default ,.n ) RETURNS scalar_return_data_type

19、 WITH , .n AS BEGIN function_body RETURN scalar_expressionEND5 流程控制语句流程控制语句流程控制语句是指那些用来控制程序流程控制语句是指那些用来控制程序执行和流程分支的命令,在执行和流程分支的命令,在SQL Server 2000中,流程控制语句主要中,流程控制语句主要用来控制用来控制SQL语句、语句块或者存储语句、语句块或者存储过程的执行流程。过程的执行流程。 使用BEGINEND可以将多条T-SQL语句封装起来,构成一个独立的语句块。BEGIN关键字表示语句块的开始,END关键字表示语句块的结束,它们必须成对出现。BEGINEN

20、D的语法格式如下:BEGIN sql_statement | statement_block ENDBegin EndIFELSE IFELSE语句可以控制程序按条件执行。当IF关键字后的条件满足布尔表达式返回TRUE 时,那么在执行IF关键字及其条件之后的T-SQL 语句。否那么,就执行ELSE关键字后的T-SQL语句假设ELSE局部存在。IFELSE语句的语法格式如下:IF Boolean_expression sql_statement | statement_block ELSE sql_statement | statement_block 查询课程号为“105237的课程的平均分是

21、否超过了85分,假设超过,那么输出考出了高分的信息。USE EducationalGODECLARE Course_ID varchar(10)SELECT Course_ID = 105237 /* 查询的课程号 */ IF ( SELECT AVG(Grade) FROM Grade WHERE CourseID = Course_ID ) 85/* 平均分大于85分 */BEGIN SELECT Course_ID = CourseName /* 从课程信息表中取课程名 */ FROM Course WHERE CourseID=Course_ID PRINT Course_ID + 课程 PRINT 考出了高分ENDELSE PRINT 考的一般GO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论