- 字符串
字符串指用单引号(‘’’)或双引号(‘"’)引用起来的字符序列。
引用和转义:(不是很清楚)
- 数值型
整数用一系列阿拉伯数字表示,浮点数使用 . 作为十进制间隔符,以上两种类型的数值均可以在前面加一个- 来表示负值。 - 日期类型
- 十六进制
十六进制值的默认类型是字符串。用 HEX() 函数将一个字符串或数字转换为十六进制格式的字符串。如果想要确保该值能作为数字处理,可以使用 CAST(…AS UNSIGNED):
mysql> SELECT 0x41,CAST(0x41 AS UNSIGNED);
-> 'A',65
-
bool布尔值
-
null
对于用 LOAD DATA INFILE 或 SELECT …INTO OUTFILE 执行的文本文件导入或导出操作, NULL 用序列 \N 表示。 -
识别符
数据库、表、索引、列和别名是识别符。 -
用户自定义变量
用户自定义变量具有会话专一性,也就是说,一个客户端定义的变量不能被其它客户端看到或使用,当客户端退出时,该客户端连接的所有变量将自动释放。
用户变量的形式为 @var_name,其中变量名 var_name 可以由当前字符集中的字母数字字符、.、_和 $ 组成。
设置用户变量的一个途径是执行 SET 语句:SET @var_name = expr [, @var_name = expr] ...
对于 SET 语句,可以使用 = 或 := 作为分配符,分配给每个变量的 expr 可以为整数、实数、字符串或者 NULL 值。
除了使用 SET 语句也可以为用户变量分配一个值。在这种情况下,分配符必须为 := 而不能用 = ,因为在非 SET 语句中 = 被视为比较操作符:
mysql> SET @t1=0, @t2=0, @t3=0; mysql> SELECT @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;
在 SELECT 语句中,表达式是在被发送到客户端后才进行计算。这说明在 HAVING、GROUP BY 或者 ORDER BY 子句中,在 SELECT 列表中不能使用将值赋值到变量的表达式。例如,下面的语句不能按期望进行:
mysql> SELECT (@aa:=id) AS a,(@aa+3) AS b FROM tbl_name HAVING b=5;
上面 HAVING 子句中使用 @aa 这个变量引用了 b,但是这并不能按期望生效:@aa 并不是当前行的值,而是前面所选定的行的 id 值。因此一般情况下是不建议在语句的一个部分为用户变量分配一个值而在同一语句的其它部分又使用该变量,这可能会得到期望的结果,当然也可能不会。 -
注释
–
/**/