【精品】transact-sql语言基础(可编辑.ppt

上传人:1595****071 文档编号:71300673 上传时间:2023-02-02 格式:PPT 页数:110 大小:3.79MB
返回 下载 相关 举报
【精品】transact-sql语言基础(可编辑.ppt_第1页
第1页 / 共110页
【精品】transact-sql语言基础(可编辑.ppt_第2页
第2页 / 共110页
点击查看更多>>
资源描述

《【精品】transact-sql语言基础(可编辑.ppt》由会员分享,可在线阅读,更多相关《【精品】transact-sql语言基础(可编辑.ppt(110页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Transact-SQL语言基础本章的学习目标:了解Transact-SQL语言的发展过程理解Transact-SQL语言附加的语言元素掌握常量、变量、运算符和表达式掌握流程控制语句掌握常用函数任务3.1 工作场景导入软件测试员小李要测试数据库的性能,当学生选课表的数据达到10万行,系统是否反应还会很快?如何才可以快速方便的为学生选课表添加10万行数据?引导问题:为学生选课表添加10万行数据时,(1)如何产生10万行不同的随机数据?(2)为考虑系统性能,应考虑多少行数据提交1次?(3)如何使用WHILE循环?任务3.2 Transact-SQL概述SQL的全称为StructuredQueryL

2、anguage(结构化查询语言),SQL最早是在20世纪70年代由IBM公司开发出来的,作为IBM关系数据库原型SystemR的原形关系语言,主要用于关系数据库中的信息检索。由于SQL简单易学,目前它已经成为关系数据库系统中使用最广泛的语言。SQL有3个主要标准:ANSISQL;SQL92;SQL99。3.2.1 Transact-SQL语法约定约定用于大写Transact-SQL关键字。斜体用户提供的Transact-SQL语法的参数。粗体数据库名、表名、列名、索引名、存储过程、实用工具、数据类型名以及必须按所显示的原样键入的文本。下划线指示当语句中省略了包含带下划线的值的子句时应用的默认值

3、。|(竖线)分隔括号或大括号中的语法项。只能使用其中一项。(方括号)可选语法项。不要键入方括号。(大括号)必选语法项。不要键入大括号。,.n指示前面的项可以重复n次。各项之间以逗号分隔。.n指示前面的项可以重复n次。每一项由空格分隔。;Transact-SQL语句终止符。虽然在此版本的SQL Server中大部分语句不需要分号,但将来的版本需要分号。:=语法块的名称。此约定用于对可在语句中的多个位置使用的过长语法段或语法单元进行分组和标记。可使用语法块的每个位置由括在尖括号内的标签指示:。3.2.3 如何给标识符起名如何给标识符起名3.2.3.1 标识符标识符1.标识符格式标识符格式(1)标识

4、符的首字符必须是下列字符之一)标识符的首字符必须是下列字符之一。l统一码(统一码(Unicode)2.0标准中所定义的字母,包括拉丁字母标准中所定义的字母,包括拉丁字母a-z和和A-Z,以及来自其他语言的字符。以及来自其他语言的字符。l下划线下划线“_”、符号、符号“”或者数字符号或者数字符号“#”。(2)标识符的后续字符可以是以下)标识符的后续字符可以是以下3种。种。l统一码(统一码(Unicode)2.0标准中所定义的字母。标准中所定义的字母。l 来自拉丁字母或其他国家来自拉丁字母或其他国家/地区脚本的十进制数字。地区脚本的十进制数字。l “”符号、美元符号符号、美元符号“$”、数字符号、

5、数字符号“#”或下划线或下划线“_”。(3)标识符不允许是)标识符不允许是Transact-SQL的保留字。的保留字。(4)不允许嵌入空格或其他特殊字符。)不允许嵌入空格或其他特殊字符。3.2.3.1 标识符标识符2标识符分类标识符分类SQL Server将标识符分为以下两种类型:将标识符分为以下两种类型:l 常规标识符:符合标识符的格式规则。常规标识符:符合标识符的格式规则。l 分隔标识符:包含在双引号分隔标识符:包含在双引号(“”)或者方括号或者方括号()内的标识符。内的标识符。该标识符可以不符合标识符的格式规则,如该标识符可以不符合标识符的格式规则,如MR GZGLXT、MR和和GZGL

6、XT之间含有空格,但因为使用了方括号,所以视为分隔之间含有空格,但因为使用了方括号,所以视为分隔标识符。标识符。注意:常规标识符和分隔标识符包含的字符数必须在注意:常规标识符和分隔标识符包含的字符数必须在1128之间,对于本地临时表,标识符最多可以有之间,对于本地临时表,标识符最多可以有116个字符。个字符。/*创建名为创建名为example的数据库,并存放在的数据库,并存放在“e:sql”目录中目录中*/CREATE DATABASE exampleON(name=example,-设置数据库文件名称设置数据库文件名称 filename=e:sqlexample.mdf,-设置文件存放位置设

7、置文件存放位置 size=10,-指定文件大小指定文件大小 maxsize=50)-指定文件的最大容量指定文件的最大容量LOG ON-指定日志文件指定日志文件(name=examplog,-指定日志文件名称指定日志文件名称 filename=e:sqlexample.ldf,-指定日志文件存放位置指定日志文件存放位置 size=5mb,maxsize=25mb,filegrowth=5mb)go3.2.4 系统保留字与其他许多语言类似,SQLServer2012使用了180多个保留关键字(ReservedKeyword)来定义、操作或访问数据库和数据库对象,这些关键字包括DATABASE、CU

8、RSOR、CREATE、INSERT、BEGIN等。这些保留关键字是T-SQL语法的一部分,用于分析和理解T-SQL语言。在编写T-SQL语句时,这些系统保留字会以不同的颜色标记,方便用户区分。一般地,不要使用这些保留关键字作为对象名称或标识符。任务任务3.3 常量常量(1)字符型常量字符型常量lASCII字符串常量:用单引号括起来,由字符串常量:用单引号括起来,由ASCII字符组成。字符组成。如果在字符常量中已经包含了一个单引号,那么可以使用如果在字符常量中已经包含了一个单引号,那么可以使用两个单引号表示这个带单引号的字符两个单引号表示这个带单引号的字符,例如例如“数据库原理数据库原理”表表

9、示示数据库原理数据库原理。lUnicode字符串常量的格式与字符串常量的格式与ASCII字符串常量相似,但它前字符串常量相似,但它前面有一个前缀面有一个前缀N,而且,而且N前缀必须是大写的。前缀必须是大写的。如:如:NSQL Server、N张三张三、N计算机科学与技术计算机科学与技术。任务任务3.3 常量常量(2)数值型常量数值型常量数值型常量包含整型常量和实数型常量。数值型常量包含整型常量和实数型常量。l整型常量整型常量(Integer)用来表示整数。可细分为二进制整型用来表示整数。可细分为二进制整型常量、十六进制整型常量和十进制整型常量。二进制整常量、十六进制整型常量和十进制整型常量。二

10、进制整型常量以数字型常量以数字0或或1表示;十六进制整型常量由前缀表示;十六进制整型常量由前缀0 x后后跟十六进制数组成;十进制整型常量即不带小数点的十跟十六进制数组成;十进制整型常量即不带小数点的十进制数;进制数;l实数型常量用来表示带小数部分的数,有定点数和浮点实数型常量用来表示带小数部分的数,有定点数和浮点数两种表示方式,其中浮点数使用科学记数法来表示。数两种表示方式,其中浮点数使用科学记数法来表示。如:如:0.3E-5。(3)日期时间型常量日期时间型常量(datetime)日期时间型常量使用特定格式的字符日期值来表示,日期时间型常量使用特定格式的字符日期值来表示,并且用单引号括起来。如

11、并且用单引号括起来。如2009年年4月月1日可以用以下日可以用以下方式表示:方式表示:April 1,2009、04/01/2009或或20090401。(4)货币型常量货币型常量(money)货币型常量以前缀货币型常量以前缀“$”作为标识。如作为标识。如$123.45。任务任务3.4 变量变量(1)变量名称)变量名称在在SQL Server 2012系统中,变量的命名规则如下:系统中,变量的命名规则如下:l第一个字符必须是字母、数字、下画线或第一个字符必须是字母、数字、下画线或符号。需要注意的是,符号符号。需要注意的是,符号“”开开头的变量表示局部变量、符号头的变量表示局部变量、符号“”开头

12、的变量表示全局变量。开头的变量表示全局变量。l变量名不能是变量名不能是T-SQL语言的系统保留字语言的系统保留字(如如IF、ELSE、CONTINUE等等),包括大,包括大写和小写形式。写和小写形式。l变量名中不允许出现空格或其他特殊字符。变量名中不允许出现空格或其他特殊字符。根据以上规则,下列变量名都是合法的:根据以上规则,下列变量名都是合法的:a2、abc、student_3和和average。变量在使用中需要先声明再使用,声明变量用变量在使用中需要先声明再使用,声明变量用DECLARE语句,其语法格式如语句,其语法格式如下:下:DECLARE 变量名称变量名称 变量的数据类型变量的数据类

13、型,n说明:说明:为表示局部变量,变量名称的第一个字符必须是为表示局部变量,变量名称的第一个字符必须是所有变量在声明后均设置初值为所有变量在声明后均设置初值为NULL任务任务3.4 变量变量(2)变量赋值)变量赋值有两种为变量赋值的方式:使用有两种为变量赋值的方式:使用SET语句直接为变量赋值和使用语句直接为变量赋值和使用SELECT语句选择表中的值来为变量赋值。语句选择表中的值来为变量赋值。语法格式如下:语法格式如下:l格式格式1:使用:使用SET语句赋值语句赋值SET 变量名称变量名称=表达式表达式l格式格式2:使用:使用SELECT语句赋值语句赋值SELECT 变量名称变量名称=表达式表

14、达式,n说明:说明:表达式可以是任何有效的表达式可以是任何有效的SQL表达式;表达式;一个一个SELECT语句可以给多个变量赋值,而一个语句可以给多个变量赋值,而一个SET语句一次只能给一个语句一次只能给一个变量赋值。变量赋值。例:用赋值语句分别定义两个整型变量x和y。使x的值为20,y的值为5,计算并显示x,y,3x+4y,xy,和x/y的值。declarexint,yintsetx=20sety=5selectx,y,3*x+4*y,x*y,x/y例:创建两个局部变量,并赋值,然后输出变量的值。declarevar1char(10),var2char(20)setvar1=郑州大学setv

15、ar2=var1+是一所综合性大学selectvar1,var2go示例:创建一个名为示例:创建一个名为sex的局部变量,并在的局部变量,并在select语句中语句中使用该局部变量查找表使用该局部变量查找表student中所有女同学的信息。中所有女同学的信息。usexscj2005declare sexchar(2)set sex=女select*fromstudentwheressex=sex例:使用查询给变量赋值。例:使用查询给变量赋值。useXSCJ2005godeclarexmvarchar(8)setxm=(selectsnamefromstudentwheresno=2008056

16、103)selectxmGouseXSCJ2005godeclarexmvarchar(8)selectxm=snamefromstudentselectxmGo说明:如果返回多个值,将返回的最后一个值赋给变量说明:如果返回多个值,将返回的最后一个值赋给变量例:useXSCJ2005godeclarexmvarchar(8)selectxm=刘丰selectxm=snamefromstudentwheresno=123456789selectxmasnamego说明:如果说明:如果select语句没有返回行,变量将保留当前值语句没有返回行,变量将保留当前值任务任务3.5 运算符和表达式运算符和

17、表达式SQLServer2012提供以下几类运算符:算术运算符、关系运算符、逻辑运算符、字符运算符和位运算符。3.5.1 算算术术运算符运算符算术运算符对两个表达式执行数学运算。算算术术运算符运算符说说 明明+加法运算加法运算-减法运算减法运算*乘法运算乘法运算/除法运算,如果两个表达式都是整数,除法运算,如果两个表达式都是整数,则结则结果是整数,小数果是整数,小数部分被截断部分被截断%(求模求模)求模求模(求余求余)运算,返回两数相除后的余数运算,返回两数相除后的余数算算术术运算符运算符例:计算6/5、6.0/5.0、5/6、5.0/6.0与6%5的值。select6/5,6.0/5.0,5

18、/6,5.0/6.0,6%511.20000000.8333331通过执行语句我们注意到:6/5的结果为1,而6.0/5.0的结果为1.200000,两者运算结果并不相同。原因在于当两个具有相同数据类型的数进行算术运算时,运算结果依然是当前的数据类型。但是,当两个不同数据类型的数进行算术运算时,数据类型优先级规则指定将优先级较低的数据类型转换为优先级较高的数据类型。这样能够在最大程度上保护运算结果的正确性和合理性。同样,5/6与5.0/6.0的运算结果也不相同。3.5.2 关系运算符关系运算符关系运算符说 明实 例=相等姓名=”王华”大于成绩85小于年龄=大于等于成绩=60=小于等于工资=20

19、00、!=不等于所属院系英语系!不小于学分!不大于成绩!100说说明:明:l两个数两个数值值型数据比型数据比较时较时,按照,按照值值的大小直接比的大小直接比较较;l两个日期两个日期时间时间型数据比型数据比较时较时,按照年、月、日的先后,按照年、月、日的先后顺顺序比序比较较;l两个字符型数据比两个字符型数据比较时较时,英文字母按照,英文字母按照ASCII码值码值大小比大小比较较,汉汉字按照拼音先后字按照拼音先后顺顺序比序比较较。useXSCJgodeclarestudentchar(6)setstudent=001111if(student0)select*fromxswhere学号=stude

20、nt3.5.3 逻辑运算符逻辑运算符运 算 符运 算 规 则AND与运算,两个操作数均为TRUE时,结果才为TRUEOR或运算,若两个操作数中任何一个为TRUE,则结果为TRUENOT非运算,单目运算,结果值取反ALL每个操作数值都为TRUE时,结果为TRUEANY多个操作数中只要有一个为TRUE,结果为TRUEBETWEEN若操作数在指定的范围内,则运算结果为TRUEEXISTS若子查询包含一些行,则运算结果为TRUEIN若操作数值等于表达式列表中的一个,则结果为TRUELIKE若操作数与某种模式相匹配,则结果为TRUESOME若在一系列操作数中,有些值为TRUE,则结果为TRUE例:查询成

21、绩高于李明最高成绩的学生姓名、课程名和成绩selectsname,cname,o=oonstudent.sno=sc.snoandgradeall(o=oonstudent.sno=sc.snoandsname=李明)1)any,all例:查询成绩高于李明最低成绩的学生姓名、课程名和成绩selectsname,cname,o=oonstudent.sno=sc.snoandgradeany(o=oonstudent.sno=sc.snoandsname=李明)2).Between例:查询例:查询91及及92年出生的学生信息年出生的学生信息select*from studentwhere sbi

22、rth between 1991-1-1 and 1992-12-31例:查询不是例:查询不是91、92年出生的学生信息年出生的学生信息select*from studentwhere sbirth not between 1991-1-1 and 1992-12-31查询姓王或姓刘的学生信息select*fromstudentwheresnamelike王刘%查询不姓王也不姓刘的学生信息select*fromstudentwheresnamelike王刘%通配符说明%代表0个或多个字符_代表单个字符 指定范围(如:a-f、0-9或集合abcdef中的任何单个字符指定不属于范围(如:a-f、0

23、-9或集合abcdef中的任何单个字符3).Like查询所有选课的学生信息查询所有选课的学生信息select*fromstudentwhereexists(select*fromscwheresno=student.sno)查询没有选课的学生信息查询没有选课的学生信息select*fromstudentwherenotexists(select*fromscwheresno=student.sno)4.exists3.5.4 字符运算符字符运算符字符运算符只有一个字符运算符只有一个“+”,又称为字符串串联运算,又称为字符串串联运算符。字符串之间通过符。字符串之间通过“+”实现字符串的连接。实现

24、字符串的连接。select8899+7788select8899+7788select8899+7788说明:当数据类型不相同说明:当数据类型不相同时,转换成优先级别高的。时,转换成优先级别高的。3.5.5 位运算符位运算符位运算符在两个表达式之间实现按位操作,这两个表达式应该为位运算符在两个表达式之间实现按位操作,这两个表达式应该为整型数据类型或与整型兼容的数据类型(如字符型等,但不能是整型数据类型或与整型兼容的数据类型(如字符型等,但不能是image类型类型)运 算 符运 算 法 则&(位与运算)两个参与运算的位值均为1时,结果位为1,否则为0|(位或运算)两个参与运算的位中只要有一位值为

25、1,结果就为1,否则为0(位异或运算)两个参与运算的位中只有一个的值为1时(不可以两个值都为1),结果为1;只有当两个参与运算的位值都为0或都为1时,结果才为03.5.5 位运算符位运算符示例:示例:select 128&129,128|129,128129运 算 符运 算 法 则&(位与运算)两个参与运算的位值均为1时,结果位为1,否则为0|(位或运算)两个参与运算的位中只要有一位值为1,结果就为1,否则为0(位异或运算)两个参与运算的位中只有一个的值为1时(不可以两个值都为1),结果为1;只有当两个参与运算的位值都为0或都为1时,结果才为0128:129:1000 00001000 000

26、1 或或|1000 0001128:129:1000 00001000 0001 与与&|1000 0000128:129:1000 00001000 0001 异或异或 0000 0001优 先 级运 算 符1一目运算:+(正)、-(负)、(按位取反)2*(乘)、/(除)、%(取模)3+(加)、+(字符串连接)、-(减)4=、=、=、!=、!、!yprintx大于yelseprintx小于或等于y任务3.12流程控制语句流程控制语句3.12.1 IF ELSE语句语句IF条件表达式语句体1ELSE语句体2例:输入一个坐标值,判断其在哪一个象例:输入一个坐标值,判断其在哪一个象限限declar

27、e x int,y intset x=8set y=-3if x0if y0print xy位于第一象限位于第一象限elseprint xy位于第四象限位于第四象限elseif y0print xy位于第二象限位于第二象限elseprint xy位于第三象限位于第三象限IF.ELSE语句语句例:设定变量例:设定变量score,根据,根据score的值判断成绩的值判断成绩是否合格,并输出结论。是否合格,并输出结论。declarescoreint,anchar(10)setscore=55ifscore=60seta=N成绩合格elseseta=N成绩不合格selecta1.简单简单case语句语

28、句l计算input_expression,然后按指定顺序对每个when子句的input_expressionwhen_expression进行计算。l返回第一个取值为true的input_expression=when_expression的result_expression.l如果没有取值为true的input_expression=when_expression,则当指定else子句时,sqlserver将返回else_result_expression;若没有指定else子句时,则返回null值。2.Case 搜索语句搜索语句l按指定顺序为每个when子句的Boolean_express

29、ion求值。l返回第一个取值为true的Boolean_expression的result_expression。l如果没有取值为true的Boolean_expression,则当指定else子句时,sqlserver将返回else_result_expression;若没有指定else子句时,则返回null值。3.12.3 case 语句语句-简单Case语句CASEsexWHEN1THEN男WHEN2THEN女ELSE其他END-Case搜索语句CASEWHENsex=1THEN男WHENsex=2THEN女ELSE其他ENDCase语句只返回第一个符合条件的值,剩下的Case部分将会被

30、自动忽略。-比如说,下面这段SQL,你永远无法得到“第二类”这个结果CASEWHENcol_1IN(a,b)THEN第一类WHENcol_1IN(a)THEN第二类ELSE其他END1.简单简单Case语句语句CASEcountryWHEN中国THEN亚洲WHEN印度THEN亚洲WHEN日本THEN亚洲WHEN美国THEN北美洲WHEN加拿大THEN北美洲WHEN墨西哥THEN北美洲ELSE其他ENDselect sno,cno,grade,case when grade=90 then 优秀优秀when grade=80 then 良好良好when grade=70 then 中等中等whe

31、n grade=60 then 及格及格when grade60 then 不及格不及格end as 成绩等级成绩等级from sc2.Case搜索语句搜索语句select score,等级等级=case when score=60 and score=80 and score=90 and score=0 and 成绩成绩=60 and 成绩成绩=70 and 成绩成绩=80 and 成绩成绩=90 and 成绩成绩=100 then 优秀优秀endfrom scgoselect*fromv3.12.4 goto语句语句无条件转移语句,使用无条件转移语句,使用goto语句可以将执行流程转移到

32、标签指语句可以将执行流程转移到标签指定的位置。为了与前面的版本兼容,定的位置。为了与前面的版本兼容,SQL SERVER 2012支持支持goto语句,语句,但由于该语句破坏了语句的结构,容易引发不易发现的问题,所以应该但由于该语句破坏了语句的结构,容易引发不易发现的问题,所以应该尽量减少或避免使用。尽量减少或避免使用。declarexintsetx=1loving:printxselectx=x+1whilex=3gotoloving说明:标号是GOTO目标,它不仅仅标识了跳转目标,标号不隔离其前后语句。执行标号前面语句的用户跳过标号并执行标号后的语句。除非标号前面的语句本身是控制流语句(r

33、eturn),这种情况才发生。declarepjffloatif(selectCOUNT(*)fromscwheresno=2007056101)=0gotolabelelsebeginselectpjf=AVG(grade)fromscwheresno=2007056101printpjfendlabel:print无学生或此学生没有选课!示例:输出2007056101号学生平均成绩,若此学生没有选课,则显示相应提示信息,用goto完成。说明:标号是GOTO目标,它不仅仅标识了跳转目标,标号不隔离其前后语句。执行标号前面语句的用户跳过标号并执行标号后的语句。除非标号前面的语句本身是控制流语句

34、(return),这种情况才发生。3.12.5 whilebreak和和continue 语句语句1.while 语句语句declare s int,num intselect s=0,num=1while num=100beginset s=s+numset num=num+1endprint 1+2+3+.+100=+convert(char,s)godeclarexintsetx=1whilex=3beginprintxselectx=x+1end3.12.5 whilebreak和和continue 语句语句2.break 语句语句 break 语句一般用在语句一般用在while循环或

35、循环或if.else语句中,用于退出本层循环。语句中,用于退出本层循环。例:求例:求1100之间的累加和,当和超过之间的累加和,当和超过1000时停止累加,显示累加和以及累加时停止累加,显示累加和以及累加到的位置。到的位置。declareiint,sintseti=1sets=0whilei=1000breakseti=i+1endselectsass,iasi3.12.5 whilebreak和和continue 语句语句3.continue 语句语句continue 命令可以让程序跳过命令可以让程序跳过continue命令之后的语句,命令之后的语句,回到回到while循环的第一行命令。循环

36、的第一行命令。Break则让程序完全跳出循环,则让程序完全跳出循环,结束结束while命令的执行。命令的执行。例:求例:求110之间的偶数和,并用之间的偶数和,并用continue控制语句的输出。控制语句的输出。declare x int,sum intset x=1set sum=0while x0print遇到return之前returnprint遇到return之后任务3.13 批处理语句3.13.1批处理的基本概念批处理是包含一个或多个SQL语句的组,从应用程序一次性地发送到SQLServer执行SQLServer将批处理语句编译成一个可执行单元,此单元称为执行计划。执行计划中的语句每

37、次执行一条。GO是批处理的标志,表示SQLServer将这些T-SQL语句编译为一个执行单元,提高执行效率。一般是将一些逻辑相关的业务操作语句,放置在同一批中,这完全由业务需求和代码编写者决定。3.13.2每个批处理单独发送到服务器每个批处理都被独立地处理,所以一个批处理中的错误不会阻止另一个批处理运行。为了将脚本分成多个批处理,要使用GO语句。【例3-14】使用GO语句创建批处理。以下语句被分为了三个批处理。USEtempdbDECLAREMyBacthvarchar(50)-这里声明的变量MyBacth的作用域仅仅在这个批处理中!SELECTMyBacth=第一个批处理PRINT第1个批处

38、理执行完毕!GOPRINTMyBacth-这里将产生一个错误,因为MyBacth没有在这个批处理中声明。PRINT第2个批处理执行完毕!GOPRINT第3个批处理执行完毕!-注意,即使第个批处理出错后,第个批处理仍将得到执行。3.13.2每个批处理单独发送到服务器3.13.3何时使用批处理使用以下几个命令时,必须独自成批处理,包括:CREATEDEFAULTCREATEPROCEDURECREATERULECREATETRIGGERCREATEVIEW3.13.4使用批处理建立优先级【例3-15】演示使用批处理建立优先级。演示使用批处理建立优先级,执行代码如下:CREATEDATABASEte

39、mpTestUSEtempTestCREATETABLETestTable(col1int,col2int)3.13.4使用批处理建立优先级3.13.4使用批处理建立优先级正确的代码如下:CREATEDATABASEtempTestGO-此GO使创建数据库的语句成为了一个批处理并被发送到SQLServer成功得到执行USEtempTestCREATETABLETestTable(col1int,col2int)【例3-16】演示使用批处理建立优先级。演示使用批处理建立优先级,执行如下代码:USEtempTestALTERTABLETestTableADDcol3intINSERTINTOTes

40、tTable(col1,col2,col3)VALUES(1,1,1)得到了一个错误的消息SQLServer不能解析新的列名称,于是产生错误:消息207,级别16,状态1,第4行列名col3无效。只需在ADDcol3int之后添加一个简单的GO语句,一切就会正常运行。3.13.5创建批处理后的执行可以使用sqlcmd命令来执行,一般命令格式如下:sqlcmdUsaPpasswdimysql.sql【例3-17】演示使用sqlcmd运行Transact-SQL脚本文件。使用sqlcmd运行Transact-SQL脚本文件的步骤如下:1.使用记事本创建一个简单的Transact-SQL脚本文件,请

41、执行下列操作:(1)单击“开始”,依次指向“所有程序”、“附件”,再单击“记事本”。(2)复制以下Transact-SQL代码并将其粘贴到“记事本”。USEMASTERGOIFDB_ID(tempTest)-返回数据库标识(ID)号ISNOTNULLDROPDATABASEtempTest;GOCREATEDATABASEtempTestGOUSEtempTestGOCREATETABLETestTable(col1int,col2int)INSERTINTOTestTable(col1,col2)VALUES(1,1)INSERTINTOTestTable(col1,col2)VALUES(

42、2,2)SELECT*FROMTestTable2.运行脚本文件(1)打开命令提示符窗口。(2)在命令提示符窗口中,如图3-10所示,键入如下格式的命令:sqlcmd-SmyServerinstanceName-iC:mysql.sql注意,请将myServer和instanceName替换成自己所用的服务器名和数据库实例名。(3)按Enter键。TestTable表的信息便会输出到命令提示符窗口。如图3-10所示。3.将此输出保存到文本文件中(1)打开命令提示符窗口。(2)在命令提示符窗口中,如图3-11键入(3)按Enter键。4.另外,也可使用EXEC来执行相应的批处理EXEC(字符串变

43、量)|(字面值命令字符串)EXECUTE(字符串变量)|(字面值命令字符串)DECLAREInVarvarchar(50)-DECLAREOutVarvarchar(50)-SetupourstringtofeedintotheEXECcommand-SETInVar=SELECTOutVar=col1FROMdbo.TestTableWHEREcol1=1-消息137,级别15,状态1,第1行-必须声明标量变量OutVar。SETInVar=SELECTcol1FROMdbo.TestTableWHEREcol1=1EXEC(Invar)3.13.6 批处理中的错误批处理中的错误分为以下两类

44、语法错误运行时错误3.13.7 GO不是T-SQL命令一个常见的错误是认为GO是T-SQL命令。其实GO是一个只能被编辑工具(ManagementStudio、sqlcmd)识别的命令。如果使用了第三方工具,那么它可能支持也可能不支持GO命令,但是大多数声称支持SQLServer的工具是支持GO命令的。任务任务3.14 SQL Server 2012函数简介函数简介3.14.1 数学函数数学函数数数 学学 函函 数数功功 能能ABS(数数值值表达式表达式)绝对值绝对值函数,返回数函数,返回数值值表达式的表达式的绝对值绝对值ACOS(实实型表达式型表达式)反余弦函数,返回一个余弦反余弦函数,返回

45、一个余弦值对应值对应的角度。角度以弧度表示,的角度。角度以弧度表示,实实型表达式取型表达式取值值范范围围从从-11,若参数超,若参数超过过此范此范围围,函数返回,函数返回NULL并并报报告告错误错误COS(数数值值表达式表达式)正弦函数,返回表达式中以弧度表示的指定角的余弦正弦函数,返回表达式中以弧度表示的指定角的余弦值值EXP(数数值值表达式表达式)指数函数,返回表达式的指数指数函数,返回表达式的指数值值LOG(数数值值表达式表达式)自然自然对对数函数,返回表达式的自然数函数,返回表达式的自然对对数数值值PI()圆圆周率函数,返回周率函数,返回14位小数的位小数的圆圆周率常量周率常量值值RA

46、ND()随机函数,随机返回随机函数,随机返回01之之间间的的float数数值值SIGN(数数值值表达式表达式)符号函数,返回表达式的正号、零或符号函数,返回表达式的正号、零或负负号号SIN(数数值值表达式表达式)正弦函数,返回表达式中以弧度表示的指定角的正弦正弦函数,返回表达式中以弧度表示的指定角的正弦值值SQRT(数数值值表达式表达式)平方根函数,返回表达式的平方根平方根函数,返回表达式的平方根TAN(数数值值表达式表达式)正切函数,返回指定表达式中以弧度表示的指定角的正切正切函数,返回指定表达式中以弧度表示的指定角的正切值值例:使用常用数学函数计算-1的绝对值,e的10次方,5的自然对数,

47、半径为3的圆的面积和49的平方根。SELECTN-1绝对值=ABS(-1),Ne的10次方=EXP(10),N5的自然对数=LOG(5),N半径为3的圆的面积=PI()*3*3,N49的平方根=SQRT(49)3.14.2 字符串函数字符串函数字符串函数字符串函数功功 能能ASCII(字符表达式字符表达式)ASCII函数,返回字符串表达式中最左端字符的函数,返回字符串表达式中最左端字符的ASCII码值码值CHAR(整型表达式整型表达式)ASCII码转换码转换函数,参数函数,参数为为介于介于0255之之间间的整数,返回整数的整数,返回整数的的ASCII码码LEFT(字符表达式,字符表达式,n)左

48、子串函数,返回从字符串左左子串函数,返回从字符串左边边开始的开始的n个字符个字符LEN(字符表达式字符表达式)字符串字符串长长度函数,返回字符串表达式中字符的个数度函数,返回字符串表达式中字符的个数LOWER(字符表达式字符表达式)小写字母函数,将大写字母小写字母函数,将大写字母转换为转换为小写字母,返回表达式的小写字母,返回表达式的小写字母表示小写字母表示LTRIM(字符表达式字符表达式)删删除前除前导导空格函数,返回空格函数,返回删删除了前除了前导导空格的字符表达式空格的字符表达式REPLACE(字符表达式字符表达式1,字符表达式,字符表达式2,字符表,字符表达式达式3)字符替字符替换换函

49、数,用第三个表达式替函数,用第三个表达式替换换第一个字符串表达式中第一个字符串表达式中包含的所有第二个字符表达式,并返回替包含的所有第二个字符表达式,并返回替换换后的表达式后的表达式RIGHT(字符表达式,字符表达式,n)右子串函数,返回从字符串右右子串函数,返回从字符串右边边开始的开始的n个字符个字符RTRIM(字符表达式字符表达式)删删除尾随空格函数,返回除尾随空格函数,返回删删除所有尾随空格的字符表达式除所有尾随空格的字符表达式STR(数数值值表达式表达式,长长度度n,小数位,小数位)数字向字符数字向字符转换转换函数,返回由数字函数,返回由数字转换过转换过来的字符串,来的字符串,长长度度

50、用于指定用于指定总长总长度,包括小数点,小数位指小数点右度,包括小数点,小数位指小数点右边边的位数的位数UPPER(字符表达式字符表达式)大写字母函数,返回指定表达式的大写字母表示大写字母函数,返回指定表达式的大写字母表示例:使用常用字符串函数计算A的ASCII码,SQLServer的前3个字符,数据库原理字符串的长度,将China转换为大写字母,将英语四级改为英语六级。T-SQL语句如下:SELECTNA的ASCII=ASCII(A),NSQLServer的前3个字符=LEFT(SQLServer,3),N数据库原理的长度=LEN(N数据库原理),N将China转换为大写字母=UPPER(C

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