运算符总结目录
- 运算符分类
- 1.1 算术运算符
- 1.2 比较运算符
- 1.3 逻辑运算符
- 1.4. 位运算符
- 1. 5 运算符的优先级
说明:这篇文章主要描述的是对于数据库中运算符的使用,由于在使用的过程中只需要知道它的语法即可,所以对于每一个运算符没有多余的赘述,直接采用代码展示的方式。
运算符分类
1.1 算术运算符
算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行 ‘+’ ‘-’ ‘*’ ‘/’ ‘%’ 运算。
SELECT
100,
100+1,
100-35.5
FROM
DUAL;
SELECT 100 + '1';
#1.2乘除运算
SELECT 20 * 5, 100 / 5 ,100 / 3 ,100 / 0;
#1.3取模运算,结果的正负与被模数一样,与模数没有关系
SELECT 20 % 3 , 20 % -3 ,-20 % 3;
总结:
①一个数乘以整数1和除以整数1后仍得原数;
②一个数乘以浮点数1和除以浮点数1后变成浮点数,数值与原数相等;
③一个数除以整数后,不管是否能除尽,结果都为一个浮点数;
④一个数除以另一个数,除不尽时,结果为一个浮点数,并保留到小数点后4位;
⑥乘法和除法的优先级相同,进行先乘后除操作与先除后乘操作,得出的结果相同。
⑦在数学运算中,0不能用作除数,在MySQL中,一个数除以0为NULL。
1.2 比较运算符
左边的操作数<font color = "#34495e"和右边的操作数进行比较,比较的结果为真则返回1,比较的结果为假则返回0,其他情况则返回NULL。
比较运算符经常被用来作为SELECT查询语句的条件来使用,返回符合条件的结果记录。
SELECT 1 = 2 , 1 <> 2, 1 > 2, 1 > 'a'#字符串存在隐式抓换,如果转换数值不成功,则看作0
FROM DUAL;
SELECT 'a' = 'b'
FROM DUAL;#两边都是字符串的话,不会进行转换,会使用ACSCII进行比较
SELECT NULL = 1,NULL = NULL
FROM DUAL;#有null参与的结果就为NULL
SELECT last_name,salary,commission_pct
FROM employees
WHERE commission_pct = NULL;#此时执行不会有任何的结果,所有与NULL比较的结果都是NULL
#<=>就是为NULL而产生的,专门处理NULL的情况
#实现查询表中commission_pct为NULL
SELECT last_name,salary,commission_pct
FROM employees
WHERE commission_pct <=> NULL;
SELECT NULL = NULL
FROM DUAL;
1.3 逻辑运算符
判断表达式的真假,在MySQL中,逻辑运算符的返回结果为1、0或者NULL。
SELECT employee_id, salary, department_id
FROM employees
WHERE department_id = 10 OR department_id = 20;
SELECT employee_id, last_name, salary
FROM employees
WHERE salary >= 6000 && salary <= 8000;
SELECT employee_id, last_name, salary
FROM employees
WHERE salary >= 6000 AND salary <= 8000;
SELECT employee_id, last_name, salary, department_id
FROM employees
WHERE salary >= 6000 XOR department_id = 80;
1.4. 位运算符
二进制数上进行计算的运算符。位运算符会先将操作数变成二进制数,然后进行位运算,最后将计算结果从二进制变回十进制数。
# 0 0 0 0 1 1 0 0
# 0 0 0 0 0 1 0 1
# &0 0 0 0 0 1 0 0------》4
SELECT 12 & 5, 12 | 5,12 ^ 5
FROM DUAL;
SELECT 4 << 1,8 >> 1#4左移一位乘以2,向右移位 除以2
FROM DUAL;
1. 5 运算符的优先级
【了解内容】
备注:数字编号越大,优先级越高,优先级高的运算符先进行计算。可以看到,赋值运算符的优先级最低,使用“()”括起来的表达式的优先级最高。