Transact_SQL语言
- 格式:ppt
- 大小:710.00 KB
- 文档页数:88


第5章 Transact-SQL
Transact-SQL是结构化查询语言(SQL)的增强版本,与许多ANSI SQL标准兼
容,Transact-SQL代码已成为SQL Server的核心。与SQL Server实例通信的所有应用
程序都通过将Transact-SQL语句发送到服务器来完成操作。
本章主要给读者讲解T-SQL语言的各种语法,通过本章的学习,希望读者能够理
解常量与变量的区别,理解T-SQL语句中注释、运算符和表达式的使用方法,掌握各
种T-SQL语句的使用方法。
5.1 Transact-SQL的改进
SQL Server 2005 在Transact-SQL上所做的改进反映了其更好地满足了ANSI-99
SQL 规范的要求以及客户的需求。本节重点介绍对Transact-SQL所做的一些改动,这
些改动旨在提高查询功能中的表达能力。
全新的通用表表达式 (CTE)功能能够在使用派生表时,生成查询批。CTE是一种
临时命名的结果集,可通过定义语句加以引用。由于其形式简单,可以把CTE看作是
派生表的改进版本。可在查询的FROM 子句中引用CTE,这与引用派生表和视图的
方法相同。CTE功能提供了一种灵活的表达方法来重新组织标准化数据。
对Transact-SQL添加的最大功能之一是递归查询,改进了操作相关数据的功能。
递归查询是一种新的查询类型,可生成材料清单或分层结果集。提供了新的PIVOT
和UNPIVOT运算符。这些操作符可操作输入表值表达式,并作为结果集生成输出表。
PIVOT运算符可将行通过旋转转换为列,并可能随之执行归并或其他数学计算。该运
算符在给定透视列的基础上扩充了输入表表达式,为列中每个唯一的值生成一个输出
表。UNPIVOT运算符可执行PIVOT的反操作,将列转换为行。该运算符在透视列的
基础上缩小了输入表表达式。这些新的递归查询提供了一种对数据进行重新定形的方
法。
对Transact-SQL的一些改进主要针对基于操作符的应用来阐明结果的功能。新的
1 西北师范大学计算机科学与工程学院学生实验报告
学 号 专业 计算机科学与技术 姓名
课程名称 数据库应用与开发 班级
实验名称 Transact-SQL 语言基础 课程类型 专业限选课
实验目的:
本章主要介绍 Transact-SQL语言中的常量、变量、函数、表达式等语言成分和控制流语句等。掌握Transact-SQL语言是进一步学习更多的管理技术和数据库应用开发技术的关键。
实验内容:
1、Transact-SQL语句声明一个长度为16的nchar型变量bookname,并赋初值为“SQL
Server 数据库编程”。
SQL代码:
DECLARE @bookname nchar(16)
SET @bookname nchar='SQL Server 数据库编程'
实验结果: 2
2、编程计算两个日期的时间差
SQL代码:
USE test
GO
SET NOCOUNT ON
DECLARE @startdate datetime,@enddate datetime
SET @startdate='1/17/2008 12:12AM'
SET @enddate='11/10/2009 12:00 Am'
SELECT DATEDIFF(year, @startdate,@enddate)
SELECT DATEDIFF(month, @startdate,@enddate)
SELECT DATEDIFF(day, @startdate,@enddate)
SELECT DATEDIFF(minute,@startdate,'1/8/2007 12:17AM')
SELECT DATEDIFF(minute, @startdate,GETDATE())
SET NOCOUNT OFF
实验结果: 3
3、编程求50到100之间所有能被3整除的奇数之和
SQL代码:
DECLARE @count INT,@SUM INT
数据库技术与应用实验 实验7 Transact-SQL程序设计
南京师范大学中北学院 1
实验7 Transact-SQL程序设计
一、实验目的
1. 掌握Transact-SQL的数据类型、常量变量、表达式等概念。
2. 掌握SQL Server 2005中常用函数的用法。
3. 掌握程序中注释的基本概念和使用方法。
4. 了解程序中的流程控制语句。
二、实验准备
1.了解函数的使用方法。
2.了解系统提供的常用数学函数、日期和时间函数、字符串函数和数据类型转换函数的用法。
3.了解程序中注释的语法格式。
4.了解程序中的流程控制语句:IF-ELSE、CASE、WHILE等控制流语句。
三、实验内容和步骤
1.在查询分析器中,选择studentsdb数据库,在学生表中查找姓“张”的学生,并将该生姓名赋于变量@stu_name。
数据库技术与应用实验 实验7 Transact-SQL程序设计
南京师范大学中北学院 2 提示:首先要定义变量@stu_name。
2.定义int型局部变量@grademax、@grademin、@gradesum,在成绩表中查找课程编号是“C002”课程的最高分、最低分和总分,分别赋给@grademax、@grademin和@gradesum,并显示。
3. 使用SET命令将查询结果集记录数目赋值给int型局部变量@row。给下面代码中的划线处填上适当的内容,以完成上述操作。
DECLARE @rows____int_______
SET _____@rows _______=(SELECT COUNT(*)FROM 成绩表)
_____ SELECT ______@rows --显示@rows的值数据库技术与应用实验 实验7 Transact-SQL程序设计
在易语⾔中调⽤MSSQLSERVER数据库存储过程(Transact-
SQL)⽅法总结
作者:liigo
⽇期:2010/8/25
Microsoft SQL SERVER 数据库存储过程,根据其输⼊输出数据,笼统的可以分为以下⼏种情况或其组合:⽆输⼊,有⼀个或多个输⼊参数,⽆输出,直接返回(return)⼀个值,通过output参数返回⼀个或多个值,返回⼀个记录集(recordset)。⽆论哪⼀种情况,⽆论输⼊输出参数多复杂的存储过程,都可以在易语⾔中正确调⽤,准确的传⼊参数,并获取正确的输出数据。下⾯我(liigo)分多种情况介绍在易语⾔中调⽤MS SQL SERVER数据库存储过程的详细⽅法,使⽤数据库操作⽀持库(eDatabase.fne)。此前多有⼈说易语⾔⽆法调⽤数据库存储过程,或咨询调⽤存储过程的⽅法,因成此⽂。
⼀、调⽤“⽆输⼊输出数据”的存储过程
这是最简单的情况,执⾏⼀个简单的SQL语句就OK了,下⾯直接给出代码:
数据库连接1.执⾏SQL (“exec dbproc”)
其中,“数据库连接1”是数据库操作⽀持库中“数据库连接”控件的实例,"exec" 表⽰调⽤存储过程,"dbproc"为被调⽤的存储过程的名称。即使存储过程有返回值,在不想接收返回值的情况下,也可按这种⽅法调⽤。
⼆、调⽤“有⼀个或多个输⼊参数”的存储过程
⼀个输⼊参数的情况(其中5为参数值,跟在存储过程名称之后,以空格分隔):
数据库连接1.执⾏SQL (“exec dbproc_p1 5”)
两个输⼊参数的情况(其中3和6为参数值,之间以逗号分隔):
数据库连接1.执⾏SQL (“exec dbproc_p2 3,6”)
三、调⽤“返回记录集(recordset)”的存储过程
存储过程最后⼀条SQL语句为Select语句,通常将返回⼀个记录集(recordset)给调⽤者。在易语⾔中,可通过数据库操作⽀持库中的“记录集”控件接收该记录集,具体代码如下图:易语⾔调⽤MSSQL存储过程 核⼼代码就是中间淡黄底⾊加亮的那⼀⾏(记录集1.打开),这⾏代码执⾏成功后,记录集1内容就是存储过程返回的recordset内容,通过⼀个简单的循环语句可以遍历所有记录。实际使⽤中,应检查“记录集1.打开”调⽤是否成功,上图为简化起见省略之。