MySQL学习-运算符(一)

187 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 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 100100 + 1
FROM DUAL

结果如下:

100100 + 1
100101

上面是整型的运算,可以看到加一个整数的时候,结果还是一个整数。下面进行浮点数的运算。

浮点数的运算

SELECT 100100 + 1.5
FROM DUAL

结果如下:

100100 + 1.5
100101.5

可以看到浮点数的运算,结果也是浮点数。

字符串的运算

在SQL中,运算符会将字符串转换为数值再计算(隐式转换)。

SELECT 100100 + ‘1FROM DUAL

结果如下:

100100 + ‘1’
100101

上面会将字符串‘1’转换成数字1后进行运算。如果是字符串‘a’会怎么样呢?我们来运行一下:

SELECT 100100 + ‘a’
FROM DUAL

结果如下:

100100 + ‘a’
100100

可以看到结果是100,这时会将字符串‘a’转换成0来处理。 如果是NULL呢?我们再来运行一下:

SELECT 100100 + NULL
FROM DUAL

结果如下:

100100 + NULL
100NULL

可以得出结论,NULL值参与运算,结果也是NULL。

减法运算符

减法运算符同加法运算符,规则与加法运算符相同。

乘法和除法运算符

整型的运算

SELECT 100100 * 1100 / 1
FROM DUAL

结果如下:

100100 * 1100 / 1
100100100.0000

上面是整型的运算,可以看到乘一个整数的时候,结果还是一个整数。但是除一个整数的时候结果是一个浮点数。这是因为除法很多是除不尽的,所以SQL把除法运算全当成除不尽的情况,结果全部是浮点型。下面看看浮点数的运算。

浮点数的运算

SELECT 100100 * 1.0100 / 1.0
FROM DUAL

结果如下:

100100 * 1.0100 / 1.0
100100.0100.0000

可以看到乘法和除法的浮点型运算结果也是一个浮点型。 那如果除以0会怎么样呢?我们运算一下:

SELECT 100100 DIV 0
FROM DUAL
100100 DIV 0
100(NULL)

除法运算中分母不能为0,所以SQL中计算结果为NULL。

取模运算符

SELECT 12 % 312 % 5
FROM DUAL

结果如下:

12 % 312 % 5
02

如果除数或者被除数是负数是什么结果呢?我们运行一下:

SELECT 12 % -5, -12 MOD 5, -12 % -5
FROM DUAL

结果如下:

12 % -5-12 MOD 5-12 % -5
2-2-2

可以看到结果的符号是跟着除数走的,除数是正,结果为正,除数是负,结果也为负。