数据库系统02--Transact-SQL 程序语言基础

上传人:ji****72 文档编号:51929311 上传时间:2018-08-17 格式:PPT 页数:35 大小:283.50KB
返回 下载 相关 举报
数据库系统02--Transact-SQL 程序语言基础_第1页
第1页 / 共35页
数据库系统02--Transact-SQL 程序语言基础_第2页
第2页 / 共35页
数据库系统02--Transact-SQL 程序语言基础_第3页
第3页 / 共35页
数据库系统02--Transact-SQL 程序语言基础_第4页
第4页 / 共35页
数据库系统02--Transact-SQL 程序语言基础_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《数据库系统02--Transact-SQL 程序语言基础》由会员分享,可在线阅读,更多相关《数据库系统02--Transact-SQL 程序语言基础(35页珍藏版)》请在金锄头文库上搜索。

1、第 2 讲 Transact-SQL 程序语言基础一、SQL 程序语言简介二、T-SQL 程序语言简介三、T-SQL 程序语言基础一、 SQL 程序语言简介SQL 语言是用来访问关系数据库的语言. 无论前端应用程序的用户接口为何 ( 例如: VB.NET、 Java 等), 所有的应用程序都应该是 以传送 SQL 语句到后端关系数据库服务器的方 式来沟通. SQL全称是”Structured Query Language”, 是1974年由Boyce和Chamberlin提出的,稍后 在IBM公司开发关系型数据库管理系统时实现.在关系数据库中,以集合(set)的方式来处理大量记录才有效率,使得

2、 SQL语言无法被C#/Java/Visual Basic 等面向对象语言取代。而善用数据是信息系统成功的关键因素之一,现今大量交易、数据整合、商业智能的结构性 需求大增,将使 SQL 显得更加重要。 使用 SQL 程序语言的目的在于让应用程序 与数据的内部结构不会存在任何依赖关系,也就 是所谓的”数据独立”. 用户无须了解数据是如何 存储在数据库和操作系统的文件中的, 仅需利用 SQL 程序语言就可以取得数据. 如下例.-取得 northwind 数据库, orders 订单表的数据SELECT * FROM northwind. dbo. ordersSQL 程序语言的主要功能有: 插入、

3、提取、修改与删除关系数据库中 的数据. 新建、修改、删除数据库与数据库相关 对象. SQL 程序语言已成为关系数据库的标准 语言. 美国国家标准局(ANSI) 与国际标准化 组织(ISO)为其制定了 SQL 标准, 各数据库 厂商都必须遵守该标准.目前已完成的标准有: ANSI SQL- 92, ANSI SQL- 99, ANSI SQL- 2003 等.尽管不同厂家的关系数据库使用的 SQL 版本有一些差异, 但大多数都遵循相同的标 准. SQL 语言的结构每条 SQL 语句均由一个谓词(Verb)开始,该谓词描述这条语句要产生的动作,例如SELECT EMP_ID FROM EMPLOY

4、EEWHERE E_WAGE3000 关键字谓词后紧跟着一个或多个子句,子句中给出了被谓词作用的数据或提供谓词动作的 详细信息. 每一条子句由一个关键字开始,如上 例中的 WHERE. Transact-SQL语言 (简称 T-SQL 语言), 是由 Microsoft 公司开发的一种 SQL 语言, 它是标准 SQL 程序设计语言的增强版, 使得应用程序与 SQL Server 数据库引擎沟通.T-SQL 提供了标准 SQL 的 DDL、 DCL 和DML功能, 加上扩展的函数、系统存储过程以及程序设计结构 (例如 IF 和 WHILE) 让程序设计更有灵活性, 还可以实现对数据库管理的功能

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

