1:语法约定
大写:表示Transact-SQL关键字
斜体:语法参数(由用户提供)
粗体:安全按照原样键入数据库名称、表格名称、列名、索引名、存储过程、实用工具、数据类型和文本
下划线:指示当前语句省略了的包含下划线的值的字句的应用的默认值
|:分割括号或者大括号中的语法项,只能使用其中一项
[ ] : 方括号代表可选语法项(不要键入方括号)
{}:大括号必选语法项.(不要键入大括号)
[,,,,,,,n]:前面的项可以重复N次,每项之间以‘,’间隔
[......n]:前面的项可以重复N次,每项之间以空格间隔
; :T-SQL的终止符
<label>:语法快名称.可以对一条语句中的多个位置使用的过长的语法段OR语法单元进行分组和标记
关于对象的使用方式: Server_name.[database_name].[schema_name].object_name,为了避免名称解析错误,只有指定了架构范围内的对象就指定架构名称
注释:-- Ctrl+K,Ctrl+C/Ctrl+K,Ctrl+U
NULL和UNKNOWN:NULL表示空,该空表示未知含义,不同于空白和零值.会产生三值逻辑的运算,这也是很多应用程序出错的地方
1 | & | u | u | 1 | | | u | 1 | |
unknown | & | u | u | u | | | u | u | |
0 | & | u | 0 | 0 | | | u | u |
USE:将数据库上下文改为指定数据库或者数据库快照
USE {database_name} [ ; ]
:反斜杠将长字符串分成两行以方便阅读
GO:向SQL SERVER发出一批T-SQL已经结束的信号,两个GO之间的语句被编译成一个执行计划
DEMON
-- =============================================
-- Create database template
-- =============================================
USE master
GO
-- Drop the database if it already exists
IF EXISTS (
SELECT name
FROM sys.databases
WHERE name = N'<Database_Name, sysname, Database_Name>'
)
DROP DATABASE <Database_Name, sysname, Database_Name>
GO
CREATE DATABASE <Database_Name, sysname, Database_Name>
GO
2:标识符
2.1.标识符:即数据库对象的名称,SQL SERVER中所有的内容都可以有标识符,包括服务器数据库数据库对象(表视图列索引触发器过程约束以及规则)
大多数对象要求有标识符,但对有些对象(例如约束),标识符是可选的。
对象标识符是在定义对象时创建的。 标识符随后用于引用该对象。 下列语句创建一个标识符为 TableX
的表,该表中有两列的标识符分别是 KeyCol
和 Description,此外
PRIMARY KEY
约束没有标识符.
1 CREATE TABLE TableX 2 (KeyCol INT PRIMARY KEY, Description nvarchar(80))
2.2.标识符种类:标识符分为常规标识符和分隔标识符
常规标识符符合标识符的格式规则在分隔时不需要将其分开,分隔标识符包含在双引号 (" ") 或方括号 ([ ])中,对于合乎规则的标识符Delimiter is optional,但对于不合乎规则的标识符必须用分隔开来.
1 SELECT * 2 FROM TableX 3 WHERE KeyCol = 124 4 5 6 SELECT * 7 FROM [TableX] --Delimiter is optional. 8 WHERE [KeyCol] = 124 --Delimiter is optional. 9 10 11 SELECT * 12 FROM [My Table] --Identifier contains a space and uses a reserved keyword. 13 WHERE [order] = 10 --Identifier is a reserved keyword.
2.3.常规标识符规则:变量、函数和存储过程的名称必须符合 Transact-SQL 标识符的规则。
-
第一个字符必须是下列字符之一:
-
Unicode 标准 3.2 定义的字母, Unicode 中定义的字母包括拉丁字符 a-z 和 A-Z,以及来自其他语言的字母字符。
-
下划线 ()、at 符号 (@) 或数字符号 (#)。
在 SQL Server中,某些位于标识符开头位置的符号具有特殊意义。 以 at 符号开头的常规标识符始终表示局部变量或参数,并且不能用作任何其他类型的对象的名称。 以一个数字符号开头的标识符表示临时表或过程。 以两个数字符号 (##) 开头的标识符表示全局临时对象。 虽然数字符号或两个数字符号字符可用作其他类型对象名的开头,但是我们建议不要这样做。
某些 Transact-SQL 函数的名称以两个 at 符号 (@@) 开头。 为了避免与这些函数混淆,不应使用以 @@ 开头的名称。
-
-
后续字符可以包括:
-
Unicode 标准 3.2 定义的字母。
-
基本拉丁字符或其他国家/地区字符中的十进制数字。
-
at 符号、美元符号 ($)、数字符号或下划线。
-
-
标识符必须不能是 Transact-SQL 保留字。 SQL Server 保留保留字的大写和小写版本。 在 Transact-SQL 语句中使用标识符时,不符合这些规则的标识符必须由双引号或括号分隔。 保留字依赖于数据库兼容级别。 可通过使用 ALTER DATABASE 语句设置该级别。
-
不允许嵌入空格或特殊字符。
-
不允许使用增补字符。
在 Transact-SQL 语句中使用标识符时,不符合这些规则的标识符必须由双引号或括号分隔。