- 注释符:
在Transact-SQL 语言中可使用两种注释符:行注释和块注释。
行注释符为“--”,这是ANSI 标准的注释符,用于单行注释。
块注释符为“/*…*/”,“/*”用于注释文字的开头,“*/”用于注释文字的末尾。块注释符可在程序中标识多行文字为注释。
- T-SQL 运算符:
算术运算:+、-、x、/、%
比较运算:>、<、=、>=、<=、 <>、!=、!>、!<
逻辑运算:and、or、not
位运算:&、|、~ 、^
连接运算:+
一元运算:+、—、~
1)、算术运算符:
算术运算符用来在两个表达式上执行数学运算,这两个表达式可以是任意两个数字数据类型的表达式。算术运算符包括+(加)、-(减)、*(乘)、/(除)、%(模)五个。
在Transact-SQL 中,“+”包含了三个方面的意义:
表示正号,即在数值前添加“+”号表示该数值是一个正数。
表示算术运算的加号,能将数值类型的两个数据相加。
连接两个字符型或binary 型的数据,这时的“+”号叫做字符串串联运算符。
%(mod):即取余数的意思
例:select 11 % 6
2)、赋值运算符
T-SQL 中只有一个赋值运算符,即(=)。赋值运算符使我们能够将数据值指派给特定的对象。另外,还可以使用赋值运算符在列标题和为列定义值的表达式之间建立关系。例如,下面的代码创建了@MyCounter 变量。然后赋值运算符将@MyCounter 设置成一个由表达式返回的值。
例:declare @mycounter int
set @mycounter = 1
select@mycounter
3)、比较运算符
比较运算符用来测试两个表达式是否相同。除了text、ntext 或 image 数据类型的表达式外,比较运算符可以用于所有的表达式。比较运算符的符号及其含义如表所示:
运算 符 含 义
=等于
>大于
<小于
>=大于等于
<=小于等于
<>不等于
Between在指定范围内
!=不等于(非SQL-92 标准)
!<不小于(非SQL-92 标准)
!>不大于(非SQL-92 标准)
例:在Demo_DB 数据库中TimeRecords 表中,查询clock_id 等于105,sign_time 时间在
2011-06-13 至2011-06-15 之内的clock_id,emp_id, join_id, depart_id, card_id,sign_time 记录.
selectclock_id,emp_id , join_id, depart_id, card_id, sign_time
from TimeRecords
whereclock_id = ‘105‘
andsign_time >= ‘2011-06-13‘
andsign_time <= ‘2011-06-15‘
或者:
selectclock_id,emp_id , join_id, depart_id, card_id, sign_time
from TimeRecords
whereclock_id = ‘105‘
andsign_time between ‘2011-06-13‘ and ‘2011-06-15‘
虽然两者都可等到相同的结果,但一般在生产环境中,建议不要使用between,因为在查询语句中使用between语句时,需要全表执行一次查询运算,会增加CPU运算时间及语句执行时间.
比较运算符的结果是布尔数据类型,它有三种值:TRUE、FALSE 和NULL。那些返回布尔数据类型的表达式被称为布尔表达式。和其他SQL Server 数据类型不同,不能将布尔数据类型指定为表列或变量的数据类型,也不能在结果集中返回布尔数据类型。
当SET ANSI_NULLS 为ON 时,带有一个或两个NULL 表达式的运算符返回NULL。
当SET ANSI_NULLS 为OFF 时,上述规则同样适用,只不过如果两个表达式都为NULL,那么等号运算符返回TRUE。例如,如果SET ANSI_NULLS 是OFF,那么NULL=NULL就返回TRUE。
在WHERE 子句中使用带有布尔数据类型的表达式,可以筛选出符合搜索条件的行,也可以在流控制语言语句(例如 IF和 WHILE)中使用这种表达式。
4)、位运算符
位运算符在两个表达式之间执行位操作,这两个表达式可以是任意两个整型数据类型的表达式。位运算符的符号及其定义如表所示:
运算 符 含 义
&(按位AND) 按位与(两个操作数)
|(按位OR) 按位或(两个操作数)
^(按位互斥OR) 按位异或(两个操作数)
~(按位NOT) 按位取反(一个操作数)
位运算符的操作数可以是整型或二进制字符串数据类型中的任何数据类型(但image
数据类型除外),此外,两个操作数不能同时是二进制字符串数据类型中的某种数据类型
例:定义一个局部变量@tb,并设置别名为TABLE,并指定参数sex字段类型为bit,参数num2字段类型为int.
DECLARE@tb TABLE (sex bit ,num2 INT)
INSERTINTO @tb SELECT 1,1
INSERTINTO @tb SELECT 0,2
INSERTINTO @tb SELECT 1,3
INSERTINTO @tb SELECT 1,4
select* from @tb
SELECTsex,‘~sex‘=~sex,‘sex^‘=sex^1, num2 FROM @tb
执行结果:
5)、逻辑运算符
逻辑运算符用来对某个条件进行测试,以获得其真实情况。逻辑运算符和比较运算符一样,返回带有TRUE 或FALSE 值的布尔数据类型。逻辑运算符的符号及其含义如表所示:
运算 符 含 义
ALL如果一系列的比较都为TRUE,那么就为TRUE
AND如果两个布尔表达式都为TRUE,那么就为TRUE
ANY如果一系列的比较中任何一个为TRUE,那么就为TRUE
BETWEEN如果操作数在某个范围之内,那么就为TRUE
EXISTS如果子查询包含一些行,那么就为TRUE
IN如果操作数等于表达式列表中的一个,那么就为TRUE
LIKE如果操作数与一种模式相匹配,那么就为TRUE
NOT对任何其他布尔运算符的值取反
OR如果两个布尔表达式中的一个为TRUE,那么就为TRUE
SOME如果在一系列比较中,有些为TRUE,那么就为TRUE
三个运算符的优先级别为:NOT,AND,OR
6)、一元运算符
一元运算符只对一个表达式执行操作,这个表达式可以是数字数据类型中的任何一种数据
类型,如表所示:
运算 符 含 义
+(正) 数值为正
- (负) 数值为负
~(按位 NOT) 返回数字的补数
运算符的运算顺序:
l 括号: ()
l 位运算符: ~
l 算术运算符:*、/、%
l 算术运算符:+、-
l 位运算符:^
l 位运算符:&
l 位运算符:|
l 逻辑运算符:NOT
l 逻辑运算符:AND
l 逻辑运算符:OR