总体逻辑
第一部分:学习内容清单(按优先级排序)
把 SQL 想象成你在操作一个超级强大的 Excel 表格。
1. 基础查询(查看数据)
-
select: 相当于“我要看哪几列”。
-
from: 相当于“从哪个 Sheet(表)里看”。
-
distinct: 相当于“去重”,一样的只留一个。
2. 条件筛选(只要特定的数据)
-
where: 相当于 Excel 里的“筛选器”。(例如:只要“性别=男”的)。
-
and / or / not: 逻辑连接词(例如:性别男 并且 大于18岁)。
-
in: 只要在名单里的(例如:只要 北京、上海、广州 的)。
-
between: 在某个范围内的(例如:工资在 5000 到 10000 之间)。
-
like: 模糊搜索(例如:找所有姓“张”的人,
%是通配符)。 -
[相关法则:
-
_ 任意单个字符
-
% 任意数量的字符
-
\ 转义字符
-
]
3. 排序与限制(整理结果)
-
order by : 相当于“排序”(升序 ASC,降序 DESC)。
-
limit: 只看前几行(例如:只要前 10 名)。
4. 聚合函数(做统计)
-
count: 数数有多少行。
-
sum: 求和。
-
avg: 算平均值。
-
MAX / MIN: 找最大/最小值。
-
group by: 最核心!相当于 Excel 的透视表(按部门分组,算平均工资)。
-
having: 对分组后的数据再筛选(例如:算出平均工资后,只显示平均工资>1万的部门)。
5. 多表连接(难点,但必学)
-
join(inner/left/right): 相当于 Excel 的 VLOOKUP。把两个表拼在一起。
第二部分:通用结构
对应代码的标准结构(这是书写顺序):
-
SELECT (选什么列)
-
FROM (从哪张表)
-
WHERE (筛选条件)
-
GROUP BY (分组)
-
HAVING (分组后的筛选)
-
ORDER BY (排序)
-
LIMIT (取几行)
虽然你写的时候是 SELECT 在第一行,但数据库干活的时候,SELECT 其实是最后几步才做的!
想象你去图书馆找书的过程:
-
FROM: 先走到“科幻小说区”(锁定表)。
-
WHERE: 只要“2020年以后出版的”(过滤脏数据)。
-
GROUP BY: 把书按“作者”堆成一堆一堆(分组)。
-
HAVING: 只保留“书的数量超过5本”的作者堆(分组过滤)。
-
SELECT: 此时你才把书名记在小本本上(提取数据)。
-
ORDER BY: 把小本本上的书名按首字母排序(排序)。
-
LIMIT: 只抄前 10 个(限制行数)。
WHERE 是分组前筛,HAVING 是分组后筛
推荐方式
工具:使用 SQLZOO 或 W3Schools SQL。这些网站左边是教程,右边直接能跑代码,不用安装任何东西。
方法:去 LeetCode (力扣) 的数据库板块,或者牛客网的 SQL 必知必会。先做简单题,做不出来直接看评论区答案,照抄一遍也是学习。
💙 LeetCode 精选数据库 70 题 - 力扣(LeetCode)全球极客挚爱的技术成长平台
总结:万能模板
遇到任何查询需求,先在脑子里套这个模板:
SQL
SELECT [我要的列]
FROM [这张表]
JOIN [另一张表] ON [它俩怎么连]
WHERE [基础过滤条件]
GROUP BY [按什么分类]
HAVING [分类后的过滤条件]
ORDER BY [怎么排]
LIMIT [要几条];

被折叠的 条评论
为什么被折叠?



