MYSQL学习(七)
表达式和函数
表达式
将数字与运算符连接起来的组合称之为表达式
:
1 | 1 + 1 |
可以将数字称为操作数
,运算符称为操作符
.
MySql
中的操作数与操作符含义如下:
操作数
常数
平时用到的数字,字符串,时间值等,是一个确定的值。列名
针对某个具体的表,它的列名可以被当作表达式的一部分。函数调用
MySql
中的函数调用也可以作为表达式,比如NOW()
。标量子查询或者行字查询
其他表达式
多个操作数与操作符组合。
假设col
为列名
1 | (col - 5) / 3 |
操作符
- 算数操作符
小学生都会的加减乘除法~
操作符 | 示例 | 描述 |
---|---|---|
+ |
a + b |
加法 |
- |
a - b |
减法 |
* |
a * b |
乘法 |
/ |
a / b |
除法 |
DIV |
a DIV b |
除法,取商的整数部分 |
% |
a % b |
取余 |
- |
-a |
附好 |
在使用 MySQL
中的算术操作符时需要注意,DIV
和/
都表示除法操作符,但是 DIV
只会取商的整数部分,/
会保留商的小数部分。比如表达式 2 DIV 3
的结果是 0
,而 2 / 3
的结果是 0.6667
。
- 比较操作符
比较操作符为搜索条件
中的比较操作符
,由其连接而成的表达式也称为布尔表达式
,表示真
或假
。
- 逻辑操作符
用来将多个布尔表达式
连接起来。
操作符 | 示例 | 描述 |
---|---|---|
AND |
a AND b |
只有 a 和 b 同时为真,表达式才为真 |
OR |
a OR b |
只要 a 或 b 有任意一个为真,表达式就为真 |
XOR |
a XOR b |
a 和 b 有且只有一个为真,表达式为真 |
表达式的使用
- 放在查询列表中
1 | SELECT xxx + 100 FROM 表名; |
- 作为搜索条件
1 | SELECT * FROM 表名 WHERE xxx > 1; |
函数
文本处理函数
名称 | 调用示例 | 示例结果 | 描述 |
---|---|---|---|
LEFT |
LEFT('abc123', 3) |
abc |
给定字符串从左边取指定长度的子串 |
RIGHT |
RIGHT('abc123', 3) |
123 |
给定字符串从右边取指定长度的子串 |
LENGTH |
LENGTH('abc') |
3 |
给定字符串的长度 |
LOWER |
LOWER('ABC') |
abc |
给定字符串的小写格式 |
UPPER |
UPPER('abc') |
ABC |
给定字符串的大写格式 |
LTRIM |
LTRIM(' abc') |
abc |
给定字符串左边空格去除后的格式 |
LTRIM |
RTRIM('abc ') |
abc |
给定字符串右边空格去除后的格式 |
LTRIM |
SUBSTRING('abc123', 2, 3) |
bc1 |
给定字符串从指定位置截取指定长度的子串 |
CONCAT |
CONCAT('abc', '123', 'xyz') |
abc123xyz |
将给定的各个字符串拼接成一个新字符串 |
日期和时间处理函数
名称 | 调用示例 | 示例结果 | 描述 |
---|---|---|---|
NOW |
NOW() |
2019-08-16 17:10:43 |
返回当前日期和时间 |
CURDATE |
CURDATE() |
2019-08-16 |
返回当前日期 |
CURTIME |
CURTIME() |
17:10:43 |
返回当前时间 |
DATE |
DATE('2019-08-16 17:10:43') |
2019-08-16 |
将给定日期和时间值的日期提取出来 |
DATE_ADD |
DATE_ADD('2019-08-16 17:10:43', INTERVAL 2 DAY) |
2019-08-18 17:10:43 |
将给定的日期和时间值添加指定的时间间隔 |
DATE_SUB |
DATE_SUB('2019-08-16 17:10:43', INTERVAL 2 DAY) |
2019-08-14 17:10:43 |
将给定的日期和时间值减去指定的时间间隔 |
DATEDIFF |
DATEDIFF('2019-08-16', '2019-08-17'); |
-1 |
返回两个日期之间的天数(负数代表前一个参数代表的日期比较小) |
DATE_FORMAT |
DATE_FORMAT(NOW(),'%m-%d-%Y') |
08-16-2019 |
用给定的格式显示日期和时间 |
数值处理函数
名称 | 调用示例 | 示例结果 | 描述 |
---|---|---|---|
ABS |
ABS(-1) |
1 |
取绝对值 |
Pi |
PI() |
3.141593 |
返回圆周率 |
COS |
COS(PI()) |
-1 |
返回一个角度的余弦 |
EXP |
EXP(1) |
2.718281828459045 |
返回 e 的指定次方 |
MOD |
MOD(5,2) |
1 |
返回除法的余数 |
RAND |
RAND() |
0.7537623539136372 |
返回一个随机 |
SIN |
SIN(PI()/2) |
1 |
返回一个角度的正数 |
SQRT |
SQRT(9) |
3 |
返回一个数的平方 弦 |
TAN |
TAN(0) |
0 |
返回一个角度的正切 |
聚合函数
函数名 | 描述 |
---|---|
COUNT |
返回某列的行数 |
MAX |
返回某列的最大值 |
MIN |
返回某列的最小值 |
SUM |
返回某列值之和 |
AVG |
返回某列的平均值 |
count 函数
用来统计行数。
COUNT(*)
: 对表中行的数目进行统计,不管列的值是不是NULL
。COUNT(列名)
: 对特定的列进行计数,会忽略掉该列为NULL
的行。
1 | SELECT COUNT(*) FROM 表名; |
MAX 函数
用来查询某列中数据的最大值。
1 | SELECT MAX(xxx) FROM 表名; |
MIN 函数
用来查询某列中数据的最小值。
1 | SELECT MIN(xxx) FROM 表名; |
SUN 函数
用来计算某列数据的和。
1 | SELECT SUM(xxx) FROM 表名; |
AVG 函数
用来计算某列数据的平均数。
1 | SELECT AVG(xxx) FROM 表名; |
使用DISTINCT
过滤重复数据
1 | SELECT COUNT(DISTINCT xxx) FROM 表名; |
组合聚合函数
1 | SELECT COUNT(*) AS 成绩记录总数, MAX(score) AS 最高成绩, MIN(score) AS 最低成绩 FROM student_score; |
隐式类型转换
隐式类型转换的场景
当某个值的类型与上下文所求的类型不符,MySql
就会根据上下文环境中需要的类型对该值进行类型转换。由于是MySql
自动完成的,所以称为隐式类型转换
。
- 操作数类型转换为适合操作符计算的相应类型
1 | 1 + 2 -> 3 |
- 将函数参数转换为该函数期望的类型
1 | CONCAT('1', '2') -> '12' |
- 存储数据时,把某个值转换为某个列需要的类型
类型转换的注意事项
MySql
会尽量把值转换为表达式中需要的类型在运算时会自动提升操作数的类型
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment