《SQL Server 2005数据库案例教程》-严波-电子教案 第9章T SQL编程

上传人:E**** 文档编号:89401162 上传时间:2019-05-24 格式:PPT 页数:26 大小:1.74MB
返回 下载 相关 举报
《SQL Server 2005数据库案例教程》-严波-电子教案 第9章T SQL编程_第1页
第1页 / 共26页
《SQL Server 2005数据库案例教程》-严波-电子教案 第9章T SQL编程_第2页
第2页 / 共26页
《SQL Server 2005数据库案例教程》-严波-电子教案 第9章T SQL编程_第3页
第3页 / 共26页
《SQL Server 2005数据库案例教程》-严波-电子教案 第9章T SQL编程_第4页
第4页 / 共26页
《SQL Server 2005数据库案例教程》-严波-电子教案 第9章T SQL编程_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《《SQL Server 2005数据库案例教程》-严波-电子教案 第9章T SQL编程》由会员分享,可在线阅读,更多相关《《SQL Server 2005数据库案例教程》-严波-电子教案 第9章T SQL编程(26页珍藏版)》请在金锄头文库上搜索。

1、第九章,T-SQL编程,课程内容回顾,数据库文件包括哪些,扩展名都是什么? 建立数据表和添加约束 数据库的安全模型,本章目标,掌握如何定义变量并赋值 掌握如何输出显示数据 掌握IF、WHILE、CASE逻辑控制语句 理解SQL中批处理的概念,T-SQL中的数据类型,T-SQL中的主要数据类型包括: 数字类型:用于存储整数或小数 整数如smallint,int; 小数如numeric,decimal 字符类型:char,varchar,nchar,nvarchar 日期类型:datetime,使用变量,变量分为局部变量和全局变量 局部变量 使用DECLARE定义,声明时必须在变量名前加 局部变量

2、必须先声明后赋值 如:变量名vname定义成vname 全局变量 标识为两个标记() 由SQL Server提供的,不能由用户创建。 全局变量提供关于SQLServer的当前状态信息 如:SQLServer当前版本号:version,局部变量的声明和赋值,局部变量的声明 语法: 例如: 局部变量的赋值有两种方法 语法: 例如,DECLARE variable_name DataType,DECLARE count int -声明一个局部变量count DECLARE ename varchar(8) -声明一个局部变量ename, 最多可存储个字符,SET variable_name =val

3、ue 或 SELECT variable_name=value,SET count=10 或 SELECT count=10 SET ename=SMITH 或 SELECT ename=SMITH,局部变量的使用,SET 赋值语句一般用于赋给变量指定的数据常量,如本例 SMITH SELECT赋值语句一般用于从表中查询数据,然后再赋给变量。 需要注意的是:SELECT语句需要确保筛选的记录不多于一条。如果查询的记录多于一条,将把最后一条记录的值赋给变量。,USE empDB DECLARE veno int, vname char(20) SET vname=SMITH SELECT ven

4、o=empno FROM emp WHERE ename=vname SELECT * FROM emp WHERE empno=veno GO,局部变量的使用,学生信息表,问题: 编写T-SQL找出名字是”董明”的学生学号的前后同学 ?,分析: 第一步,找出“董明“的学号; 第二步,董明的学号加1或减1,参考语句:,/*-找出董明的信息-*/ DECLARE name varchar(8) -学员姓名 SET name=董明 -使用SET赋值 SELECT * FROM stuInfo WHERE stuName = name /*-找出董明的前后学号-*/ DECLARE Sno int

5、-学号 SELECT Sno =stuNo FROM stuInfo -使用SELECT赋值 WHERE stuName=name SELECT * FROM stuInfo WHERE (stuNo = sno+1) OR (stuNo = sno-1) GO,局部变量的使用,全局变量,全局变量标识为两个标记(),它是由SQL Server提供的,全局变量的使用,print SQL Server的版本+VERSION print 服务器的名称: +SERVERNAME print 最后学号为: +convert(varchar(5),IDENTITY ),输出语句,T-SQL支持输出语句,用

6、于输出显示处理的数据结果 常用的输出语句有两种: Print局部变量或字符串 SELECT局部变量 as 自定义列名 示例: 使用print语句要求单个局部变量或字符串表达式作为参数 print 当前错误号 + ERROR 全局变量ERROR返回的是整数值。所以必须使用转换函数,把数据转换为字符串,如下所示: Print 当前错误号 + convert(varchar(5),ERROR),print 服务器的名称: + SERVERNAME SELECT SERVERNAME AS 服务器名称,演示select和print 语句的输出,出错,批处理,客户端应用程序,SQL Server服务器,

