中职 数据库应用基础(SQL Server 2016)项目7教学课件.pptx
《中职 数据库应用基础(SQL Server 2016)项目7教学课件.pptx》由会员分享,可在线阅读,更多相关《中职 数据库应用基础(SQL Server 2016)项目7教学课件.pptx(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、中职 数据库应用基础(SQL Server 2016)项目7教学课件工信版p 理解Transcact-SQL基本组成p 掌握流程控制语句的使用方法p 掌握函数的使用方法p 掌握游标的使用方法p 掌握处理事务的方法 项目目标 7.1.1 Transact-SQL语言组成1.数据定义语言数据定义语言(DDL)用于创建数据库和各种数据库对象。2.数据操作语言数据操作语言(DML)主要用于操作向表中添加数据、更改表中的数据以及从表中删除数据。3.数据控制语言数据控制语言主要用于执行与安全管理相关的操作,以确保数据库的安全。4.事务管理语言事务管理语言主要用于执行开始、提交和回滚事件相关的操作。5.附加
2、语言元素附加的语言元素主要包括标识符、变量和常量、运算符、数据类型、函数、流程控制语句、错误处理语言以及注释语句等。任务7.1 理解Transcact-SQL7.1.2 批处理与脚本批处理就是包含一个或多个Transact-SQL语句的组,从应用程序一次性地发送到SQL Server进行执行。SQL Server将批处理的语句编译为一个可执行单元,称为执行计划。执行计划中的语句每次执行一条。使用GO命令可以向SQL Server实用工具发出一批Transact-SQL语句结束的信号。GO并不是Transact-SQL语句,它是sqlcmd实用工具和SQL Server Management S
3、tudio代码编辑器识别的命令,可以解释为应该向SQL Server实例发送当前批语句的信号。当前批语句由上一个GO命令后输入的所有语句组成。GO命令与Transact-SQL语句不能在同一行中,但是GO后面可以跟一个正整数,以指定GO之前的批处理执行的次数,GO命令行也可以包含注释。任务7.1 理解Transcact-SQL7.1.3 标识符创建数据库对象时需要使用标识符对其进行命名。在SQL Server中,所有内容都可以有标识符,例如服务器、数据库以及表、视图、列、索引、触发器、过程、约束和规则等数据库对象都可以有标识符。大多数对象要求有标识符,但对有些对象(例如约束)而言,标识符是可选
4、的。对象标识符是在定义对象时创建的,随后可以使用标识符来引用该对象。标识符的排序规则取决于定义标识符时所在的级别。为实例级对象(例如登录名和数据库名)的标识符指定的是实例的默认排序规则。为数据库对象(例如表、视图和列名)的标识符指定的是数据库的默认排序规则。标识符分为常规标识符和分隔标识符两类。常规标识符符合标识符的格式规则,当在Transact-SQL语句中使用常规标识符时不用将其分隔开。分隔标识符包含在双引号()或方括号()内。在Transact-SQL语句中,符合标识符格式规则的标识符可以分隔,也可以不分隔;对不符合所有标识符规则的标识符则必须用双引号或括号进行分隔。常规标识符和分隔标识
5、符包含的字符数必须在1128之间。对于本地临时表,标识符最多可以有116个字符。当使用标识符作为对象名称时,完整的对象名称由四个标识符组成:服务器名称、数据库名称、架构名称和对象名称。标识符的语法格式如下。服务器.数据库.架构.对象任务7.1 理解Transcact-SQL7.1.4 常量1.字符串常量字符串常量必须使用一对单引号括起来,可以包含字母(az、AZ)、汉字、数字字符(09)以及其他特殊字符,如感叹号(!)、at符()和数字符(#)等。例如,数据库应用基础,SQL Server 2016数据库。2.Unicode字符串Unicode字符串的格式与普通字符串相似,但它前面有一个N标识
6、符。N前缀必须是大写字母。例如,Michl 是字符串常量,而NMichl 则是Unicode常量。3.二进制常量二进制常量用十六进制数字字符串来表示,以0 x作为前缀,不使用引号。例如,0 xAE,0 x12Ef,0 x69048AEFDD010E,0 x(二进制空串)。4.bit常量bit常量用数字0或1表示,不使用引号。如果使用一个大于1的数字,它将会被转换为数字1。5.datetime常量datetime常量使用特定格式的字符日期值来表示,并使用单引号括起来。日期常量示例:2019-10-01,October 1,2019,10/01/2019。时间常量示例:20:30:12,08:30
7、 PM。任务7.1 理解Transcact-SQL6.integer常量integer常量用一串数字来表示,不含小数点,不使用引号。例如,123,2020。7.decimal常量decimal常量用一串数字来表示,可以包含小数点,不使用引号。例如,1894.1204,2.0。8.float和real常量float和real常量使用科学记数法表示。例如,101.5E5,0.5E-2。9.money常量money常量用一串数字,可以包含或不包含小数点,以一个货币符号($)作为前缀,不使用引号。例如,$12,$542023.14。10.uniqueidentifier常量uniqueidentifi
8、er常量是表示全局唯一标识符(GUID)值的字符串,可使用字符串或二进制字符串格式来表示。例如,6F9619FF-8B86-D011-B42D-00C04FC964FF和0 xff19966f868 b11d0b42d00c04fc964ff表示相同的GUID。11.指定负数和正数若要指明一个数是正数还是负数,应对数字常量前面加上正号(+)或负号(),由此得到有符号数字值的常量。任务7.1 理解Transcact-SQL7.1.5 局部变量1.声明局部变量DECLARE 局部变量名 AS 数据类型,.2.设置局部变量的值SET 局部变量名=表达式3.显示局部变量的值当使用SELECT语句时,如
9、果省略局部变量后面的赋值号(=)和相应的表达式,则可以将局部变量的值显示出来。此外,也可以使用PRINT语句可以向客户端返回局部变量的值或者用户自定义的消息,语法格式如下。PRINT 字符串常量|局部变量名|字符串表达式任务7.1 理解Transcact-SQL7.1.6 表达式表达式是标识符、值和运算符的组合,Transact-SQL可以对其求值以获取结果。访问或更改数据时,可以在多个不同的位置使用数据。例如,可以将表达式用作要在查询中检索的数据的一部分,也可以用作查找满足一组条件的数据时的搜索条件。表达式可以是常量、函数、列名、变量、子查询、CASE、NULLIF或COALESCE,也可以
10、用运算符对这些实体进行组合以生成表达式。在表达式中,应使用单引号将字符串和日期值括起来。使用运算符可以执行算术、比较、串联或赋值操作。例如,可以测试数据以确保客户数据的国家/地区列已填充或非空。在查询中,可以查看表(应与某种类型的运算符一起使用)中的数据的任何用户都可以执行操作。必须具有相应权限才能成功更改数据。在Transact-SQL中,使用运算符可以执行下列操作:永久或临时更改数据;搜索满足指定条件的行或列;在数据列之间或表达式之间进行判断;在开始或提交事务之前,或者在执行特定代码行之前测试指定条件。任务7.1 理解Transcact-SQL7.1.7 空值空值(NULL)表示值未知。空
11、值不同于空白或零值。没有两个相等的空值。比较两个空值或将空值与任何其他值相比均返回未知,这是因为每个空值均为未知。空值一般表示数据未知、不适用或将在以后添加数据。例如,学生的成绩在生成成绩单时可能不知道。在SQL-92标准中,引入了关键字IS NULL和IS NOT NULL来测试是否存在空值。若要在查询中测试空值,可在WHERE子句中使用IS NULL或IS NOT NULL。在SQL Server Management Studio代码编辑器中查看查询结果时,空值在结果集中显示为NULL。若要在表列中插入空值,可在INSERT或UPDATE语句中显式声明NULL,或不让列出现在INSERT
12、语句中,或使用ALTER TABLE语句在现有表中新添一列。不能将空值用于区分表中两行所需的信息,例如外键或主键。在程序代码中,可以检查空值以便只对具有有效(或非空)数据的行执行某些计算。如果包含空值列,则某些计算(如平均值)就会不准确,因此执行计算时删除空值很重要。如果数据中可能存储有空值而又不希望数据中出现空值,就应该创建查询和数据修改语句,删除空值或将它们转换为其他值。如果数据中出现空值,则逻辑运算符和比较运算符有可能返回TRUE或FALSE以外的第三种结果,即UNKNOWN。这种三值逻辑是导致许多应用程序出现错误的根源。任务7.1 理解Transcact-SQL7.1.8 注释语句1.
13、行内注释使用双连字符(-)可以将注释文本插入单独行中、嵌套在Transact-SQL命令行的结尾或嵌套在Transact-SQL语句中,服务器不对这些注释进行计算。语法如下:-注释文字2.块注释使用正斜杠-星号字符对(/*.*/)也可以添加注释文本,服务器不计位于/*与*/之间的文本。语法格式如下:/*注释文字*/任务7.1 理解Transcact-SQL7.2.1 BEGIN.END语句BEGIN.END语句用于将一系列的Transact-SQL语句组合成一个语句块(相当于其他高级语言中的复合语句),从而可以执行一组Transact-SQL语句,语法格式如下。BEGIN 语句|语句块END其
14、中语句和语句块别表示使用BEGIN.END语句块定义的任何有效的Transact-SQL语句或语句组。BEGIN.END语句块允许嵌套。任务7.2 使用流程控制语句7.2.2 IF.ELSE语句IF.ELSE语句在满足指定条件时执行一组Transact-SQL语句,当不满足指定条件时执行另一组Transact-SQL语句,语法格式如下。IF 布尔表达式 语句|语句块ELSE 语句|语句块其中布尔表达式的返回值为TRUE或FALSE。如果布尔表达式中含有SELECT语句,则必须用圆括号将SELECT语句括起来。语句|语句块是任何Transact-SQL语句或用语句块定义的语句分组。除非使用语句块
15、,否则IF或ELSE条件只能影响一个Transact-SQL语句的性能。如果需要定义语句块,请使用BEGIN.END语句。如果布尔表达式返回TRUE,则执行IF关键字及其条件之后的Transact-SQL语句。可选的ELSE关键字引入另一个Transact-SQL语句,当布尔表达式返回FALSE时执行该语句。任务7.2 使用流程控制语句7.2.3 CASE函数1.简单CASE函数CASE 输入表达式 WHEN 匹配表达式1 THEN 结果表达式1 WHEN 匹配表达式2 THEN 结果表达式2.ELSE 结果表达式nEND其中输入表达式指定使用简单CASE格式时所计算的表达式,可以是任意有效的
16、表达式。WHEN 匹配表达式指定使用简单CASE格式时要与输入表达式进行比较的简单表达式。匹配表达式是任意有效的表达式。输入表达式与每个匹配表达式的数据类型必须相同,或者必须是隐式转换的数据类型。THEN 结果表达式指定当输入表达式=匹配表达式计算结果为TRUE时返回的表达式。结果表达式可以是任意有效的表达式。ELSE 结果表达式n指定比较运算计算结果不为TRUE时返回的表达式。如果忽略此参数且比较运算计算结果不为TRUE,则CASE返回NULL。结果表达式n是任意有效的表达式。所有结果表达式的数据类型必须相同或必须是隐式转换的数据类型。任务7.2 使用流程控制语句7.2.3 CASE函数2.
17、CASE搜索函数CASE WHEN 布尔表达式1 THEN 结果表达式1 WHEN 布尔表达式2 THEN 结果表达式2.ELSE 结果表达式nENDWHEN 布尔表达式指定当使用CASE搜索格式时所计算的布尔表达式。THEN 结果表达式指定当布尔表达式的计算结果为TRUE时返回的表达式,可是任意有效的表达式。ELSE 结果表达式n指定比较运算计算结果不为TRUE时返回的表达式。如果忽略此参数且比较运算计算结果不为TRUE,则CASE返回NULL。结果表达式n是任意有效的表达式。所有结果表达式的数据类型必须相同或必须是隐式转换的数据类型。任务7.2 使用流程控制语句7.2.4 WAITFOR语
18、句WAITFOR语句在达到指定时间或时间间隔之前,或者指定语句至少修改或返回一行之前,阻止执行批处理、存储过程或事务,语法格式如下。WAITFOR DELAY 等待的时段|TIME 完成的时间其中DELAY指定可以继续执行批处理、存储过程或事务之前必须等待的时段,最长可以是24小时。TIME指定的运行批处理、存储过程或事务的时间。完成的时间指定何时执行WAITFOR语句。等待的时间和完成的时间可以使用datetime数据可接受的格式来指定,也可以将其指定为局部变量,但不能指定日期。因此,不允许指定datetime值的日期部分。使用WAITFOR语句可以挂起批处理、存储过程或事务的执行,直到发生
19、以下情况:已超过指定的时间间隔;到达一天中指定的时间。任务7.2 使用流程控制语句7.2.5 WHILE语句WHILE语句设置重复执行SQL语句或语句块的条件,只要指定的条件为真,就重复执行语句;也可以使用BREAK和CONTINUE关键字在循环内部控制WHILE循环中语句的执行。语法格式如下。WHILE 布尔表达式 语句|语句块|BREAK|CONTINUE其中参数布尔表达式的计算结果为TRUE或FALSE。如果布尔表达式中含有SELECT语句,则必须用括号将SELECT语句括起来。语句和语句块分别是Transact-SQL语句或用语句块定义的语句分组。若要定义语句块,可以使用控制流关键字B
20、EGIN和END。BREAK导致从最内层的WHILE循环中退出,将执行出现在END关键字(循环结束的标记)后面的任何语句。如果嵌套了两个或多个WHILE循环,则内层的BREAK将退出到下一个外层循环,将首先运行内层循环结束之后的所有语句,然后重新开始下一个外层循环。CONTINUE使WHILE循环重新开始执行,忽略CONTINUE关键字后面的任何语句。任务7.2 使用流程控制语句7.2.6 TRY.CATCH语句TRY.CATCH语句对Transact-SQL实现类似于C#和C+语言中的异常处理的错误处理。Transact-SQL语句组可以包含在TRY块中。如果在TRY块内部发生错误,则会将控
21、制传递给CATCH块中包含的另一个语句组。语法格式如下。BEGIN TRY 语句|语句块END TRYBEGIN CATCH 语句|语句块END CATCH;其中语句为任何Transact-SQL语句;语句块为批处理或封装在BEGIN.END块中的任何Transact-SQL语句组。使用TRY.CATCH可以捕捉所有严重级别大于10但不终止数据库连接的错误。TRY块后必须紧跟相关联的CATCH块。在END TRY与BEGIN CATCH语句之间放置任何其他语句都将生成语法错误。TRY.CATCH构造不能跨越多个批处理,也不能跨越多个Transact-SQL语句块。任务7.2 使用流程控制语句7
22、.3.1 函数概述不论是内置函数还是用户自定义函数都可以用在任意表达式中。例如,用在SELECT语句的选择列表中可以返回一个值,用在SELECT、INSERT、DELETE或UPDATE语句的WHERE子句搜索条件中可以限制查询符合条件的行,用在视图的搜索条件中可以使视图在运行时与用户或环境动态地保持一致,用在CHECK约束或触发器中可以在插入数据时查找指定的值,用在DEFAULT约束或触发器中可以在INSERT语句未指定值时提供一个值,如此等等。使用函数时应始终带上圆括号,即使没有任何参数也是如此。但是,与DEFAULT关键字一起使用的niladic函数例外。在某些情况下,用来指定数据库、计
23、算机、登录名或数据库用户的参数是可选的。如果未指定这些参数,则默认将这些参数赋值为当前的数据库、主机、登录名或数据库用户。函数可以嵌套使用,可以将一个函数作为另一个函数的参数来使用。按照函数的返回值是否确定,可以将函数分为严格确定函数、确定函数和非确定函数。如果一个函数对于一组特定的输入值始终返回相同的结果,则该函数就是严格确定函数。对于用户定义的函数,判断其是否确定的标准相对宽松。如果对于一组特定的输入值和数据库状态,函数始终返回相同的结果,则该函数就是确定函数。如果函数是数据访问函数,即使它不是严格确定的,也可以从这个角度认为它是确定的。任务7.3 使用函数7.3.2 字符串函数(1)返回
24、字符表达式最左侧字符的ASCII码值:ASCII(字符串表达式)(2)CHAR函数将一个int类型的ASCII码转换为字符:CHAR(整型表达式)(3)LEFT函数返回字符串中从左边开始指定个数的字符:LEFT(字符表达式,整型表达式)(4)LEN函数返回指定字符串表达式的字符数(不包括尾随空格):LEN(字符串表达式)(5)LOWER函数将大写字符数据转换为小写后返回一个字符表达式:LOWER(字符表达式)(6)LTRIM函数在删除前导空格后返回一个字符表达式:LTRIM(字符表达式)(7)NCHAR函数返回具有指定整数代码的Unicode字符:NCHAR(整型表达式)(8)REPLACE函
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中职 数据库应用基础SQL Server 2016项目7教学课件 数据库 应用 基础 SQL 2016 项目 教学 课件
限制150内