语法约定
标识符
自定义常规标识符(合法的命名)
-字母开头或其他语言字符_,@,#开头的
分割标识符(当标识符中有空格,不符合基本规则的符号,系统保留字时,用分隔符标识)-""、[]
自定义标识符
(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
全局变量
![](https://i-blog.csdnimg.cn/blog_migrate/60dde3a22517a367beff4309d483ba29.png)
变量赋值
有两种为变量赋值的方式:使用SET语句直接为变量赋值和使用SELECT语句选择表中的值来为变量赋值。语法格式如下:
格式1:使用SET语句赋值
SET 变量名称=表达式
格式2:使用SELECT语句赋值
SELECT 变量名称=表达式 [,…n]
说明:
表达式可以是任何有效的SQL表达式;
一个SELECT语句可以给多个变量赋值,而一个SET语句一次只能给一个变量赋值。
![](https://i-blog.csdnimg.cn/blog_migrate/9866a4b52cee4a37952686406160c19b.png)
运算符
![](https://i-blog.csdnimg.cn/blog_migrate/b0914770dc3158e2dab1b034c25ba40f.png)
运算符的优先级
当运算符的级别不同时,先对较高级别的运 算符进行运算,然后再对较低级别的运算符 进行运算。当一个表达式中运算符的级别相同时,一般按照从左到右的顺序进行运算。 当表达式中有括号时,应先对括号内的表达式进行求值;若表达式中有嵌套的括号,则首先对嵌套最深的表达式求值。
表达式
•
字段表达式 在表名后的字段表达式
•
目标表达式 在select语句后的目标表达式
•
条件表达式、 在where语句后的条件表达式
条件表达式
1. 比较大小 >
2. 指定范围 between and
3. 集合 in
4. 字符匹配 like ‘<匹配串>’
5. 空值 is null
6. 多重条件 and or
通配符
•
T-SQL语言的通配符可以代替一个或多个字符,通配符必须与LIKE运算符结合使用。
![](https://i-blog.csdnimg.cn/blog_migrate/a0def8d3fa913cba4708256e05b7d06e.png)
注释
•
1. 单行注释
•
使用双连字符 “--” 作为注释符时,从双连字符开始到行尾的内容都是注释内容。
•
2. 多行注释
•
使用注释符“/* */” 作为多行注释符时,从开始“/*”到 “*/”之间的所有内容都为注释。
•
这些注释字符可用于多行文字或代码块。
数据定义语言DDL
数据定义语言DDL(Data Definition
Language):实现SQL的定义功能。用来定义数据库的逻辑结构,包括基本表、视图和索引。基本的DDL包括3类:即定义、修改和删除。
![](https://i-blog.csdnimg.cn/blog_migrate/308f604126374419d8a9ab19e2f4b7ac.png)
数据操纵语言DML
实现SQL的数据操纵功能。包括数据查询和数据更新两大类操作,其中,数据查询是指对数据库中的数据进行查询、统计、分组、排序等操作;数据更新包括插入、删除的修改3种操作。
![](https://i-blog.csdnimg.cn/blog_migrate/5d8a48e8d57ad0052454a0e2e5a02716.png)
数据控制语言DCL
用来向用户赋予/叏消对数据对象的控制权限,通过GRANT、REVOKE和DENY进行授权、回收或拒绝 访问。数据库的控制是指数据库的安全性和完整性控制。SQL的数据控制包括对基本表和视图的授权,完整性规则的描述以及事务开始和结束等控制语句。
![](https://i-blog.csdnimg.cn/blog_migrate/f543727d767463acb16b39f8f329f96e.png)
其他基本语句
•
数据声明
–
变量声明 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
![](https://i-blog.csdnimg.cn/blog_migrate/e4011bec89a01e62acd1a00952a1c872.png)
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)指定从何时起执行,用于指定触収语句块,存储过程以及事物执行时刻
![](https://i-blog.csdnimg.cn/blog_migrate/d54cb09cccc3887122a923f6c69d2949.png)
return语句
• RETURN [整型表达式]
• RETURN语句用于从查询、存储过程或批处理中 无条件地退出,位于RETURN语句之后语句将不执
行。
• (1) 存储过程可以给调用过程或应用程序返回整型 值,当用于存储过程时,RETURN语句不能返回空值;
• (2) 系统存储过程返回0值表示成功,返回非0值表示失败。