兴趣岛
编程

数据库基础SQL必会语法

2026/4/30

刚上班那会儿,我把库删过一次

那是第一份真正写代码的工作,组长让我“随便找个表看看数据”。我自信满满地连上测试库,顺手敲了个DROP TABLE orders;,然后回车。那一瞬间,办公室安静得只剩空调声。不是我不懂语法,是我根本没把“数据库”当成有脾气的东西。后来组长把我骂醒:SQL不是玩具,是你和数据谈判的语言。你说得客气,它配合;你说得粗暴,它让你社死。从那天起,我逼自己把最基础的SQL语法啃透,哪怕再简单的SELECT,也要知道它背后吃了多少I/O。

写SQL像点外卖,先想清楚你要什么

很多人写查询像在扫盲:上来就SELECT *,恨不得把整张表搬回内存。有次排查性能问题,我看到一条SQL返回两万多行,其实前端只要三列。改完字段,查询时间从八百多毫秒掉到五十毫秒。别小看字段选择,它影响的不只是网络流量,还有索引命中、排序空间和锁范围。你把它当点外卖:菜单要具体,备注要清晰,别让后厨把全家桶端到你桌上。数据库也是,它很乐意配合,但你得先说清楚“我要谁、要去哪、什么时候到”。

别让条件变成绕口令

刚开始写WHERE,我总爱堆逻辑:status = 1 AND type != 3 OR create_time > '2023-01-01' AND …。跑完结果不对,盯着屏幕怀疑人生。后来学会两件事:一是加括号,像给句子断句;二是把能索引的条件往前放。数据库优化器会尽力帮你,但你不帮它,它就只能暴力扫描。有次把statususer_id的顺序一换,原本全表扫的查询直接走了联合索引,耗时从两秒降到几十毫秒。条件不是越复杂越厉害,而是越克制越有效。

别在数据库里做裁缝

我见过有人在SQL里写长串CASE WHEN拼接地址,又在应用层拆成三段重新组装。还有人用LIKE '%关键字%'在千万级表里找内容,CPU直接拉满。数据库不是万能的裁缝,你别把乱七八糟的针线活都丢给它。拆分步骤、让索引先上场、把能提前过滤的数据尽早砍掉,往往比写一段“炫技”的SQL更实用。写完一条查询,先问一句:它能不能用上索引?能不能少搬点数据?能不能明天还跑得动?

别怕慢,怕的是你不知道它为什么慢

刚学JOIN那会儿,我觉得多表联查特别有成就感。后来在真实业务里,两张大表一关联,集群报警响了三次。内连接、左连接、子查询,听起来像招式,其实核心只有一件事:减少参与计算的数据量。JOIN前先过滤,能用主键就别用字段,能用覆盖索引就别回表。执行计划不是神秘学,它只是数据库坦白从宽。把EXPLAIN当体检报告看,别等心梗了才关注指标。

结语

SQL的语法不多,真正难的是把它当成日常对话去练习。和数据库相处久了会发现,它其实很讲道理:你给它明确的目标,它给你稳定的回报;你糊弄它,它就糊弄你。别急着追求高级语法,先把SELECTWHEREJOINGROUP BY和索引这几块砖砌牢。写每一条SQL时,像在给别人留便条:清楚、克制、能跑、能改。等你不再害怕慢查询,不再手抖执行DELETE,你就真的入门了。数据库不会说话,但它记得你每一次选择。

数据库基础SQL必会语法 | 兴趣岛