《SQLServer数据库应用与维护》-第12讲 T-SQL语言基础2_第1页
《SQLServer数据库应用与维护》-第12讲 T-SQL语言基础2_第2页
《SQLServer数据库应用与维护》-第12讲 T-SQL语言基础2_第3页
《SQLServer数据库应用与维护》-第12讲 T-SQL语言基础2_第4页
《SQLServer数据库应用与维护》-第12讲 T-SQL语言基础2_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

上节内容回顾6.1T-SQL语法基础6.1.1标识符6.1.2常量6.1.3变量6.1.4运算符6.1.5表达式6.1.6注释符上节内容提问1、标识符有哪两种,有什么区别?2、我们上次课讲了哪几种常见的常量?3、变量包括哪两种,有何区别,如何表示?4、局部变量的定义用哪个关键字?5、给局部变量赋值用哪个关键字?如何查询赋值结果?讲评上次课实验报告题目讲解实验6-1第一题:【变量练习】1、创建变量@name并赋值为【你的姓名】,然后用SELECT语句返回该变量的值(即显示你的姓名)。2、创建变量@cpmc并赋值为【键盘】,然后使用该变量用SELECT查询产品名称为‘键盘’的产品信息。3、创建变量@department并赋值为【采购部】,创建变量@address并赋值为【上海市】,然后使用该两变量用SELECT查询“采购部”且住址为“上海市”的员工信息。4、创建变量@cpid并赋值为‘P0014’,创建变量@cpmc并赋值为‘声卡’,创建变量@cpcb并赋值为800,然后在产品名称表中新增产品(P0014,声卡,800)。

第六章T-SQL语言基础及应用第六章T-SQL语言基础及应用目的与要求:掌握T-SQL的语法基础,包括变量、运算符、函数、流程控制语句和注解等语言元素。掌握数据库的并法控制:事务、锁。重点与难点:常量与变量(重点)运算符与表达式(重点)程序流程控制语句(重难点)函数(难点)事务、锁(难点)第12讲T-SQL语言基础及应用26.1T-SQL语法基础6.1.1标识符6.1.2常量6.1.3变量6.1.4运算符6.1.5表达式6.1.6注释符6.2流程控制语句6.2.1IF…ELSE语句6.2.2CASE语句6.2.3GOTO语句6.2.4WHILE语句6.2.5表达式6.2.6BEGIN…END语句…….6.1T-SQL语法基础6.1T-SQL语言基础Transact-SQL就是Microsoft对标准结构化查询语言的实现。简称为T-SQL,但通常也称为SQL。这个语言实现了访问数据库问题的一种标准化方式。本章主要介绍T-SQL的一些基础知识,为后续章节的深入学习奠定基础。

在MicrosoftSQLServer2012系统中,根据Transact-SQL语言的功能特点,可以把Transact-SQL语言分为5种类型,即数据定义语言、数据操纵语言、数据控制语言、事务管理语言和附加的语言元素。6.1T-SQL语言基础数据定义语言(DataDefinitionLanguage,DDL)CREATE,ALTER,DROP数据操纵语言(DataManipulationLanguage,DML)INSERT、UPDATE、DELETE、SELECT数据控制语言(DataControlLanguage,DCL)GRANT、REVOKE事务管理语言(TransactionManagementLanguage,TML)

COMMIT、ROLLBACK附加的语言元素主要包括标识符、变量和常量、运算符、表达式、数据类型、函数、控制流语言、错误处理语言、注释等。6.1.4运算符6.1.4

运算符在MicrosoftSQLServer系统中,可以使用的运算符包括算术运算符、逻辑运算符、赋值运算符、字符串串联运算符、按位运算符、一元运算符、比较运算符等。6.1.4

运算符1、算术运算符运算符描述+加法运算,也可以将一个以天为单位的数字加到日期中-减法运算,也可以从日期中减去以天为单位的数字*乘法运算/除法运算,如果两个表达式都是整数,则结果是整数,小数部分被截断%取模运算,返回两数相除后的余数,例如12%9的模是36.1.4

运算符2、逻辑运算符运算符描述ALL用于比较标准值与单列集中的值。如果一组的比较都为TRUE,则比较结果为TRUEAND组合两个布尔表达式。如果两个表达式都为TRUE,则组合结果为TRUEANY用于比较标量值与单列集中的值。如果一组的比较中任何一个为TRUE,则比较结果为TRUEBETWEEN如果操作数在某个范围之内,那么结果为TRUEEXISTS如果子查询中包含了一些行,那么结果为TRUEIN如果操作数等于表达式列表中的一个,那么结果为TRUELIKE如果操作数与某种模式相匹配,那么结果为TRUENOT对任何其他布尔运算符的结果值取反OR如果两个布尔表达式中的任何一个为TRUE,那么结果为TRUESOME如果在一组比较中,有些比较为TRUE,那么结果为TRUE6.1.4

