TSQL语言学习教程.pptx
《TSQL语言学习教程.pptx》由会员分享,可在线阅读,更多相关《TSQL语言学习教程.pptx(101页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、5.1 SQL5.1 SQL语言与语言与T-SQLT-SQL语言语言b1什么是什么是SQL语言语言SQL语言的全名是结构化查询语言(StructuredQueryLanguage),是用于数据库中的标准数据查询语言,IBM公司最早使用该语言在其开发的数据库系统中。1986年10月,美国ANSI对SQL进行规范后,以此作为关系数据库管理系统的标准语言。作为关系数据库的标准语言,它已被众多商用数据库管理系统产品所采用,不过,不同的数据库管理系统在其实践过程中都对SQL规范做了某些改变和扩充。所以,实际上,不同数据库管理系统之间的SQL语言不能完全通用。例如,微软公司的MSSQL-Server支持的
2、是T-SQL,而甲骨文公司的Oracle数据库所使用的SQL语言则是PL-SQL。b2什么是什么是T-SQL语言语言T-SQL是SQL语言的一种版本,且只能在微软MSSQL-Server以及SybaseAdaptiveServer系列数据库上使用。T-SQL是ANSISQL的扩展加强版语言,除了提供标准的SQL命令之外,T-SQL还对SQL做了许多补充,提供了类似C、BASIC和Pascal的基本功能,如变量说明、流控制语言、功能函数等。第1页/共101页5.1 SQL5.1 SQL语言与语言与T-SQLT-SQL语言语言b3T-SQL语言的构成语言的构成在SQLServer数据库中,T-SQ
3、L语言由以下几部分组成。(1)数据定义语言(DDL)。DDL用于执行数据库的任务,对数据库以及数据库中的各种对象进行创建、删除、修改等操作。如前所述,数据库对象主要包括表、默认约束、规则、视图、触发器、存储过程。DDL包括的主要语句及功能如表5.1所示。语句功能说明CREATE创建数据库或数据库对象不同数据库对象,其CREATE语句的语法形式不同ALTER对数据库或数据库对象进行修改不同数据库对象,其ALTER语句的语法形式不同DROP删除数据库或数据库对象不同数据库对象,其DROP语句的语法形式不同表5.1DDL主要语句及功能第2页/共101页5.1 SQL5.1 SQL语言与语言与T-SQ
4、LT-SQL语言语言DDL各语句的语法、使用方法及举例请参考相关章节。(2)数据操纵语言(DML)。DML用于操纵数据库中的各种对象,检索和修改数据。DML包括的主要语句及功能如表5.2所示。语句功能说明SELECT从表或视图中检索数据是使用最频繁的SQL语句之一INSERT将数据插入到表或视图中UPDATE修改表或视图中的数据既可修改表或视图的一行数据,也可修改一组或全部数据DELETE从表或视图中删除数据可根据条件删除指定的数据表5.2DML主要语句及功能第3页/共101页5.1 SQL5.1 SQL语言与语言与T-SQLT-SQL语言语言DML各语句的语法、使用方法及举例请参考相关章节。
5、(3)数据控制语言(DCL)。DCL用于安全管理,确定哪些用户可以查看或修改数据库中的数据。DCL包括的主要语句及功能如表5.3所示。语句功能说明GRANT授予权限可把语句许可或对象许可的权限授予其他用户和角色REVOKE收回权限与GRANT的功能相反,但不影响该用户或角色从其他角色中作为成员继承许可权限DENY收回权限,并禁止从其他角色继承许可权限功能与REVOKE相似,不同之处是,除收回权限外,还禁止从其他角色继承许可权限表5.3DCL主要语句及功能DCL各语句的语法、使用方法及举例请参考相关章节。(4)T-SQL增加的语言元素。这部分不是ANSISQL所包含的内容,而是微软为了用户编程的
6、方便而增加的语言元素。这些语言元素包括变量、运算符、流程控制语句、函数等。这些T-SQL语句都可以在查询分析器中交互执行。本章将介绍这部分增加的语言元素。第4页/共101页5.2 5.2 常量、变量与数据类型常量、变量与数据类型5.2.1 常量常量根据常量值的不同类型,常量分为字符串常量、整型常量、实型常量、日期时间常量、货币常量、唯一标识常量。各类常量举例说明如下。b1字符串常量字符串常量字符串常量分为ASCII字符串常量和Unicode字符串常量。(1)ASCII字符串常量。ASCII字符串常量是用单引号括起来,由ASCII字符构成的符号串。ASCII字符串常量举例如下:ChinaHowd
7、oyou!OBbaar/*如果单引号中的字符串包含引号,可以使用两个单引号来表示嵌入的单引号。*/第5页/共101页5.2.1 5.2.1 常量常量(2)Unicode字符串常量。Unicode字符串常量与ASCII字符串常量相似,但它前面有一个N标识符(N代表SQL-92标准中的国际语言NationalLanguage),N前缀必须为大写字母。Unicode字符串常量举例如下:NChinaNHowdoyou!Unicode数据中的每个字符用两个字节存储,而每个ASCII字符用一个字节存储。第6页/共101页5.2.1 5.2.1 常量常量b2整型常量按照不同表示方式,整型常量又分为二进制整型
8、常量、十六进制整型常量和十进制整型常量。十六进制整型常量的表示:前辍0 x后跟十六进制数字串。十六进制常量举例:0 xEBF0 x69048AEFDD010E0 x/*空十六进制常量*/二进制整型常量的表示:即数字0或1,并且不使用引号。如果使用一个大于1的数字,它将被转换为1。十进制整型常量即不带小数点的十进制数,例如,18942+145345234-2147483648第7页/共101页5.2.1 5.2.1 常量常量b3实型常量实型常量实型常量有定点表示和浮点表示两种方式,举例如下。定点表示:1894.12042.0+145345234.2234-2147483648.10浮点表示:10
9、1.5E50.5E-2+123E-3-12E5第8页/共101页5.2.1 5.2.1 常量常量b4日期时间常量日期时间常量:用单引号将表示日期时间的字符串括起来构成。SQLServer可以识别如下格式的日期和时间。字母日期格式,如April20,2000;数字日期格式,如4/15/1998,1998-04-15;未分隔的字符串格式,如20001207;以下是时间常量的例子:14:30:2404:24:PM以下是日期时间常量的例子:April20,200014:30:24第9页/共101页5.2.1 5.2.1 常量常量b5money常量money常量是以“$”作为前缀的一个整型或实型常量数据
10、。下面是money常量的例子:$12$542023-$45.56+$423456.99b6uniqueidentifier常量uniqueidentifier常量是用于表示全局唯一标识符(GUID)值的字符串。可以使用字符串或十六进制字符串格式指定。例如,6F9619FF-8A86-D011-B42D-00004FC964FF0 xff19966f868b11d0b42d00c04fc964ff第10页/共101页5.2.2 5.2.2 数据类型数据类型b1系统数据类型系统数据类型系统数据类型又称为基本数据类型。在第3章已详细地介绍了系统数据类型,此处不再赘述。b2用户自定义数据类型用户自定义
11、数据类型用户自定义数据类型可看做系统数据类型的别名。在多表操作的情况下,当多个表中的列要存储相同类型的数据时,往往要确保这些列具有完全相同的数据类型、长度和为空性(数据类型是否允许空值)。用户自定义数据类型并不是真正的数据类型,它只是提供了一种提高数据库内部元素和基本数据类型之间一致性的机制。第11页/共101页5.2.2 5.2.2 数据类型数据类型用户自定义数据类型student_num后,可以重新设计学生成绩管理数据库表XSB、CJB结构中的学号字段,如表5.4、表5.5和表5.6所示。依赖的系统类型值允许的长度为空性char6NOTNULL表5.4自定义类型student_num字段名
12、类型字段名类型学号student_num学号student_num表5.5表XSB中学号字段的重新设计表5.6表CJB中学号字段的重新设计第12页/共101页5.2.2 5.2.2 数据类型数据类型通过上例可知:要使用用户自定义类型,首先应定义该类型,然后用这种类型来定义字段或变量。在创建用户自定义数据类型时首先应考虑如下三个属性:数据类型名称;新数据类型所依据的系统数据类型(又称为基类型);为空性。如果为空性未明确定义,系统将依据数据库或连接的ANSINull默认设置进行指派。创建用户自定义数据类型的方法如下。(1)使用对象资源管理器定义。步骤如下。第1步:启动“SQLServerManag
13、ementStudio”,在“对象资源管理器”中展开“数据库PXSCJ可编程性”,右击“类型”,选择“新建”选项,再选择“新建用户定义数据类型”,弹出“新建用户定义数据类型”窗口。第13页/共101页5.2.2 5.2.2 数据类型数据类型第2步:在“名称”文本框中输入自定义的数据类型名称,如student_num。在“数据类型”下拉框中选择自定义数据类型所基于的系统数据类型,如char。在“长度”栏中填写要定义的数据类型的长度,如6。其他选项使用默认值,如图5.1所示,单击“确定”按钮即可完成创建。图5.1“新建用户定义数据类型属性”窗口第14页/共101页5.2.2 5.2.2 数据类型数
14、据类型(2)使用命令定义。在SQLServer2008中,使用CREATETYPE语句来实现用户数据类型的定义。语法格式:CREATETYPEschema_name.type_nameFROMbase_type(precision,scale)NULL|NOTNULL;根据上述语法,定义描述学号字段的数据类型的语句如下:CREATETYPEstudent_numFROMchar(6)NOTNULL第15页/共101页5.2.2 5.2.2 数据类型数据类型(3)删除用户自定义数据类型。在SSMS中删除用户自定义数据类型的主要步骤如下:在对象资源管理器中展开数据库“PXSCJ可编程性类型”,在“
15、用户定义数据类型”中选择类型“dbo.student_num”,右击鼠标,在弹出的快捷菜单中选择“删除”菜单项,打开“删除对象”窗口后单击“确定”按钮即可(实际不做操作)。(4)使用命令删除用户自定义数据类型。使用命令方式删除自定义数据类型可以使用DROPTYPE语句。语法格式:DROPTYPEschema_name.type_name;例如,删除前面定义的student_num类型的语句为DROPTYPEstudent_num以上语句实际不做操作。第16页/共101页5.2.2 5.2.2 数据类型数据类型(5)利用用户自定义数据类型定义字段。在定义类型后,接着应考虑定义这种类型的字段,同样
16、可以利用对象资源管理器和T-SQL命令两种方式实现。读者可以参照第2章进行定义,不同点只是数据类型为用户自定义类型,而不是系统类型。例如,在对象资源管理器中对于XSB表学号字段的定义如图5.2所示。图5.2使用用户自定义数据类型定义XSB表第17页/共101页5.2.2 5.2.2 数据类型数据类型利用命令方式定义XSB表结构:CREATETABLEXSB(学号student_numNOTNULLPRIMARYKEY,/*将学号定义为student_num类型*/姓名char(8)NOTNULL,性别bitNULLDEFAULT1,出生时间datetimeNULL,专业char(12)NULL
17、,总学分 intNULL,备注varchar(500)NULL)第18页/共101页5.2.2 5.2.2 数据类型数据类型b3用户自定义表数据类型用户自定义表数据类型SQLServer2008还提供了一种新的用户自定义数据类型,称为用户自定义表数据类型(User-definedTableTypes)。这种数据类型也由用户自行定义,可以作为参数提供给语句、存储过程或者函数。创建自定义表数据类型也使用CREATETYPE语句,语法格式如下:CREATETYPEschema_name.type_nameASTABLE(,.n);【例例5.1】创建用户自定义表数据类型,包含CJB表中的所有列。CRE
18、ATETYPECJB_tabletypeASTABLE(学号char(6)NOTNULL,课程号char(3)NOTNULL,成绩intNOTNULL,PRIMARYKEY(学号,课程号)第19页/共101页5.2.3 5.2.3 变量变量b1变量变量变量名必须是一个合法的标识符。(1)标识符。在SQLServer中标识符分为两类。常规标识符:以ASCII字母、Unicode字母、下划线(_)、或#开头,后续可跟一个或若干个ASCII字符、Unicode字符、下划线(_)、美元符号($)、或#,但不能全为下划线(_)、或#。注意:常规标识符不能是T-SQL的保留字。常规标识符中不允许嵌入空格或
19、其他特殊字符。分隔标识符:包含在双引号()或者方括号()内的常规标识符或不符合常规标识符规则的标识符。标识符允许的最大长度为128个字符。符合常规标识符格式规则的标识符可以分隔,也可以不分隔。对不符合标识符规则的标识符必须进行分隔。第20页/共101页5.2.3 5.2.3 变量变量(2)变量的分类。SQLServer中变量可分为两类。全局变量:全局变量由系统提供且预先声明,通过在名称前加两个“”来区别于局部变量。T-SQL全局变量作为函数引用。例如,ERROR返回执行的上一个T-SQL语句的错误号;CONNECTIONS返回自上次启动SQLServer以来连接或试图连接的次数。全局变量的意义
20、及使用请参考附录B。局部变量:局部变量用于保存单个数据值。例如,保存运算的中间结果,作为循环变量等。当首字母为“”时,表示该标识符为局部变量名;当首字母为“#”时,此标识符为一临时数据库对象名,若开头含一个“#”,表示局部临时数据库对象名;若开头含两个“#”,表示全局临时数据库对象名。第21页/共101页5.2.3 5.2.3 变量变量b2局部变量的使用局部变量的使用(1)局部变量的定义与赋值。局部变量的定义。在批处理或过程中用DECLARE语句声明局部变量,所有局部变量在声明后均初始化为NULL。语法格式:DECLARElocal_variabledata_type=value,.n说明如下
21、。local_variable:局部变量名,应为常规标识符。前面的“”表示是局部变量。data_type:数据类型,用于定义局部变量的类型,可为系统类型或自定义类型。=value:为变量赋值,值可以是常量或表达式,但它必须与变量声明类型匹配。n:表示可定义多个变量,各变量间用逗号隔开。局部变量的赋值。当声明局部变量后,可用SET或SELECT语句为其赋值。用SET语句赋值:将DECLARE语句创建的局部变量设置为给定表达式的值。语法格式:SETlocal_variableexpression第22页/共101页5.2.3 5.2.3 变量变量【例5.2】创建局部变量var1、var2并赋值,然
22、后输出变量的值。DECLAREvar1char(10),var2char(30)SETvar1=中国/*一个SET语句只能为一个变量赋值*/SETvar2=var1+是一个伟大的国家SELECTvar1,var2GO执行结果如下:第23页/共101页5.2.3 5.2.3 变量变量【例例5.3】创建一个名为sex的局部变量,并在SELECT语句中使用该局部变量查找表XSB中所有女同学的学号、姓名。USEPXSCJGODECLAREsexbitSETsex=0SELECT学号,姓名FROMXSBWHERE性别=sex执行结果如下:第24页/共101页5.2.3 5.2.3 变量变量【例5.4】使
23、用查询为变量赋值。DECLAREstudentchar(8)SETstudent=(SELECT姓名FROMXSBWHERE学号=081101)SELECTstudent用SELECT语句赋值:语法格式:SELECTlocal_variable=expression,n关于SELECT,需说明以下几点:lSELECTlocal_variable通常用于将单个值返回到变量中。如果expression为列名,则返回多个值,此时将返回的最后一个值赋给变量。l如果SELECT语句没有返回行,变量将保留当前值。l如果expression是不返回值的标量子查询,则将变量设为NULL。l一个SELECT语句
24、可以初始化多个局部变量。第25页/共101页5.2.3 5.2.3 变量变量【例例5.5】使用SELECT语句为局部变量赋值。DECLAREvar1nvarchar(30)SELECTvar1=刘丰SELECTvar1ASNAME执行结果如下:第26页/共101页5.2.3 5.2.3 变量变量【例5.6】为局部变量赋空值。DECLAREvar1nvarchar(30)SELECTvar1=刘丰SELECTvar1=(SELECT姓名FROMXSBWHERE学号=089999)SELECTvar1ASNAME执行结果如下:第27页/共101页5.2.3 5.2.3 变量变量(2)局部游标变量的
25、定义与赋值。局部游标变量的定义。语法格式:DECLAREcursor_variable_nameCURSOR,.ncursor_variable_name是局部游标变量名,应为常规标识符。前面的“”表示是局部的。CURSOR表示该变量是游标变量。局部游标变量的赋值。利用SET语句为一个游标变量赋值,有三种情况:将一个已存在的并且赋值的游标变量的值赋给另一个局部游标变量。将一个已声明的游标名赋给指定的局部游标变量。声明一个游标,同时将其赋给指定的局部游标变量。第28页/共101页5.2.3 5.2.3 变量变量上述三种情况的语法描述如下。语法格式:SETcursor_variable=curso
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TSQL 语言 学习 教程
限制150内