DUAL 表

Dual 是一个为了满足 SELECT xxx FROM xxx 这样格式的一个虚拟的表,可以当做一个表名字来用,如:

SELECT 1+1 FROM DUAL;

但其实 MySQL 中,不加 FROM xxx 也可以返回对应的运行结果。

算术运算符

这些都是最基本的算术运算符,可以在 MySQL 中直接使用。其计算结果会作为一个新的列。

355.jpg

1
SELECT PASSWORD+1 FROM `User`;

结果是:

1
2
3
4
5
6
7
password+1
124
1234
1234
1234
1234
1234

比较运算符

比较运算符用来对表达式左边的操作数和右边的操作数进行比较,比较的结果为真则返回 1 ,比较的结果为假则返回 0 ,其他情况则返回 NULL。

比较运算符经常被用来作为 SELECT 查询语句的条件 来使用,返回符合条件的结果记录。

365.jpg

366.jpg

= 比较判断规则

1 表示 true,0 表示 false。

  • 在使用等号运算符时,遵循如下规则:
    • 如果等号两边的值、字符串或表达式都为字符串,则 MySQL 会按照字符串进行比较,其比较的是每个字符串中字符的 ANSI 编码是否相等。
    • 如果等号两边的值都是整数,则 MySQL 会按照整数来比较两个值的大小。
    • 如果等号两边的值一个是整数,另一个是字符串,则 MySQL 会将字符串转化为数字进行比较。
    • 如果等号两边的值、字符串或表达式中有一个为 NULL,则比较结果为 NULL。

特殊情况:

  1. 字符数字和数字比较:SELECT "20" > 10; 返回的是 1,也就是将字符串转化为数字。
  2. 字符字母和数据比较:SELECT "abc" = 0; 返回的是 1,永远是 1.
  3. 比较一方为 NULL:SELECT NULL = 0; 返回 NULL。

<=> 安全等于运算符

和 = 基本一样,不同的是,对于含有 NULL 的比较,不在返回 NULL。这样相对来说更加安全一点。

  1. NULL 和 NULL 比较,返回 1:SELECT NULL <=> NULL; 1
  2. NULL 和非 NULL 比较,返回 0:SELECT NULL <=> "NULL"; 0

<> != 不等于运算符

不等为 1,相等为 0。如果运算一方含有 NULL,则结果为 NULL。

其他非符号运算符

A is NULL

判断 A 是否为 NULL,等价于:

1
2
3
4
WHERE A IS NULL;
WHERE A <=> NULL;
WHERE A = NULL;
WHERE ISNULL(A);

A is not NULL

判断 A 是否不是 NULL:

1
2
3
WHERE A IS NOT NULL;
WHERE NOT A <=> NULL;
WHERE NOT ISNULL(A)

A between B and C

B 和 C 需要是相同种类的区间。

in (A,B,C) | not in (A,B,C)

在 A B C 范围内。

A like “Exp”

like 用于进行模糊匹配,有两种符号可以使用:

  1. 可以用 % 来模糊任意个字符
  2. 可以用 _ 下划线,来之模糊下划线部位单个字符。

符合匹配返回 1,不符合返回 0。如果参与匹配的字符串为 NULL,则返回 NULL:

SELECT NULL LIKE "%NULL%" 返回 NULL。

A regexp “Exp”

加强版本的 like,支持完整的正则表达式!

逻辑运算符

有 AND OR XOR NOT 四种逻辑运算。可以和上面的逻辑比较结果进行逻辑运算。

运算优先级

() 优先级最高,不知道怎么写就加括号就行了。