目录
3、不等于(!=),小于(<),小于等于(<=),大于(>),大于等于(>=)
4、空运算符(IS NULL或者ISNULL)、非空运算符(IS NOT NULL)
1、与(AND && )、或(OR || )、非(NOT ! )
一、算数运算符
1.加法与减法运算符
SELECT 1, 1 + 0, 1 - 0, 1 + 2, 1 + 2 -3, 1 + 2.5, 1 - 2.5
FROM DUAL;
注意:在MySQL中+只表示数值相加。如果遇到非数值类型,先尝试转成数值,如果转失败,就按0计算。(补充:MySQL中字符串拼接要使用字符串函数CONCAT()实现)
SELECT 100+'1' , 100+'a' , 100+null
FROM DUAL
2.乘法与除法运算符
SELECT 10 , 10 * 1 , 10 * 1.0 , 10 / 1.0 , 10 / 2 , 10 + 2 * 5 / 2 , 10 /3 , 10 DIV 0
FROM DUAL;
3.求模(求余)运算符
SELECT 15 % 3, 12 MOD 5
FROM dual
二、比较运算符
1、等于运算符
字符串存在隐式转换,如果转换数值不成功,则看作0
SELECT 1=2,1!=2,1='1',1='a',0='a'
FROM DUAL
两边如果都是字符串的话。按照字符串比较
SELECT 'a'='a','ab'='ab','a'='b'
FROM DUAL
2、安全等于运算符
可以用来判断null 就是为null而存在
SELECT null<=>null,1<=>null,'null'<=>null
FROM DUAL
3、不等于(!=),小于(<),小于等于(<=),大于(>),大于等于(>=)
SELECT 1!=2,1<2,1>2,1<=2,1>=2,'a'<'b','c'<1
FROM DUAL
都是基本简单的操作,字符串也是根据ASCII值进行判断,遇到数字则转换成0进行比较
4、空运算符(IS NULL或者ISNULL)、非空运算符(IS NOT NULL)
空运算符:如果是null则返回1,不是则返回0
非空运算符:如果是null则返回0,不是则返回1
SELECT NULL IS NULL, ISNULL(NULL), ISNULL('a'), 1 IS NULL;
FROM DUAL
SELECT NULL IS NOT NULL, 'a' IS NOT NULL, 1 IS NOT NULL;
FROM DUAL
5、最小值(LEAST)、最大值(GREATEST)运算符
SELECT LEAST('F','E','T','P','Z'), LEAST('F','E','T',NULL,'Z'),GREATEST('F','E','T','P','Z'),GREATEST('F','E','T','P',NULL)
FROM DUAL
6、BETWEEN AND运算符
BETWEEN运算符使用的格式通常为
SELECT D
FROM TABLE
WHERE C BETWEEN A AND B
从table中找出满足C在A和B之间(包括A和B)的D数据
例1:查找工资在6000到8000的员工
SELECT last_name,salary
FROM employees
WHERE salary BETWEEN 6000 AND 8000
7、IN、NOT IN运算符
SELECT last_name,department_id
FROM employees
WHERE department_id IN (10,20,30)
例3:工资不是6000,7000,8000的员工信息
SELECT last_name,salary
FROM employees
WHERE salary NOT IN (6000,7000,8000)
注意:BETWEEN A AND B 是一个范围,找的是在A和B范围内的数据
IN(A,B,C),找的是不是A,B,C的其他数据。不是范围
8、LIKE运算符
LIKE运算符主要用来匹配字符串,通常用于模糊匹配,如果给定的值或者匹配条件为NULL,则返回结果为NULL。
例4:查找last_name为King的人员
SELECT last_name
FROM employees
WHERE last_name LIKE 'King'
LIKE运算符通常使用如下通配符:
(1)“%”:匹配0个或多个字符。
SELECT last_name
FROM employees
WHERE last_name LIKE '%a%'
a%:表示以a开头的数据,%a:表示以a结尾的数据,%a%:表示有a的数据
例6:查询last_name中包含字符'a'且包含字符'e'的员工信息
方法一:
SELECT last_name
FROM employees
WHERE last_name LIKE '%a%' and last_name LIKE '%e%'
方法二:
SELECT last_name
FROM employees
WHERE last_name LIKE '%a%e%' or last_name LIKE '%e%a%'
例7:查询last_name中第二个字符是'a'的员工信息
SELECT last_name
FROM employees
WHERE last_name LIKE '_a%'
查询第n个字符是a。前面一定有n-1个‘_’
9、转义字符(\)
例8:查询last_name中第二个字符是_第三个字符是'i'的员工信息
SELECT last_name
FROM employees
WHERE last_name LIKE '_\_i%'
10、正则表达式
REGEXP运算符用来匹配字符串
正则表达式规则较多,可以自行搜索,有所需要的根据特定的情况再做使用
三、逻辑运算符
1、与(AND && )、或(OR || )、非(NOT ! )
利用上面的案例
#AND
SELECT last_name
FROM employees
WHERE last_name LIKE '%a%' AND last_name LIKE '%e%'
#OR
SELECT last_name
FROM employees
WHERE last_name LIKE '%a%e%' OR last_name LIKE '%e%a%'
#NOT
SELECT last_name,salary
FROM employees
WHERE salary NOT BETWEEN 6000 AND 8000
2、异或(XOR)
要的就是一真一假
例9:查询工资大于6000或者部门号为50的员工信息
SELECT last_name,salary,department_id
FROM employees
WHERE salary >6000 XOR department_id=50
四、位运算符
在数据库的基本操作中使用的较少。这里不再做比较