SQL 21天自学通真的能21天学会吗?

99ANYc3cd6 自学报考 1

SQL 21天自学通:现代版学习路线图

核心理念:

  • 动手为主,理论为辅:每天都要写代码,不要只看不练。
  • 循序渐进,螺旋上升:每天在巩固前一天知识的基础上,学习新内容。
  • 目标导向,解决问题:每天的学习都围绕一个具体的小目标展开。

准备工作 (Day 0)

在开始之前,请确保你已经准备好了以下环境:

SQL 21天自学通真的能21天学会吗?-第1张图片-指南针培训网
  1. 选择一个数据库管理系统
    • 新手推荐SQLite,它是一个轻量级的文件数据库,无需安装服务器,非常适合入门练习。
    • 进阶推荐PostgreSQLMySQL,它们是功能强大的开源数据库,更接近生产环境,你可以使用它们的在线版本(如 SQLFiddle, DB Fiddle)或本地安装。
  2. 安装一个SQL客户端
    • DBeaver (跨平台,功能强大,推荐)
    • DataGrip (JetBrains出品,付费,但体验极佳)
    • VS Code + SQLTools 插件 (轻量级,适合开发者)
  3. 准备练习数据:找一个经典的示例数据库,Sakila (MySQL自带) 或 Northwind (微软经典示例),你也可以自己创建一些简单的表来练习。

第一周:SQL基础 - 掌握核心语法

目标: 能够独立完成数据的增、删、改、查,并理解数据表的基本结构。

天数 学习主题 核心知识点 实践任务
Day 1 SQL简介与环境搭建 - 什么是SQL?
- 数据库、表、行、列的概念
- 安装DBMS和客户端
- 如何连接数据库并执行简单查询
- 成功连接到你的数据库。
- 执行 SELECT 1;SELECT 'Hello, SQL!'; 确保环境正常。
Day 2 数据查询基础 - SELECT与FROM - SELECT 子句:选择列
- FROM 子句:选择表
- 通配符
- 使用 AS 关键字给列起别名
- 查询一个表的所有列 (SELECT * FROM table_name;)。
- 查询特定列,并为这些列起有意义的别名。
Day 3 数据过滤 - WHERE子句 - WHERE 子句:过滤行
- 比较运算符 (, >, <, , <>)
- 逻辑运算符 (AND, OR, NOT)
- 查询价格大于某个值的产品。
- 查询某个特定类别的客户。
- 组合多个条件,查找“北京”且“信用等级”为“A”的客户。
Day 4 结果排序 - ORDER BY子句 - ORDER BY 子句:对结果排序
- ASC (升序) 和 DESC (降序)
- 对多列进行排序
- 查询所有员工,并按工资从高到低排序。
- 查询订单,先按订单日期排序,再按订单金额排序。
Day 5 数据限制 - LIMIT子句 - LIMIT 子句:限制返回的行数
- OFFSET 子句:分页偏移量
- 只查询最新的5条订单。
- 实现简单的分页:查询第11到20条记录 (使用 LIMIT 10 OFFSET 10;)。
Day 6 数据汇总 - 聚合函数 - COUNT(): 计数
- SUM(): 求和
- AVG(): 平均值
- MAX() / MIN(): 最大/最小值
- 计算总共有多少个客户。
- 计算所有订单的总金额和平均金额。
- 找出最高和最低的产品价格。
Day 7 本周总结与练习 - 复习 SELECT, FROM, WHERE, ORDER BY, LIMIT, COUNT, SUM, AVG, MAX, MIN
- 综合运用所有基础查询
- 设计一个包含用户、订单、商品三个表的场景。
- 尝试编写5-10个复杂的查询,查找过去一个月消费金额最高的前10名用户。

第二周:SQL进阶 - 处理复杂关系与数据

目标: 能够处理多表关联,并对数据进行分组和过滤。

