前言
Transact-SQL语言是结构化查询语言的增强版本,与多种ANSI SQL标准兼容,而且在标准的基础上还进行了许多的扩展。Transact-SQL代码是SQL Server的核心,使用Transact-SQL可以实现关系数据库中的数据查询、操作和添加功能。本篇博客将详细讲解Transact-SQL语言的基础中的标识符起名规则以及常量和变量的使用方法。
内容导航:
- Transact-SQL概述
- 标识符起名规则
- 常量的使用方法
- 变量的使用方法
Transact-SQL概述
什么是Transact-SQL?
在SQL Server中,所有与服务器实例的通信,都是通过发送Transact-SQL语句到服务器来实现的。根据其完成的功能,可以分成4大类,分别为数据库操作语句、数据定义语句、数据控制语句和一些附加的语言元素。
1、数据操作语句:
SELECT,INSERT,DELETE,UPDATE
2、数据定义语句:
CREATE TABLE,DROP TABLE,ALTER TABLE,CREATE VIEW,DROP VIEW,CREATE INDEX,DROP INDEX,CREARE PROCEDURE,
ALTER PROCEDURE,DROP PROCEDURE,CREATE TRIGGER,DROP TRIGGER,ALTER TRIGGER
3、数据控制语句:
GRANT,DENY,REVOKE
4、附加的语言元素:
BEGIN TRANSACTION/COMMIT,ROLLBACK,SET TRANSACTION,DECLARE OPEN,FETCH,CLOSE,EXECUTE
Transact-SQL语法的约定
语法约定
约定 | 用于 |
---|---|
大写 | Transact-SQL关键字 |
斜体 | 用户提供的Transact-SQL语法的参数 |
粗体 | 数据库名、表名、列名、索引名、存储过程、实用工具、数据类型名以及必须按所显示的原样输入的文本 |
下划线 | 指示当语句中省略了带下划线的值的子句中,应用的默认值 |
| (竖线) | 分割括号或大括号中语法项。只能使用其中一项 |
[ ] (方括号) | 可选语法项。不要输入方括号 |
{ }(大括号) | 必选语法项。不要输入大括号 |
[,…n] | 指示前面的项可以重复n次。各项之间以逗号分隔 |
[…n] | 指示前面的项目可以重复n次。每一项由空格分隔 |
; | Transact-SQL语句终止符。虽然在此版本的 SQL Server 中大部分语句不需要分号,但将来的版本中需要 |
<label>::= | 语法块的名称。此约定用于对可在语句中的多个位置使用的过长语法段或语法单元进行分组和标记。可使用语法块的每个位置,由括在尖括号内的标签指示:<标签> |
引用对象名格式
引用对象名格式 | 说明 |
---|---|
server.database.schema.object | 4个部分的名称 |
server.database…object | 省略架构名称 |
server…schema.object | 省略数据库名称 |
server…object | 省略数据库和架构名称 |
database.schema.object | 省略服务器名 |
database…object | 省略服务器名和架构名称 |
schema.object | 省略服务器名和数据库名称 |
object | 省略服务器、数据库和架构名称 |
标识符起名规则
1.标识符分类
SQL Server 定义了两种类型的标识符:规则标识符和界定标识符。
2.规则标识符
在Transact-SQL中凡是规则标识符都不必使用界定符,对于不符合标识符格式的标识符要使用界定符[ ] 或则单引号 ‘ ’。
3.界定标识符
界定标识符是那些使用了如 [ ] 和‘ ’ 等界定符号来进行位置限定的标识符,使用界定标识符既可以遵守标识符命名规则,也可以不遵守标识符命名规则。
4.标识符规则
标识符的首字母必须是以下2种情况之一:
- 第一种情况:所有在Unicode 2.0 标准规定的字符,包括26个英文字母 a~z 和 A~Z,以及其他一些语言字符,如汉字。
- 第二种情况:“_”、“@”或“#”。
标识符首字母后的字符必须是以下3种情况之一:
- 第一种情况:所有在Unicode 2.0 标准规定的字符,包括26个英文字母 a~z 和 A~Z,以及其他一些语言字符,如汉字。
- 第二种情况:“_”、“@”或“#”。
- 第三种情况:0,1,2,3,4,5,6,7,8,9。
标识符不允许是Transact-SQL的保留字:Transact-SQL不区分大小写,所以无论是保留字的大写还是小写都不允许使用。
5.对象命名规则
SQL Server 数据库管理系统中的数据库对象名称由1~128个字符组成,不区分大小写。在一个数据库中创建了一个数据库对象后,应该由服务器名、数据库名、包含对象的架构名和对象名4个部分组成。
6.实例的命名规则
在SQL Server 数据库管理系统中,默认实例的名字采用计算机名,实例的名字一般由计算机名和实例名两部分组成。
常量的使用方法
常量也称为文字值或标量值,是表示一个特定数据值的符号。常量的格式取决于它所表示的值的数据类型。一个常量通常有一种数据类型和长度,这二者取决于常量格式。根据数据类型的不同,常量可以分为如下几类:数字常量、字符串常量、日期和时间常量和符号常量。
数字常量
数字常量包括有符号和无符号的整数、定点数和浮点小数。
integer 整数
2000
2
decimal 小数
200.022
2.0
float 和real 使用科学计数法
100.2E2
0.3E-2
money
$ 100
¥ 5000.52
字符串常量
1.字符串常量
字符串常量括在单引号内并包含字母和数字字符(a~z,A~Z,0~9)以及特殊字符,如感叹号(!)、at(@)和数字号(#)。
2.Unicode字符串
Unicode字符串的格式与普通字符串相似,但它前面有一个N标识符。
日期和时间常量
日期和时间常量使用特定格式字符日期值来表示,并用单引号括起来。
'December 5,1994'
'5 December,1994'
'941205'
'12/5/94'
符号常量
1.分隔符
Transact-SQL中,双引号有两层意思。除了引用字符串之外,双引号还能够用来做分隔符。
2.标识符
Transact-SQL中,标识符用于识别数据库对象,如数据库,表和索引。
变量的使用方法
全局变量
全局变量是SQL Server系统内部使用的变量,其作用范围并不仅仅局限于某一程序,而是任何程序均可以随时调用。全局变量通常存储一些SQL Server的配置设定值和统计数据。用户可以在程序中用全局变量来测试系统的设定值或者是Transact-SQL命令执行后的状态值。
使用全局变量时应该注意以下几点:
- 全局变量不是由用户的程序定义的,它们是在服务器级定义的。
- 用户只能使用预先定义的全局变量。
- 引用全局变量时,必须以标记符“@@”开头。
- 局部变量的名称不能与全局变量的名称相同,否则会在应用程序中出现不可预测的结果。
SELECT @@ERROR 返回最后执行的 Transact-SQL 语句的错误代码(integer) (0,表示没错误;1,表示有错误)
SELECT APP_NAME ( ) as w --当前会话的应用程序
SELECT @@IDENTITY --返回最后插入的标识值
SELECT USER_NAME() --返回用户数据库用户名
SELECT @@CONNECTIONS --返回自上次SQL启动以来连接或试图连接的次数。
SELECT GETDATE() --当前时间
SELECT @@CPU_BUSY/100 --返回自上次启动SQL 以来 CPU 的工作时间,单位为毫秒
USE tempdb SELECT @@DBTS as w --为当前数据库返回当前 timestamp 数据类型的值。这一 timestamp 值保证在数据库中是唯一的。
select @@IDENTITY as w --返回最后插入的标识值
SELECT @@IDLE as w --返回SQL自上次启动后闲置的时间,单位为毫秒
SELECT @@IO_BUSY AS w --返回SQL自上次启动后用于执行输入和输出操作的时间,单位为毫秒
SELECT @@LANGID AS w --返回当前所使用语言的本地语言标识符(ID)。
SELECT @@LANGUAGE AS w --返回当前使用的语言名
SELECT @@LOCK_TIMEOUT as w --当前会话的当前锁超时设置,单位为毫秒。
SELECT @@MAX_CONNECTIONS as w --返回SQL上允许的同时用户连接的最大数。返回的数不必为当前配置的数值
EXEC sp_configure --显示当前服务器的全局配置设置
SELECT @@MAX_PRECISION as w --返回 decimal 和 numeric 数据类型所用的精度级别,即该服务器中当前设置的精度。默认最大精度38。
select @@OPTIONS as w --返回当前 SET 选项的信息。
SELECT @@PACK_RECEIVED as w --返回SQL自启动后从网络上读取的输入数据包数目。
SELECT @@PACK_SENT as w --返回SQ自上次启动后写到网络上的输出数据包数目。
SELECT @@PACKET_ERRORS as w --返回自SQL启动后,在SQL连接上发生的网络数据包错误数。
SELECT @@SERVERNAME as w --返回运行SQL服务器名称。
SELECT @@SERVICENAME as w --返回SQL正在其下运行的注册表键名
SELECT @@TIMETICKS as w --返回SQL服务器一刻度的微秒数
SELECT @@TOTAL_ERRORS AS w --返回 SQL服务器自启动后,所遇到的磁盘读/写错误数。
SELECT @@TOTAL_READ as w --返回 SQL服务器自启动后读取磁盘的次数。
SELECT @@TOTAL_WRITE as w --返回SQL服务器自启动后写入磁盘的次数。
SELECT @@TRANCOUNT as w --返回当前连接的活动事务数。
SELECT @@VERSION as w --返回SQL服务器安装的日期、版本和处理器类型。
局部变量
局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限制在程序内部。局部变量可以作为计数器来计算循环执行的次数,或是控制循环执行的次数。另外,利用局部变量还可以保存数据值,以供控制流语句测试以及保存由存储过程返回的数据值等。局部变量被引用时要在其名称前加上标志“@”,而且必须先用DECLARE命令定义后才可以使用。