news 2026/2/6 20:25:21

【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/2/5 14:39:23

电商系统如何用ISTIO实现灰度发布

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个电商灰度发布演示系统,包含:1. 商品服务、订单服务、支付服务三个微服务 2. 使用ISTIO实现v1和v2版本的流量按比例分配 3. 集成Prometheus监控关键…

作者头像 李华
网站建设 2026/2/6 21:04:16

2026年的风口一定是LLM Agent,赶紧听劝!

介绍 《AI Agents》系统介绍了AI智能体的核心概念、架构设计与应用实践。全书通过丰富的示意图与案例,生动解析智能体如何感知、决策与交互,覆盖从基础模型到多智能体协作的前沿进展。无论是初学者还是开发者,都能通过本书快速理解智能体的运…

作者头像 李华
网站建设 2026/2/4 23:34:14

零配置启动TurboDiffusion,AI视频生成从此更简单

零配置启动TurboDiffusion,AI视频生成从此更简单 你有没有试过:写完一段提示词,点下“生成”,然后泡杯咖啡、刷会手机——回来发现进度条才走到12%? 或者,刚配好环境,显存就爆了,报…

作者头像 李华
网站建设 2026/2/6 21:17:29

Ubuntu+VSCode打造Python数据分析实战环境

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个Python数据分析项目的VSCode环境配置指南。要求:1. 详细说明Ubuntu下Python环境安装;2. 配置VSCode的Python扩展;3. 集成Jupyter Noteb…

作者头像 李华
网站建设 2026/2/5 11:39:01

BERT模型如何做语法纠错?企业文档校对系统搭建教程

BERT模型如何做语法纠错?企业文档校对系统搭建教程 1. 从“填空游戏”开始理解BERT的纠错逻辑 你有没有试过这样改错:把句子中明显不对的词替换成 [MASK],然后让AI猜它原本该是什么?比如—— “这个方案存在严重漏动问题” → “…

作者头像 李华
网站建设 2026/2/5 12:22:16

DeepSeek-R1-Distill-Qwen-1.5B应用场景:科研辅助系统部署

DeepSeek-R1-Distill-Qwen-1.5B应用场景:科研辅助系统部署 1. 这不是又一个“能写作文”的模型,而是你实验室里新来的推理搭档 你有没有过这样的时刻: 看着一篇数学证明卡在中间步骤,反复推导却找不到突破口;写Pyth…

作者头像 李华