运算符3、位运算符运算符描述&位与逻辑运算,从两个表达式中取对应的位。当且仅当输入表达式中两个位的值都为1时,结果中的位才被设置为1,否则,结果中的位被设置为0|位或逻辑运算,从两个表达式中取对应的位。如果输入表达式中两个位只要有一个的值为1时,结果的位就被设置为1;只有当两个位的值都为0时,结果中的位才被设置为0^位异或运算,从两个表达式中取对应的位。如果输入表达式中两个位只有一个的值为1时,结果中的位就被设置为1;只有当两个位的值都为0或1时,结果中的位才被设置为06.1.4

运算符4、一元运算符运算符描述+数值为正-数值为负~返回数字的逻辑非6.1.4

运算符5、比较运算符运算符描述=等于>

大于<

小于>=大于或等于<=小于或等于<>

不等于!=不等于!<不小于!>不大于6.1.4

运算符运算符优先级级别运算符1~(位非)2*(乘)、/(除)、%(取模)3+(正)、-(负)、+(加)、+(连接)、-(减)、&(位与)4=、>、<、>=、<=、<>、!=、!>、!<(比较运算符)5^(位异或)、|(位或)6NOT7AND8ALL、ANY、BETWEEN、IN、LIKE、OR、SOME9=(赋值)6.1.5表达式6.1.5

表达式表达式是标识符、值和运算符的组合,它可以是常量、函数、列名、变量、子查询等实体,也可以用运算符对这些实体进行组合而成。1、简单表达式2、复杂表达式6.1.5

表达式1、简单表达式【例1】将“采购订单分录”中各个订单单价乘以0.8后输出。select

采购订单号,物料代码,单价*0.8as

八折单价from

采购订单分录6.1.5

表达式2、复杂表达式【例2】通过表达式对采购信息进行拼接。SELECT

A.物料代码,A.物料名称+SPACE(4)+A.计量单位

AS

物料信息,SUM(B.金额)

AS

'总金额',SUM(B.订货数量)

AS

'总数量'FROM

物料

AS

A

INNER

JOIN

采购订单分录

AS

BON

A.物料代码=B.物料代码GROUP

BY

A.物料代码,A.物料名称,A.计量单位6.1.5

表达式2、复杂表达式Like的使用通配符说明示例%代表0个或多个字符。WHERE姓名LIKE'刘%'查询姓刘的学生。_(下划线)代表单个字符。WHERE姓名LIKE'张_'查询姓张的名为一个汉字的所有人名。[]指定范围(如:[a-f]、[0-9])或集合

(如[abcdef])中的任何单个字符。WHEREsubstring(学号,1,1)LIKE'[12]%'查询首字符为1、2的学号。[^]指定不属于范围(如:[^a-f]、[^0-9])或集合(如:[^abcdef])的任何单个字符。WHEREsubstring(学号,1,1)LIKE‘[^1-9]%’查询首字符不为1-9任一字符的学号。上机实验任务一实验6-1第二题:【运算符和表达式】20分钟6.1.6注释符6.1.6

注释符在Transact-SQL中可使用两类注释符,单行注释和多行注释。1、单行注释:采用ANSI标准的注释符“--”;格式:--注释内容。2、多行注释:与C语言相同的程序注释符号,即“/**/”。“/*”用于注释文字的开头,“*/”用于注释文字的结尾,可在程序中标识多行文字为注释。格式:/*注释内容*/6.1.6

注释符1、单行注释:“--”(双连字符)。USE

company

--单行注释GO

2、多行注释:“/*...*/”(正斜线-星号字符对)。SELECT

*

FROM

Employees

/*这是注释*/

注:完整的注释必须包含在一个批处理中。6.1.6

注释符【例1】单行注释示例。【例2】多行注释示例。SELECT

*

FROM

物料

WHERE

物料名称='鼠标'

--查询物料名为鼠标的物料信息/*查询物料名为鼠标的物料信息,物料表名为Item*/SELECT

*FROM

物料WHERE

物料名称='鼠标'6.2流程控制语句6.2

流程控制语句T-SQL中流程是指那些用来控制程序执行和流程分支的语句。使用T-SQL语言编程的时候,常常要利控制语句用各种流程控制语句进行顺序、分支控制转移、循环等操作。T-SQL提供了一组流程控制语句,包括条件控制语句、无条件控制语句、循环语句和返回状态值给调用例程的语句。6.2

流程控制语句顺序执行程序控制语句顺序执行流程改变程序6.2

流程控制语句序号控制语句说明1IF...ELSE条件选择语句2CASE多分支选择语句3GOTO无条件转移语句4WHILE循环语句5RETURN无条件返回6BEGIN…END定义语句块7BREAK用于退出最内层的循环8CONTINUE用于重新开始下一次循环9WAITFOR设置语句执行的延迟时间跟流程控制语句相关的语句如下所示,本章节将分别进行介绍。6.2.1IF…ELSE语句6.2.1IF…ELSE语句IF…ELSE语句是条件判断语句,用于实现选择结构。IF…ELSE语句的语法格式为:IF

逻辑表达式{语句1|语句块1}ELSE{语句1|语句块1}当IF后的条件成立时执行其后的T-SQL语句。当条件不成立时,执行ELSE后的T-SQL语句,其中ELSE子句是可选项。如果没有ELSE子句,当条件不成立则执行IF语句后面的其他语句。6.2.1IF…ELSE语句【例1】IF语句的使用DECLARE

