ImageVerifierCode 换一换
格式:PPT , 页数:75 ,大小:1.12MB ,
资源ID:13990668      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/13990668.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(第5章 T-SQL程序设计基础.ppt)为本站上传会员【s4****5z】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

第5章 T-SQL程序设计基础.ppt

1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,5,章,T-SQL,程序设计基础,1.,T-SQL语言分类,2.,数据类型,3.,常量、变量和运算符,4.,函数,5.,批处理和流程控制,5.1 T-SQL,语言分类,T-SQL,语句分为四大类:,数据定义语句:,用来定义和管理数据库以及数据库中的各种对象的语句,这些语句包括,CREATE,、,ALTER,和,DROP,语句。,数据操纵语句:,用来查询、添加、修改和删除数据库中数据的语句,这些语句包括,SELECT,(查询数据)、,INSERT,(插入数据)、,UPDATE,(修改数据)和,DELET

2、E,(删除数据)等。,数据控制语句:,主要包括完整性控制、并发控制和恢复以及安全性控制等功能。,一些附加语句:,是,T-SQL,语言为了编写脚本而增加的语句,包括,变量,、,运算符,、,函数,、,注释语句,、,流程控制,和,事务控制语句,等。,5.2,数据类型,数据类型对应着,SQL Server 2008,系统在内存或磁盘上开辟存储空间的大小,也决定了访问、显示、更新数据的方式。除了支持数值型、字符型、日期型、货币型等,系统提供的数据类型,外,,T-SQL,还支持,用户自定义数据类型,。,5.2.1,系统提供的数据类型,SQL Server 2008,中提供了丰富的数据类型,主要包括二进制、

3、精确数字、近似数字、字符串、日期时间等几大类型。,类别,数据类型,类别,数据类型,类别,数据类型,二进制,字符串,BINARY,VARBINARY,IMAGE,近似数字,FLOAT,REAL,日期时间,DATETIME,DATE SMALLDATETIME,精确数字,BIT,INT,BIGINT,SMALLINT,TINYINT,DECIMAL,NUMERIC,MONEY,SMALLMONEY,字符串,CHAR,VARCHAR,TEXT,NCHAR,NVARCHAR,NTEXT,其它类型,TIMESTAMP,SQL_VARIANT,TABLE,CURSOR,UNIQUEIDENTIFIER,X

4、ML,表,5-1 SQL Server2008,系统提供的数据类型,1.,精确数字,整数类型,BIT:,值只能为0或1。如ON/OFF、YES/NO、TRUE/FALSE等,占1字节。,INT:,可以存储从-231231-1范围内的全部整数,占4个字节。,BIGINT:,可以存储-263263-1范围内的全部整数,占8个字节。,SMALLINT:,存储从-215215-1范围内的全部整数,占2个字节。,TINYINT:,可以存储0255之间的所有整数,占1个字节。,1.,精确数字,精确的小数数据类型,精确的小数数据类型包括,DECIMAL,和,NUMERIC,两种类型。这两种数据的取值范围都是

5、从,-10,38,+1,到,10,38,-1,。所占存储空间大小为,2,17,个字节。它们的定义分别格式为:,DECIMAL(p,s),和,NUMERIC(p,s),p,(精度):,最多可以存储的十进制数字的总位数,包括小数点左边和右边的位数。该精度必须是从,1,到最大精度,38,之间的值。默认精度为,18,。,s,(小数位数):,小数点右边可以存储的十进制数字的最大位数。小数位数必须是从,0,到,p,之间的值。仅在指定精度后才可以指定小数位数。默认的小数位数为,0,;因此,,0sp,。最大存储大小基于精度而变化。,1.,精确数字,货币数据类型,货币数据类型专门用于货币数据处理,包括,MONE

6、Y,和,SMALLMONEY,两种类型。,MONEY,:,以,money,数据类型存储的货币值的范围从,-263,263-1,,精确到货币单位的,1%,,所占存储空间大小为,8,个字节。,SMALLMONEY,:,以,SMALLMONEY,数据类型存储的货币值介于,-214748.3648,214748.3647,之间,精确到货币单位的,1%,。所占存储空间大小为,4,个字节。,2,.,近似数字,近似数据类型包括,FLOAT(浮点),和,REAL(实数),两种类型。,FLOAT(n):,该类型数据范围是-1.79E+3081.79E+308,所占存储空间大小取决于n。n为用于存储FLOAT数值