6、e Manipulation Language, DML), 简要介绍如下.数据定义语言(DDL), 除了可以用来建立数据库与数据库相关对象之外, 还可以修改及删除数据库对象. 例如, 数据库、表及视图等对象.数据定义语义语 言说说 明CREATE建立数据库对库对 象ALTER修改数据库对库对 象DROP将该该数据库对库对 象删删除表2-1 数据定义语言(DDL)USE pubs CREATE TABLE myOrders (OrderID int, OrderDate datetime, CustomerID Char(10), ShipDddress varchar(100)数据控制语言(

7、DCL)用来设置用户对数据库 对象的访问权限, 如下表.数据控制语语言 说说 明GRANT赋赋予某个用户户具有数据库对库对 象的权权限DENY禁止使用该该数据库对库对 象,且不能继继承REVOKE收回之前设设置的权权限表2-2 数据控制语言(DCL)GRANT SELECT ON myOrders TO Jack数据操纵语言(DML)用来访问表中的数据, 下表2-3 列出了每个语句的使用方式.数据操纵语纵语 言 说说 明SELECT从表或视图视图 中选择选择 行INSERT将行插入到表或视图视图 中UPDATE在表或视图视图 中更新行DELETE在表或视图视图 中删删除行表2-3 数据操纵语言

8、(DML)SELECT * FROM myOrders 三、 T-SQL 程序语言基础T-SQL语言的目的在于为处理大量数据提 供必要的结构化处理能力,因此,它并没有提 供 VB 和 C 所具有的某些语言特性. 其它功能 仍需要前端设计工具 (如FoxPro、Delphi、 Java 和 VB 等) 来处理. 所以, 一般称 SQL Server、Oracle 和 mySQL 等数据库 管理系统为 “数据库引擎”.1. T-SQL 批处理批处理是由一条或多条 T-SQL 语句构成, 应用程序将它作为单个代码单元发送给系统. 结束批处理SQL 脚本文件或者查询分析器的窗口都可以包含多个批处理.在

9、这种情况下,需要使用批处理分隔符关键字 go 来结束每一个批处理.使用 go 来结束批处理时,只能把它自己放在单独的一行上. 结束一个批处理时,将会释放所有由该批处理所创建的局部变量、临时表、游标. 实战练习-以下代码会列出该服务器上所有的数据库名称(mss2005)SELECT name FROM sys.databases-以下代码会列出该服务器上所有的数据库名称(mss2k)SELECT name FROM master. dbo. Sysdatabases 切换数据库在查询分析器的工具条上会标明当前的数据库,你也可以使用它来改变当前的数据库.在代码中,则可以使用 use 命令来选定当前

10、的数据库.使用 use 命令来显式地选定正确的数据库是一种好的开发方法,不要把选定正确的数据库交给用户去做. DDL命令有些特殊的 T-SQL 命令必须单独地放在它自己的批处理之中,或者说必须将它们与其他的批处理命令分别放到不同的批处理中.数据定义语言命令(CREATE、 ALTER和 DELETE)就是这样 T-SQL 命令, 应当将它们放到他们自己的批处理中去,这是一项必须牢记的规则. 执行批处理可以在查询分析器中打开一个 .sql 脚本文件,按下 F5 键或者选择 查询 执行 菜单项来执行一个 SQL 脚本程序中的全部批处理. 在查询分析器中可以通过突出显示来选择一些命令,然后执行这些选

11、定的 T-SQL 命令.在应用程序中, 可以通过使用 ADO 或者ODBC 来提交并执行 T-SQL 批处理. 2. 格式化 T-SQL 代码对于 T-SQL 代码应格式化,以方便阅读.T-SQL 命令往往都会写得较长. 但T-SQL会忽略空格和行尾的换行符,即不需要使用特殊的续行符号来编写长达数行的 T-SQL 命令,从而显著地提高了 T-SQL 代码的可读性.注释符号(略). 3. 保存程序代码在完成程序代码的编写后,可以单击”文件”菜单中的 ”保存” 或 ”另存为” 选项, 将程序代码存为 *.sql 文件. 该文件是文本格式, 故可以使用任何文本编辑器 (如 NotePad, Ultr

12、aEdit) 来进行编辑.若先前已经打开多个”查询分析器” 窗口, 并编写了多个文件, 则可以使用 ”保存全部查询”的方式来保存所有的程序代码.实战练习-查询登录的用户账号,使用的数据库与当前的数据库服务器的系统日期和时间SELECT SUSER_SNAME(), DB_NAME(),GETDATE()4. 变量在 T-SQL 中可以使用两种变量, 一种是局 部变量(Local Variable),另外一种是全局变 量(Global Variable). 局部变量局部变量是用户可自定义的变量,它的作用 范围仅在程序内部. 局部变量必须以 开头,而且必须先作说明:DECLARE 变量名 变量类型

13、在 T-SQL 中变量的赋值有特殊的命令. 语法如下: SELECT 局部变量=变量值或SET 局部变量=变量值两种赋值命令的主要区别在于:SELECT 可以从表、子查询或者视图中检 索数据,并且也可以包含其它的 SELECT 子句.SET 只能从表达式中获取数据.两个命令中都可以使用函数.问题1 考虑下面的程序会有什么结果:DECLARE strName CHAR(10) SELECT strName=SmallFishPRINT strNameGO问题2 考虑下面程序运行的结果:DECLARE Test INT,TestTwo NVARCHAR(25) PRINT TestPRINT Te

14、stTwoSET Test=1SET TestTwo=a valueGOPRINT Test问题3 考虑下面程序运行的结果:USE NorthwindDECLARE TempID INT,TempLastName VARCHAR(25) SET TempID=99SELECT TempID=EmployeeID,TempLastName=LNameFROM dbo.employeeSELECT TempID, TempLastName 全局变量全局变量是可以调用的系统变量, 它们是只读的,不能被创建. 它们的作用是提供系统的信息. 全局变量以 开头,最常用的有:Error - 最近一次执行的

15、T-SQL 语句的错误编号Identity - 为当前连接所生成的最后一个标识值NestLevel - 当前存储过程的最大嵌套层次数ServerName - 当前服务器的名字5. 流程控制许多人对 T-SQL 的初步印象是它的流程控 制命令较少. 实际上,虽然它的流程控制命令没 有其它语言那样丰富,但已经足够了. 它为数据 处理命令提供的布尔扩展 - 如EXISTS、IN 和 CASE - 补充了 IF 和 WHILE 语句的不足. IF这个语句的特别之处在于:利用它只能对其 后的一条语句的执行与否进行控制. 同时,它也 没有 THEN,以及 ENDIF 等命令.例如 考虑下面程序运行的结果:IF 1=0PRINT Line OnePRINT Line Two在这个脚本中,IF 条件应该返回一个假值,从而不会执行 IF 下面的第一条 PRINT 命令.一个 IF 命令只能控制一条语句的执行与否,这显然缺乏实用性. 要解决这个问题, 可以使用 BEGIN/END 块, 它可将多条命令作为一个整体. IF ConditionBEGINMul

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

当前位置:首页 > 行业资料 > 其它行业文档

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