T-SQL编程(自学必学).ppt_第1页
T-SQL编程(自学必学).ppt_第2页
T-SQL编程(自学必学).ppt_第3页
T-SQL编程(自学必学).ppt_第4页
T-SQL编程(自学必学).ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

T-SQL编程,T-SQL编程,Transact-SQL编程概述,TransactSQL是结构化查询语言(SQL)的增强版本,且只能在SQL SERVER上使用。它是用来让应用程式与 SQL Server 沟通的主要语言。T-SQL 提供标准 SQL的DDL 和 DML 功能,加上延伸的函数、系统预存程序以及程式设计结构(例如 IF 和 WHILE)让程式设计更有弹性。T-SQL 的功能随著新版的 SQL Server 而持续成长。,目标,变量 注释符与运算符 常用命令 流程控制 T-SQL编程示例,变量,数据在内存中存储可以变化的量叫变量。 Transact-SQL可以使用两种变量: 局部变量 全局变量,局部变量,局部变量是用户可自定义的变量,它的作用范围仅在程序内部。 声明局部变量 DECLARE 局部变量名 数据类型 ,n declare x int 为局部变量赋值 set x=500 select x=max(score) from score,全局变量,全局变量是SQLServer系统内部事先定义好的变量,不用用户参与定义,对用户而言,其作用范围并不局限于某一程序,而是任何程序均可随时调用。 全局变量通常用于存储一些SQLServer的配置设定值和效能统计数据。 全局变量的名称都是以开头的。,常用的全局全量, language 当前使用的语言的名称 IDENTITY 返回最后插入的标识值 ROWCOUNT 返回受上一语句影响的行数 VERSION 返回SQL Server当前安装的日期、版本和处理器类型,注释符与运算符,注释符 单行注释: - 多行注释: /*/ 运算符 算术运算符: + - * / % 赋值运算符: = 比较运算符: = 逻辑运算符: ALL AND ANY BETWEEN EXISTS IN LIKE NOT OR,常用命令,PRINT 将用户定义的消息返回客户端 USE 将数据库上下文更改为指定数据库 GO 用信号通知SQLServer一批T-SQL语句的结束,PRINT命令,PRINT : 命令用于在指定设备上显示信息。 可以输出的数据类型只有:char、nchar、varchar、nvarchar以及全局变量VERSION等。 PRINT 命令的语句如下: PRINT any ASCII text |local_variable |FUNCTION | string_expr 说明: any ASCII text:文本或字符串。 local_variable:字符类型的局部变量。 FUNCTION:返回字符串结果的函数。 string_expr:字符串表达式,最长为8000个字符。,批,一个批是由一条或多条T-SQL语句组成的语句集,这些语句一起提交并作为一个组来执行。SQL Server将批中的语句作为一个整体编译为一个执行计划。因为批中的语句是一起提交给服务器的,所以可以节省系统开销。 在查询分析器中,可以用GO命令标志一个批的结束。GO不是一个执行语句,是通知查询分析器有多少语句要包含在当前的批中。查询分析器将两个GO之间的语句组成一个字符串交给服务器去执行。,注意: 如果在一个批处理中,某条语句存在语法错误,SQL Server将不执行批处理中的任何语句。,流程控制,流程控制语句是用来控制程序执行流程的语句。使用流程控制语句可以提高编程语言的处理能力。与程序设计语言(如C语言)一样,Transact-SQL语言提供的流程控制语句如下表所示:,BEGINEND,包括一系列的 Transact-SQL 语句,使得可以执行一组 Transact-SQL 语句。 语法: BEGIN sql_statement END 参数: sql_statement 是任何有效的 Transact-SQL 语句或以语句块定义的语句分组。,BEGIN.END嵌套使用,BEGIN.END语句可以嵌套使用。 例如:,BEGIN DECLARE MyVar float SET MyVar = 456.256; BEGIN PRINT 变量MyVar的值为:; PRINT CAST(MyVar AS varchar(12); END; END ;,IFELSE,在执行 Transact-SQL 语句时强加条件。如果条件满足(布尔表达式返回 TRUE 时),则在 IF 关键字及其条件之后执行 Transact-SQL 语句。可选的 ELSE 关键字引入备用的 Transact-SQL 语句,当不满足 IF 条件时(布尔表达式返回 FALSE),就执行这个语句。 语法: IF Boolean_expression sql_statement ELSE sql_statement 参数: Boolean_expression: 是返回 TRUE 或 FALSE 的表达式。 sql_statement: 是任何有效的 Transact-SQL 语句或以语句块定义的语句分组。,例如:,IF exists(SELECT * FROM 成绩表 WHERE 学期=10) SELECT * FROM 成绩表 WHERE 成绩编号=10 ELSE PRINT 没有这条记录,CASE,计算条件列表并返回多个可能结果表达式之一。 语法: CASE input_expression WHEN when_expression THEN result_expression .n ELSE else_result_expression END,例如:,SELECT 成绩编号,学号,课程代号, 成绩状况= CASE WHEN 课程成绩90 THEN 优秀! WHEN 课程成绩80 THEN 良! WHEN 课程成绩70 THEN 一般! WHEN 课程成绩60 THEN 及格! ELSE 不及格! END FROM 成绩表,“成绩状况”不是表中的字段,WHILECONTINUEBREAK,设置重复执行 SQL 语句或语句块的条件。只要指定的条件为真,就重复执行语句。可以使用 BREAK 和 CONTINUE 关键字在循环内部控制 WHILE 循环中语句的执行。 语法: WHILE Boolean_expression sql_statement BREAK CONTINUE ,例如: DECLARE x int SET x=0 WHILE x3 BEGIN SET x=x+1 PRINT x=+CONVERT(char(1),x) END,RETURN,从查询或过程中无条件退出。RETURN 即时且完全,可在任何时候用于从过程、批处理或语句块中退出。不执行位于 RETURN 之后的语句。 语法: RETURN integer_expression 参数: integer_expression 是返回的整型值。,WAITFOR,指定触发语句块、存储过程或事务执行的时间、时间间隔或事件。 语法: WAITFOR DELAY time | TIME time 参数 DELAY 指示SQLServer一直等到指定的时间过去,最长可达 24小时。 TIME 指示SQLServer等待到指定时间。,例如:,延迟30秒钟执行查询命令。 WAITFOR DELAY 00:00:30 SELECT * FROM 成绩表 在时刻21:20:00时执行查询命令。 WAITFOR TIME 21:20:00 SELECT * FROM 成绩表,总结,变量 注释符与运算符 常用命令 流程控制 T-SQL编程示例,上机作业:T-SQL编程示例,将课件上的所有SQL代码练习一遍 1、输出所有学生的最高分和最低分 2、学生表中的路人甲是否是润年出生的 3、计算1至100之间的和 4、显示王五的Java成绩是否及格 5、30秒后显示学生表的信息,家庭作业:,涉及到的表如下: 创建学生信息表,包含有:学号、姓名、性别、年龄和民族等字段; 创建学生成绩表,包含有学号和成绩两个字段 完成以下练习: 1、打印出学号为 S02 的学生的年龄(要求以变量的形式输出) 2、查询所有年龄大于 S03 的学生信息 3、打印出stuInfo表中学生的平均年龄,如果平均年龄大于22,则输出OK,否则输出NO 4、循环增加学生信息表中每个人的年龄,直到每个人的年龄都大于等于25为止,下面是上机作业的参考代码,1、输出所有学生的最高分和最低分,declare max real,min real select max=max(score) from score select min=min(score) from score print 最高分是+ltrim(str(max) print 最低分是+ltrim(str(min),2、学生表中的路人甲是否是润年出生,declare year int select year=year(birthday) from student where name=路人甲 if(year%4=0 and year%100!=0 or year%400=0) print 路人甲是润年出生的 else print 路人甲不是润年出生的,3、计算1至100之间的和,declare i int,sum int set i=1 set sum=0 while(i=100) begin set sum=sum+i set i=i+1 end print sum,4、显示王五的Java成绩是否及格,declare s_id varchar(20) declare c_id varchar(20) declare score real select s_id=student_id from student where name=王五 select c_id=course_id from course where course_name=Java sel

温馨提示

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

评论

0/150

提交评论