算数运算符
SELECT 100 + 0, 100 + 50 * 30, 100 - 35.5 FROM DUAL;
- DUAL 伪表,因为只写SELECT不写FROM看着怪
- 整数+整数=整数
- 整数+浮点数=浮点数
- 在MySQL中 + 只表示数值相加。如果遇到非数值类型,先尝试转成数值,如果转失败,就按0计算。(注:MySQL 中字符串拼接要使用字符串函数CONCAT()实现)
在数学运算中,0不能用作除数,在MySQL中,一个数除以0为NULL。
比较运算符
等号=
比较运算符用来对表达式左边的操作数和右边的操作数进行比较,比较的结果为真则返回1,比较的结果 为假则返回0,其他情况则返回NULL。
比较运算符经常被用来作为SELECT查询语句的条件来使用,返回符合条件的结果记录。SELECT 1 = 1, 1 = '1', 1 = 0, 'a' = 'a', (5 + 3) = (2 + 6), '' = NULL , NULL = NULL;
左右两边是字符串,其比较的是每个字符串中字符的ANSI编码是否相等。
- 左右两边是数字,则MySQL会按照整数来比较两个值的大小。
- 一个是数字一个是字符串,则MySQL会将字符串转化为数字进行比较。
- 如果等号两边有一个为NULL,则比较结果为NULL。
使用安全等于运算符
<=>
时,两边的操作数的值都为NULL时,返回的结果为1而不是NULL,其他返回结果与等于运算符相同。不等于<>或者!=
SELECT 1 <> 1, 1 != 2, 'a' != 'b', (3+4) <> (2+6), 'a' != NULL, NULL <> NULL;
如果两边的值有任意一个为NULL, 或两边都为NULL,则结果为NULL
空运算符IS NULL或者ISNULL
SELECT NULL IS NULL, ISNULL(NULL), ISNULL('a'), 1 IS NULL;
非空运算符IS NOT NULL
SELECT NULL IS NOT NULL, 'a' IS NOT NULL, 1 IS NOT NULL;
最小值运算符LEAST
语法格式为:
LEAST(值1,值2,...,值n)
SELECT LEAST (1,0,2), LEAST('b','a','c'), LEAST(1,NULL,2);
最大值运算符GREATEST
语法格式为:
GREATEST(值1,值2,...,值n)
SELECT GREATEST(1,0,2), GREATEST('b','a','c'), GREATEST(1,NULL,2);
在…之间BETWEEN AND
A<=C<=B
SELECT D FROM TABLE WHERE C BETWEEN A AND B
在范围内IN
SELECT 'a' IN ('a','b','c'), 1 IN (2,3), NULL IN ('a','b'), 'a' IN ('a', NULL);
不在范围内NOT IN
SELECT 'a' NOt IN ('a','b','c'), 1 NOT IN (2,3), NULL NOT IN ('a','b'), 'a' NOT IN ('a', NULL);
模糊查询LIKE
**%**
:匹配0个或多个字符。**_**
:只能匹配一个字符。SELECT job_id
FROM jobs
WHERE job_id LIKE ‘IT\_%‘;
声明转义符ESCAPE
默认情况下/
是转义符,如果不想用这个转义符,可以使用ESCAPE
声明一个新的转义符
上面的SELECT job_id
FROM jobs
WHERE job_id LIKE ‘IT¥_%‘ ESCAPE '¥'
¥
表示转义符正则REGEXP
用正则来匹配SELECT * FROM student WHERE name REGEXP '正则表达式'
逻辑运算符
位运算符
位运算符是在二进制数上进行计算的运算符。位运算符会先将操作数变成二进制数,然后进行位运算, 最后将计算结果从二进制变回十进制数
运算符优先级
数字编号越大,优先级越高,优先级高的运算符先进行计算