Ch8-1补充 09101数据库系统原理及应用-语法与流程控制

更新时间:2023-09-06 07:20:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

SQLServer2000编程—语 法与流程控制

Transact-SQL语言的特点§Transact-SQL语言是微软对SQL语言的扩展。 §Transact-SQL语言是一种交互式查询语言,具有 功能强大、简单易学的特点。 §Transact-SQL语言有4个特点: 一是一体化的特点,集数据定义语言、数据操纵语言、 数据控制语言和附加语言元素为一体。 二是两种使用方式,交互式和嵌入到高级语言的使用方 式。前者适合于非数据库专业人员使用,后者适合于数 据库专业开发人员使用。 三是非过程化语言,只需要提出 干什么 ,不需要指 出 如何干 ,语句的操作过程由系统自动完成。 四是,类似于人的思维习惯,容易理解和掌握。

Transact-SQL语言的组成元素§数据控制语言语句 §数据定义语言语句 §数据操纵语言语句 §附加的语言元素

数据控制语言语句§ 安全性管理是分布式数据库系统的重要特征。安全性管理 就是确保数据库中的数据和操作不能被未授权的用户使用 和执行。 § 数据控制语言语句就是用来进行安全性管理,它可以确定 哪些用户可以查看或修改数据、或执行数据库中的操作等, 这些语句主要包括GRANT、DENY、REVOKE等语句。 语句 功能 GRANT 授予权限 说明 可把语句许可或对象许可的权限授 予其他用户和角色 与GRANT的功能相反,但不影响该 REVOK 收回权限 用户或角色从其他角色中作为成 E 员继承许可权限 DENY 收回权限,并 功能与REVOKE相似,不同之处: 禁止从其他 除收回权限外,还禁止从其他角 角色继承许 色继承许可权限 可权限

数据定义语言语句§ 数据定义语言语句用来执行数据库的任务、创建数据库以 及数据库中的各种对象,这些语句包括CREATE、ALTER、 DROP等语句。在Microsoft SQL Server 2000系统中,数 据库及其对象包括数据库、表、缺省、规则、视图、触发 器、存储过程等。 § 这些对象的创建、修改和删除等管理都可以通过使用 CREATE、ALTER、DROP等语句来完成。 功能 说明 CREATE 创建数据库或数据 不同数据库对象,其CREATE语 库对象 句的语法形式不同 对数据库或数据库 不同数据库对象,其ALTER语句 ALTER 对象进行修改 的语法形式不同 删除数据库或数据 不同数据库对象,其DROP语句 DROP 库对象 的语法形式不同 语句

数据操纵语言语句§数据操纵语言语句,用来在数据库中操纵各种对 象,检索和修改数据,这些语句包括SELECT、 INSERT、UPDATE、DELETE等。这些语句都是 操纵数据库的最常用到的语句。语句 功能 说明

SELECT

从表或视图中检索数据

是使用最频繁的SQL语句 之一 既可修改表或视图的一行 数据,也可修改一组或 全部数据 可根据条件删除指定的数 据

INS

ERT

将数据插入到表或视图中

UPDATE 修改表或视图中的数据

DELETE

从表或视图中删除数据

附加的语言元素§附加的语言元素不是ISO SQL-3的标准内容, 而是Transact-SQL语言为了编程而增加的 语言元素。这些语言元素包括变量、运算符、 函数、流程控制语言和注释等等。 §下面就要介绍这些Transact-SQL语法的要 素

一、批处理命令§批处理是多条Transact-SQL语句构成的集 合。SQL Server将批处理语句进行编译形 成一个可执行单元,称为执行计划。 §执行计划中的语句一次执行每一条语句, 如果在编译过程中出现语法错误,那么批处 理中所有的语句均无法正常执行。如果在运 行阶段出现错误时,一般都会中断当前以及 其后语句的执行,只有在少数情况下,如违 反约束时,仅中断当前出错的语句而继续执 行其他语句。

§ 在建立批处理时,应该遵循以下规则: 不能在批处理中引用其他批处理中所定义的变量。 CREATE DEFAULT、CREATE PROCEDURE、 CREATE RULE、CREATE TRIGGER 和 CREATE VIEW 语句不能在批处理中与其它语句组合使用。 不允许在一个批处理中更改表结构、并引用新的字段。 如果 EXECUTE 语句是批处理中的第一句,则不需要 EXECUTE 关键字。如果 EXECUTE 语句不是批处理 中的第一条语句,则需要 EXECUTE 关键字。 EXECUTE /EXEC用于执行用户定义的函数、系统存储过程、 用户自定义存储过程或一个扩展的存储过程。在一个 Transact-SQL 批处理内部,EXEC 能控制一个字符串的运行