7、尾数的位数,以科学记数法表示,因此可以确定精度和存储大小。如果指定了n,则它必须是介于1和53之间的某个值。n的默认值为53。当n取值范围在124之间时,存储空间为4个字节;当n取值范围在2553之间时,存储空间为8个字节。,REAL:,该类型数据范围是-3.40E+383.40E+38,所占存储空间大小为4个字节。相当于FLOAT(24)。,3.,日期和时间,DATE,:,存储从,0001,年,1,月,1,日到,9999,年,12,月,31,日间的日期,占,3,个字节。日期格式,YYYY-MM-DD,,其中,YYYY,表示年份,范围为,0001,至,9999,;,MM,表示月份,范围为,1,

8、至,12,;,DD,表示日期,范围为,1,-31,。,DATETIME,:,存储从,1753,年,1,月,1,日到,9999,年,12,月,31,日的日期和时间数据,精确到,3%,秒。占,8,个字节。默认格式为,YYYY-MM-DD,hh:mm:ss.n,*,,其中,,YYYY-MM-DD,是日期部分,“,hh:mm:ss.n,*”,是时间部分,,hh,、,mm,和,ss,分别表示小时、分钟和秒;,n*,表示秒的小数部分,范围为,0,至,999,。,SMALLDATETIME,:,存储从,1900,年,1,月,1,日到,2079,年,12,月,31,日的日期和时间数据,可以精确到分钟。占,4,

9、个字节。默认格式为,YYYY-MM-DD,hh:mm:ss,,含义同,DATETIME,。,4.,字符串,编码,编码是不同国家的语言在计算机中的一种存储和解释规范。目前的编码方式主要有两种:普通字符编码和统一字符编码(,Unicode,)。,(1)普通字符编码,:,普通字符编码对应多种字符集,统称为,ANSI字符集。ANSI字符集中的每个字符在计算机中所占字节数不确定。例如,美国的ASCII字符集中的每个字符站1个字节,而我国的标准字符集GB2312中的每个字符站2个字节。,(2)统一字符编码(Unicode),:,统一字符编码固定使用,2个字节表示一个字符,可以表示65535个字符,此种编码

10、对应的字符集称为Unicode字符集。,4.,字符串,非,Unicode,字符数据类型,CHAR(n,),:,长度为,n,的固定长度非,Unicode,字符串,占,1,字节,存储空间为,n,个字节(,n,介于,0,8000,的整数)。当给定字符串长度超过,n,时,超出部分将被截断,如果给定字符串实际长度小于,n,,将用空格填充空域部分。如果未在数据定义或变量声明语句中指定,n,,则默认长度为,1,。,VARCHAR(n,),:,最大长度为,n,的可变长度的非,Unicode,字符串(,n,介于,0,8000,的整数),其存储大小为实际字符串所占字节数。当给定字符串串长度超过,n,时,超出部分将

11、被截断,如果给定字符串实际长度小于,n,,按实际长度存储,不填充空格。,VARCHAR(max,),:是最大长度为,2,31,-1,的可变长度字符串。,TEXT,:,专门用于存储数量庞大的变长字符数据。最大所占存储空间可,2,31,-1,字节。,4.,字符串,Unicode字符数据类型,Unicode字符数据类型用于存储双字节字符,。包括:,NCHAR,NVARCHAR和NTEXT三种类型。,Unicode数据的存储空间,=,字符数,*2(字节),Unicode字符数据类型与非Unicode字符数据类型相比,其区别在于字符采用Unicode编码,每个字符站2个字节,使用形式和含义与非Unico