@cgddh

nvarchar(30),@cgfs

char(10)SET

@cgddh

='DJ001'IF(SELECT

采购方式

FROM

采购订单头

WHERE

采购订单号=@cgddh)=1

SELECT

@cgfs='现购'ELSE

SELECT

@cgfs='赊购'PRINT

'您当前查询的订单号:'+

@cgddh

+',其采购方式为:'+

@cgfsIF…ELSE语句的使用6.2.1IF…ELSE语句【例2】查询物料类别为1的物料种类数。IF…ELSE语句的使用DECLARE

@num

intSELECT

@num=(SELECT

COUNT(*)

FROM

物料

WHERE

物料类别=1)IF

@num<>0SELECT

@num

AS

'物料类别为1的物料种类数'6.2.1IF…ELSE语句【例3】输出三个整数中的最大数。IF…ELSE语句的使用DECLARE

@number1

INT,@number2

INT,@number3

INT,@temp

INTSET

@number1=52SET

@number2=38SET

@number3=66IF

@number1<@number2

BEGIN

SET

@temp

=@number1

SET

@number1=@number2

SET

@number2=@temp

ENDIF

@number1>@number3

BEGIN

PRINT

'最大数为:'

PRINT

@number1

ENDELSE

BEGIN

PRINT

'最大数为:'

PRINT

@number3

END上机实验任务二实验6-1第三题:【IF…ELSE…语句练习】15分钟6.2.2CASE语句6.2.2CASE语句CASE语句用于实现选择结构,与IF…ELSE语句相比,它能更方便地实现多重选择的情况,从而避免多重的IF…ELSE语句的嵌套,使得程序的结构更加简练、清晰。CASE语句计算条件列表并返回多个可能结果表达式之一,其语法格式有两种,简单CASE语句和搜索CASE语句。1、简单CASE语句2、复杂CASE语句6.2.2CASE语句1、简单CASE语句简单CASE语句的语法格式为:1、首先计算CASE后面的表达式,然后按指定顺序与每个WHEN子句后的表达式进行比较。2、如果相等,则执行对应的WHEN后的结果表达式,并退出CASE结构。3、若CASE后的表达式与所有WHEN后的表达式均不相等,则执行ELSE后的结果表达式。4、若CASE后的表达式值与所有WHEN后的表达式均不相等,且ELSE结果表达式被忽略,则返回NULL值。CASE

表达式

WHEN

表达式

THEN

结果表达式

……[ELSE

结果表达式]END6.2.2CASE语句1、简单CASE语句【例1】简单的CASE语句的使用。DECLARE

@var1

VARCHAR(1)SET

@var1='B'DECLARE

@var2

VARCHAR(10)SET

@var2=CASE

@var1

WHEN

'R'

THEN

'红色'

WHEN

'B'

THEN

'蓝色'

WHEN

'G'

THEN

'绿色'ELSE

'错误'ENDPRINT

@var2DECLARE

@var1

VARCHAR(1)SET

@var1='B'DECLARE

@var2

VARCHAR(10)SET

@var2='蓝色'PRINT

@var26.2.2CASE语句2、搜索CASE语句搜索CASE语句的语法格式为:CASE

WHEN

条件表达式

THEN

结果表达式

……ELSE

结果表达式

END1、首先测试WHEN后的条件表达式,若为真,则执行THEN后的结果表达式,否则执行下一个WHEN后的条件表达式的测试。2、若所有WHEN后的条件表达式都为假,则执行ELSE后的结果表达式。3、若所有WHEN后的条件表达式都为假,且ELSE结果表达式被忽略,则返回NULL值。6.2.2CASE语句2、搜索CASE语句【例2】根据学生考试成绩输出等级DECLARE

@score

TINYINT

SET

@score=82PRINT

CASE

WHEN

@score>=90THEN

'该学生考试成绩优秀'

WHEN

@score>=80THEN

'该学生考试成绩良好'

WHEN

@score>=70THEN

'该学生考试成绩一般'

WHEN

@score>=60THEN

'该学生考试成绩及格'

ELSE

'该学生考试成绩不及格'

END6.2.2CASE语句2、搜索CASE语句【例3】搜索类型的CASE语句DECLARE

@chengji

FLOAT,@pingyu

VARCHAR(40)SET

@chengji=80SET

@pingyu=CASE

WHEN

@chengji>100OR

@chengji<0THEN

'您输入的成绩超出~的范围'

WHEN

@chengji>=60AND

@chengji<70THEN

'及格'

WHEN

@chengji>=70AND

@chengji<85THEN

'良好'

WHEN

@chengji>=85AND

@chengji<=100THEN

'优秀'

ELSE

'不及格'ENDPRINT

'该生的成绩评语是:'+@pingyu6.2.2CASE语句2、搜索CASE语句【例3】搜索类型的CASE语句DECLARE

@chengji

FLOAT,@pingyu

VARCHAR(40)SET

@chengji=80SET

@pingyu=CASE

WHEN

@cheng

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论