1:SQL 与 T-SQL
1.1SQL 语言
SQL 是 Structured Query Language 的缩写 , 翻译为 ” 结构化查询语言 ”
SQL 语言可以分为四类:
数据查询语言 (Data Query Language) 如 : select
数据定义语言 (Data Definition Language) 如 : create ,alter,drop
数据操纵语言 (Data Manipulation Language) 如 :insert ,update,delete
数据控制语言 (Data Control Language) 如 :grant,revoke
1.2 T- SQL 语言
Transact-SQL 即事务 SQL, 也简称为 T-SQL, 它是微软公司对 SQL 语言的扩充 , 是 SQL 语言的超集 , 是应用程序与 SQLS erver 数据库引擎沟通的主要语言 . 主要由以下几个部分组成 .
1.2.1 数据定义语言 Data Definition Language , DDL 主要用于创建数据库及相关对象 , 修改及删除数据库对象 . 如 :
Create 创建数据库对象
Alter 修改数据库对象
Drop 刪除 数据库对象
1.2.2 数据控制语言 Data Control Language , DCL 用于设置或者更改用户对数据库访问的权限 .
Grant 赋予用户权限
Deny 禁止访问数据库对象 , 且无法从其他角色继承权限
Revoke 收回权限
1.2.3 数据查询语言 Data Query Language,DQL
Select
1.2.4 数据操纵语言 Data Manipulation Language,DML 直接或间接操作表中的数据
使表中数据发生变化
Insert 插入数据
Update 更新数据
Delete 删除数据
1.2.5 系统存储过程 System Stored Procedure 以 SP_ 开头 , 保存在 master 数据库中 .
1.2.6 一些附加的语言元素
1.2.6 .1 注释
单行注释 --( 两个连续的减号 )
多行注释 /* */
如 :
declare @I int -- 定義編量
set @i= 9999
/*
賦
值
*/
1.2.6 .2 变量
局部变量 如 : declare @I int
全局变量 如 : select @@version
1.2.6 .3 运算符
1.2.6 . 4 函数
1.2.6 . 5 流程控制语句
2 :T-SQL 执行方式
2.1 直接调用执行
2.2 嵌入式执行
2.3 模块绑定执行
2.4 通过调用层接口 (CLI) 执行
3: 批处理
3.1 概念 :
是同时从应用程序发送到 MSSQL 并得以执行的一组单条或者多条的 T-SQL 语句 .
MSSQL 将批处理语句编译成单个可执行的单元 , 称为执行计划 , 执行计划中的语句每次执行一条 .
在 T-SQL 中通常遇到两类错误 : 编译错误与运行时错误
编译错误 : 是编译时产生的错误 , 如语法错误会导致编译错误
create table tb( ID)
/*
訊息 173 ,層級 15 ,狀態 1 ,行 1
資料行 'ID' 的定義必須包含資料類型。
*/
运行时错误 : 在运行时候才产生的错误 ( 编译已经通过 ) 如 : 算术溢出等
select 13/ 0
/*
訊息 8134 ,層級 16 ,狀態 1 ,行 1
發現除以零的錯誤。
*/
注意 : 批处理对编译错误与运行时候错误处理方式不一样
如果在批处理里出现编译错误 , 则批处理中任何一条语句都不会执行 . 因为先将批处理的语句编译成一个可执行的单元 , 如果存在编译错误 , 就无法生成可执行但与 , 更不能执行了 .
如果在批处理里存在运行时错误 , 则在大多数情况下会停止执行批处理中当前错误语句之后的语句 , 但也有些运行时错误 , 仅停止执行当前语句 , 而继续执行其他语句 . 但是如果批处理位于事务中 , 那么在遇到运行时候错误则需要视事务的定义来决定 . 后续将介绍 .
3. 2 示例
use db_study -- 第 1 个 批处理
go
select * from tb -- 第 2 个 批处理
go
select @@error -- 第 3 个 批处理
3.3 批处理使用规则
3.3.1 Create 语句不能在批处理中与其他语句结合使用 ; 如果包含 Create 语句 , 则批处理必须以 Create 语句开始 ; 所有跟在批处理后的其他语句将被解释为第一个
Create 语句定义的一部分 . 这写语句包括 create default,function,proc,rule,schema,trigger,view
3.3.2 不能在同一个批处理中更改表然后引用新列
3.3.3 如果 execute 语句是批处理中第一条语句则不需要 execute 关键字反之必须有 .
P -- 过程名此处省略 execute