12、de字符数据类型相同。,5.,二进制字符串,BINARY(n,),:,固定长度为,n,个字节的二进制字符串(,n,必须是介于,0,8000,之间的一个整数),占,n,字节。,VARBINARY(n,),:,最大长度为,n,个字节可变长二进制字符串(,n,必须是介于,0,8000,之间的一个整数),所占存储空间大小为实际二进制字符串长度。,VARBINARY(max,),:最大的存储大小为,2,31,-1,的可变长度二进制字符串。,IMAGE,:,可用于存储超过,8000,字节的数据,如,Microsoft Word,文档、,Microsoft Excel,图表以及图像数据等,占,0,2,31,

13、1,字节。,6.,其它数据类,CURSOR,:,游标的引用,占,8,字节。,SQL_VARIANT,:,数据类型可以应用在列、参数、变量和函数返回值中,,SQL_VARIANT,类型的数据可以存储除,TEXT,、,NTEXT,、,IMAGE,和,SQL_VARIANT,数据类型以外的各种数据。占,0,8000,字节。,TIMESTAMP,:,时间戳,数据库范围内的唯一值,占,8,字节。,TABLE,:,存储对表或者视图处理后的结果集。,UNIQUEIDENTIFIER,:,全局唯一标识符(,GUID,),占,16,字节。,XML,:,存储可扩展标记文本数据。,5.2.2,用户自定义数据类型,

14、1,创建用户自定义数据类型,系统存储过程,sp_addtype,可以创建用户自定义数据类型。,【例5-1】在数据库TSG中创建自定义数据类型Number,,SMALLINT类型,允许空。,USE TSG,GO,EXEC,sp_addtype,Number,SMALLINT,NULL,5.2.2,用户自定义数据类型,2,查看用户自定义数据类型,存储过程,sp_help,可以查看用户自定义数据类型。,【例5-2】查看Number的特征。,EXEC,sp_help,Number,图5-1 例5-2的运行结果,5.2.2,用户自定义数据类型,3,删除用户自定义数据类型,存储过程,sp_droptype

15、可以删除用户自定义数据类型。,【例5-3】删除自定义的数据类型Number。,EXEC,sp_droptype,Number,5.3,常量、变量和运算符,常量,是一个常值,在程序运行中保持不变,一,经定义程序本身不能改变其值。,变量,是在程序运行过程中其值可以改变的量。,5.3.1,常量,1字符串常量,字符串常量括在单引号内,并包含字母数字字符(,a-z,、,A-Z,和,0-9,)以及特殊字符如感叹号,(!),、,at,符,(),和数字号,(#),。例如:,Cincinnati,、,OBrien,、,Process X is 50%complete.,字符串常量还可以采用,Unicode,字

16、符编码格式。例如:,NA SQL,String,表示字符串,A,SQL,String,是一个Unicode字符串,。,5.3.1,常量,2二进制常量,二进制常量具有前辍,0 x,并且是十六进制数字字符串。这些常量不使用引号括起。例如,:,0 xAE,、,0 x12Ef,、,0 x69048AEFDD010E,、,0 x,(空二进制串),3日期/时间常量,日期,/,时间常量使用特定格式的字符日期值来表示,并被单引号括起来。例如:,2010-12-05,、,12/05/2010,、,20101205,第二种依赖于,DATEFORMAT,,是,SQL Server,默认的处理方式。,5.3.1,常量

17、4数值常量,1,)整型常量,整型常量用没有用引号括起来并且不包含小数点的数字字符串来表示。必须全部为数字,它们不能包含小数。例如:,2356,、,8,等都是整型常量。,2,)数值常量,数字常量分为精确数值常量和浮点常量。精确数值常量由没有用引号括起来并且包含小数点的数字字符串来表示。例如,,1894.1204,和,2.0,等,。,浮点常量使用科学记数法来表示。例如,,101.5E5,和,0.5E-2,等。,5.3.1,常量,4数值常量,3,)货币常量,货币常量以前缀为可选的小数点和可选的货币符号不使用引号括起的数字字符串来表示。例如:,$12,和,$542023.14,都为货币常量,前面的货

