MySQL基础(一)——常用函数
视频学习来源:MySQL_基础+高级篇- 数据库 -sql -mysql教程_mysql视频_mysql入门_尚硅谷;
作者:木子六日;
MySQL版本:5.7.33;
字符函数
USE myemployees;
# 字符函数
# length 返回字符的字节长度
SELECT
LENGTH('ljj');
SELECT
LENGTH('李晶晶');
# concat 拼接字符
SELECT
concat(last_name, ' ', first_name) AS full_name
FROM
employees;
# upper、lower
SELECT
upper('Ljj');
SELECT
lower('Ljj');
# substr、substring 截取字符串(注意sql中的位置从1开始,不是0)
SELECT
substr('hello world', 7);
# 结果是world
SELECT
SUBSTR('hello world', 1, 5);
# 结果是hello,这里的5代表截取长度
# instr 返回子串第一次出现的位置,没出现返回0
SELECT
instr(
'ljj你可真是个废物',
'废物'
) AS result;
# trim 去首尾空格
SELECT
trim(' ljj ') AS result;
# trim也可以去掉指定字符,使用如下
SELECT
trim(
'h'
FROM
'hhhhhhhhhhhh李晶晶hhhhhhhhhhhhh'
) AS result;
# lpad、rpad 左填充右填充
SELECT
LPAD('ljj', 5, '菜逼') AS res;
SELECT
RPAD('ljj', 5, '垃圾') AS res;
# replace 参数是(源字符,要替换的字符,换成什么字符)
SELECT
REPLACE (
'我真的好难受,555',
'难受',
'痛苦'
) AS res;
数学函数
# 数学函数
# round 四舍五入
SELECT
ROUND(3.14159) AS res;
# 结果为3
SELECT
ROUND(3.14159, 2) AS res;
# 保留两位小数
# ceil 向上取整
SELECT
CEIL(3.14) AS res;
# floor 向下取整
SELECT
FLOOR(3.14) AS res;
# truncate 保留几位小数
SELECT
TRUNCATE (3.14, 1) AS res;
# mod 取余
SELECT
MOD (10, 3) AS res;
日期函数
-- 日期函数
-- now 当前系统日期+时间
SELECT
NOW();
-- CURDATE 当前系统日期
SELECT
CURDATE();
-- CURTIME 当前系统时间
SELECT
CURTIME();
-- year、month、day、hour、minite、second
SELECT
YEAR (hiredate) AS YEAR,
MONTH (hiredate) AS MONTH,
DAY (hiredate) AS DAY
FROM
employees;
-- str_to_date 按照指定格式解析字符串为日期
SELECT
STR_TO_DATE(
'2021年4月3日',
'%Y年%c月%d日'
) AS date;
-- date_format 将日期转换成指定的字符串格式
SELECT
DATE_FORMAT(NOW(), '%Y年%m月%d日') AS result;
统计函数
USE myemployees;
# 统计函数 (null都会被自动忽略的)
SELECT
SUM(salary),
AVG(salary),
MIN(salary),
MAX(salary),
COUNT(salary)
FROM
employees;
# sum和avg仅支持数值型,min和max还支持字符型和日期,count什么都支持
# 这些统计函数都可以搭配distinct去重使用
SELECT
SUM(DISTINCT salary)
FROM
employees;
SELECT
COUNT(DISTINCT department_id)
FROM
employees;
流程控制函数
USE myemployees;
# 流程控制函数
# if
# 第一个参数是表达式,为真返回第二个参数,为假返回第三个参数
SELECT
IF (10 > 4, '真', '假') AS res;
SELECT
IF (
commission_pct IS NULL,
0,
commission_pct
) AS 奖金
FROM
employees;
# case 多分支结构
SELECT
salary,
department_id,
CASE
WHEN salary < 10000 THEN
'少'
WHEN salary < 15000 THEN
'中等'
ELSE
'多'
END AS 工资情况
FROM
employees;
其他函数
# 其他函数
SELECT
VERSION();
SELECT
DATABASE ();
SELECT
USER ();