算术运算符
加减运算符
1. 整数加减整数还是整数
2. 整数加减浮点数还是浮点数
3. 加减优先级相同
4. Mysql中+只是表示数值相加.如果遇到非数值类型.先尝试转换成数值类型.如果转换失败按0来计算
5. 含有null参加的加减运算结果还是null
mysql> SELECT 100, 100 + 0, 100 - 0, 100 + 50, 100 + 50 -30, 100 + 35.5, 100 - 35.5 FROM dual;
+-----+---------+---------+----------+--------------+------------+------------+
| 100 | 100 + 0 | 100 - 0 | 100 + 50 | 100 + 50 -30 | 100 + 35.5 | 100 - 35.5 |
+-----+---------+---------+----------+--------------+------------+------------+
| 100 | 100 | 100 | 150 | 120 | 135.5 | 64.5 |
+-----+---------+---------+----------+--------------+------------+------------+
1 row in set (0.00 sec)
乘除运算符
1. 一个数乘除一还是原来数
2. 一个数乘除浮点数1和除以浮点数1结果是浮点数.数值与原来相同
3. 一个数除以整数不管是否除尽.结果都是浮点数
4. 一个数除以另一个数. 除不尽时. 结果为一个浮点数. 并保留到小数点后4位
5. 乘法和除法的优先级相同. 进行先乘后除操作与先除后乘操作. 得出的结果相同
6. 在数学运算中. 0不能用作除数. 在MySQL中. 一个数除以0为NULL
7. 含有 NULL 参加的乘除结果还是NULL
SELECT 100, 100 * 1, 100 * 1.0, 100 / 1.0, 100 / 2,100 + 2 * 5 / 2,100 /3, 100 DIV 0 FROM dual;
+-----+---------+-----------+-----------+---------+-----------------+---------+-----------+
| 100 | 100 * 1 | 100 * 1.0 | 100 / 1.0 | 100 / 2 | 100 + 2 * 5 / 2 | 100 /3 | 100 DIV 0 |
+-----+---------+-----------+-----------+---------+-----------------+---------+-----------+
| 100 | 100 | 100.0 | 100.0000 | 50.0000 | 105.0000 | 33.3333 | NULL |
+-----+---------+-----------+-----------+---------+-----------------+---------+-----------+
求模运算符
1. 含有null参加的求模运算结果还是null
2. 求模结果的正负号和被模数相同
SELECT 12 % 3, 12 MOD 5 FROM dual;
+--------+----------+
| 12 % 3 | 12 MOD 5 |
+--------+----------+
| 0 | 2 |
+--------+----------+
比较运算符
比较运算符用来对表达式左边的操作数和右边的操作数进行比较. 比较的结果为真则返回1. 比较的结果为假则返回0. 其他情况则返回NULL.比较运算符经常被用来作为SELECT查询语句的条件来使用. 返回符合条件的结果记录
等于运算符
1. 判断= 两边的值. 是否相同. 相等返回1 不等返回0
2. 等号两边都是字符串比较字符串
3. 等号两边都是整数比较整数
4. 等号两边有整数有字符串. 则MySQL会将字符串转化为数字进行比较
5. 等号两边有整数有字符串. 如果字符串不能转换成数值. 那么就会将字符串转换成整数 0
6. 如果等号两边的值. 字符串或表达式中存在NULL. 比较的结果就是NULL
7. MySQL中的赋值运算符是 :=
mysql> SELECT 1 = 1, 1 = '1', 1 = 0, 'a' = 'a', (5 + 3) = (2 + 6), '' = NULL , NULL =
NULL;
+-------+---------+-------+-----------+-------------------+-----------+-------------+
| 1 = 1 | 1 = '1' | 1 = 0 | 'a' = 'a' | (5 + 3) = (2 + 6) | '' = NULL | NULL = NULL |
+-------+---------+-------+-----------+-------------------+-----------+-------------+
| 1 | 1 | 0 | 1 | 1 | NULL | NULL |
+-------+---------+-------+-----------+-------------------+-----------+-------------+
1 row in set (0.00 sec)
mysql> SELECT 1 = 2, 0 = 'abc', 1 = 'abc' FROM dual;
+-------+-----------+-----------+
| 1 = 2 | 0 = 'abc' | 1 = 'abc' |
+-------+-----------+-----------+
| 0 | 1 | 0 |
+-------+-----------+-----------+
1 row in set, 2 warnings (0.00 sec)
安全等于运算符
安全等于运算符 <=> 与等于运算符 = 的作用是相似的. 唯一的区别 是 <=> 可 以用来对NULL进行判断. 在两个操作数均为NULL时. 其返回值为1. 而不为NULL;当一个操作数为NULL 时. 其返回值为0 而不为NULL
mysql> SELECT null <=> null,null <=> 1,null <=> 0 from dual;
+---------------+------------+------------+
| null <=> null | null <=> 1 | null <=> 0 |
+---------------+------------+------------+
| 1 | 0 | 0 |
+---------------+------------+------------+
不等于运算符
不等于运算符<>和!=用于判断两边的数字. 字符串或者表达式的值是否不相等. 如果不相等则返回1 相等则返回0 不等于运算符不能判断NULL值. 如果两边的值存在NULL.结果就是NULL
非符号类型运算符
逻辑运算符
逻辑非:0变1 1变0 NULL还是NULL
逻辑与:运算符是给定的值都是非0并且都不为NULL的时候才会返回1. 当以其中有一个或者多个0的时候返回值是 0. 否则返回的都是 NULL
逻辑异或: 运算符是当给定的值中任意一个值为NULL时 .则返回NULL 如果两个非NULL的值都是0或者都不等于0时.则返回0 . 如果一个值为0.另一个值不为0时.则返回1