SQLServer数据库教程第5章-T-SQL语言课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《SQLServer数据库教程第5章-T-SQL语言课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQLServer 数据库 教程 SQL 语言 课件
- 资源描述:
-
1、第第5 5章章 T-SQLT-SQL语言语言T-SQL语言T-SQL语言T-SQL语言由以下几部分组成。(1)数据定义语言(DDL)。DDL用于执行数据库的任务,对数据库以及数据库中的各种对象进行创建、删除、修改等操作。如前所述,数据库对象主要包括表、默认约束、规则、视图、触发器、存储过程。DDL包括的主要语句及功能如表5.1所示。语句功能说明CREATE创建数据库或数据库对象不同数据库对象,其CREATE语句的语法形式不同ALTER对数据库或数据库对象进行修改不同数据库对象,其ALTER语句的语法形式不同DROP删除数据库或数据库对象不同数据库对象,其DROP语句的语法形式不同T-SQL语言
2、(2)数据操纵语言(DML)。DML用于操纵数据库中的各种对象,检索和修改数据。DML包括的主要语句及功能如表5.2所示。语句功能说明SELECT从表或视图中检索数据是使用最频繁的SQL语句之一INSERT将数据插入到表或视图中UPDATE修改表或视图中的数据既可修改表或视图的一行数据,也可修改一组或全部数据DELETE从表或视图中删除数据可根据条件删除指定的数据T-SQL语言(3)数据控制语言(DCL)。DCL用于安全管理,确定哪些用户可以查看或修改数据库中的数据。DCL包括的主要语句及功能如表5.3所示。语句功能说明GRANT授予权限可把语句许可或对象许可的权限授予其他用户和角色REVOK
3、E收回权限与GRANT的功能相反,但不影响该用户或角色从其他角色中作为成员继承许可权限DENY收回权限,并禁止从其他角色继承许可权限功能与REVOKE相似,不同之处:除收回权限外,还禁止从其他角色继承许可权限(4)T-SQL增加的语言元素。这部分不是ANSISQL所包含的内容,而是微软为了用户编程的方便而增加的语言元素。这些语言元素包括变量、运算符、流程控制语句、函数等。这些T-SQL语句都可以在查询分析器中交互执行。本章会介绍这部分增加的语言元素。第第5 5章章 T-SQLT-SQL语言语言常量、自定义数据类型与变量01常 量1字符串常量2整型常量3实型常量4日期时间常量5货币(money)
4、常量6唯一标识(uniqueidentifier)常量1字符串常量字符串常量分为ASCII字符串常量和Unicode字符串常量。(1)ASCII字符串常量。ASCII字符串常量是用单引号括起来,由ASCII字符构成的符号串。ASCII字符串常量举例:ChinaHowdoyou!OBbaar/*如果单引号中的字符串包含引号,可以使用两个单引号来表示嵌入的单引号。*/(2)Unicode字符串常量。Unicode字符串常量与ASCII字符串常量相似,但它前面有一个N标识符(N代表SQL-92标准中的国际语言NationalLanguage),N前缀必须为大写字母。Unicode字符串常量举例:NC
5、hinaNHowdoyou!Unicode数据中的每个字符用两个字节存储,而每个ASCII字符用一个字节存储。2整型常量十六进制整型常量的表示:前辍0 x后跟十六进制数字串。十六进制常量举例:0 xEBF0 x69048AEFDD010E0 x/*空十六进制常量*/二进制整型常量的表示:即数字0或1,并且不使用引号。如果使用一个大于1的数字,它将被转换为1。十进制整型常量即不带小数点的十进制数,例如:18942+145345234-21474836483实型常量实型常量有定点表示和浮点表示两种方式,举例如下。定点表示:1894.12042.0+145345234.2234-2147483648
6、.10浮点表示:101.5E50.5E-2+123E-3-12E54日期时间常量日期时间常量:用单引号将表示日期时间的字符串括起来。SQLServer可以识别如下格式的日期和时间。字母日期格式,例如:April20,2000数字日期格式,例如:4/15/1998,1998-04-15未分隔的字符串格式,例如:20001207如下是时间常量的例子:14:30:2404:24:PM如下是日期时间常量的例子:April20,200014:30:245货币(money)常量money常量是以“$”作为前缀的一个整型或实型常量数据。下面是money常量的例子:$12$542023-$45.56+$423
7、456.996唯一标识(uniqueidentifier)常量uniqueidentifier常量是用于表示全局唯一标识符(GUID)值的字符串,可以使用字符串或十六进制字符串格式指定。例如:6F9619FF-8A86-D011-B42D-00004FC964FF0 xff19966f868b11d0b42d00c04fc964ff02自定义数据类型1用户自定义数据类型2数据类型的定义3数据类型的使用4数据类型的删除5用户自定义表数据类型1用户自定义数据类型用户自定义数据类型可看作系统数据类型的别名。在多表操作的情况下,当多个表中的列要存储相同类型的数据时,往往要确保这些列具有完全相同的数据类
8、型、长度和为空性(数据类型是否允许空值)。用户自定义数据类型并不是真正的数据类型,它只是提供了一种提高数据库内部元素和基本数据类型之间一致性的机制。例如,对于学生成绩管理数据库(xscj),创建了xsb、kcb、cjb3张表。从表结构中可看出:表xsb中的学号字段值与表cjb中的学号字段值应有相同的类型,均为字符型值,长度可定义为6,并且不允许为空值。为了确保这一点,可以先定义一个数据类型,命名为STUDENT_num,用于描述学号字段的这些属性,然后将表xsb中的学号字段和表cjb中的学号字段定义为STUDENT_num数据类型。2数据类型的定义创建用户自定义数据类型的方法如下。(1)使用界
9、面方式定义在“对象资源管理器”中展开“数据库”“xscj”“可编程性”“类型”“用户定义数据类型”,单击鼠标右键,在快捷菜单中选择“新建用户定义数据类型”,系统进入新建用户定义数据类型窗口。在“名称”文本框中输入自定义的数据类型名称,如STUDENT_num;在“数据类型”下拉框中选择自定义数据类型所基于的系统数据类型,如char;在“长度”栏中填写要定义的数据类型的长度,如6。其他选项使用默认值,单击“确定”按钮即可完成创建。如果允许自定义数据类型为空,则在“允许NULL值”复选框中打勾。2数据类型的定义(2)使用命令定义在SQLServer中,使用CREATETYPE语句来实现用户数据类型
10、的定义。语法格式如下:CREATETYPE架构名.类型名FROM基类型(精度,位数)NULL|NOTNULL根据上述语法,定义描述学号字段的数据类型的语句如下:CREATETYPESTUDENT_numFROMchar(6)NOTNULL3数据类型的使用在用户定义类型后,就可在“对象资源管理器”和T-SQL命令方式中应用这种用户自定义类型了。(1)在“对象资源管理器”中应用举例例如,对xsb表学号字段的定义如图5.1所示。3数据类型的使用(2)T-SQL应用举例利用命令方式定义xsb表结构:CREATETABLExsb(学号STUDENT_numNOTNULLPRIMARYKEY,/*将学号定
11、义为STUDENT_num类型*/姓名char(8)NOTNULL,性别bitNULLDEFAULT1,出生时间datetimeNULL,专业char(12)NULL,总学分intNULL,备注varchar(500)NULL)4数据类型的删除删除用户自定义数据类型的方法如下。(1)使用“对象资源管理器”删除。在SSMS中删除,主要操作如下:在“对象资源管理器”中展开数据库“xscj”“可编程性”“类型”,在“用户定义数据类型”中选择类型“dbo.STUDENT_num”,右键单击鼠标,在弹出的快捷菜单中选择“删除”菜单项,打开“删除对象”窗口后单击“确定”按钮即可(实际不做操作)。(2)使用
12、命令删除。使用命令方式删除自定义数据类型可以使用DROPTYPE语句。语法格式如下:DROPTYPE架构名.类型名例如,删除前面定义的STUDENT_num类型的语句为:DROPTYPESTUDENT_num以上语句实际不做操作。5用户自定义表数据类型用户自定义表数据类型(User-definedTableTypes)也由用户自行定义,可以作为参数提供给语句、存储过程或者函数。创建自定义表数据类型也使用CREATETYPE语句,语法格式如下:CREATETYPE架构名.类型名ASTABLE(,.)【例5.1】创建用户自定义表数据类型,包含cjb表中的所有列。CREATETYPEcjb_tabl
13、etypeASTABLE(学号char(6)NOTNULL,课程号char(3)NOTNULL,成绩intNOTNULL,PRIMARYKEY(学号,课程号)用户自定义表数据类型的删除与自定义数据类型类似,可以在“对象资源管理器”中使用界面方式删除,也可以使用DROPTYPE语句删除。03变量:DECLARE/SET/SELECT1变量及其分类2局部变量3局部游标变量4表数据类型变量1变量及其分类(1)标识符常规标识符:以ASCII字母、Unicode字母、下画线(_)、或#开头,后续可跟一个或若干个ASCII字符、Unicode字符、下画线(_)、美元符号($)、或#,但不能全为下画线(_)
14、、或#。分隔标识符:包含在双引号()或者方括号()内的常规标识符或不符合常规标识符规则的标识符。标识符允许的最大长度为128个字符。符合常规标识符格式规则的标识符可以分隔,也可以不分隔。对不符合标识符规则的标识符必须进行分隔。(2)变量的分类全局变量:全局变量由系统提供且预先声明,通过在名称前加两个“”来区别于局部变量。T-SQL全局变量作为函数引用。例如,ERROR返回执行的上一个T-SQL语句的错误号;CONNECTIONS返回自上次启动SQLServer以来连接或试图连接的次数。局部变量:局部变量用于保存单个数据值。例如,保存运算的中间结果,作为循环变量等。当首字母为“”时,表示该标识符
15、为局部变量名;当首字母为“#”时,此标识符为一临时数据库对象名,若开头含一个“#”,表示局部临时数据库对象名,若开头含两个“#”,表示全局临时数据库对象名。2局部变量(1)局部变量的定义在批处理或过程中用DECLARE语句声明局部变量,所有局部变量在声明后均初始化为NULL。语法格式:DECLARE局部变量数据类型=值,.(2)局部变量的赋值当声明局部变量后,可用SET或SELECT语句为其赋值。用SET语句赋值。将DECLARE语句创建的局部变量设置为给定表达式的值。语法格式:SETl局部变量表达式SETl局部变量表达式2局部变量【例5.2】创建局部变量var1、var2并赋值,然后输出变量
16、的值。DECLAREvar1char(10),var2char(30)SETvar1=中国/*一个SET语句只能为一个变量赋值*/SETvar2=var1+是一个伟大的国家SELECTvar1,var2GO执行结果如图5.2所示。2局部变量【例5.3】创建一个名为sex的局部变量,并在SELECT语句中使用该局部变量查找表xsb中所有女同学的学号、姓名。USExscjGODECLAREsexbitSETsex=0SELECT学号,姓名FROMxsbWHERE性别=sex【例5.4】使用查询为变量赋值。DECLAREstudentchar(8)SETstudent=(SELECT姓名FROMxs
17、bWHERE学号=191301)SELECTstudent2局部变量用SELECT语句赋值。语法格式:SELECT局部变量=表达式,说明:“SELECT局部变量”通常用于将单个值返回到变量中。如果“表达式”为列名,则返回多个值,此时将返回的最后一个值赋给变量。如果SELECT语句没有返回行,变量将保留当前值。如果“表达式”是不返回值的变量查询,则将变量设为NULL。一个SELECT语句可以初始化多个局部变量。2局部变量【例5.5】使用SELECT语句为局部变量赋值。DECLAREvar1nvarchar(30)SELECTvar1=刘丰SELECTvar1ASNAME【例5.6】为局部变量赋空
18、值。DECLAREvar1nvarchar(30)SELECTvar1=刘丰SELECTvar1=(SELECT姓名FROMxsbWHERE学号=191399)SELECTvar1ASNAME3局部游标变量(1)局部游标变量的定义语法格式:DECLARE游标变量名CURSOR,.游标变量名”是局部游标变量名,应为常规标识符。前面的“”表示是局部的。CURSOR表示该变量是游标变量。(2)局部游标变量的赋值利用SET语句为一个游标变量赋值,有3种情况:将一个已存在的并且赋值的游标变量的值赋给另一个局部游标变量;将一个已声明的游标名赋给指定的局部游标变量;声明一个游标,同时将其赋给指定的局部游标变
19、量。3局部游标变量上述3种情况的语法描述如下。语法格式:SET游标变量=游标变量/*将一个已赋值的游标变量的值赋给一个目标游标变量*/|游标名/*将一个已声明的游标名赋给游标变量*/|CURSOR子句/*游标声明*/3局部游标变量(3)游标变量的使用步骤如下:定义游标变量给游标变量赋值打开游标利用游标读取行(记录)使用结束后关闭游标删除游标的引用。【例5.7】使用游标变量。USExscjGODECLARECursorVarCURSOR/*定义游标变量*/SETCursorVar=CURSORSCROLLDYNAMIC/*为游标变量赋值*/FORSELECT学号,姓名FROMxsbWHERE姓名
20、LIKE王%OPENCursorVar/*打开游标*/FETCHNEXTFROMCursorVarFETCHNEXTFROMCursorVar/*通过游标读行记录*/CLOSECursorVarDEALLOCATECursorVar/*删除对游标的引用*/执行结果如图5.3所示。4表数据类型变量语法格式:DECLARE表变量名ASTABLE(|,.)【例5.8】声明一个表数据类型变量并向变量中插入数据。DECLAREvar_tableASTABLE(numchar(6)NOTNULLPRIMARYKEY,namechar(8)NOTNULL,sexbitNULL)/*声明变量*/INSERTI
21、NTOvar_tableSELECT学号,姓名,性别FROMxsb/*插入数据*/SELECTTOP(4)*FROMvar_tableWHERE备注=NOTNULL/*查看内容*/执行结果如图5.4所示。第第5 5章章 T-SQLT-SQL语言语言运算符与表达式运算符与表达式1算术运算符算术运算符用于对两个表达式执行数学运算,这两个表达式可以是任何数字数据类型。算术运算符有+(加)、-(减)、*(乘)、/(除)和%(求模)5种运算。+(加)和-(减)运算符还可用于对日期时间类型的值进行算术运算。2位运算符位运算符在两个表达式之间执行位操作,这两个表达式的类型可为整型或与整型兼容的数据类型(如字
22、符型等,但不能为image类型)。位运算符如表5.4所示。运算符运算规则&两个位均为1时,结果为1,否则为0|只要一个位为1,结果为1,否则为0两个位值不同时,结果为1,否则为0运算符与表达式【例5.9】在test1数据库中,建立表bitop,并插入一行,然后将a字段和b字段列上值进行按位与运算。USEtest1GOCREATETABLEbitop(aintNOTNULL,bintNOTNULL)INSERTbitopVALUES(168,73)SELECTa&b,a|b,abFROMbitopGO执行结果如图5.5所示。运算符与表达式说明:a(168)用二进制表示为0000000010101
23、000,b(73)用二进制表示为0000000001001001。在这两个值之间进行的位运算如下:(a&b):000000001010100000000000010010010000000000001000(十进制值为8)(a|b):000000001010100000000000010010010000000011101001(十进制值为233)(ab):000000001010100000000000010010010000000011100001(十进制值为225)运算符与表达式3比较运算符比较运算符(又称关系运算符)如表5.5所示,用于测试两个表达式的值是否相同,其运算结果为逻辑值,可
24、以为TRUE、FALSE及UNKNOWN三者之一。运算符含义运算符含义=相等大于、!=不等于小于!=大于等于!不大于运算符与表达式4逻辑运算符逻辑运算符用于对某个条件进行测试,运算结果为TRUE或FALSE。SQLServer提供的逻辑运算符如表5.6所示。这里的逻辑运算符在SELECT语句的WHERE子句中介绍过,此处再做一些补充。运算符运算规则AND如果两个操作数值都为TRUE,则运算结果为TRUEOR如果两个操作数中有一个为TRUE,则运算结果为TRUENOT若一个操作数值为TRUE,则运算结果为FALSE,否则为TRUEALL如果每个操作数值都为TRUE,则运算结果为TRUEANY在一
25、系列操作数中只要有一个为TRUE,则运算结果为TRUEBETWEEN如果操作数在指定的范围内,则运算结果为TRUEEXISTS如果子查询包含一些行,则运算结果为TRUEIN如果操作数值等于表达式列表中的一个,则运算结果为TRUELIKE如果操作数与一种模式相匹配,则运算结果为TRUESOME如果在一系列操作数中,有些值为TRUE,则运算结果为TRUE运算符与表达式(1)ANY、SOME、ALL、IN的使用可以将ALL或ANY关键字与比较运算符组合进行子查询。SOME的用法与ANY相同。以比较运算符为例:ALL表示大于每一个值,即大于最大值。例如,ALL(5,2,3)表示大于5。因此,使用ALL
展开阅读全文