《TSQL编程基础》PPT课件.ppt

上传人:w****2 文档编号:14685728 上传时间:2020-07-28 格式:PPT 页数:37 大小:1MB
收藏 版权申诉 举报 下载
《TSQL编程基础》PPT课件.ppt_第1页
第1页 / 共37页
《TSQL编程基础》PPT课件.ppt_第2页
第2页 / 共37页
《TSQL编程基础》PPT课件.ppt_第3页
第3页 / 共37页
资源描述:

《《TSQL编程基础》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《TSQL编程基础》PPT课件.ppt(37页珍藏版)》请在装配图网上搜索。

1、第 5 讲 T-SQL 编程基础,哈尔滨师范大学恒星学院,本讲主要内容,T-SQL 程序语言概况,T-SQL 程序语言基础,运算符与函数,常用工具简介,1,2,3,Transact-SQL语言 (简称 T-SQL 语言), 是 由 Microsoft 公司开发的一种 SQL 语言, 它是 标准 SQL 程序设计语言的增强版, 使得应用程 序与 SQL Server 数据库引擎沟通. T-SQL 提供了标准 SQL 的 DDL、 DCL 和 DML功能, 加上扩展的函数、系统存储过程以及 程序设计结构 (例如 IF 和 WHILE) 让程序设计 更有灵活性, 还可以实现对数据库管理的功能. T-