天数 学习主题 核心知识点 实践任务
Day 8 多表连接 - JOIN - INNER JOIN: 内连接,返回匹配的行
- LEFT JOIN: 左连接,返回左表所有行和匹配的右表行
- RIGHT JOIN: 右连接
- FULL OUTER JOIN: 全外连接
- 将 Customers 表和 Orders 表连接起来,显示每个客户的订单信息。
- 使用 LEFT JOIN 查询所有客户,即使他们没有下过订单。
Day 9 连接条件与ON子句 - ON 子句:指定连接条件
- 连接多个表
- 在 ON 子句中使用多个条件进行连接。
- 连接三个或更多的表(客户 -> 订单 -> 订单详情 -> 商品)。
Day 10 数据分组 - GROUP BY子句 - GROUP BY 子句:将行分组
- 结合聚合函数使用
- 按产品类别分组,计算每个类别的总销售额。
- 按月份分组,统计每个月的订单数量。
Day 11 分组过滤 - HAVING子句 - HAVING 子句:过滤分组
- WHERE vs HAVING 的区别
- 找出总销售额超过10000元的商品类别。
- 找出订单数量超过5个的客户。
Day 12 集合运算 - UNION: 合并两个结果集,自动去重
- UNION ALL: 合并两个结果集,不去重
- INTERSECT: 取交集
- EXCEPT / MINUS: 取差集
- 将两个表的查询结果合并成一个列表。
- 使用 UNION ALL 合并销售数据和退货数据。
Day 13 子查询 - WHERE 中的子查询
- FROM 中的子查询 (派生表)
- EXISTS / NOT EXISTS
- 查询购买了“笔记本电脑”的所有客户。
- 使用 EXISTS 查询至少下过一次订单的客户。
Day 14 本周总结与练习 - 复习 JOIN, GROUP BY, HAVING, UNION, 子查询
- 综合运用所有进阶查询
- 设计一个更复杂的业务场景(如电商、学校系统)。
- 尝试写出:1. 每个客户及其总消费金额;2. 消费金额排名前20%的客户;3. 没有购买过任何商品的用户。

第三周:SQL高级与实战 - 成为SQL高手

目标: 掌握现代SQL的高级特性,并能进行初步的数据分析。

天数 学习主题 核心知识点 实践任务
Day 15 表修改 - DML语句 - INSERT INTO: 插入数据
- UPDATE: 更新数据
- DELETE: 删除数据
- 重要BEGIN TRANSACTION, COMMIT, ROLLBACK
- 向表中插入一条新记录。
- 更新某个产品的价格。
- 删除一个特定的订单。
- 在事务中安全地执行修改和删除,并练习回滚。
Day 16 表结构管理 - DDL语句 - CREATE TABLE: 创建表
- ALTER TABLE: 修改表结构 (添加/删除列)
- DROP TABLE: 删除表
- PRIMARY KEY, FOREIGN KEY, NOT NULL, UNIQUE 约束
- 创建一个新表,并定义主键和外键。
- 向已存在的表添加一个新列。
Day 17 现代SQL神器 - CTE (公用表表达式) - WITH 关键字
- 递归CTE简介
- 使用CTE重构一个复杂的子查询,使代码更清晰。
- 尝试用CTE计算每个部门的员工平均工资。
Day 18 数据分析利器 - 窗口函数 - OVER() 子句
- PARTITION BY: 分区
- ORDER BY: 排序
- RANK(), DENSE_RANK(), ROW_NUMBER()
- LAG(), LEAD()
- 为每个订单添加一个序号 (ROW_NUMBER())。
- 为每个客户按消费金额进行排名 (RANK())。
- 计算每个客户与上一次消费的间隔天数 (LAG())。
Day 19 条件逻辑与字符串处理 - CASE WHEN ... THEN ... ELSE ... END
- 字符串函数 (CONCAT, SUBSTRING, LENGTH, TRIM)
- 数值和日期函数
- 使用 CASE WHEN 对客户进行分级(如消费>10000为VIP)。
- 拼接客户姓名和地址。
- 从日期中提取年份和月份。
Day 20 索引与性能优化 - 什么是索引?
- 创建索引 (CREATE INDEX)
- 何时使用索引
- 慢查询初步
- 为经常用于 WHEREJOIN 的列创建索引。
- 使用 EXPLAINEXPLAIN ANALYZE 分析你的查询计划,理解索引是如何工作的。
Day 21 项目实战与未来之路 - 综合项目:选择一个你感兴趣的数据集(如电影评分、销售数据)。
- 提出至少10个业务问题,并用SQL回答它们。
- 学习成果展示。
- 完成你的综合项目,将所有学到的知识融会贯通。
- 将你的SQL代码和结果整理成文档。
- 未来学习:了解NoSQL、数据仓库、BI工具、SQL在不同编程语言中的用法等。

学习建议

  1. 保持耐心:SQL看似简单,但精通需要大量练习,遇到挫折是正常的。
  2. 建立知识库:把你遇到的问题和巧妙的解决方案记录下来(可以用Markdown或Notion)。
  3. 阅读优秀代码:去GitHub上找一些开源项目的数据库脚本,看看别人是怎么写的。
  4. 多思考“为什么”:为什么用 JOIN 而不是子查询?为什么 HAVING 不能直接替换 WHERE?理解背后的逻辑比死记硬背更重要。
  5. 持续学习:21天只是一个开始,SQL的世界非常广阔,还有很多高级主题等待你去探索。

祝你学习顺利,早日成为SQL高手!

SQL 21天自学通真的能21天学会吗?-第2张图片-指南针培训网
SQL 21天自学通真的能21天学会吗?-第3张图片-指南针培训网

标签: 21天速成 自学可行性

抱歉,评论功能暂时关闭!