每条SQL语句均由一个谓词(Verb)开始,谓词描述这条语句要产生的动作。谓词后接着一个或多个子句(Clause),子句中给出了被谓词作用的数据或提供谓词动作的详细信息,每条子句都由一个关键字开始。
1, 常量
(1)数字常量:包括整数 ,小数,11, -11,11.11 。及浮点常量,1.5e。
浮点使用符号e指定。读作‘乘以10的几次幂’。
(2)日期时间常量 : 如,‘2017-01-10’,‘10-01-2017’
(3)符号常量: CURRENT_DATE , CURRENT_TIME , CURRENT_TIMESTAMP
2, 变量
(1)局部变量
局部变量的声明需要使用DECLARE语句,变量名须以“@”开头。语法;
DECLARE
{
@varaible_name datatype [ ,...n ]
}
使用SELECT 或SET 为局部变量赋值
例;
DECLARE @a CHAR(10)
SELECT @a = '你好'
PRINT @a
DECLARE @A CHAR(10)
SET @a = '你好'
PRINT @a
DECLARE @a INT, @b INT, @c INT
SELECT @a=1, @b=2
SET @c= @a+@b
PRINT @c
3, 运算符
算术运算符 +, - , * , / , % (加减乘除,取余)
赋值运算符 =
比较运算符 >, <, =, >=, <=, <> 比较运算符有 TRUE, FALUSE , UNKNOWN 3种。
逻辑运算符
AND 如果两个布尔表达式为TRUE,则为TRUE
OR 任意一个布尔表达式为TRUE,则值为TRUE. 在 AND 运算符之后对 OR 运算符求值。
NOT 对布尔型输入取反。 (当NOT, AND, OR 出现在同一表达式中,优先级是NOT>AND>OR)
BETWEEN 指定测试范围。
EXISTS 指定一个子查询,测试行是否存在。
IN 确定指定的值是否与子查询或列表中的值相匹配
LIKE 确定特定字符串是否与指定模式相匹配。模式可以包含常规字符和通配符。模式匹配过程中,常规字符必须与字符串中指定的字符完全匹配。但是,通配符可以与字符串的任意部分相匹配。
ALL (所有) 比较标量值和单列集中的值
ANY (任何) 比较标量值和单列集中的值。SOME 和 ANY 是等效的
位运算符; &(位与) , | (位或), ^(位异或) , ~ (位非) (AND, OR, OR, NOT )
连接运算符;+
4. 运算优先级
(1) + (正), -(负), ~(反)
(2) *(乘), /(除),%(取余)
(3) +(加), +(字符串串联), -(减)
(4) = , >, < , >= , <= , <> (比较运算符)
(5) & (位与) , | (位或), ^(位异或)
(6) NOT
(7) AND
(8) ALL ANY BETWEEN IN LIKE OR SOME (逻辑运算符)
(9) = (赋值)
有相同则从左到右