2、SQL 语言是 SQL Server 的核心.,一. T-SQL 程序语言概况,随着 Microsoft SQL Server 版本的演进, 衍生自 ANSI SQL 的 T-SQL语言变得独立且功 能强大,拥有众多用户,是解决各种数据问题 的主流语言. 在 SQL Server 的功能大量扩增并广泛进入企业各系统后,日益庞大的数据量让 T-SQL 发挥了重要的作用.,T-SQL 语言主要包括三种类型的语句: 数据定义语言(Date Definition Language, DDL), 数据控制语言(Date Control Language, DCL), 数据操纵语言(Date Manipu

3、lation Language,DML), 简要介绍如下. 数据定义语言(DDL), 除了可以用来建立数据库 与数据库相关对象之外, 还可以修改及删除数据库 对象. 例如, 数据库、表及视图等对象.,T-SQL程序语言的分类,表5-1 数据定义语言(DDL),USE pubs CREATE TABLE myOrders (OrderID int, OrderDate smalldatetime, CustomerID Char(10), ShipDddress varchar(100),数据控制语言(DCL)用来设置用户对数据库 对象的访问权限, 如下表.,表5-2 数据控制语言(DCL),G

4、RANT SELECT ON myOrders TO Jack,数据操纵语言(DML)用来访问表中的数据, 下表5-3 列出了每个语句的使用方式.,表5-3 数据操纵语言(DML),SELECT * FROM myOrders,T-SQL语言的目的在于为处理大量数据提 供必要的结构化处理能力,因此,它并没有提 供 VB 和 C 所具有的某些语言特性. 其它功能 仍需要前端设计工具 (如FoxPro、Delphi、 Java 和 VB 等) 来处理. 所以, 一般称 SQL Server、Oracle 和 mySQL 等数据库 管理系统为 “数据库引擎”.,二. T-SQL 程序语言基础,批处理

5、是由一条或多条 T-SQL 语句构成, 应用程序将它作为单个代码单元发送给系统. SQL 脚本文件或者查询编辑器的窗口都 可以包含多个批处理. 在这种情况下,需要使用批处理分隔符关 键字 GO 来结束每一个批处理. 使用 GO 来结束批处理时,只能把它自己 放在单独的一行上. 结束一个批处理时,将会释放所有由该批 处理所创建的局部变量、临时表、游标.,1. T-SQL批处理,-以下代码会列出该服务器上所有的数据库名称 SELECT name FROM sys.databases,实战练习,- 查询登录的用户账号,使用的数据库与当前的数据库服务器的系统日期和时间 SELECT SUSER_SNA

6、ME(), DB_NAME(), GETDATE(),在 SSMS 的工具条上会标明当前的数据 库,你也可以使用它来改变当前的数据库. 在代码中,则可以使用 USE 命令来选定 当前的数据库. 使用 USE 命令来显式地选定正确的数据 库是一种好的开发方法,不要把选定正确的数 据库交给用户去做.,切换数据库,有些特殊的 T-SQL 命令必须单独地放在 它自己的批处理之中,或者说必须将它们与其 他的批处理命令分别放到不同的批处理中. 数据定义语言命令(CREATE、 ALTER 和 DELETE)就是这样 T-SQL 命令, 应当将 它们放到他们自己的批处理中去,这是一项要 牢记的规则.,DDL

7、命令,可以在查询编辑器中打开一个 .sql 脚本 文件,按下 F5 键或者选择工具栏中的 !执行 项来执行一个 SQL 脚本程序中的全部批处理. 在查询编辑器中可以通过突出显示来选择 一些命令,然后执行这些选定的 T-SQL 命令. 在应用程序中, 可以通过使用 ADO 或者 ODBC 来提交并执行 T-SQL 批处理.,执行批处理,对于 T-SQL 代码应格式化,以方便阅读. T-SQL 命令往往都会写得较长. 但T-SQL 会忽略空格和行尾的换行符,即不需要使用特 殊的续行符号来编写长达数行的 T-SQL 命令, 从而显著地提高了 T-SQL 代码的可读性. 注释符号(略).,2. 格式化

8、 T-SQL 代码,在完成程序代码的编写后,可以单击”文件” 菜单中的 ”保存” 或 ”另存为” 选项, 将程序 代码存为 *.sql 文件. 该文件是文本格式, 故可以 使用任何文本编辑器 (如 NotePad, UltraEdit) 来 进行编辑. 若先前已经打开多个”查询编辑器” 窗口, 并 编写了多个文件, 则可以使用 ”保存全部查询” 的方式来保存所有的程序代码.,3. 保存程序代码,在 T-SQL 中可以使用两种变量, 一种是局 部变量(Local Variable),另外一种是全局变 量(Global Variable). 局部变量 局部变量是用户可自定义的变量,它的作用 范围仅

9、在程序内部. 局部变量必须以 开头,而且必须先作说 明: DECLARE 变量名 变量类型,4. 变量,在 T-SQL 中对变量赋值的语法如下: SELECT 局部变量=变量值 SET 局部变量=变量值 两种赋值命令的主要区别在于: SELECT 可以从表、子查询或者视图中检 索数据,也可以包含其它的 SELECT 子句, 并且 一次可为多个变量赋值. SET 只能从表达式中获取数据. 两个命令中都可以使用函数.,变量的赋值,问题1 考虑下面的程序会有什么结果: DECLARE strName CHAR(10) SELECT strName=SmallFish PRINT strName GO

10、,问题2 考虑下面程序运行的结果: DECLARE Test INT, TestTwo NVARCHAR(25) PRINT Test PRINT TestTwo SET Test=1 SET TestTwo=a value GO PRINT Test,- 问题3 考虑下面程序运行的结果: USE Northwind DECLARE TempID INT, TempLastName VARCHAR(25) SET TempID=99 SELECT TempID=EmployeeID, TempLastName=LName FROM dbo.employee SELECT TempID, Tem

11、pLastName,全局变量是可以调用的系统变量, 它们是只读的,不能被创建. 它们的作用是提供系统的信息. 全局变量以 开头,最常用的有: Error - 最近一次执行的 T-SQL 语句的错误编号 Identity - 为当前连接所生成的最后一个标识值 NestLevel - 当前存储过程的最大嵌套层次数 ServerName - 当前服务器的名字 spid-当前用户进程的会话id cpu_busy-SQL Server 自上次启动后的工作时间,全局变量,许多人对 T-SQL 的初步印象是它的流程控 制命令较少. 实际上,虽然它的流程控制命令没 有其它语言那样丰富,但已经足够了. 它为数据

12、 处理命令提供的布尔扩展 - 如EXISTS、IN 和 CASE - 补充了 IF 和 WHILE 语句的不足. IF 这个语句的特别之处在于:利用它只能对其 后的一条语句的执行与否进行控制. 同时,它也 没有 THEN,以及 ENDIF 等命令.,5 流程控制,例如 考虑下面程序运行的结果: IF 1=0 PRINT Line One PRINT Line Two 在这个脚本中,IF 条件应该返回一个假值, 从而不会执行 IF 下面的第一条 PRINT 命令.,一个 IF 命令只能控制一条语句的执行与否, 这显然缺乏实用性. 要解决这个问题, 可以使 用 BEGIN/END 块, 它可将多条

13、命令作为一个 整体. IF condition BEGIN multiple lines END,IFELSE 语句,IF EXISTS() 结构根据 SELECT 命令返回 的结果集是否包含有行来进行判断. 只要查询 返回了一条记录,就可以停止执行查询,转而 执行批处理中其他的语句,所以这种方法的速 度更快. USE 商品库存 IF EXISTS(SELECT * FROM shangpin WHERE 产品数量=0) BEGIN PRINT 已有产品缺货 END, WHILECONTINUEBREAK WHILE 命令在设定的条件成立时,会重复 执行命令行或程序块. 其语法如下: WHIL

14、E BEGIN BREAK CONTIUNE 命令行|程序块 END 其它控制命令参见教科书.,WHILE 语句, CASE 分支语句 RETURN 终止语句 WAITFOR 暂停语句 PRINT 输出语句 其语法格式和用法参见教科书.,其它流程控制语句,Microsoft SQL Server 2008提供了 7 种类 型的运算符,分别是算术运算符、赋值运算符、 位运算符、比较运算符、逻辑运算符、字符串 运算符和一元运算符. SQL Server 提供了许多系统内置函数,同时也允许用户根据需要自己定义函数. SQL Serve 提供的常用的内置函数主要有以下几类:数学函数、字符串函数、日期函

15、数、转换函数、聚合函数等 .,三. 运算符与函数,数据库基础与应用(SQL Server 2008),逻辑运算符,数据库基础与应用(SQL Server 2008),按位运算符对两个二进制数据或整数数据进行位 操作,但是两个操作数不能同时为二进制数据,必须 有一个为整数数据. SQL Server 2008 提供的按位 运算符如下表所示.,按位运算符,数据库基础与应用(SQL Server 2008),(按位取反) *(乘)、/(除)、%(取余) +(正)、-(负)、+(加)、(+字符串串联)、-(减)、&(按位与)、(按位异或)、|(按位或) =、= 、 、!=, ! 、!(比较运算符) N

16、ot And All、Any、Between、In、Like、Or、Some =(赋值),运算符的优先级,数据库基础与应用(SQL Server 2008),Abs ( numeric_expression ):返回指定数值表达式的绝对值 Round ( numeric_expression , length ,function ):返回一个舍入到指定的长度或精度的数值 Floor ( numeric_expression ):返回小于或等于指定数值表达式的最大整数 Ceiling ( numeric_expression ):返回大于或等于指定数值表达式的最小整数 Power ( float

17、_expression , y ):返回指定表达式的指定幂的值 Sqrt ( float_expression ):返回指定表达式的平方根 Square ( float_expression ):返回指定表达式的平方 Exp ( float_expression ):返回指定的表达式的指数值 Log ( float_expression ):返回指定表达式的自然对数 Log10 ( float_expression ):返回指定表达式的以10为底的对数 Sin ( float_expression ):返回指定角度(以弧度为单位)的三角正弦值 Cos ( float_expression ):

18、返回指定角度(以弧度为单位)的三角余弦值,常用的数学函数,数据库基础与应用(SQL Server 2008),Ascii ( character_expression ):返回字符表达式中最左侧的字符的 ASCII 代码值 Char ( integer_expression ):将 int型的 ASCII 代码转换为字符 Str ( float_expression , length , decimal ):返回由数字数据转换来的字符数据 Len ( string_expression ):返回指定字符串表达式的字符数,其中不包含尾随空格 Substring ( value_expressio

19、n ,start_expression , length_expression ):返回字符表达式的从start_expression位置开始的长度为length_expression的子串 Left ( character_expression , integer_expression ):返回字符串中从左边开始指定个数的字符 Right ( character_expression , integer_expression ):返回字符串中从右边开始指定个数的字符 Ltrim( character_expression ):返回删除了前导空格之后的字符表达式 Rtrim ( charact

20、er_expression ):截断所有尾随空格后返回一个字符串,常用的字符串函数,数据库基础与应用(SQL Server 2008),Getdate ( ):返回系统当前的日期和时间 Year ( date ):返回表示指定参数 date 的“年”部分的整数 Month ( date ):返回表示指定参数 date 的“月”部分的整数 Day ( date ):返回表示指定参数date 的“日”部分的整数 Datename ( datepart , date ):返回表示指定参数date的指定 datepart参数 的字符串 Datepart ( datepart , date ):返回表示

21、指定参数 date 的指定 datepart参数 的整数 Datediff ( datepart , startdate , enddate ):根据指定datepart参数返回两个指定日期之间的差值 Dateadd (datepart , number , date ):根据datepart参数将一个时间间隔与指定 date 参数相加,返回一个新的 datetime 值,日期和时间函数,数据库基础与应用(SQL Server 2008),用户自定义函数可以接受参数,执行复杂的操 作并将操作的结果以值的形式返回. 根据函数返回 值的类型,可分为标量值函数(数值函数)和表值 函数. 与其它数据库对象一样,用 CREATE FUNCTION 创建,用 ALTER FUNCTION 修改,用 DROP FUNCTION 删除. 也可以用SSMS管理. 注意函数与存储过程的区别.,用户自定义函数,1 用 T-SQL 语句编写程序,计算 1+2+100. 2 创建一个函数,在数据库 pubs 的 titles 表中查询 title_id, title, type,price 并以 type 为参数.,练习,

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!