18、币符号“,$”,是可选的。,4,),uniqueidentifier,常量,UNIQUEIDENTIFIER,常量是表示,GUID,的字符串。可以使用字符或二进制字符串格式指定。例如:,6F9619FF-8B86-D011-B42D-00C04FC964FF,0 xff19966f868b11d0b42d00c04fc964ff,5.3.2,变量,1,局部变量(,Local Variable,),局部变量是用户自定义的变量,它的作用范围仅在定义它的程序内部。局部变量名以“,”,开头,用,DECLARE,命令进行定义,语法格式如下:,DECLARE,变量名 变量类型,变量名 变量类型,使用,SE

19、LECT,或,SET,命令来设置变量的值,语法格式如下:,SELECT,变量名,=,变量值 或者,SET,变量名,=,变量值,5.3.2,变量,1,局部变量(,Local Variable,),【,例,5-4】,声明一个存放名称的变量,Name,,类型为,char,,长度为,10,,赋值“图书馆”并输出变量的值。,DECLARE Name char(10),SELECT Name=,图书馆,PRINT Name,图,5-2,例,5-4,的运行结果,5.3.2,变量,2,全局变量(,Global Variable,),不是由用户的程序定义的,是在服务器级定义的系统内部使用的变量,任何程序均可以随

20、时使用。引用全局变量必须以标记符“,”,开头。,全局变量,含义,CONNECTIONS,返回自上次启动以来连接或试图连接的次数,CURSOR_ROWS,返回连接上最后打开的由表中当前存在的,ERROR,返回最后执行的,T-SQL,语句的错误代码,FETCH_STATUS,返回上一次,FETCH,语句的状态值,IDENTITY,返回最后插入的标识值,MAX_CONNECTIONS,返回,SQL,上允许的同时用户连接的最大数。,PROCID,返回当前存储过程的,ID,值,OPTIONS,返回当前,SET,选项的信息,ROWCOUNT,返回受上一语句影响的行数,任何不返回行的语句将这一变量设置为,0

21、SERVERNAME,返回运行,SQL,服务器名称,SERVICENAME,返回,SQL Server,正运行于哪种服务状态之下,如,MS SQL Server,,,MSDTC,,,SQL Server Agent,SPID,返回当前用户进程的服务器进程标识符,TRANCOUNT,返回当前连接的活动事务数,VERSION,返回,SQL Server,的版本信息,表,5-2,常用的全局变量,2.,全局变量(,Global Variable,),【例5-5】修改TSG数据库的Book表中某条记录的书号“CallNo”,用ERROR检测主键冲突。,USE TSG,GO,UPDATE Book SE

22、T,CallNo,=F121/L612,WHERE,CallNo,=G0/Z810,IF ERROR=2627,PRINT A constraint violation occurred,图,5-3,例,5-5,的运行结果,2.,全局变量(,Global Variable,),【例5-6】查看SQL,Server的版本号,。,SELECT VERSION,图,5-4,例,5-6,的运行结果,【例5-7】ROWCOUNT的使用。,USE TSG,GO,UPDATE BOOK SET Title=ZDMA,WHERE,CallNo,=999-888-7777,IF ROWCOUNT=0,print

