news 2026/7/8 4:31:04

【MySQL】内置函数和内外连

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【MySQL】内置函数和内外连

MySQL 内置函数 + 内外连接 超实用总结(2026 面试+生产必备)

一、MySQL 最常用内置函数(背会这 50 个,够用 99% 场景)
1. 字符串函数(最常用 TOP10)
函数说明示例结果
CONCAT(str1,str2,…)拼接字符串(NULL 会污染)CONCAT(‘A’,‘B’,NULL)NULL
CONCAT_WS(sep,str1,str2…)带分隔符拼接(NULL 不影响)CONCAT_WS(‘-’,‘A’,‘B’,NULL,‘C’)A-B-C
LEFT(str,len)左起 len 个字符LEFT(‘abcde’,3)abc
RIGHT(str,len)右起 len 个字符RIGHT(‘abcde’,3)cde
SUBSTRING(str,pos,len)从 pos 开始取 len 个(pos 从 1 开始)SUBSTRING(‘abcde’,2,3)bcd
TRIM([BOTH] ‘x’ FROM str)去掉两边指定字符,默认空格TRIM(’ abc ')abc
LTRIM / RTRIM去左/去右空格
REPLACE(str,from,to)替换所有 from 为 toREPLACE(‘aaabbb’,‘a’,‘x’)xxxbbb
UPPER(str) / LOWER(str)大小写转换UPPER(‘Abc’)ABC
LENGTH(str)字节长度(中文占 3)LENGTH(‘中国’)6
CHAR_LENGTH(str)字符长度(中文占 1)CHAR_LENGTH(‘中国’)2
2. 数值函数(TOP8)
函数说明示例
ROUND(x,d)四舍五入,d 小数位ROUND(3.14159,2) → 3.14
CEIL(x) / FLOOR(x)向上/向下取整CEIL(3.01) → 4
TRUNCATE(x,d)直接截断,不四舍五入TRUNCATE(3.14159,2) → 3.14
ABS(x)绝对值ABS(-5) → 5
RAND()0~1 随机小数RAND()
MOD(a,b)取模(余数)MOD(10,3) → 1
POW(x,y)x 的 y 次方POW(2,10) → 1024
GREATEST / LEAST多值取最大/最小GREATEST(1,5,3) → 5
3. 日期时间函数(TOP15,超级高频!)
函数说明示例结果
NOW() / CURRENT_TIMESTAMP当前日期时间2026-01-22 18:45:30
CURDATE() / CURRENT_DATE当前日期2026-01-22
CURTIME()当前时间18:45:30
DATE_ADD(date, INTERVAL 1 DAY)日期加减2026-01-23
DATE_SUB(date, INTERVAL 1 MONTH)2025-12-22
DATEDIF(date1,date2,‘d’)MySQL 无此函数!用 TIMESTAMPDIFF
TIMESTAMPDIFF(unit,datetime1,datetime2)计算两个日期差(年月日时分秒)TIMESTAMPDIFF(DAY,‘2026-01-01’,‘2026-01-22’) → 21
DATE_FORMAT(date,‘%Y-%m-%d %H:%i:%s’)格式化输出2026-01-22 18:45
STR_TO_DATE(str,format)字符串转日期STR_TO_DATE(‘2026/01/22’,‘%Y/%m/%d’)
YEAR/MONTH/DAY/HOUR/MINUTE/SECOND(date)取年月日时分秒YEAR(NOW()) → 2026
UNIX_TIMESTAMP()当前时间戳(秒)1737581130
FROM_UNIXTIME(unix_timestamp)时间戳转日期2026-01-22 18:45:30
4. 条件判断函数(神级)
函数说明示例
IF(expr1,expr2,expr3)三元运算IF(1>0,‘真’,‘假’) → ‘真’
IFNULL(expr1,expr2)expr1 为 NULL 返回 expr2IFNULL(NULL,‘默认’) → ‘默认’
NULLIF(expr1,expr2)expr1=expr2 返回 NULL,否则返回 expr1NULLIF(‘A’,‘A’) → NULL
CASE WHEN … THEN … ELSE … END多条件判断(SQL 版 switch)见下面实战
5. 聚合函数(分组必备)

COUNT、SUM、AVG、MAX、MIN、GROUP_CONCAT(字段 SEPARATOR ‘,’) → 超级好用!

二、内外连接全家福(背会这张表就够了)
连接类型写法1(SQL99)写法2(SQL92,老项目常见)结果说明使用频率
内连接INNER JOIN … ONWHERE a.id = b.id两表匹配的记录(交集)★★★★★
左外连接LEFT JOIN … ONWHERE a.id = b.id(+) (Oracle 语法)左表全部 + 右表匹配的(右表无匹配补 NULL)★★★★★
右外连接RIGHT JOIN … ONWHERE a.id = (+ )b.id (Oracle)右表全部 + 左表匹配的(左表无匹配补 NULL)★★★★☆
全外连接FULL OUTER JOIN … ONMySQL 不支持!用 UNION 模拟两表全部记录,无匹配补 NULL★★☆☆☆
左连接排除交集LEFT JOIN … ON … WHERE b.id IS NULL左表有但右表没有的记录(左差集)★★★★☆
右连接排除交集RIGHT JOIN … ON … WHERE a.id IS NULL右表有但左表没有的记录(右差集)★★★☆☆
全外排除交集FULL JOIN + WHERE a.id IS NULL OR b.id IS NULLUNION 模拟两表互不相同的记录(对称差集)★★★☆☆

经典案例:查询所有学生(包括没选课的)和他们的成绩

-- 左连接(最常用写法)SELECTs.*,c.course_name,sc.scoreFROMstudent sLEFTJOINscore scONs.id=sc.student_idLEFTJOINcourse cONsc.course_id=c.id;

查询没选课的学生(左连接排除交集)

SELECTs.*FROMstudent sLEFTJOINscore scONs.id=sc.student_idWHEREsc.student_idISNULL;

MySQL 模拟全外连接(不支持 FULL JOIN)

SELECT*FROMALEFTJOINBONA.id=B.idUNIONSELECT*FROMARIGHTJOINBONA.id=B.id;
三、2026 年最实用的 5 个组合技巧
  1. GROUP_CONCAT + CASE WHEN 实现一行多列转一行一列(神技)
  2. IFNULL + COALESCE 防止 NULL 污染
  3. DATE_FORMAT + GROUP BY 按年月统计
  4. LEFT JOIN + IS NULL 查“有A无B”数据
  5. TIMESTAMPDIFF + INTERVAL 动态时间段统计

把上面这些函数和连接方式记熟,MySQL 面试题基本秒杀,日常开发也够用 95% 以上了!

需要我给你出 20 道经典 MySQL 面试题(带答案)练手吗?随时说~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 10:07:30

近屿智能的深夜来电:那些“付费上班”的年轻人,后来怎么样了?

第一份工作的收入,有时不够支付在大城市“呼吸”的成本。但故事的走向,并非只有一种可能。一、呼吸账单:5530元,只是活着的价格最近,一个扎心话题在社交媒体上火了——“付费上班”。你没听错,不是赚钱&…

作者头像 李华
网站建设 2026/7/6 8:51:04

Speech Seaco Paraformer HTTPS部署:反向代理与SSL证书配置教程

Speech Seaco Paraformer HTTPS部署:反向代理与SSL证书配置教程 1. 引言:让语音识别服务更安全、更易用 你有没有遇到过这样的情况:好不容易把一个中文语音识别模型跑起来了,结果只能在本地通过 http://localhost:7860 访问&…

作者头像 李华
网站建设 2026/7/1 10:07:35

Python新手必看:轻松搞定库依赖错误的5个步骤

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个面向初学者的Python库依赖解决教程项目。要求:1) 交互式错误诊断向导;2) 图形化界面展示解决步骤;3) 一键修复功能;4) 新手…

作者头像 李华
网站建设 2026/7/4 14:57:57

AI一键搞定Maven环境配置:告别繁琐安装教程

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个智能Maven安装助手应用,要求:1.自动检测用户操作系统类型和JDK版本 2.根据检测结果生成对应的Maven安装指南 3.提供国内镜像源自动配置功能 4.包含…

作者头像 李华
网站建设 2026/7/1 10:07:35

零基础入门:5分钟搞定ZYPLAYER接口配置

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个极简的ZYPLAYER接口配置教学项目。要求:使用Python编写,不超过100行代码,实现最基本的视频搜索功能。代码要包含大量注释,每…

作者头像 李华