一个完整的批处理需要使用GO语句作为结束标记。 GO实际上并不是 Transact-SQL 语句,向 SQL Server 描述由 Transact-SQL 语句组成的批处理

二、注释§注释是程序代码中不执行的文本字符串。 在SQL Server中,可以使用两种类型的注 释字符: 一种是ANSI标准的注释符 --”,它用于单行注 释; 另一种是与C语言相同的注释符号,即 /* */”。

注释语句§嵌于行内的注释语句示例 1 SELECT productname , (unitsinstock - unitsonorder) -- 计算存货 , supplierID FROM products GO

§块注释语句

示例 2

/* 这部分代码检索产品表的所有行并且显示单价,增加了10%的单价和产品名 称。 */ USE northwind SELECT unitprice, (unitprice * 1.1), productname FROM products GO

三、标识符§标准标识符:第一个字符必须是字母(a~z 或 A~Z),第一个字符后可以是数字、字母或各种符 号 §特殊标识符:当标识符的第一个字符是符号时, 代表它有特殊用处 以@开头的标识符代表局部变量或参数 以@@开头的标识符代表全局变量或参数 以#开头的标识符代表临时表或存储过程 以##开头的标识符代表一个全局临时对象

§限定标识符 当对

象名称包含空格时 当保留关键字被用作对象名或对象部分的名字时

限定标识符§限定标识符可以 用中括号表示的括号标识符([ ])

SELECT * FROM [含空格的表名] 用双引号表示的引用标识符( ) SELECT * FROM “含空格的表名”

标识符的命名原则§使用短的名字 §尽量使用有意义的名字 §使用简单明了的命名约定 §使用能够区分出对象类型的标识符 视图 存储过程

§保持对象名和用户名的一致性 sales 表和 sales 角色

四、数据类型§ 数字型:包括各种整数如 int、tinyint、smallint 和 bigint § 日期型:包括 datetime 和 smalldatetime § 字符型:包括 char、nchar、varchar 和 nvarchar § 二进制型:在存储与结构上与字符型数据相似,包括 binary 和varbinary § 惟一标识符(GUID):代表一个全局的特殊标识符,是一 个16 位16 进制的值 § SQL 变量:代表 SQL Server 所支持的各种数据类型 § 图像和文本:属于大型二进制对象结构(BLOB),代表 定长或变长的数据类型 § 表:代表一个表结构,在 SQL Server 2000 中,可以把表 保存在字段中 § 游标:用于存储过程的编程中,也会和低层客户接口同时 使用。游标从不用于数据定义语言(DDL)语句中 § 用户自定义数据类型:基于系统数据类型,由数据库管理 员生成

五、常量§常量,也称为字面值或标量值,是表示一个特定数据 值的符号,在运行过程中其值不会变的量。 §常量的格式取决于它所表示的值的数据类型。包 括:字符型常量,整型常量, 实型常量,日期常 量等。 §Example: ‘This is …’ 12 12.3 ‘2002-09-09’

六、变量§变量对于一种语言来说是必不可少的组成 部分。 §变量有两种形式, 局部变量:用户自己使用DECLARE语句定义, 名字前要有一个标记符 @”。 全局变量:系统提供的,引用全局变量时,名 字前要有两个标记符 @@”。

局部变量§局部变量只具有局部作用范围 只能在定义它的语句、批处理或过程中使用

§用 DECLARE @ 语句定义局部变量 §用 SET 或 SELECT @ 语句给局部变量赋 值【例】创建局部变量@var1、@var2,并赋值,然后输出变量 的值。 DECLARE @var1 varchar(20),@var2 varchar(40) SET @var1='中国' /*一个SET语句只能给一个变量赋值*/ SET @var2=@var1+'是一个伟大的国家' select @var1,@var2 go

【例】创建一个名为sex的局部变量,并在 SELECT 语句 中使用该局部变量查找表student中所有女同学的学号、姓名。 DECLARE @sex char(2) SET @sex='女' SELECT SNO,SNAME FROM student WHERE SSEX=@sex GO

【例】使用查询给变量赋值。 DECLARE @student char(8) SET @student=(SELECT SNAME FROM student WHERE SNO=‘200215121’)单一变量 SELECT @student GO 用SELECT语句赋

值 语法格式: SELECT {@local_variable=expression} [,…n]

本文来源:https://www.bwwdw.com/article/osyh.html

Top