23、 Warning:No rows were updated,图,5-5,例,5-7,的运行结果,5.3.3,注释与输出,1注释,注释语句不是可执行的语句,不参与程序的编译。,作用:,说明代码的功能或对代码的实现方式给出简要的解释或提示。,对,T-SQL,语句进行注释有两种方法:,(,1,)使用“,-”,进行单行注释。,(,2,)利用“,/*/”,进行块注释。,5.3.3,注释与输出,2,输出,(,1,),PRINT,语句可直接显示表达式结果,RAISERROR(msg_id|msg_str,SEVERITY,STATE,argumentl,n),(,2,),RASERROR,函数将错误信息显示

24、在屏幕上,同时也可以记录在日志中。RASEERROR函数的基本语法格式如下:,msg_id,:,错误号,省略时系统将产生一个错误号为,50000,的错误消息;,msg_str,:,错误信息;,SEVERITY,:,错误的严重级别;,STATE,:,说明发生错误时的状态信息。,输出的例子,【,例,5-8】,查询索书号为,F121/L612,的书籍数量,如果,1,本以上,则显示数量,1,本以上,否则输出库存不足信息。,USE TSG,GO,DECLARE,CallNo,varchar(9),Title varchar(40),Number,smallint,SET,CallNo,=F121/L61

25、2,SELECT Title=Title,Number=Number,From Book,Where,CallNo,=,CallNo,IF(Number 1)PRINT Title+1本以上。,ELSE,RAISERROR(库存不足,报警!,10,1),5.3.4,运算符,运算符,用来执行数据之间的数学或比较运算,是指定要在一个或者多个表达式中执行操作的一种符号,。,T-SQL,中运算符主要有,6,大类:,算术运算符,赋值运算符,位运算符,比较运算符,逻辑运算符,字符串串联运算符,1.,算术运算符,包括:,加(+)、减(-)、乘,(*)、,除(/)和取模(%),等,。,【例5-9】,SELEC

26、T+3+2,加法,SELECT-4-1,减法,SELECT-5*2,乘法,SELECT 10/2,整数相除,10.0/2,小数除法,SELECT 10%2,取余,图,5-7,例,5-9,的运行结果,赋值运算符和位运算符,赋值运算符,“,=,”,:将数据值指派给特定的对象。,位运算符,操作数:整型或者二进制数据,(IMAGE类型除外),包括:,位与(&)、位或(|)、位异或()和位非(),等,。,3.,位运算符,1)&运算,从两个表达式取对应的位。当且仅当中两个位的值都为1时,结果位才被设置为1;否则,结果位被设置为0。,例如:,170,:,0000 0000 1010,1010,75,:,00

27、00 0000 0100 1011,&-,10,:,0000 0000,0000,1010,2)|运算,取两个表达式的每个对应位,如果在输入表达式中有一个位为1或两个位均为1(对于正在解析的当前位),那么结果位将被设置为1;如果输入表达式中的两个位都不为1,则结果位将被设置为0。,3.,位运算符,3)运算,通过从两个表达式中取对应的位,如果在输入表达式的正在被解析的对应位中,任意一位(但不是两个位)的值为1,则结果位的值被设置为1;如果相对应的两个位的值都为0或者都为1,那么结果位的值被清除为0。,4)运算,(位非)运算符对表达式逐位执行逻辑位非运算。如果表达式的值为0,则结果集中的位将设置为

28、1;否则,结果中的位将清0。换句话说,1改成0,而0则改成1。,位运算符举例,【例5-10】计算170和75进行“位与”、“位或”、“位异或”的结果以及对170进行“位非”计算的结果。,SELECT 170&75,位与,SELECT 170|75,位或,SELECT 17075,位异或,SELECT 170,位非,图,5-8,例,5-10,的运行结果,4,.,比较运算符,比较两个表达式的大小或是否相同,其比较的结果,:,TRUE,(表示表达式的结果为真),FALSE,(表示表达式的结果为假),UNKNOWN,除了TEXT、NTEXT 或 IMAGE 数据类型的表达式外,比较运算符可以用于所有其

29、它表达式。,5.,逻辑运算符,把多个逻辑表达式连接起来。包括,AND,、,OR,和,NOT,。,运算结果:,TRUE,或,FALSE,值的布尔数据类型。,6.,字符串串联运算符,加号,(+),,可以进行字符串串联。例如,,表达式,ab+cd,的结果为,abcd,。,5.4,函数,函数是一组编译好的T-SQL语句,SQL Server支持两种函数类型:,内置函数:,是一组预定义函数,是,T-SQL,语言的一部分,用户可以直接使用它们实现希望的功能。,用户定义函数:,是由用户自行定义并编写的函数,用户可以根据需要编写和修改自定义函数,然后进行调用。,5.4.1,常用内置函数,SQL Servr 2

30、008中的函数大概分为7类,:,数学函数,字符串函数,日期时间函数,聚集函数,转换函数,系统函数,用户自定义函数,1,.,字符串函数,函数,UPPER(str,),ASCII(str,),REPLICATE(str,n),CHAR(n,),PATINDEX(%pattern,%,str,),CHARINDEX(str1,str2,start),LEN(str,),STUFF(str1,start,length,str2),REVERSE(str,),SUBSTRING(str,start,length),SPACE(n,),LTRIM(str,),LEFT(str,n),RTRIM(str,)

31、RIGHT(str,n),LOWER(str,),STR(f,p,s),表,5-3,常用字符串函数,1,.,字符串函数,【例5-11】删除字符串变量中起始处的空格。,DECLARE Str1 VARCHAR(40),SET Str1=,TWO SPACES BEFORE THIS STRING,SELECT Str1,SELECT THE RESULT IS:+LTRIM(Str1),图,5-9,例,5-11,的运行结果,1,.,字符串函数,【例5-12】编写一段程序输出数值147.58的整数和小数部分。,DECLARE,Str,CHAR(18),Pos SMALLINT,SET,Str,=

32、STR(147.58,6,2),SET Pos=CHARINDEX(.,STR),PRINT RTRIM(Str)+的整数部分是:+LEFT(Str,Pos-1),PRINT,RTRIM(Str)+的小数部分是,:,+RIGHT(RTRIM(Str),LEN(RTRIM(Str)-pos+1),图,5-10,例,5-12,的运行结果,2.,数学函数,函数,函数,ABS(n,),MOD(m,n),ACOS(n,),PI(),ASIN(n,),POWER(m,n),ATAN(n,),RADIANS(n,),CEILING(n,),RAND(),COS(n,),ROUND(m,n),DEGREES(

33、n,),SIGN(n,),EXP(n,),SIN(n,),FLOOR(n,),SQRT(n,),LOG(n,),SQUARE(n,),LOG10(n),TAN(n,),表,5-4,常用数学函数,2.,数学函数,【例5-13】对同一数值使用FLOOR、CEILING和ROUND函数。,SELECT FLOOR(1.2345),CEILING(1.2345),ROUND(1.2345,3),图,5-11,例,5-13,的运行结果,3.,日期和时间函数,函数,GETDATE(),DATEPART(datepart,date),DATENAME(datepart,date),DAY(date,),MO

34、NTH(date,),YEAR(date,),DATEADD(datepart,number,date),DATEDIFF(datepart,date1,date2),表,5-5,常见的日期和时间函数,3.,日期和时间函数,【例5-14】获取系统当前日期,并分别提取出月、日和年。,SELECT MONTH(GETDATE()月,DAY(GETDATE()日,YEAR(GETDATE()年,SELECT DATENAME(MONTH,GETDATE()月,DATENAME(DAY,GETDATE()日,DATENAME(YEAR,GETDATE()年,SELECT DATEPART(MONTH,

35、GETDATE()月,DATEPART(DAY,GETDATE()日,DATEPART(YEAR,GETDATE()年,图,5-12,例,5-14,的运行结果,3.,日期和时间函数,【例5-15】计算2006年9月1日到当前日期经历了多少数、多少月和多少周。,SELECT DATEDIFF(DAY,2006-9-1,GETDATE(),天数,DATEDIFF(MONTH,2006-9-1,GETDATE(),月数,DATEDIFF(WEEK,2006-9-1,GETDATE(),周数,图,5-13,例,5-15,的运行结果,4.,转换函数,能够完成某些,数据类型的转换,。,(1),CAST(e

36、xpression,type),:,将表达式expression转换为指定的type数据类型。,(2),CONVERT(type(length),expression,style),:,type为expression转换后的数据类型;,length表示转换后的数据长度;,style将日期时间类型的数据转换为字符型的数据时,该参数用于指定转换后的样式。,4.,转换函数,【,例,5-16】,将,/3,转换成相应度数对应的字符串。,SELECT CONVERT(VARCHAR,DEGREES(PI()/3),度数,1,CAST(DEGREES(PI()/3)AS VARCHAR),度数,2,图,5-

37、14,例,5-16,的运行结果,5,.,系统函数,函数,DB_ID(name,),,,DB_NAME(id,),HOST_ID(name,),,,HOST_NAME(id,),OBJECT_ID(name,),,,OBJECT_NAME(id,),SUSER_ID(name,),,,SUSER_NAME(id,),USER_ID(name,),,,USER_NAME(id,),COL_NAME(table_id,col_id,),COL_LENGTH(table,col,),INDEX_COL(table,index_id,key_id,),DATALENGTH(expression,),表,

38、5-7,部分系统函数,5,.,系统函数,【例5-17】利用系统函数获取一些信息。,SELECT CURRENT_USER,当前用户,DATALENGTH(,数据库,),长度,HOST_NAME(),计算机名,SYSTEM_USER,当前登录用户名,USER_NAME(1),根据,ID,返回用户名,图,5-15,例,5-17,的运行结果,5.4.2,用户自定义函数,根据函数返值类型不同分为两类:,表值函数,(包括内联表值函数和多语句表值函数),标量值函数,使用,SQL Server Management Studio,提供的模板,例如:在,TSG,数据库中创建一个标量值函数。,点击,【TSG】,

39、可编程性,】,【,函数,】,【,新建标量值函数,】,。,1,.,内联表值函数,内联表值函数,返回一个,单条,SELECT,语句产生的结果表,。函数定义的基本语法格式为:,CREATE FUNCTION FunctionName(param1 AS,DataType,=default,.n),RETURNS TABLE,AS,RETURN(SELECT statement),FunctionName,是用户定义函数的名称,在数据库中应该是唯一的;,param1,是函数的参数;,default,为函数参数的默认值;,DataType,是数据类型。,1,.,内联表值函数,【,例,5-18】,创建

40、一个函数,并调用该函数。功能是查询,TSG,数据库中的,Book,表中的所有记录。,USE TSG,GO,CREATE FUNCTION,SelectBook,(),RETURNS TABLE,AS,RETURN,SELECT*FROM Book -,返回,SELECT,查询结果,GO,SELECT*FROM,SelectBook,(),2.,多语句表值函数,多语句表值函数,返回一个由,T-SQL,语句建立的表,。其函数定义基本语法格式为:,CREATE FUNCTION FunctionName(param1,DataType,=default,n),RETURNS,return_varia

41、ble,TABLE,AS,BEGIN,function_body,RETURN,END,return_variable,是要返回的表变量,;,table_type_definition,为表定义,;,function_body,是函数体定义,。,2.,多语句表值函数,【例5-19】创建一个函数,通过输入CallNo,查询借阅该书的读者姓名和所在部门。,CREATE FUNCTION,GetReader(book_no,char(13),RETURNS info,TABLE(Name,char(10),Department varchar(20),AS,BEGIN,INSERT INTO,inf

42、o,SELECT,Name,Department,FROM Patron,JOIN Lend ON,Patron.PatronID,=,Lend.PatronID,JOIN Book ON,Lend.CallNo,=,Book.CallNo,WHERE,CallNo,=,book_no,RETURN,END,3,.,标量值函数,标量值函数,返回一个,确定类型的标量值,(除,TEXT,、,NTEXT,、,IMAGE,、,CURSOR,、,TIMESTAMP,和,TABLE,以外的类型)。其函数定义的基本语法格式为:,CREATE FUNCTION FunctionName(param1 AS,D

43、ataType,=default,.n),RETURNS,DataType,AS,BEGIN,Function_body,RETURN,DataType,END,3,.,标量值函数,【例5-20】创建一个函数,并调用函数。功能是获取系统当前日期,输出年份。,CREATE FUNCTION,CurrentDate,(),RETURNS INT,AS,BEGIN,RETURN,YEAR(GETDATE(),END,GO,DECLARE Year,int,SET Year=,TSG.dbo.CurrentDate,(),PRINT Year,5.5.1,批处理,“,批”:,是从客户端传递给服务器的一

44、组完整的数据和,SQL,指令的集合,从应用程序一次性的发送到,SQL Server,执行。,“,GO”,:,是批处理的标志,两个“,GO”,之间的,T-SQL,语句称为一个批处理。,【,例,5-21】,创建数据库,TSG,,并将当前数据库切换到,TSG,。,CREATE DATABASE TSG,USE TSG,是否能成功执行?,CREATE DATABASE TSG,GO,USE TSG,正确的做法是:,5.5.1,批处理,考虑如下程序,:,DECLARE,MyVar,varchar(50)-,该变量声明仅在该,批,中有效。,SELECT,MyVar,=,今天天气真不错!,PRINT,第一个

45、批处理执行结束,GO,PRINT,MyVar,-,产生错误,因为,MyVar,在该,批,中未定义而直接使用。,PRINT,第二个批处理执行结束,GO,PRINT,第三个批处理执行结束,GO,批处理要注意几个问题,并非所有语句都可以和其它语句组合在一个批中。CREATE,DEFAULT,、,CREATE,PROCEDURE,、,CREATE RULE,、,CREATE TRIGGER,、,CREATE VIEW必须独自成批处理,,,不能够与其他语句组合使用,。,如果EXECUTE,语句是批处理中的第一,条语句,,则不需要EXECUTE关键字,;,否则需要EXECUTE关键字。,RULE和DEFA

46、ULT不能在同一个批处理中绑定列同时又被使用。,CHECK约束不能在同一批处理中既定义又使用。,用SET语句改变的项,在批处理结束时生效。,在同一批处理中,不能修改一个表的某些列后马上使用这些新列,。,5.5.2,流程控制,流程控制语句,是指通过判断指定的某些值来,控制程序运行方向,的语句。,包括,:,BEGINEND,IFELSE,CASE,WHILE,GOTO,WAITFOR,1.BEGINEND,“BEGINEND”,语句,能够将多个,T-SQL,语句组合成一个语句块,并将它们视为一个单元处理。其语法格式为:,BEGIN,SQL,语句,|,语句块,END,2.IFELSE,“IFELSE

47、语句,是条件判断语句,,ELSE,子句可选。,语法格式为:,IF,|BEGIN END,ELSE,|BEGIN END,3.CASE,“CASE”,语句,可以计算多个条件式,并将其中一个符合条件的结果表达式返回。,CASE,语句只能嵌入到,SELECT,语句的,SELECT,子句中。,CASE语句有两种格式。,语法格式,1,:,CASE,表达式,WHEN,表达式,_11,THEN,表达式,_12,WHEN,表达式,_n1,THEN,表达式,_n2,else,表达式,_m,END,3.CASE,【例5-22】在Patron表中,选取姓王读者的Name(读者姓名)和Gender(性别),如果G

48、ender的值为男,则输出M;为女,则输出F。,USE TSG,GO,SELECT Name,性别,=CASE Gender,WHEN 男 THEN M,WHEN 女 THEN F,END,FROM Patron,WHERE Name LIKE 王%,图,5-17,例,5-22,的运行结果,3.CASE,语法格式,2,:,CASE,WHEN,条件表达式_1,THEN,表达式_1,WHEN,条件表达式,_n,THEN,表达式_n,else,表达式_m,END,【例5-23】在Book表中,选取姓“周”的作者所编著图书的Title(书名)和Number(数量),如果Number的值大于3,则输出“

49、多”,否则输出“少”。,USE TSG,GO,SELECT Title,书名,CASE WHEN Number3 THEN 多,ELSE 少,END,数量,FROM Book,WHERE Author LIKE 周%,图,5-18,例,5-23,的运行结果,4.WHILECONTINUEBREAK,“WHILECONTINUEBREAK”,语句,是用于设置按条件重复执行,SQL,语句或语句块。只要指定的条件为真,就重复执行语句。,其语法格式为:,WHILE,条件表达式,BEGIN,SQL语句|语句块,BREAK,CONTIUNE,SQL语句|语句块,END,CONTINUE语句,:,可以使程序

50、跳过,CONTINUE语句后面的语句,继续进行下一次循环。,BREAK语句,:,使程序完全跳出循环,结束,WHILE语句的执行。,5.GOTO,“GOTO”,语句,可以使程序直接跳转到指定的标有标识符的位置处继续执行。,语法格式为:,GOTO label,DECLARE sum SMALLINT,i SMALLINT,SET i=1;SET sum=0;,BEG:,IF(i=100),BEGIN,SET sum=,sum,+i;SET i=,i,+1,GOTO BEG,END,PRINT sum,【例5-24】求1100的累加和。,5.GOTO,例,5-24,,还可以用,WHILE,循环语句来

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服