MySQL快查-常用函数

MySQL快查

因为在日常工作学习中经常忘记mysql的一些语句、关键字、操作等内容,所以最近抽取时间写了以下关于mysql相关内容。相当于一本字典吧

数据类型
运算符
本文
数据完整性
数据库的基本操作
对表本身的操作
对表中数据的操作
子查询
多表连接
索引
视图
预处理SQL语句
自定义函数与存储过程
在MySQL中编程



本文记录了mysql常用的函数。其中包括了字符串、日期时间、数学、获取系统信息、加密、格式化及聚合相关的函数。


字符串函数

函数作用例子
char_length(str)返回参数(str)中的字符个数char_length(‘abc’) #3
concat(str1,…)返回连接参数而成的字符串concat(“hello”, " world") # hello world
left(str, len)返回str左边开始到第len个字符的字符串left(‘abcd’,2) # ab
length(str)返回str的长度(字节)length(‘abcd’) # 4
lower(str)返回将str中的大写字母变小写字母后的字符串lower(‘aBcD’) # abcd
ltrim(str)返回去除str起始位置空格后的字符串ltrim(‘00a0b0’) # a0b0 注:为了方便观察这里用0表示空格
repeat(str, count)返回将str重复count次后形成的字符串repeat(‘abc’,2) # abcabc
replace(str, from_str, to_str)返回将str中的from_str替换成to_str字串后的字符串replace(‘l love u’, ‘love’,‘hate’) # l hate u
reverse(str)返回反转的strreverse(‘abc’) # cba
right(str, len)返回从str右边开始到倒数第len个字符的字符串right(‘abcdefg’, 3) # efg
rtrim(str)返回去除str结尾位置的空格后的字符串rtrim(‘00a0b0’) # 00a0b 注:为了方便观察这里用0表示空格
space(N)返回由重复N次的空格组成的字符串space(3) # 000 注:为了方便观察这里用0表示空格
substring求字串例子在该表格下面
upper(str)返回将str中的小写字母变大写字母后的字符串upper(‘aBcd’) # ABCD
# substring的例子
# substr类似于substring 以下用substr举例
substr(str, pos) # 截取str中从pos开始的字符串
mysql> select substr('hello world', 3);
+--------------------------+
| substr('hello world', 3) |
+--------------------------+
| llo world                |
+--------------------------+
1 row in set (0.00 sec)

substr(str FROM pos) # 同substr(str, pos)
mysql> select substr('hello world' from 3);
+------------------------------+
| substr('hello world' from 3) |
+------------------------------+
| llo world                    |
+------------------------------+
1 row in set (0.00 sec)

substr(str, pos, len) # 截取str中从pos开始,长度为len的字符串
mysql> select substr('hello world', 3, 6);
+-----------------------------+
| substr('hello world', 3, 6) |
+-----------------------------+
| llo wo                      |
+-----------------------------+
1 row in set (0.01 sec)

substr(str FROM pos FOR len) # 同substr(str, pos, len)
mysql> select substr('hello world' from 3 for 6);
+------------------------------------+
| substr('hello world' from 3 for 6) |
+------------------------------------+
| llo wo                             |
+------------------------------------+
1 row in set (0.00 sec)

日期和时间函数

函数功能例子
curdate()返回当前日期 YYYY-MM-DD or YYYYMMDDcurdate() # 2021-04-10 curdate()+0 # 20210410
curtime()获取当前时间 HH:MM:SS or HHMMSS类似curdate()
date_add(date,INTERVAL expr unit)对日期进行加法运算date_add(‘2021-04-10’, interval 3 day) # 2021-04-13 除了day之外还有year mouth,second等, 详见下表
date_sub(date,INTERVAL expr unit)对日期进行减法运算类似date_add
datediff(expr1, expr2)计算两个日期相隔天数(expr1-expr2)datediff(now(), now()) # 0
now() / sysdate()返回系统当前时间 YYYY-MM-DD HH:MM:SSnow() # 2021-04-10 19:05:56
day(date)获取指定日期的日期整数(获取在某月中的天数, 类似dayofmonth)day(now()) # 10,今天是10号 dayofmonth(‘2020-10-02’) # 2
dayname(date)返回星期几dayname(‘2021-04-10’) # Saturday
hour(time)返回小时hour(now()) # 19 ,现在是晚上7点
minute(time)返回分钟类似hour
month(date)返回月份类似hour
quarter(date)返回季度quarter(‘2021-10-1’) # 4
date_format(date, format)格式化日期date_format(now(), ‘%m, %H’) # 04, 19 格式化代码见下方
time_format(time, format)格式化时间类似date_format

date_add()和date_sub()函数unit参数

