第9章 Transact-SQL程序设计2
《SQL Server 数据库》Transact-SQL程序设计实验报告
北华航天工业学院《数据库系统管理》实验报告报告题目:Transact-SQL程序设计作者所在系部:计算机科学与工程系作者所在专业:网络工程作者学号:作者姓名:指导教师姓名:完成时间:2011年9月26日北华航天工业学院教务处制Transact-SQL程序设计一、实验目的1、掌握Transact-SQL语言中注释、局部变量的用法;2、掌握Transact-SQL语言中常用运算符的用法;3、掌握Transact-SQL语言中常用函数的用法;4、掌握Transact-SQL语言中流程控制语句的用法。
二、实验内容(一)附加上次实验所创建的数据库“tb_Library”,并回顾该数据库的数据表信息。
(二)练习Transact-SQL语言中两种注释的用法。
(三)使用系统函数查看SQL Server当前安装的日期、版本和处理器类型,将结果记录在实验报告中。
(四)按要求在数据库“db_Library”上,完成以下功能。
1、编制一个函数fc_avgp,根据输入的图书类别名称,返回该类别图书的平均价格,并输入实参调用该函数。
2、编制一个函数fc_count,返回本月借书的人数,并输入实参调用该函数。
3、定义两个变量分别存放价格上限和下限,根据给定的两个变量的值,返回在该价格范围内的所有图书的信息。
4、定义变量“@tsmc”,将某图书的名称赋值给该变量,查询出该图书的借阅情况。
如果没有读者借阅,则显示“该图书无人借阅”,否则,显示所借读者的编号、姓名。
5、调整图书的库存量,如果原库存量不超过5本,则各增加50%的库存量,并采用向上取整;如果超过5本但不超过10本,则各增加30%的库存量,采用向上取整;如果超过10本但不超过20本,则各增加20%的库存量,并采用向下取整;如果超过20本,则增加10%的库存量,并采用向下取整。
6、判定是否有图书过期未还,如果有,则将所有图书的归还日期增加1个月,直到所有图书的归还日期都大于当前日期或者有图书的归还日期超过了2011年12月31日时停止,然后等待3秒后,显示出所有图书信息。
transaction-sql语句
一、什么是transaction-sql语句Transaction-SQL语句是用于管理数据库事务的一种结构化查询语言。
事务是指一系列数据库操作,要么全部执行成功,要么全部执行失败,以保证数据的一致性和完整性。
Transaction-SQL语句提供了一种方式来管理这些事务操作,包括开始事务、提交事务和回滚事务等。
二、 Transaction-SQL语句的常用操作1. 开始事务(BEGIN TRANSACTION)- 用于标识事务的开始,将数据库操作置于一个事务中。
2. 提交事务(COMMIT TRANSACTION)- 用于提交已经执行的事务操作,表示事务执行成功。
3. 回滚事务(ROLLBACK TRANSACTION)- 用于撤销一系列数据库操作,回到事务开始之前的状态。
4. 保存点(SAVEPOINT)- 用于在事务中创建一个保存点,可以在事务回滚时回到保存点的状态。
5. 设置事务隔离级别(SET TRANSACTION ISOLATION LEVEL)- 用于设置事务的隔离级别,控制并发事务对数据的访问方式。
三、 Transaction-SQL语句的应用场景1. 复杂的数据操作- 包括更新、插入、删除等操作,需要保证一系列操作的一致性和完整性。
2. 并发事务控制- 多个用户对同一数据进行操作时,需要确保数据的并发访问不会导致数据的损坏或丢失。
3. 数据回滚- 当数据库操作发生错误或者执行结果不符合预期时,可以通过回滚事务来撤销已经执行的操作。
4. 事务隔离- 控制事务对数据的访问权限,保证事务的独立性和隔离性。
四、 Transaction-SQL语句的编写和优化1. 基本语法- 了解事务的基本操作语句和语法规则,包括BEGIN TRANSACTION、COMMIT TRANSACTION、ROLLBACK TRANSACTION等。
2. 逻辑严谨- 编写事务时要确保逻辑的严谨性,避免出现死锁、脏读等并发问题。
Transact-SQL程序设计
Transact-SQL程序设计Transact-SQL基本语句1、定义批处理语句语句格式:GO注:一个批处理中任何一条语句有语法错误,整个批处理将不能编译和执行。
2.变量(1) 局部变量声明局部变量语句:DECLARE @<局部变量名> <数据类型>[,…]声明一个datetime类型的局部变量。
DECLARE @date_var datetime声明两个局部变量。
DECLARE @var1 int, @var2 money局部变量赋值语句:SET|SELECT @<局部变量名>=<表达式>用SET语句和SELECT语句为局部变量赋值。
DECLARE @var1 datetime,@var2 char (10)SET @var1 = getdate ()SELECT @var2 = convert (char (10), @var1, 102)用SET语句将查询的结果赋给局部变量,并用SELECT语句显示局部变量的值。
Declare @date_var datetimeSet @date_var= (select min (birthday) from s)SELECT @date_var AS min_birthday局部变量名的命名:首字符为字母,长度不超过128的字母、数字和特殊符号(_、@、#)组成的字符串,并且不能与全局变量同名。
局部变量声明后的值初始化为NULL。
局部变量的作用域仅限于一个批处理中。
(2) 全局变量在SQL Server 2000中,将全局变量改称为函数。
由于这些函数不需要任何参数,所以又称为无参函数。
SQL Server 2000无参函数见表1。
全局变量是SQL Server系统内部变量,以@@开头。
表1:SQL Server 2000无参函数用全局变量查看SQL Server的版本、当前所使用的SQL Server 服务器的名称以及所使用服务的名称等信息。
12第9章 Transact-SQL程序设计
10 10
WHERE transporter_id='T001' AND goods_id='G00003'
9.1.2 常量与变量
2、变量 (1)局部变量
2)局部变量的赋值
局部变量没有被赋值前,其值是NULL,若要在程 序中引用它,必须先赋值。
8 8
9.1.2 常量与变量
2、变量 (1)局部变量
2)局部变量的赋值 例9-1 使用SELECT语句从customer表中检索出顾客 编号为“C0002”的行,再将顾客的名字赋给变量 @customer。
DECLARE @customer varchar(40),@curdate datetime SELECT @customer=customer_name,@curdate=getdate()
9.1.2 常量与变量
1、常量
(3)数值常量
例如:1894、2为整型常量;
1894.1204、2.0为精确数值常量;
$12.5、$542023.14为货币常量。 (4)逻辑数据常量 逻辑数据常量使用数字0或1表示,并且不使用引号。 (5) 空值 空值意味着用户在向表中插入数据时可以忽略该列值 5 5
第9章 Transact-SQL程序设计
9.1 数据与表达式 9.2 函 数 9.3 程序控制流语句
1 1
9.1 数据与表达式
9.1.1 用户定义数据类型
9.1.2 常量与变量
9.1.3 运算符与表达式
2 2
9.1.1 用户定义数据类型
1、使用系统存储过程来创建用户定义数据类型
数据库原理与应用07.Transact-SQL程序设计
1 注释 2 变量 3 运算符 4 函数 5 流程控制语句
1 注释
注释是程序代码中不执行的文本字符串(也称 为注解)。在SQL Server中,可以使用两种类型的 注释字符:一种是ANSI标准的注释符“--”,它用于 单行注释;另一种是与C语言相同的程序注释符号, 即“/* */”。
表2-1 位运算符
运算符 &(按位 AND) |(按位 OR) ^(按位(两个操作数)。 按位互斥 OR(两个操作数)。
4.比较运算符
比较运算符用于比较两个表达式的大小或 是否相同,其比较的结果是布尔值,即TRUE (表示表达式的结果为真)、FALSE(表示表 达式的结果为假)以及UNKNOWN。除了 text、 ntext 或 image 数据类型的表达式外,比较运算 符可以用于所有的表达式。
3 运算符
运算符是一些符号,它们能够用来执行算术运算、 字符串连接、赋值以及在字段、常量和变量之间进 行比较。在SQL Server 2000中,运算符主要有以 下六大类:算术运算符、赋值运算符、位运算符、 比较运算符、逻辑运算符以及字符串串联运算符。
1.算术运算符
算术运算符可以在两个表达式上执行数学运 算,这两个表达式可以是数字数据类型分类的任何 数据类型。算术运算符包括加(+)、减(—)、 乘(*)、除(/)和取模(%)。
SELECT { @local_variable = expression } [ ,...n ]
2. 全局变量
全局变量是SQL Server系统内部使用的变量, 其作用范围并不仅仅局限于某一程序,而是任何 程序均可以随时调用。全局变量通常存储一些 SQL Server的配置设定值和统计数据。用户可 以在程序中用全局变量来测试系统的设定值或者 是Transact-SQL命令执行后的状态值。
Transact-SQL程序设计
数据库技术与应用实验报告实验名称:Transact-SQL程序设计系(科):班级:学号:姓名:完成时间:南京师范大学中北学院实验7 Transact-SQL程序设计一、实验目的1.掌握Transact-SQL的数据类型、常量变量、表达式等概念。
2.掌握SQL Server 2005中常用函数的用法。
3.掌握程序中注释的基本概念和使用方法。
4.了解程序中的流程控制语句。
二、实验准备1.了解函数的使用方法。
2.了解系统提供的常用数学函数、日期和时间函数、字符串函数和数据类型转换函数的用法。
3.了解程序中注释的语法格式。
4.了解程序中的流程控制语句:IF-ELSE、CASE、WHILE等控制流语句。
三、实验内容和步骤1.在查询分析器中,选择studentsdb数据库,在学生表中查找姓“张”的学生,并将该生姓名赋于变量@stu_name。
(1)、首先查看姓张的学生有多少个代码如下:select姓名from学生表where姓名like'张%'结果如下:(2)、再选择要查看的学生,并将姓名赋给变量(本例选择第一个学生)代码如下:declare @stu_name varchar(10)select @stu_name =姓名from学生表where姓名like'张卫民'select @stu_name as姓名结果如下:2.定义int型局部变量@grademax、@grademin、@gradesum,在成绩表中查找课程编号是“C002”课程的最高分、最低分和总分,分别赋给@grademax、@grademin和@gradesum,并显示。
代码如下:declare @grademax int,@grademin int, @gradesum intselect @grademax =max(分数),@grademin =min(分数),@gradesum =sum(分数)from成绩表where课程编号='0002'select @grademax as最高分,@grademin as最低分, @gradesum as总分结果如下:3. 使用SET命令将查询结果集记录数目赋值给int型局部变量@row。
第九章-T—SQL程序设计概要PPT课件
块注释符为“/*…*/”,“/*”用于注释文 字的开头,“*/”用于注释文字的末尾。块 注释符可在程序中标识多行文字为注释。
琼州学院电子信息工程学院
9
-
9.2 T-SQL的变量定义和流程控制语句
Transact-SQL命令除了可以单独使用以外, 还可以使用流程控制语句把多个命令组 合成一段程序,用以完成各种更为复杂 的程序算法。
在同一语句中声明多个局部变量 DECLARE @last_name VARCHAR(30), @fname VARCHAR(20),@state VARCHAR(2)
琼州学院电子信息工程学院
12
-
变量的定义和使用
SET语句是Microsoft公司推荐的变量赋值 方法,其语法格式如下: SET @variable_name = expression @variable_name是欲赋值的变量名 expression是与局部变量数据类型相匹配的 表达式,该表达式的值将赋给指定的变量。
琼州学院电子信息工程学院
13
-
变量的定义和使用
使用SELECT语句也可以为局部变量赋值 例: USE Northwind GO DECLARE @EmpNameVar VARCHAR(20) SELECT @EmpNameVar=FirstName FROM Employees WHERE EmployeeID = 9
用户在高层的数据结构上工作,可操作记录集,而不是对单个记录进行 操作;所有的SQL语句接受集合作为输入,返回集合作为输出,并允许 一条SQL语句的结果作为另一条SQL语句的输入。
另外,Transact-SQL语言不要求用户指定对数据的存放方法,所有 的Transact-SQL语句使用查询优化器,用以指定数据以最快速度存取的 手段。
实验二 Transact-SQL语言基础(2)
实验二Transact-SQL语言基础(2)一、实验目的与要求:1、掌握T-SQL语言的基本概念、语法格式。
2、掌握T-SQL语言常规标示符的格式规则(即命名规则)。
3、熟悉T-SQL语言的数据类型。
4、掌握T-SQL语言常量的数据类型及各类型常量的表达。
5、掌握局部变量的概念、局部变量名的约定规则。
6、掌握T-SQL语言局部变量的定义语句(DECLARE)、赋值语句(SET和SELECT)。
7、掌握T-SQL语言简单输出语句(PRINT和SELECT)。
8、掌握T-SQL语言常用内部函数的使用。
注意:⑴函数名及函数的调用格式;⑵函数各参数(自变量)的数据类型及取值范围;⑶各参数(自变量)的顺序及作用;⑷函数值的数据类型。
9、掌握T-SQL语言各类型运算符及表达式的使用。
二、实验类型基本验证型三、实验内容(一)启动“Microsoft SQL Server Management Studio”并使用SQL 查询编辑器具体操作,见实验一。
(二)在SQL查询编辑器窗格中,输入以下练习的命令,理解数据类型、常量、变量、表达式、函数等相关的知识(不必交作业):1、有关常量的数据类型及表达。
(1) 字符串常量、数值常量及money常量Print ‘Shandong University’Select N‘Shandong University’,110,-1.32,1.3e9,$3000(2) bit常量和datetime常量Declare @a bit,@d datetimeSet @a=2Set @d=’2010/03/24 18:10’Select @a as ‘bit data’,@d as ‘datetime data’2、局部变量的定义、赋值与简单输出(注意:SET与SELECT语句的区别,PRINT和SELECT语句的区别)。
DECLARE @idno char(18),@sname varchar(20),@class_1 varchar(30),@bd datetime;Set @idno=’370101************’Select @sname=’Han Zhen’,@class_1=’database technology’Set @bd=substring(@idno,7,8)Select @idno,@sname,@class_1,@bd3、完成以下有关函数及表达式的练习。
第九章Transact—SQL编程
2021/3/6
11 *
方法二:通过SELECT语句赋值,格式为:
SELECT @变量名=表达式[,…] [from 表名][WHERE 条件表达式]
参数说明:
2021/3/6
2 *
2.分隔标识符
分隔标识符是包含在双引号("")或中括号([])内 的标准标识符或不符合标准标识符规则的标识符。
对于不符合标准标识符规则的,比如对象或对象名称 的一部分使用了保留关键字的,或者标识符中包含嵌入 空格的,都必须分隔。
2021/3/6
3 *
9.1.2 批处理
批处理是包含一个或多个Transact-SQL语句的的集合,由客 户端发送到 SQL Server 实例以完成执行一:通过SET语句赋值,格式为:
SET @变量名=表达式
说明: 将表达式的值将赋给左边的变量,SET一次只能对一个变量赋 值。变量没有赋值时其值为NULL。
2021/3/6
10 *
【例题9.2】声明一个长度为10 个字符的变量“id”并赋值为 ’200801’,然后输出变量的值。
2. 整型常量
由没有用引号括起来且不包含小数点的数字字符串,为 整型常量。如:123、2005。
2021/3/6
5 *
3. 实型常量
由没有用引号括起来且包含小数点的数字字符串,为实型常 量。如:123.01、2008.5E4
4. 日期时间型常量 由单引号括起来日期格式的数据,为日期时间型数据。如 ’2008-10-1’。
变量分为:用户自定义的局部变量和系统提供的全局变量。
Transact-SQL程序设计——Transact-SQL基础
2 T✎ransact-SQL要素
全局变量与局部变量
变量是用来临时存放数据的对象,是SQL Server用于在T-SQL语句间传递数据的 方式之一。变量有名字和数据类型两个属性,由系统或用户定义并赋值。 SQL Server中的变量可以分为全局变量和局部变量两大类。
➢全局变量
全局变量以@@开头,由系统定义和维护,不能由用户创建,对用户来说是只读 的,大部分的全局变量记录了SQL Server服务器的当前状态信息。全局变量是不 可以赋值的。
Transact-SQL程序设计
——Transact-SQL基础
教学内容
Transact-SQL语言简介 Transact-SQL要素
1 Transact-SQL语言简介
Transact-SQL(简称T-SQL)语言是SQL Server使用的一种数据库查询和编程 语言,是结构化查询语言SQL的增强版本,增加了一些非标准的SQL语句, 使其功能更强大。使用T-SQL语句可建立、修改、查询和管理关系数据库, 也可以把T-SQL语句嵌入到某种高级程序设计语言(如VB、VC、DELPHI)中 。但T-SQL本身不提供用户界面、文件或I/O设备,编程结构简单而有限。
2 T✎ransact-SQL要素
局部变量
(1)局部变量的声明 在使用局部变量以前,必须使用DECLARE语句来声明这个局部变量。DECLARE语句 的语法格式如下:
declare @局部变量名 数据类型[,…n]
【例1】 使用DECLARE语句声明一个用于保存计数值的整型变量。
2 T✎ransact-SQL要素
2 T✎ransact-SQL要素
批处理
批处理就是单个或多个T_SQL语句的集合,由应用程序一次性发送给SQL Server解释并执行批处理内的所有语句指令。使用GO命令和EXECUTE命 令可以将批处理发送给SQL Server。
SQL Server第9章 Transact-SQL语言
4、运算符
2)赋值运算符
赋值运算符(=)可以为变量、字段赋值,还可以为列设置 列标题。
例9-6:利用赋值运算符为查询结果集设置列标题。
USE StuInfo GO SELECT 学号=sNo, 姓名=sName, 院系=sDept FROM Student WHERE sex=‘女’
4、运算符
3、变量
2)局部变量
① 局部变量的定义 其语法格式如下:
DECLARE <@局部变量名> <数据类型> [, ……n]
说明:
局部变量名称必须以@开头,并符合SQL标识符命名规则。 局部变量声明创建后,初始值为NULL。
3、变量
2)局部变量
② 局部变量的赋值 其语法格式如下:
SET <@局部变量名> = <表达式> 或:
关系运算符主要包括:>、<、=、!=或<>、>=、<=、!> 、!< 。
关系运算是用来进行比较运算,比较两个表达式是否满足某 种关系。
关系运算返回的结果是逻辑值,有3种可能:TRUE、FALSE 、UNKNOWN。
关系运算可以应用于WHERE子句中作为查询条件,也可以 应用于流程控制语句(分支语句、循环语句)中作为分支、 循环的条件。
1)SQL 对象的命名规则
由字母、数字、下划线以及特殊字符:@、#、$构成。 首字符允许字母、下划线以及特殊字符@、#。
2、命名规则和注释
2)SQL 对象的命名规则
单行注释:- 多行注释:/* */
3、变量
变量是程序运行中可以改变值(状态)的命名存储区。变 量存储数据值,并可在语句之间传递数据值。
SQL-第9章Transact-SQL程序设计
SQL Server 数据 库原理及应用
T—SQL程序设计Leabharlann 第九章 T—SQL程序设计
9.1 T-SQL的变量定义和流程控制语句 9.2 存储过程 9.2.1 存储过程概述 9.2.2 创建存储过程 9.2.3 调用存储过程 9.2.4 修改存储过程 9.2.5 删除存储过程 9.2.6 存储过程的优化 9.3 用户自定义的数据类型 9.4 触发器的应用 9.5 事务和锁
9.5.3 锁
1. 锁的概念 锁作为一种安全机制,用以控制多个用户的并发操作。锁定机制 的主要属性是锁的粒度和锁的类型。 2. 锁的兼容性 不同类型的锁的兼容性不一样,表9.4列出了各种锁之间的兼容性。
3. 获取锁的信息 使用系统存储过程sp_lock可以查看正在运行的某一进程拥有的锁 的信息
9.5.4 使事务更有效地工作
9.4.3 使用触发器
1. 关于inserted表和deleted表 inserted表和deleted表是触发器专用的临时虚拟表。具 体的创建情况如表9.3所示。
2. 使用INSERT触发器和UPDATE触发器 INSERT触发器和UPDATE触发器常用于确保用户某 些复杂的、特殊的商业规则,并保证数据在插入数据表 之前是有效的。 3. 使用DELETE触发器 自动实施级联删除,确保数据完整性。
9 Transact-SQL程序设计
9 Transact-SQL程序设计9.1实验目的1.掌握Transact-SQL中全局变量和局部变量的使用方法;2.掌握Transact-SQL函数的使用方法;3.掌握自定义函数的方法;4.初步掌握Transact-SQL流程控制语句的使用。
9.2实验环境硬件环境:计算机;软件环境:SQL Server 2005;9.3实验内容9.3.1变量的使用9.3.1.1全局变量的使用(1)显示到当前日期和时间为止试图登录SQL Server的次数。
(2)显示SQL Server安装的日期、版本和处理器类型。
9.3.1.2局部变量的使用(1)编程实现将EDUC数据库中教师档案表的记录个数存入到局部变量,并通过局部变量显示出来。
(2)编程实现将EDUC数据库中学生成绩表中的平时成绩的最大值和最小值分别存入到两个局部变量,并通过局部变量显示出来。
9.3.2函数的使用9.3.2.1系统函数的使用(1)显示服务器端计算机的名称select host_name() as ‘服务器端计算机名称’(2)显示用户的数据库用户名select user_name() as ‘数据库用户名’9.3.2.2字符串函数的使用(1)显示字符’A’的ASCII码。
(2)显示ASCII码为68的字符。
(3)利用substring、right和len函数,显示学生成绩表中课程门类、班内学号、平时成绩、期末成绩的内容。
9.3.2.3日期型函数的使用(1)利用getdate和year函数显示学生档案表中的学号、姓名、性别、年龄字段的内容。
(2)显示今天距1999年12月31日相隔的天数。
9.3.2.4数学函数的使用(1)利用rand函数随机产生一个0到1之间的小数。
(2)利用rand和floor函数随机产生一个0-99之间的整数。
9.3.2.5用户自定义函数的使用(1)编写一个用户自定义函数,完成以下功能:根据两个输入的参数(成绩的上限和下限),求t_score表中满足输入条件的学生人数。
网络数据库第九章 Transact-SQL程序设计
Smalldatetime值
2005-09-03 01:35:00 2005-09-03 13:00:00 2005-09-03 13:00:00 1900-01-01 13:25:00
DECLARE @rows int SELECT @rows=@@rowcount
② @@error
• 如果@@error为非0值,则表明执行过程中产生了错误, 此时应当在程序中采取相应的措施加以处理。 • @@error的值与@@rowcount一样,会随着每一条SQL Server语句的变化而改变。 例9-4 使服务器产生服务,并用显示错误号。
④ @@version
– @@version的值代表服务器的当前版本和当前操作系统版 本,是SQL Server中一项较实用的技术支持,通常对识别网 络中某个未命名的服务器时非常有用。
⑤ @@spid
– @@spid返回当前用户进程的服务器进程ID,可以用来识别 sp_who输出中的当前用户进程。
例9-6 使用@@spid返回当前用户进程的ID。
全局变量和局部变量
• 全局变量由系统定义并维护,通过在名称前面 加“@@”符号 • 局部变量的首字母为单个“@”。
(1)局部变量
• 局部变量使用DECLARE语句定义
DECLARE {@local_variable data_type }[,...n]
• 变量名最大长度为30个字符。一条DECLARE 语句可以定义多个变量,各变量之间使用逗号 隔开。 • 例如
ch09_Transact-SQL程序设计
CASE搜索函数的语法 搜索函数的语法
CASE WHEN Boolean_expression THEN result_expression [ ...n ] [ ELSE else_result_expression] END
===>0905_CASE
计算过程 计算 input_expression,然后按指定顺序对 , 每个 WHEN 子句的 input_expression = when_expression 进行计算 返回第一个取值为 TRUE 的 (input_expression = when_expression) 的 result_expression 如果没有取值为 TRUE 的 input_expression = when_expression, , 则当指定 ELSE 子句时 SQL Server 将返回 else_result_expression 子句, 若没有指定 ELSE 子句,则返回 NULL 值
===>0904_CustomFunction
内嵌表值函数的语法格式 CREATE FUNCTION function_name ( [{@parameter_name [AS] scalar_parameter_data_type [=default ] } [ ,...n ] ] ) RETURNS TABLE [ AS ] RETURN [ ( ] select_stmt [ ) ]
注释 单行注释:使用两个连字符” 开头 单行注释:使用两个连字符”-“开头 多行注释:使用一对分隔符” 多行注释:使用一对分隔符”/* */“ 注释文本 选择要注释的文本, 选择要注释的文本,按 CTRL+SHIFT+C 删除注释标记 选择要从中删除注释标记的文本, 选择要从中删除注释标记的文本,按 CTRL+SHIFT+R
Transact_SQL程序设计
Transact_SQL程序设计●注释符●块语句[BEGIN….END]●判断语句●IF EXISTS语句●CASE语句●循环语句WHILE●跳转语句GOTO●事务处理语句WAITFOR●PRINT语句●RETURN语句●关于错误处理一、注释符注释符是对程序的说明。
可使用两类注释符:1.两个连字符构成的注释符“--”,用于单行注释2.“/*…*/”用于多行注释。
二、块语句[BEGIN….END]1.语法:BEGIN<SQL 命令行或程序块>END2.说明:·[BEGIN….END] 最常见的用法是和WHILE和IF….ELSE组合使用·在[BEGIN….END]中可嵌套另外的[BEGIN….END]定义另一个程序块三、判断语句1.语法:IF <条件表达式><SQL 命令行或语句块>[ELSE<SQL语句行或语句块>]]2.说明:·条件表达式何以是各种表达式的组合,值必须是逻辑值“真”或“假”·ELSE子句是可选的,最简单的IF语句没有ELSE子句·IF….ELSE 语句可以嵌套[例1]:求三个整数中的最大值DECLARE @a int,@b int,@c int,@max intSELECT @a=1,@b=2,@c=3IF @a>@b AND @a>@cSET @max=@aELSEIF @b>@a AND @b>@cSET @max=@bELSESET @max=@cSELECT @max AS ‘最大值’四、IF EXISTS语句用于检测数据是否存在。
1.语法IF [NOT] EXISTS(SELECT子查询)<SQL 命令行或语句块>[ELSE<SQL 命令行或语句块>]2.说明·SQL服务器只要找到第一个匹配的行(记录),就停止执行SELECT子查询语句·IF 语句最多嵌套150层[例2]:判断高静是否在计算机系IF EXISTS(SELECT * FROM 学生表 WHERE 姓名=‘高静‘ AND 所在院系=‘计算机’)SELECT ‘高静在计算机系’ELSESELECT ‘高静不在计算机系’五、CASE语句用n个条件来控制n个操作1.CASE语句主要是用来取代嵌套的IF语句CASE 语句有两种格式:[格式1]CASE <算术表达式>WHEN <算术表达式> THEN <算术表达式>……WHEN <算术表达式> THEN <算术表达式>[ELSE <算术表达式>]END[格式2]CASEWHEN <条件表达式> THEN <算术表达式>……WHEN <条件表达式> THEN <算术表达式>[ELSE <算术表达式>]END2.CASE语句可以嵌套到任何SQL语句中[例3]:调整学生的成绩。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CREATE FUNCTION DatetoQuarter(@dqdate datetime) RETURNS char(6) AS BEGIN RETURN(datename(q,@dqdate)+'Q'+datename(yyyy,@dqdate)) END
数学函数
abs(x):求绝对值; select abs(-3) 值为3 sqrt(x):求平方根; select sqrt(4) 值为2.0 rand( ):返回0~1之间的随机float值; floor(X):返回小于或等于X值的最大整数; select floor(78.5), floor(123), floor(-78.5) ceiling(X):返回大于或等于X值的最小整数; select ceiling(78.5), ceiling(123), ceiling(-78.5)
1. 创建用户定义函数
(1) 使用CREATE FUNCTION创建用户定义函数 • 标量函数的语法格式:
CREATE FUNCTION 函数名称
(形式参数名称 [AS] 数据类型) RETURNS 返回数据类型 [AS] BEGIN 函数内容 RETURN 表达式 END
例9-18 创建一个用户定义函数DatetoQuarter,将输
(1) 内置函数:是一组预定义的函数,是Transact-SQL语言 的一部分,按Transact-SQL参考中定义的方式运行且不 能修改。 (2) 用户定义函数:由用户定义的Transact-SQL函数。它将 频繁执行的功能语句块封装到一个命名实体中,该实 体可以由Transact-SQL语句调用。
select ‘MICROSOFT’+ rtrim(‘ sql_server ‘) + ’2000’ select ‘MICROSOFT’+ Ltrim(‘ sql_server ‘)+’2000’
• space(个数):返回指定个数的空格。 例:select ‘ab’+space(2)+’cd’
DATENAME函数
1).格式: DATENAME(datepart,date) 2).功能:返回日期date中由datepart指定的日期部分的 字符串。 3).返回值数据类型:nvarchar 例如: datename(yy,'1993-3-4') --结果为'1993' datename(mm,'1993-3-4') --结果为'03' datename(dd,'1993-3-4') --结果为'4'
DATEPART函数
1).格式:DATEPART(datepart,date) 2).功能:与DATENAME相似,只是返回值为整数。 3).返回值数据类型:int 例如:datepart(yy,'1993-3-4') --结果为1993 datepart(m,'1993-3-4') --结果为3 datepart(d,'1993-3-4') --结果为4
Sign(X):求符号函数,X>0则sign(x)=1; X=0 则sign(X)=0;X<0 则sign(X)=-1 例:sign(-34) Power(x,y):求表达式的y次方, 例:power(3,2) 例:计算3的4次方及16的平方根
例9-12 用ceiling和floor函数返回大于或 等于指定值的最小整数值和小于或等于 指定值的最大整数值。
• replicate(串,次数):将串重复指定次数, 例: select replicate(‘中国’,2) • Left(串, 个数):返回已知串从左边开始指定个 数的字符。 例:select left('我的祖国abc', 4)
select replicate(left(‘abc’,2),4)
• Replace(‘串1’,’串2’,’串3’):用串3替换串1中出 现的所有串2字符,例:
SELECT 院’) replace(‘理工光电’,’光电’,’光电信息学
• Stuff(串1, 开始位置, 长度, 串2):删除串1 指定位置开始指定长度的字符串,并在指定位 置插入串2 select stuff('我的祖国abc',5,2,'小花') 结果是:我的祖国小花c
例:SELECT ‘ABC’+STR(123.5,5,1)
ABC123.5
Lower(串):把字符串全部转换为小写, 例:select lower(‘SmallFish’),lower(‘SMALLFISH’) Upper(串) :把字符串全部转换为大写, 例:select upper(‘SmallFish’),upper(‘SMALLFISH’) LTrim(串), RTrim(串):去掉引导空格或者尾空格 例:
SELECT ceiling(123),floor(321), ceiling(12.3), ceiling(-32.1),floor(- 321 13 -32 -33
例9-13 round函数的使用。
SELECT round(12.34512,3), round(12.34567,3), round(12.345,-2), round(54.321,-2)
round(x,length):四舍五入函数,length为正,则对X 小数位数四舍五入,length为负,则对X从小数点左边 length位起四舍五入,若length既为负数且其绝对值 大于X整数部分数字个数,则函数值为0。 ROUND(63.567, 1) ROUND(63.567, 0) ROUND(63.567, -1) ROUND(63.567, -2) ROUND(63.567, -3) ROUND(63.567, -4)
• SubString(串,开始位置,长度):返回从字符 串左边’开始位置’起数量为’长度’的字符 串。其中表达式可以是字符串或二进制串或含 字段名或字符型变量的表达式。SUBSTRING() 函数不能用于TEXT 和IMAGE 数据类型
select substring('我的祖国abc', 5, 2)
(2) 内嵌表值函数
内嵌表值函数返回的函数值为一个表。内嵌表值函数的函数体不 使用BEGIN„END语句,其返回的表是RETURN子句中的SELECT命令 查询的结果集,其功能相当于一个参数化的视图。
(3) 多语句表值函数
多语句表值函数可以看作标量函数和内嵌表值函数的结合体。其 函数值也是一个表,但函数体也用BEGIN„END语句定义,返回值 的表中的数据由函数体中的语句插入。
字符串函数
ASCII(串):返回字符表达式最左端字符的ASCII 码值,例:ASCII(‘abc’)=97 CHAR(ASCII码):用于将ASCII 码转换为字符,如 果没有输入0 ~ 255 之间的ASCII 码值,返回 值为NULL 。例:char(97)=’a’
STR(X[,length[,decimal]]):把数值型数据转换为 字符型数据 说明: length 和decimal 必须是非负值, length 指定返回的字符串的长度,decimal 指定 返回的小数位数。
DAY函数
1)格式:DAY(date) 2)功能:返回指定日期date中天的整数。 3)返回值数据类型:int 例如:select day(‘2004-3-5’) --结果为5
9.2.2 用户定义函数
根据函数返回值形式的不同将用户定义函数分为3种类型。 (1) 标量函数
标量函数返回一个确定类型的标量值,其函数值类型为SQL Server的系统数据类型(除text、ntext、image、cursor、 timestamp、table类型外)。函数体语句定义在BEGIN„END语句 内。
YEAR函数
1).格式:YEAR(date) 2).功能:返回指定日期date中年的整数。 3).返回值数据类型:int 例如:select year('2004-3-5') --结果为2004
MONTH函数
1)格式:MONTH(date) 2)功能:返回指定日期date中月份的整数。 3)返回值数据类型:int 例如:select month('2004-3-5') --结果为3
ss ms
1-59 0-999
GETDATE函数
1).格式:GETDATE() 2).功能:按SQL Server 2000内部标准格式返回系统日期和 时间。 3).返回值数据类型:datetime 例如: select getdate() --结果为2007-11-21 21:51:32.390
执行语句: SELECT dbo.DatetoQuarter('2006-8-5')
内嵌表值函数的语法格式:
CREATE FUNCTION 函数名称 (形式参数名称 [AS] 数据类型 [ ,...n ]) RETURNS TABLE [ AS ] RETURN ( select_stmt )
日期元素及其取值范围
元素名称 Year Quarter Month Dayofyear Day Week Hour Minute 缩写 yy qq mm dy dd wk hh mi 取值范围 1753--9999 1-4 1-12 1-366 1-31 0-51 0-23 1-59
Second Millisecond
DATEDIFF函数
1).格式:DATEDIFF(datepart,date1,date2) 2).功能:返回两个日期间的差值并转换为指定日期元素 的形式。 3).返回值数据类型:整型 例: Select datediff(yy,’1989.03.03’,’2003.04.05’) --值为14 Select datediff(mm,’1989.03.03’,’2003.04.05’) --值为169