上海网站备案,厦门建设网站制作,网络公司 营销型网站,企业网站建设的四大因素写在最前#xff0c;
写文章的初衷只是为了复习与记录自己的成长#xff0c;笔者目前水平还有待提高#xff0c;文章中难免会出现许多问题与错误#xff0c;文章内容仅供参考#xff0c;有不足的地方还请大家多多包涵并指正#xff0c;谢谢~
第八章 T-SQL程序结构
8.…写在最前
写文章的初衷只是为了复习与记录自己的成长笔者目前水平还有待提高文章中难免会出现许多问题与错误文章内容仅供参考有不足的地方还请大家多多包涵并指正谢谢~
第八章 T-SQL程序结构
8.1 注释和变量
8.1.1 T-SQL程序的基本结构
1批
批是一组SQL语句的集合一个批以结束符GO而终结。批中的所有语句被一次提交给SQL ServerSQL Server将这些语句编译为一个执行单元在执行时全部执行。 注意在执行批时 1只要有其中任一个SQL语句存在语法错误SQL Server将取消整个批内所有语句执行。 2如果没有语法问题可以运行但发生逻辑错误如算术溢出则可能导致停止批中当前语句及后面语句执行或仅停止当前语句执行后面继续。这样可能发生严重错误所以批应位于一个事务之内。
使用批的基本规则 1所有CREATE语句应单独构成一个批不能在批中和其它SQL语句组合使用。 2使用ALTER TABLE语句修改表结构后不能在同一个批中使用新定义的列。 3EXCUTE语句为批中第一个语句时可以省略EXCUTE关键字否则必须使用EXCUTE关键字。 4批命令GO和SQL语句不能在同一行上。但在GO命令中可以包含注释。批命令GO并不是SQL的语句组成部分。它仅是作为批结束的标志。当编译器读到GO时会把它前面的所有语句打成一个数据包一起发给服务器。 --正确批处理的例子
USE 教学管理
GO
CREATE VIEW sub_学生表
AS SELECT 学号,姓名FROM 学生表
GO
SELECT * FROM sub_学生表
GO--不正确批处理的例子1
USE 教学管理
CREATE VIEW sub_学生表
AS SELECT 学号,姓名FROM 学生表
GO
SELECT * FROM sub_学生表
GO
错误的原因在于将选择数据库与创建视图放在了同一个批中前面说过CREATE必须单独在一个批中。 --不正确批处理的例子2
USE 教学管理
GO
CREATE TABLE mytab (name nvarchar(20),pric tinyint)
GO
INSERT INTO mytab (name,pric) VALUES (‘Binete’, 3)
INSERT INTO mytab (name,pric) VALUES (‘Binete’, 3000) --3000超过tinyint类型
GO--第2个插入语句插入时出错只产生部分数据容易成为垃圾数据。为了避免这种情况发生需要用事务保证批中的命令要么全做要么全不做。 2程序结构 一个T-SQL程序包含若干个以BEGIN TRANSACTION开始、以COMMIT提交或ROLLBACK回滚结束的事务一个事务又包含若干个以GO结束的批处理一个批处理包含若干条T-SQL语句。因此T-SQL程序的基本结构为 { BEGIN TRANSACTION { T-SQL语句[ …n] GO }[ …n] { COMMIT | ROLLBACK } }[ …n] --例下列T-SQL程序含两个事务每个事务又含两个批处理。
USE 教学管理
GO
BEGIN TRANSACTIONDELETE FROM 选课表 WHERE 学号’S060101’DELETE FROM 学生表 WHERE 学号’S060101’GOSELECT * FROM 选课表 WHERE 学号’S060101’SELECT * FROM 学生表 WHERE 学号’S060101’GO
ROLLBACK
BEGIN TRANSACTIONINSERT INTO 学生表(学号,身份证号,姓名,专业,所在院系) VALUES
(S060199,****19880115***,张三,计算机,信息学院)INSERT INTO 选课表(学号,课程号) VALUES(’S060199’, ’010101’)GOSELECT * FROM 选课表 WHERE 学号’S060199’SELECT * FROM 学生表 WHERE 学号’S060199’GO
COMMIT8.1.2 注释
注释是程序代码中不执行的文本用于对代码进行说明或暂时禁用正在进行调试的部分T-SQL 语句和批处理。 SQL Server支持两种类型的注释 1双减号-- 从双减号--开始到行尾均为注释是单行注释。 2斜杠-星号对/*…*/ 从“/*”开始到“*/”结束的内容均视为注释常用来给出多行注释。 注意: 斜杠-星号对注释不能跨越批。例如以下程序是错误的。
USE 教学管理
GO
SELECT * FROM 课程表
/* The
GO in this comment causes it to be broken in half */
SELECT * FROM products
GO
--下面是一个有效注释的例子。
USE 教学管理
GO
-- First line of a multiple-line comment.
-- Second line of a multiple-line comment.
SELECT * FROM 课程表
GO
/* First line of a multiple-line comment.Second line of a multipl-line comment. */
SELECT * FROM 教师表
GO
SELECT 学号, /* 身份证号, */ 姓名
FROM 学生表
GO8.1.3 变量 T-SQL使用两种变量即全局变量和局部变量。全局变量是SQL Server 系统内部使用的变量其作用范围并不局限于某一程序而是任何程序均可随时调用。局部变量是用户自定义的变量它仅在定义它的批处理内有效常用来暂存从表中查询到的数据或作为流程控制变量。SQL Server规定局部变量必须以开头而且必须先用DECLARE命令定义后才可使用。 DECLARE命令的格式 DECLARE {变量名 变量类型}[, …n] 其中变量类型可以是SQL Server支持的所有数据类型,也可以是用户自定义的数据类型。
--以下例子定义了两个局部变量。
DECLARE V1 INT, V2 CHAR(100)
8.1.4 变量赋值
T-SQL使用SELECT或SET命令为变量赋值其语法如下 SELECT {变量名表达式}[, …n] SET 变量名表达式 注意一条SET语句只能为一个变量赋值而一条SELECT可以为多个变量赋值。
--例用SET和SELECT语句为变量赋值。
DECLARE V1 INT, V2 CHAR(100), V3 INT, V4 CHAR(100)
SET V1100*100
SET V2ABCDEF
SELECT V32*V1, V4V2HIJ
PRINT V1V3
PRINT V2V4
GO
8.2 运算符和表达式
运算符是一种符号用来指定要在一个或多个表达式中执行的操作。 T-SQL的运算符包括 1)算术运算符2)位运算符3)连接运算符4)比较运算符5)逻辑运算符。 表达式是用运算符和括号将多个常量、局部变量、列、函数连接起来而得的符合T-SQL语法规则的式子。 T-SQL的表达式有: 1)数值型表达式; 2)字符串表达式; 3)条件表达式 8.2.1 算术运算符
算术运算符用来对一个或两个数值型数据实施操作进行其间的算术运算并返回数值型运算结果。 算术运算符包括 (加) -减、求负数 * (乘) /(除) %求余 8.2.2 位运算符
位运算符用来对一个或两个整型数据实施操作进行其间的按位运算并返回整型运算结果。 位运算符包括 (按位与) |(按位或) ~(按位取反) ^(按位异或) 8.2.3 连接运算符
连接运算符用来将两个字符串操作数进行首尾相接形成一个更长的字符串作为运算结果返回。 T-SQL的连接运算符是“” 8.2.4 比较运算符
比较运算符用来对一个、两个或3个(同类)数据实施操作进行其间的比较运算并返回逻辑值“真”或“假”。分为普通的和特殊的两类。 普通比较运算符用来对两个同类数据实施比较包括 大于 小于 等于 大于等于 小于等于 不等于 !不等于 !不大于 !不小于 特殊比较运算符实际上是普通比较运算符的推广或缩写形式包括 [NOT] BETWEEN AND (确定范围三元运算) [NOT] IN (确定集合二元运算) [NOT] LIKE (字符串匹配二元运算) IS [NOT] NULL (空值判断一元运算) 普通比较运算符{ALL|ANY} (二元运算) EXISTS (一元运算) 特殊比较运算符的用法请参阅第5章的文章内容
8.2.5 逻辑运算符
逻辑运算符用来对一个或两个逻辑型数据实施操作进行其间的逻辑运算并返回逻辑值“真”或“假”。 逻辑运算符包括 AND(与) OR(或) NOT(非) 8.2.6 表达式
T-SQL的表达式可分为数值型表达式、字符串表达式和条件表达式。数值型表达式是用算术运算符、位运算符和括号将多个数值型常量、数值型局部变量、数值型列、数值型函数连接起来而得的符合T-SQL语法规则的式子。数值型表达式的返回值是数值型数据。字符串表达式是用连接运算符和括号将多个字符型常量、字符型局部变量、字符型列、字符型函数连接起来而得的符合T-SQL语法规则的式子。字符串表达式的返回值是字符串。条件表达式是用比较运算符、逻辑运算符和括号将多个数值型表达式或字符串表达式连接起来而得的符合T-SQL语法规则的式子。条件表达式的返回值是逻辑值“真”或“假”。 函数、流程控制、程序应用实例分析三部分的内容后续会在本篇文章中更新添加