一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情。
前言
上篇我们学习完了SELECT语句,有兴趣的小伙伴可以阅读(# MySQL学习-SELECT语句(三))。
下面继续学习MySQL中的运算符。
算术运算符
算术运算符主要用于数学运算,可以连接运算符前后的两个数值或者表达式,对数值或表达式进行加(+)、减(-)、乘(*)、除(/或DIV)和取模(%或MOD)运算。
| 运算符 | 名称 | 作用 | 示例 |
|---|---|---|---|
| + | 加法运算符 | 计算两个值或者表达式的和 | SELECT A+B |
| - | 减法运算符 | 计算两个值或者表达式的差 | SELECT A-B |
| * | 乘法运算符 | 计算两个值或者表达式的乘积 | SELECT A*B |
| /或DIV | 除法运算符 | 计算两个值或者表达式的商 | SELECT A/B 或者 SELECT A DIV B |
| %或MOD | 取模(取余)法运算符 | 计算两个值或者表达式的余数 | SELECT A%B 或者 SELECT A MOD B |
加法运算符
整型的运算
SELECT 100, 100 + 1
FROM DUAL
结果如下:
| 100 | 100 + 1 |
|---|---|
| 100 | 101 |
上面是整型的运算,可以看到加一个整数的时候,结果还是一个整数。下面进行浮点数的运算。
浮点数的运算
SELECT 100, 100 + 1.5
FROM DUAL
结果如下:
| 100 | 100 + 1.5 |
|---|---|
| 100 | 101.5 |
可以看到浮点数的运算,结果也是浮点数。
字符串的运算
在SQL中,运算符会将字符串转换为数值再计算(隐式转换)。
SELECT 100, 100 + ‘1’
FROM DUAL
结果如下:
| 100 | 100 + ‘1’ |
|---|---|
| 100 | 101 |
上面会将字符串‘1’转换成数字1后进行运算。如果是字符串‘a’会怎么样呢?我们来运行一下:
SELECT 100, 100 + ‘a’
FROM DUAL
结果如下:
| 100 | 100 + ‘a’ |
|---|---|
| 100 | 100 |
可以看到结果是100,这时会将字符串‘a’转换成0来处理。 如果是NULL呢?我们再来运行一下:
SELECT 100, 100 + NULL
FROM DUAL
结果如下:
| 100 | 100 + NULL |
|---|---|
| 100 | NULL |
可以得出结论,NULL值参与运算,结果也是NULL。
减法运算符
减法运算符同加法运算符,规则与加法运算符相同。
乘法和除法运算符
整型的运算
SELECT 100, 100 * 1, 100 / 1
FROM DUAL
结果如下:
| 100 | 100 * 1 | 100 / 1 |
|---|---|---|
| 100 | 100 | 100.0000 |
上面是整型的运算,可以看到乘一个整数的时候,结果还是一个整数。但是除一个整数的时候结果是一个浮点数。这是因为除法很多是除不尽的,所以SQL把除法运算全当成除不尽的情况,结果全部是浮点型。下面看看浮点数的运算。
浮点数的运算
SELECT 100, 100 * 1.0, 100 / 1.0
FROM DUAL
结果如下:
| 100 | 100 * 1.0 | 100 / 1.0 |
|---|---|---|
| 100 | 100.0 | 100.0000 |
可以看到乘法和除法的浮点型运算结果也是一个浮点型。 那如果除以0会怎么样呢?我们运算一下:
SELECT 100,100 DIV 0
FROM DUAL
| 100 | 100 DIV 0 |
|---|---|
| 100 | (NULL) |
除法运算中分母不能为0,所以SQL中计算结果为NULL。
取模运算符
SELECT 12 % 3, 12 % 5
FROM DUAL
结果如下:
| 12 % 3 | 12 % 5 |
|---|---|
| 0 | 2 |
如果除数或者被除数是负数是什么结果呢?我们运行一下:
SELECT 12 % -5, -12 MOD 5, -12 % -5
FROM DUAL
结果如下:
| 12 % -5 | -12 MOD 5 | -12 % -5 |
|---|---|---|
| 2 | -2 | -2 |
可以看到结果的符号是跟着除数走的,除数是正,结果为正,除数是负,结果也为负。