1、标识符:
(1)定义:就像每个人都要有个名字一样,在SQL Server中,每一项对象也都要有一个作为标识用的名称,这就是标识符。例如数据库名称、数据表名称、字段名称等等,这些名称统称为标识符。
(2)命名规则:
a、英文字符:A~Z或a~z,在SQL中是不用区分大小写的。
b、数字:0~9,但数字不得作为标识符的第一个字符。
c、特殊字符:_、#、@、$,但#、@、$ 不得作为标识符的第一个字符。
d、特殊语系的合法文字:例如中文文字也可作为标识符的合法字符。
特殊说明:若对象名称不符合上述规则,只要在名称的前后加上中括号,该名称就变成合法标识符了(但标识符的长度仍不能超过128个字符)
注意:标识符不能是SQL的关健词,例如“table”、“TABLE”、“select”、“SELECT”等都 不能作为标识符。
标识符中不能有空格符,或_、#、@、$之外的特殊符号。
标识符的长度不得超过128个字符长度
2、变量:
(1)分类:
SQL Server中存在两类变量:
全局变量: 由系统定义和维护,变量名前加“@@”
如:@@VERSION
局部变量:
由用户定义和使用,仅在声明它的批处理、存储过程或触发器中有效。变量名加“@”如: @mystr
(2)局部变量的声明:
基本格式:
declare @变量名称 数据类型
变量的赋值:
格式1: 定义变量的同时赋值
格式2: set 赋值,(set @变量名 = 表达式)
select赋值,(select @变量名 as 表达式)
举例:
DECLARE @A CHAR(20)
DECLARE @f float,@cn char(8)=‘aa’
注意事项:
一次可以声明多个变量,用逗号隔开
所有局部变量在声明后均初始化为NULL
声明的局部变量可以用set或select赋值
set语句一次只能给一个变量赋值,select语句可同时为多个变量赋值。
(3)局部变量的输出:
局部变量的输出可以通过print和select实现,区别在于,print一次只能输出一个变量的值,select一次可以输出多个变量的值
3、批处理与脚本:
(1)批处理:
批处理是由一条或多条T-SQL语句组成的语句集。这些语句被应用程序作为一个整体提交 给服务器,并在服务器端作为一个整体执行。可根据自己的编程习惯和编写批处理的要求使 用批处理
在查询分析器中,可以用GO命令标志一个批处理的结束。GO不是T-SQL语句,它的作用是 通知查询分析器有多少语句要包含在当前的批处理中。
查询分析器将第一个GO之前的语句或者两个GO之间的语句,或者最后一个GO之后的语句 分别作为一个批处理,分别组成一个字符串交给服务器去执行
使用批处理应注意的问题:
a:不能在一个批处理中引用其他批处理中定义的变量
b:不能将注释从一个批处理开始,在另一个批处理中结束
c:不能在一个批处理中修改一个表的结构,然后在同一个批处理中引 用刚修改的新列
d:不能在一个批处理中创建一个数据库,然后在同一个批处理中选择 该库
e:大多数带CREATE关键字的语句不能与其他语句在同一个批处理中,如 CREATE DEFAULT、CREATE PROCEDURE、CREATE RULE、CREATE TRIGGER与CREATE VIEW语句,但是CREATE TABLE、CREATE DATABASE、CREATE INDEX可以
f:当需要执行存储过程时,需使用EXEC语句。如果存储过程是批处理 中的第一条语句,那么省略EXEC关键字也可以执行该存储过程
g:每个批处理都是独立执行的,并不会相互影响。即无论前一个批处 理是否正确执行,下一个批处理仍会继续执行
(2)脚本:
脚本是一系列顺序提交的批处理。脚本可以直接在查询分析器等工具中输入并执行,也可以保 存在文件中,再由查询分析器等工具打开执行
一个脚本可以包含一个或多个批处理。脚本中的GO命令标志一个批处理的结束,如果一个脚本 中没有包含GO命令,那么它整个被视为是一个批处理
3、运算符:
(1)定义:运算符是一种符号,用来指定要在一个或多个表达式中执行的操作。SQL Server 使用下列几类运算符:算术运算符、赋值运算符、按位运算符、比较运算符、逻辑运算符、字符串连接运算符
(2)算术运算符:
算术运算符包括+(加)、-(减)、*(乘)、/(除)和%(整数相除的余数),用于数值和日期时间的运算。
上述一些运算符的作用大家已经清楚,在此不再赘述,这里仅对日期时间数据的运算作说明。日期时间与数值可做加或减运算,其意义分别为日期加几天或减几天,结果仍为日期时间数据。
(3)赋值运算符:
赋值运算符只有一个,那就是“=”(等号),用来将数值或字符串指定给字段或变量。
(4)按位运算符:
按位运算符包括&、|、^三种,用来对位进行逻辑运算。
&:为按位与(AND)运算符。当运算符前后的操作数都为1时,结果为1,只要有一个不为1,结果就是0。
|:为按位或(OR)运算符。此运算符前后的操作数只要有1个为1,结果就为1,只有两个都为0的时候,结果才为0。
^:为异或(Exclusive OR)运算符。只有当两个操作数的值不一样的时候才会是1,否则为0。
(5)比较运算符:
比较运算符又称关系运算符,用于测试两个表达式的值之间的关系,其运算结果为布尔类型的值TRUE或者FALSE。
除text、ntext 或image类型的数据外,比较运算符可以用于所有的表达式。
(6)逻辑运算符:
逻辑运算符用于对某个条件进行测试,以获得其真实情况。逻辑运算符和比较运算符一样,返回带有TRUE或FALSE的布尔数据类型。
(7)字符串连接运算符:
字符串连接运算符号为“+”,是用来连接字符串的。它可连接字符串变量、列及字符串表达式。若有其他数据类型的数据要与字符串相加,则必须转换为字符类型。
(8)运算符优先级:
当使用多个运算符来组成表达式,优先级较高的运算符会优先做运算。如果希望某部分能够优先运算,那么可用小括号括起来。如果有多层小括号,则在内层的算式优先。比如“3*(6/(4-2))”,结果为9。
下面将优先级从高到低依次列出:
()括号
+(正)、-(负)、~(按位 NOT)
*(乘)、/(除)、%(模)
+(加)、(+ 串联)、-(减)
=, >, <, >=, <=, <>, !=, !>, !< 比较运算符
^(位异或)、&(位与)、|(位或)
NOT
AND
ALL、ANY、BETWEEN、IN、LIKE、OR、SOME
=(赋值)