MySQL编程函数

参考文献:《MySQL8数据库原理与实战》麻进玲、陈婷、陈昌平 机械工业出版社

目录

1.字符串函数

2.数值函数

3.日期和时间函数

4.系统信息函数

5.流程控制函数

6.常见聚合函数 


1.字符串函数

字符串函数表

Ascii(char)

返回字符的ASCI码值

Bit_length(str)

返回字符串的比特长度

Concat(s1, s2, …, sn)

将sl,s2,…,sn 连接成字符串,任一参数为NULL则返回NULL

Insert(str, x, y ,instr)

将字符串sr从第x位置开始,y个字符长的子串替换为字符中instr,返回结果

Find_in_set(str, list)

分析逗号分隔的list列表,如果发现str、返回str在list中的位置

Lcase(str)、Lower(str)

返回将字符串sr中所有字符转变为小写后的结果

Left(str, x)

返回字符串s中最左边的x个字符

Length(str)

返回字符串中的字符数

Ltrim(str)

从字符串str中切掉开头的空格

Position(substr, str)

返回子串substr在字符串str中第一次出现的位置,从0开始数

Quote(str)

用反斜杠转义str中的单引号

Repeat(str, x)

返回字符串业重复x次的结果

Reverse(str)

返回颜倒字符申st的结果

Right(str)

返回字符串str中最右边的x个字符

Rtrim(str)

返回字符串str尾部的空格

Strcmp(s1, s2)

比较字符串s1和s2,相同为0,s1大于s2则为1否则为-1

Trim(str)

去除字符串首部和尾部的所有空格

Ucase(str)、Upper(str)

返回将字符串str中所有字符转变为大写后的结果

Concat_ws(s1, s2, …, sn)

将sl,s2,…,sn 连接成字符串,任一参数为NULL则忽略该NULL

Sub_str(str, pos[, len])

从str字符串中指定位置pos开始取一个子串并返回

Char_length(str)

返回字符串的字符个数

Instr(str, substr)

返回str中substr出现的第一次位置

Lpad(str, len, padstr)

在str的左边填充padstr到指定长度len

Rpad(str, len, padstr)

在str的右边填充padstr到指定长度len

Replace(str, from_str, to_str)

在str中找到所有from_str并用to_str替代后返回

Format(X, D[, local])

以“#,###, ###.##”格式化数字X,D指定小数位数,local指定国家语言,默认为en_US

Space(N)

返回由N个空格构成的字符串

Field(str, s1, s2, …, sn)

返回与str相匹配的第一个字符串si的位置,i=1, .., n,s1位置为1,s2位置为2

Elt(pos, s1, s2, .., sn)

返回第pos个位置字符串spos

Substring(str, pos, len)

返回str第pos个位置长度为len的字符串

Mid(str, pos, len)

返回str第pos个位置长度为len的字符串

2.数值函数

数值函数表 

Abs(x)

返回数值x的绝对值

Ceil(x)

返回大于或等于x的最小整数值

Floor(x)

返回小于或等于x的最大整数值

Mod(x,y)

返回结果x模y的值,即求余

Rand()

返回0~1内的随机数

Round(x,y)

返回x四舍五入后的有y位小数的数值

Truncate(x,y)

返回数值x截断为y位小数的数值

3.日期和时间函数

日期和时间函数表

SELECT NOW();  

返回当前日期和时间

SELECT CURDATE();  

返回当前日期(不包括时间)

SELECT CURTIME();   

返回当前时间(不包括日期)

SELECT YEAR(NOW()); 

返回当前年份

SELECT MONTH(NOW()); 

返回当前月份

SELECT DAY(NOW());

返回当前日

SELECT HOUR(NOW()); 

返回当前小时

SELECT MINUTE(NOW());

返回当前分钟

SELECT SECOND(NOW());

返回当前秒

SELECT DATE_ADD('2023-10-01', INTERVAL 1 DAY); 

在指定日期上添加一天

SELECT DATE_SUB('2023-10-01', INTERVAL 1 DAY); 

在指定日期上减去一天

SELECT DATEDIFF('2023-10-10', '2023-10-01'); 

返回两个日期之间的天数差异

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');  

按指定格式(年-月-日)返回当前日期

SELECT DATE_FORMAT(NOW() ,'%Y-%m-01');

返回当前月份的第一天

SELECTEXTRACT(YEARFROMNOW()), EXTRACT(MONTHFROMNOW()); 

返回当前日期的年份和月份

SELECT MAKEDATE(YEAR(NOW()), 1);  

返回当前年份的第一天

SELECT MAKEDATE(YEAR(NOW()), 1) +INTERVAL QUARTER(NOW()) QUARTER -INTERVAL 1 QUARTER; 

返回当前季度的第一天

SELECT DATE_SUB(NOW(), INTERVAL WEEKDAY(NOW())  DAY);  

返回当前周的第一天(假设周一为第一天)

 SELECT WEEK('YYYY-MM-DD', mode); 

返回日期的周数,默认的周开始日期是星期日,

mode = 0: 周从星期日开始,范围是 0-53;

mode = 1: 周从星期一开始,范围是 0-53;

mode = 2: 周从星期日开始,范围是 1-53;

mode = 3: 周从星期一开始,范围是 1-53

4.系统信息函数

系统信息函数表 

Database()

返回当前数据库名

Version()

返回数据库的版本号

User()

返回当前用户

Md5( str )

返回字符串 str 的 Md5 值,对str进行加密,用于对普通的不需要解密的数据进行加密

Password( str )

返回字符串str的加密版本

5.流程控制函数

流程控制函数表

IF 语句

根据条件返回不同的值

SELECTname, salary,

       IF(salary >5000, 'High', 'Low') AS salary_level

FROMemployees;

CASE 语句

根据条件返回不同的值

SELECTname, salary,

       CASE WHEN salary >5000 THEN 'High'

                 WHEN salary BETWEEN 3000 AND 5000 THEN 'Medium'

                 ELSE 'Low'

       END AS salary_level

FROM employees;

IF NULL / COALESCE 函数

使用 IFNULL 函数替换NULL值(MySQL)

 

使用 COALESCE 函数替换NULL值(适用于大多数SQL数据库)

SELECT name, IFNULL(bonus, 0) AS bonus
FROM employees;

 

SELECTname, COALESCE(bonus, 0) AS bonus
FROMemployees;

NULLIF 函数

NULLIF 函数用于比较两个表达式,

如果它们相等则返回NULL,

否则返回第一个表达式的值。

SELECT name, NULLIF(salary, 0) AS salary
FROM employees;

6.常见聚合函数 

常见聚合函数表 

功能

示例

解释

计算列的总和

SELECT SUM(salary) FROM employees; 

计算员工工资的总和

计算列的平均值

SELECT AVG(salary) FROM employees;

计算员工工资的平均值

计算列的最大值

SELECT MAX(salary) FROM employees; 

计算员工工资的最大值

计算列的最小值

SELECT MIN(salary) FROM employees;

计算员工工资的最小值

计算行数

SELECT COUNT(*) FROM employees;

计算员工的总数

计算非空的行数

SELECT COUNT(salary) FROM employees;

计算工资字段非空值的数量

合并两个查询的结果集,并去除重复的行

SELECT name FROM employees
UNION SELECT name FROM customers;

合并员工和客户的名字,并去除重复的名字

合并两个查询的结果集,并保留重复的行

SELECT name FROM employees
UNION ALL SELECT name FROM customers;

合并员工和客户的名字,并保留重复的名字

  • 29
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值