语法约定
标识符
自定义常规标识符(合法的命名)
-字母开头或其他语言字符_,@,#开头的
分割标识符(当标识符中有空格,不符合基本规则的符号,系统保留字时,用分隔符标识)-""、[]
自定义标识符
(1)标识符的首字符必须是下列字符之一 。
统一码(Unicode)2.0标准中所定义的字母,包括拉丁字母a-z和A-Z, 以及其他语言的字母字符。 下划线“_”、符号“@”或者数字符号“#”。
(2)标识符的后续字符可以是以下3种。
统一码(Unicode)2.0标准中所定义的字母。 来自拉丁字母或其他 国家/地区脚本的十进制数字。 “@”符号、美元符号“$”、数字符 号“#”或下划线“_”。
(3)标识符不允许是Transact-SQL的保留字。
(4)不允许嵌入空格或其他特殊字符
分隔符
双引号(“”)内的标识符
方括号([ ])内的标识符
• 该标识符可以不符合标识符的格式规则,如[MR GZGLXT]、MR和GZGLXT之间含有空格,但因为使用 了方括号,所以视为分隔标识符。例如: [USER]
• 注意:常规标识符和分隔标识符包含的字符数必须 在1~128之间,对于本地临时表,标识符最多可以有 116个字符。
系统保留字
• 与其他许多语言类似,SQL Server 2014使用了180多个保留关键字(Reserved Keyword)来定义、 操作或访问数据库和数据库对象。
• 这些保留关键字是T-SQL语法的一部分,用于分 析和理解T-SQL语言,包括DATABASE、 CURSOR、CREATE、INSERT、BEGIN等。
• 一般地,不能使用这些保留关键字作为对象名称 或标识符。
常量
• 常量是其值在程序运行过程中保存不变。
• 1.字符串常量
– ‘hello’.‘安阳市’、N’河南省’(Unicode常量)
• 2.数值型常量
– 整型常量 500、 899、 0x23(十六进制数)
– 实数型常量
• 定点数常量 3.6415
• 浮点数常量 0.56E-3
• 3.日期时间型常量
– ‘1990/2/28’、’20-02-02’
• 4.货币型常量
– 56.45(在表中不加¥、$) ¥890、 $893
变量
• 变量是指在程序运行过程中随程序的运行而 变化的量,可以保存查询结果和存储过程返 回值,也可以在查询中使用。
• 全局变量
– 系统定义的、不必声明、直接使用
– @@开头
– 例如:@@error (最后一个sql语句的错误号)
• 局部变量
– 用户定义的,作用域仅在程序内部
– DECLARE 变量名 变量类型
– @开头
– 所有变量在声明后均设置初值为NULL
全局变量
变量赋值
有两种为变量赋值的方式:使用SET语句直接为变量赋值和使用SELECT语句选择表中的值来为变量赋值。语法格式如下:
格式1:使用SET语句赋值
SET 变量名称=表达式
格式2:使用SELECT语句赋值
SELECT 变量名称=表达式 [,…n]
说明:
表达式可以是任何有效的SQL表达式;
一个SELECT语句可以给多个变量赋值,而一个SET语句一次只能给一个变量赋值。
运算符
运算符的优先级
当运算符的级别不同时,先对较高级别的运 算符进行运算,然后再对较低级别的运算符 进行运算。当一个表达式中运算符的级别相同时,一般按照从左到右的顺序进行运算。 当表达式中有括号时,应先对括号内的表达式进行求值;若表达式中有嵌套的括号,则首先对嵌套最深的表达式求值。
表达式
• 字段表达式 在表名后的字段表达式
• 目标表达式 在select语句后的目标表达式
• 条件表达式、 在where语句后的条件表达式
条件表达式
1. 比较大小 >
2. 指定范围 between and
3. 集合 in
4. 字符匹配 like ‘<匹配串>’
5. 空值 is null
6. 多重条件 and or
通配符
• T-SQL语言的通配符可以代替一个或多个字符,通配符必须与LIKE运算符结合使用。
注释
• 1. 单行注释
• 使用双连字符 “--” 作为注释符时,从双连字符开始到行尾的内容都是注释内容。
• 2. 多行注释
• 使用注释符“/* */” 作为多行注释符时,从开始“/*”到 “*/”之间的所有内容都为注释。
• 这些注释字符可用于多行文字或代码块。
数据定义语言DDL
数据定义语言DDL(Data Definition
Language):实现SQL的定义功能。用来定义数据库的逻辑结构,包括基本表、视图和索引。基本的DDL包括3类:即定义、修改和删除。
数据操纵语言DML
实现SQL的数据操纵功能。包括数据查询和数据更新两大类操作,其中,数据查询是指对数据库中的数据进行查询、统计、分组、排序等操作;数据更新包括插入、删除的修改3种操作。
数据控制语言DCL
用来向用户赋予/叏消对数据对象的控制权限,通过GRANT、REVOKE和DENY进行授权、回收或拒绝 访问。数据库的控制是指数据库的安全性和完整性控制。SQL的数据控制包括对基本表和视图的授权,完整性规则的描述以及事务开始和结束等控制语句。
其他基本语句
• 数据声明
– 变量声明 DECLARE 变量名称 数据类型
– 尿部变量的第一个字符必须为@;所有变量在声
明后均设置初值为NULL
• 数据赋值
– 两种方式赋值:SET和SELECT
– SET @变量=值 (SET只能给一个变量赋值)
– SELECT @变量1=值1,@变量2=值2,……
• 数据输出
– PRINT 尿部变量(字符型类型)或字符串
– SELECT 尿部变量 AS 自定义列名
数据控制语句
• 流程控制语句是用来控制程序执行和流程分支的语句。
• BEGIN……END
• IF……ELSE
• CASE
• WHILE (CONTINUE、BREAK)
• GOTO
• WAITFOR
• RETURN
BEGIN……END)begin……end
• 可以将多条Transact-SQL语句组成的一个语句块,整个语句块可以看做一条语句。
– BEGIN
– {sql_statement |statement_block}
– END
– 其中,{sql_statement |statement_block}是任何有效的Transact-SQL语句或语句块定义的语句 分组
if...else
case语句
1.简单Case语句
Case <条件判断表达式>
when 条件判断表达式结果1 then <Transact-SQL命令行或块
语句>
when 条件判断表达式结果2 then <Transact-SQL命令行或块
语句>
…
when 条件判断表达式结果n then <Transact-SQL命令行或块
语句>
else <Transact-SQL命令行或块语句>
end
2.Case 搜索语句
Case
when 条件表达式1 then <Transact-SQL命令行或块语句>
when 条件表达式2 then <Transact-SQL命令行或块语句>
…
when 条件表达式n then <Transact-SQL命令行或块语句>
else <Transact-SQL命令行或块语句>
end
while语句
waitfor语句
• Waitfor语句用于挂起语句的执行,直到指定的时间点或者指定的时间间隔。
• WAITFOR DELAY ’ time’|TIME ’ time’
• 作用:
• (1)延迟一段时间间隔执行
• (2)指定从何时起执行,用于指定触収语句块,存储过程以及事物执行时刻
return语句
• RETURN [整型表达式]
• RETURN语句用于从查询、存储过程或批处理中 无条件地退出,位于RETURN语句之后语句将不执
行。
• (1) 存储过程可以给调用过程或应用程序返回整型 值,当用于存储过程时,RETURN语句不能返回空值;
• (2) 系统存储过程返回0值表示成功,返回非0值表示失败。