unit格式(expr)描述
day日期date_add(‘2021-04-10’, interval 3 day) # 2021-04-13
day_hour日期:小时date_add(‘2021-04-10 01:20:30’, interval ‘3:1’ day_hour) # 2021-04-13 02:20:30
day_minute日期:小时:分钟date_add(‘2021-04-10 01:20:30’, interval ‘3:1:20’ day_minute) # 2021-04-13 02:40:30
day_second日期:小时:分钟:秒date_add(‘2021-04-10 01:20:30’, interval ‘3:1:20’ day_second) # 2021-04-13 02:40:32
hour小时date_sub(‘2021-04-10 01:20:30’, interval 2 hour) # 2021-04-09 23:20:30
hour_minute小时:分钟类似上面
hour_second小时:分钟:秒类似上面
minute分钟date_sub(‘2021-04-10 01:20:30’, interval 2 minute) # 2021-04-10 01:18:30
minute_second分钟:秒类似上面
month类似
year类似上面
year_month年-月date_sub(‘2021-04-10 01:20:30’, interval ‘2-3’ year_month) # 2019-01-10 01:20:30
second类似上面

时间和日期的格式化代码

代码描述
%a缩写的星期 sun,…
%b缩写的月份 jan,…
%d月份中的天数
%H小时 01,02,…
%I分钟 00,01,…
%j一年中的天数 001,002,…
%m月份 00,01,…
%M月份 january,…
%pAM(上午)或PM(下午)
%r时间,12小时格式
%S秒 00,01,…
%T时间,24小时格式
%w一周中的天数 0,1,…
%W星期 sunday,monday,…
%Y年份,2000,2021,…

数学函数

函数功能例子
abs(X)返回X的绝对值abs(-8) # 8
ceiling(X) / ceil(X)返回大于或等于X的最小整数ceil(1.1) # 2
pi()返回兀(3.1415926…)pi() # 3.141593
cos(X)返回余弦值cos()
sin(X)返回正弦值类似上面
tan(X)返回正切值类似上面
degrees(X)弧度转角度degrees(PI()) # 180
radians(X)角度转弧度radians(180) # 3.141592653589793(PI())
exp(X)返回X为指数的e的值(eXexp(2) # 7.3890560989307
floor(X)返回小于或等于X的最大整数floor(4.9) # 4
greatest(value1, value2,…)返回各个alue中最大的数greatest(3,1,2) # 3
least(value1, value2,…)返回各个value中最小的数least(3,1,2) # 1
log(b, x)返回以b为底x的对数(logbx)
log2(x) / log10(x)返回以2/10为底x的对数
pow(X, Y)返回x的y次方pow(2,2) # 4
rand([N])返回0~1之间的随机浮点数rand() # 0.8214324673837353(随机数)
round(X[, D])返回浮点数X精确到小数点后D位,D不写默认是0round(3.4578) # 3 round(3.4578, 1) # 3.5
sqrt(X)返回X的平方根sqrt(4) # 2

获取系统信息函数

函数功能
database()返回当前数据库名
charset(str)返回字符串str的字符集
user() or system_user()返回当前登录用户
version()获取mysql版本

加密函数

函数描述
md5(str)md5加密str为128位的密文,返回32位16进制字符串
sha(str) or sha1(str)相对于md5较安全些,sha-1加密成160位,返回40位16进制的字符串
sha2(str, hash_length)较md5和sha1较安全, has_length 取值224、256、384和512 分别对应 SHA-224, SHA-256, SHA-384, and SHA-512

一般不会使用这些函数

格式化函数

format(x, d,[locale])
将x(浮点数)格式化成保留d位小数点的数
可选的第三个参数locale允许指定区域,设置要用于结果的数字的小数点、千位分隔符和分组分隔符,默认使用en_US
如:
mysql> select format(2987.187, 0);
+---------------------+
| format(2987.187, 0) |
+---------------------+
| 2,987               |
+---------------------+
1 row in set (0.00 sec)

mysql> select format(2987.187, 2);
+---------------------+
| format(2987.187, 2) |
+---------------------+
| 2,987.19            |
+---------------------+
1 row in set (0.00 sec)

mysql> select format(2987.187, 5);
+---------------------+
| format(2987.187, 5) |
+---------------------+
| 2,987.18700         |
+---------------------+
1 row in set (0.00 sec)

聚合函数

聚合函数也成分组统计函数,常用于聚合在组内的数据表行进行计算。

下面的sql使用下面的数据表:

FieldTypeNullKeyDefaultExtra
student_idintNOPRINULL
student_namechar(3)NONULL
test_scorefloatYES0
avg([distinct] expr) 
# 统计expr组中数据的平均值
# 可以使用distinct去重
mysql> SELECT student_name, AVG(test_score)
       FROM student
       GROUP BY student_name;

count(expr)
# 返回组中数据数目
mysql> SELECT student.student_name,COUNT(*)
       FROM student
       GROUP BY student_name;

max([DISTINCT] expr)
# 取最大值

min([distinct] expr) 
# 取最小值

sum([distinct] expr)
# 求和

更多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值