Select进阶查询·常用函数
2023-01-22 本文已影响0人
技术老男孩
一、MySql中函数定义:
- 函数就是MySQL服务内置的命令
- 函数的格式:函数名()
- 通常使用的方法=>函数名(表头名)
二、常用函数:
分类 | 命令/符号/... | 说明 |
---|---|---|
字符函数 | LENGTH(str) | 返字符串长度,以字节为单位 |
CHAR_LENGTH(str) | 返回字符串长度,以字符为单位 | |
LOWER(str)和LCASE(str) | 将str中的字母全部转换成小写 | |
SUBSTR(s, start,end) | 从s的start位置开始取出到end长度的子串 | |
INSTR(str,str1) | 返回str1参数,在str参数内的位置 | |
TRIM(s) | 返回字符串s删除了两边空格之后的字符串 | |
数学函数 | ABS(x) | 返回x的绝对值 |
PI() | 返回圆周率π,默认显示6位小数 | |
ABS(x) | 返回x被y除后的余数 | |
MOD(x,y) | 返为单位 | |
CEIL(x)、CEILING(x) | 返回不小于x的最小整数 (x 是小数) | |
FLOOR(x) | 返回不大于x的最大整数 (x 是小数) | |
ROUND(x) | 返回最接近于x的整数,即对x进行四舍五入 (x 是小数) | |
ROUND(x,y) | 返回最接近x的数,其值保留到小数点后面y位,若y为负值,则将保留到x到小数点左边y位 (x 是小数) | |
时间函数 | curtime() | 获取时间:h:m:s |
curdate() | 获取日期:y-m-d | |
now() | 获取日期时间:y-m-d h:m:s | |
year(date) | 获取年份 | |
month(date) | 获取月份 | |
day(date) | 获取一个月的第几天 | |
week(date) | 获取一年中的第几周 | |
date(date) | 获取日期:y-m-d | |
weekday(date) | 获取一周中的周几 | |
time(date) | 获取时间:h:m:s | |
hour(date) | 获取小时 | |
minute(date) | 获取分钟 | |
second(date) | 获取秒钟 | |
quarter(date) | 获取一年中的第几个季度 | |
monthname(date) | 获取月份名称(英文) | |
dayname(date) | 获取星期几(英文) | |
dayofyear(date) | 获取一年中的第几天 | |
dayofmonth(date) | 获取一个月的第几天 | |
聚集函数 | avg(表头名) | 计算平均值 |
min(表头名) | 获取最小值 | |
max(表头名) | 获取最大值 | |
count(表头名) | 统计表头值个数 |
三、案例:
- 字符函数例子
mysql> select name,length(name) from tarena.employees where employee_id = 8 ;
+--------+-------------------+
| name | char_length(name) |
+--------+-------------------+
| 汪云 | 6 |
+--------+-------------------+
1 row in set (0.00 sec)
- 数学函数例子
# 输出偶数行 行号和用户名
mysql> select id , name from tarena.user where mod(id,2) = 0 ;
+----+-----------------+
| id | name |
+----+-----------------+
| 2 | bin |
| 4 | adm |
| 6 | sync |
| 8 | halt |
+----+-----------------+
4 rows in set (0.00 sec)
- 日期时间函数例子
# 输出当前时间
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2021-10-12 09:27:39 |
+---------------------+
1 row in set (0.00 sec)
# 获取当前年份
mysql> select year(now());
+-------------+
| year(now()) |
+-------------+
| 2021 |
+-------------+
1 row in set (0.00 sec)
- 聚集函数例子
# 输出uid列的最小值和最大值
mysql> select min(uid),max(uid) from tarena.user;
+----------+----------+
| min(uid) | max(uid) |
+----------+----------+
| 0 | 65534 |
+----------+----------+
1 row in set (0.00 sec)
# 统计使用解释器/sbin/nologin 用户的个数
mysql> select count(name) from tarena.user where shell="/sbin/nologin";
+-------------+
| count(name) |
+-------------+
| 19 |
+-------------+
1 row in set (0.01 sec)