7、批处理语句: 语句1 语句2 GO,批处理是包含一个或多个 SQL 语句的组,从应用程序一次性地发送到SQL Server执行 SQL Server 将批处理语句编译成一个可执行单元,此单元称为执行计划。执行计划中的语句每次执行一条,批处理语句,示例1:,SELECT * FROM emp SELECT * FROM dept Update emp SET sal =sal+100 GO,GO是批处理结束标志 一般是将一些逻辑相关的业务操作语句放置在同一批中,这完全由代码编写者决定,批处理语句,SQLServer规定:如果是建库、建表语句、以及后面将要学到的存储过程和视图等,则必须在语句末尾添

8、加“GO”批处理标志 其他常用的DDL语句主要有: CREATE DEFAULT CREATE FUNCTION CREATE PROCEDURE CREATE RULE CREATE TRIGGER CREATE VIEW 这些语句不能在批处理中与其他语句组合使用,CREATE TABLE DEPT ( . ) GO,在SQL中使用注释,注释是程序代码中的描述性的文本字符串,也称为注解,编译器会忽略这些内容 注释常用来记录程序名称、作者名称以及对代码进行重要修改的日期。注释可以用来描述复杂的计算或用来解释程序设计的方 SQLServer支持下列两种注释方式: -(双连字符,单行注释):这些注

9、释字符可以用在要执行的代码的同一行,或者单独作为一行。 /*/(正斜线-星号字符对,多行注释):从打开注释对(/*)到关闭注释对(*/)的所有内容都认为是注释部分。 多行注释(/* */)不能跨批处理,逻辑控制语句,Transact_SQL提供了一组流程控制语句,包括 条件逻辑(IFELSE 和 CASE) 循环(WHILE,经常与CONTINUE、BREAK连用) 多分支选择CASEEND等,IF-ELSE条件语句,当条件为真时,执行一条或一组语句 语法:,IF (条件) 语句 | 语句块 ELSE 语句 | 语句块 ,IF-ELSE条件语句示例,问题: 求雇员平均工资,如果在1500以上,

10、显示”工资较高”,并显示最高工资的三名员工信息;如果在1500以下,显示“工资偏低“,并显示最低工资的三名员工信息。 分析: 第一步,统计平均工资存入临时变量。 第二步,用IF_ELSE判断,如下所示:,员工信息表,IF-ELSE条件语句示例,SET NOCOUNT ON DECLARE salavg float SELECT salavg=AVG(sal) FROM emp PRINT 员工平均工资 +convert(varchar(5),salavg) IF (salavg 1500) BEGIN PRINT 员工工资比较高,最高工资的三名员工: SELECT TOP 3 * FROM e

11、mp ORDER BY sal DESC END ELSE BEGIN PRINT 员工工资比较低,最低工资的三名员工: SELECT TOP 3 * FROM emp ORDER BY sal END GO,参考代码如下:,WHILE循环语句,设置重复执行 SQL 语句或语句块的条件。只要指定的条件为真,就重复执行语句。可以使用 BREAK 和 CONTINUE 关键字在循环内部控制 WHILE 循环中语句的执行 语法:,WHILE(条件) 语句或语句块 BREAK,WHILE循环语句示例,问题: 给员工加薪,确保每人工资都超过1600。加薪方法很简单:先每人加薪100元,看是否都达标,如果

12、没有全超过,每人再加100元,再看是否都达标,如此反复,直到所有人工资都达到1600为止。 分析: 第一步,统计没达标的人数(1600) 第二步:如果有人没达标,加薪。 第三步:循环判断,WHILE循环语句示例,参考代码如下:,USE empDB GO SELECT * FROM emp DECLARE n int WHILE(1=1) -条件永远成立 BEGIN SELECT n=COUNT(*) FROM emp WHERE sal0) UPDATE emp SET sal=sal+100 ELSE BREAK -退出循环 END Print 加薪后的工资是: SELECT * FROM

13、emp; GO,CASE多分支语句,计算条件列表并返回多个可能结果表达式之一 语法:,CASE 输入表达式 WHEN 表达式1 THEN 结果表达式1 WHEN 表达式2 THEN 结果表达式2 .n ELSE 其他结果表达式 END,CASE多分支语句示例,USE empDB GO SELECT empno,job, dname= CASE deptno WHEN 10 THEN 事业部 WHEN 20 THEN 教职部 WHEN 30 THEN 市场部 ELSE 电脑部 END, sal FROM EMP,总结,变量是可以存储数据值的对象。可以使用变量向SQL语句传递数据。 SQLServer在T-SQL中支持下列两种类型的变量:全局变量和局部变量 局部变量以开始,需要定义;全局变量以开始,不需要定义。 局部变量的赋值有两种方式:使用SET 语句或SELECT 语句。 输出结果也有两种方式:print语句和SELECT语句。 批处理是以一个单元发送的一条或多条SQL语句的集合。每个批处理编译成一个执行计划。批处理可以提高语句执行效率,批处理结束的标志是“GO” 注释是程序代码中的描述性的文字字符串,也称为注解,编译器会忽略这些内容。 控制流语句提供了条件操作所需的顺序和逻辑。 语句块使用BEGINEND,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号