运算符
算术运算符
算术运算符有:加 + 、减 - 、乘 * 、除 / 、取余 %、整除 DIV
比较运算符
比较运算符适用于比较标量操作数(数字和字符串)。
= <=> > < >= <= <> != 不仅可用于比较标量操作数,还可用于比较行操作数。
比较的结果总是 1 、0 或者 null。
除了 <=> 、IS NULL 和 IS NOT NULL 专门用于与 null 进行比较的运算符外,其他运算符与 null 比较均返回 null。
=等于(a, b) = (x, y)等同于(a = x)AND(b = y)<=>安全的等于当两个操作数都为
null时,返回 1(a, b) <=> (x, y)等同于(a <=> x)AND(b <=> y)!=<>不等于(a, b) <> (x, y)或(a, b) != (x, y)等同于(a <> x)OR(b <> y)<=小于等于(a, b) <= (x, y)等同于(a < x)OR((a = x)AND(b <= y))<小于(a, b) < (x, y)等同于(a < x)OR((a = x)AND(b < y))>=大于等于(a, b) >= (x, y)等同于(a > x)OR((a = x)AND(b >= y))>大于(a, b) > (x, y)等同于(a > x)OR((a = x)AND(b > y))BETWEEN ... AND ...在两个临界值之间(包括临界值)NOT BETWEEN ... AND ...IS {TRUE | FALSE | UNKNOWN}判断一个值是否为 bool 值IS NOT {TRUE | FALSE | UNKNOWN}判断一个值是否不为 bool 值IS NULL判断一个值是否为空IS NOT NULL判断一个值是否不为空IN判断操作数是否是 IN 列表(可以是子查询的结果,也可以是一组逗号分割的常值)中的一个值,是则返回 1 否则返回 0NOT IN与IN相反LIKE用通配符匹配字符串,满足匹配条件则返回 1 ,否则返回 0LIKE 在匹配时可以使用通配符
%(匹配任意个数的字符) 和_(只能匹配一个字符)NOT LIKEREGEXP用正则匹配字符串,满足匹配条件则返回 1 ,否则返回 0NOT REGEXP
逻辑运算符
在 SQL 中,所有逻辑运算符的计算结果都为 1、0 或 NULL
AND&逻辑与mysql> select 1 and 1, 1 and 0,0 and 0, 0 and null, 1 and null, null and null;+---------+---------+---------+------------+------------+---------------+| 1 and 1 | 1 and 0 | 0 and 0 | 0 and null | 1 and null | null and null |+---------+---------+---------+------------+------------+---------------+| 1 | 0 | 0 | 0 | NULL | NULL |+---------+---------+---------+------------+------------+---------------+
OR||逻辑或mysql> select 1 or 1, 1 or 0,1 or null, 0 or 0, 0 or null, null or null;+--------+--------+-----------+--------+-----------+--------------+| 1 or 1 | 1 or 0 | 1 or null | 0 or 0 | 0 or null | null or null |+--------+--------+-----------+--------+-----------+--------------+| 1 | 1 | 1 | 0 | NULL | NULL |+--------+--------+-----------+--------+-----------+--------------+
NOT!逻辑非mysql> select !1, !0, !null;+----+----+-------+| !1 | !0 | !null |+----+----+-------+| 0 | 1 | NULL |+----+----+-------+1 row in set (0.00 sec)
XORmysql> select 1 xor 0, 1 xor 1, 0 xor 0, 1 xor null, 0 xor null, null xor null;+---------+---------+---------+------------+------------+---------------+| 1 xor 0 | 1 xor 1 | 0 xor 0 | 1 xor null | 0 xor null | null xor null |+---------+---------+---------+------------+------------+---------------+| 1 | 0 | 0 | NULL | NULL | NULL |+---------+---------+---------+------------+------------+---------------+
赋值运算符
:=使左侧的用户变量采用其右侧的值mysql> SELECT @var1, @var2;+-------+-------+| @var1 | @var2 |+-------+-------+| NULL | NULL |+-------+-------+mysql> SELECT @var1 := 1, @var2;+------------+-------+| @var1 := 1 | @var2 |+------------+-------+| 1 | NULL |+------------+-------+mysql> SELECT @var1, @var2;+-------+-------+| @var1 | @var2 |+-------+-------+| 1 | NULL |+-------+-------+mysql> SELECT @var1, @var2 := @var1;+-------+----------------+| @var1 | @var2 := @var1 |+-------+----------------+| 1 | 1 |+-------+----------------+mysql> SELECT @var1, @var2;+-------+-------+| @var1 | @var2 |+-------+-------+| 1 | 1 |+-------+-------+mysql> SELECT @var1:=COUNT(*) FROM blog_account;+-----------------+| @var1:=COUNT(*) |+-----------------+| 5 |+-----------------+mysql> SELECT @var1;+-------+| @var1 |+-------+| 5 |+-------+
=在SET语句和UPDATE语句中执行赋值运算
位运算符
位运算符有:按位与 & 、按位或 | 、按位异或 ^ 、按位取反 ~ 、按位左移 << 、按位右移 >>
表达式
任何有值的东西都可以叫表达式。
表达式,是由数字、运算符、分组符号(括号)、字段值、用户变量、函数等以能求得数值的有意义排列方法所得的组合。
全文搜索表达式
MATCH (col1,col2,...) AGAINST (expr [search_modifier])
详见 MySQL——全文索引