资讯动态

SQL入门速查:三小时笔记讲透核心语法与常见坑

发布时间:2026/10/27 11:33:48 来源:尧图企业网站定制
简介这份PDF笔记整理自B站Mosh老师的SQL三小时入门课程面向零基础或希望系统梳理SQL语法的开发者与数据分析初学者帮助读者在短时间内建立关系型数据库查询的完整知识框架。内容覆盖SQL基础知识、SELECT子句、WHERE条件筛选、AND/OR/NOT逻辑操作符以及IN、BETWEEN、LIKE、REGEXP等常用操作符的语法与用法并延伸至IS NULL、ORDER BY、LIMIT、内外连接、USING与交叉连接、UNION及数据插入等主题配有清晰的代码示例与速查表结构便于边学边查、快速回顾。资源包共1个PDF文件大小约2.43MB单文件即涵盖全部笔记内容适合打印或本地留存。目前已有979人学习下载可作为课程配套速查手册也可用于面试前复习与日常查询语句编写参考。1. 到底什么是 SQL一份三小时课程笔记能讲清多少东西很多人第一次听到 SQL脑子里浮现的是一堆大写字母和分号像某种神秘的咒语。其实你可以把它想成一种“点菜语言”数据库是后厨里面堆满了食材数据你不需要进厨房翻箱倒柜只要用一套固定的句式告诉服务员——我要哪张桌的、什么口味、按什么顺序上——后厨就会把结果端出来。SQL 就是这套点菜句式全称是结构化查询语言专门用来和关系型数据库打交道。值得搞懂它的原因很朴素只要你的工作里出现过“表格”两个字SQL 就迟早会和你打照面。查用户、算订单、导报表、核对数据背后几乎都是它在干活。而这份流传很广的三小时课程笔记把入门阶段最常打交道的那些句式浓缩成了一张速查表从取数据、筛条件到连表、插记录一条主线走完。搞懂它你就拿到了和数据库对话的第一把钥匙而不是永远等别人帮你导数据。2. 为什么 SQL 长这样从一句查询拆开看设计逻辑2.1 一条语句的骨架SELECT 和 FROM 在干什么几乎所有 SQL 查询都从同一个骨架长出来先说要哪些列再说从哪张表拿。笔记里给出的最基础写法是SELECT * FROM customers星号代表“所有列”customers 是表名。这句话翻译成人话就是把 customers 这张表里的全部内容原样端上来。但真实场景很少要“全部”。更多时候你只关心某几列于是写成SELECT first_name, points FROM customers。这里有个容易被忽略的细节SELECT 后面不仅能写列名还能写表达式。笔记里有一个典型例子把积分乘以 10 再加 20并起个别名-- 用表达式算出折扣系数AS 给结果列起个可读的名字 SELECT (points * 10 20) AS discount_factor FROM customers;这段代码的关键在于运算顺序先算括号再算乘除最后算加减和小学数学一致。AS 后面的名字不是必须的但起了名字结果表里那一列才有可读的表头否则会显示成一长串表达式。参数上points 是数值列乘加运算只对数值有意义如果对文本列做乘法数据库会直接报错这也是新手最常见的翻车点之一。还有一个常被低估的关键词 DISTINCT。SELECT DISTINCT state FROM customers会把重复的州名去掉只留唯一值。它解决的是“我只要知道有哪些类别不要每个客户都列一遍”的需求。注意 DISTINCT 作用于整行选出的组合选了两列时是两列的组合去重不是各自去重。2.2 WHERE 是筛子比较、逻辑与三种特殊判断SELECT 决定“拿哪些列”WHERE 决定“拿哪些行”。笔记把 WHERE 比作过滤器非常贴切数据像一筐豆子WHERE 就是那个筛孔符合条件的留下不符合的漏掉。最基础的比较运算符有六个大于、大于等于、小于、小于等于、等于、不等于。这里有个小坑SQL 里的“等于”是一个等号不是编程里常见的两个等号不等于则有两种写法和!效果一样。单个条件不够用时就用逻辑运算符把条件串起来。AND 要求两边都成立OR 只要一边成立NOT 则把条件反过来。笔记里的例子很直观生日在 1990 年之后“并且”积分大于 1000用 AND把“并且”换成“或者”就是 OR。这里有个血泪经验AND 和 OR 混用时AND 的优先级更高如果不确定就用括号把意图写死别指望数据库猜你的心思。除了比较笔记还整理了三种“特殊判断”。IN 用来判断某个值是否落在一个列表里比如州名是 VA、NY、CA 之一比连写三个 OR 清爽得多。BETWEEN 判断是否落在闭区间内points BETWEEN 100 AND 200包含 100 和 200 两个端点这点和某些语言的范围语法不同容易记反。IS NULL 则是专门对付空值的判断“没有电话号码”的客户要写phone IS NULL而不能写phone NULL因为空值不等于任何东西连它自己都不等于。2.3 模糊匹配的两套工具LIKE 与 REGEXP 的分工精确条件搞定了现实里还有大量“大概长这样”的需求比如找所有姓张的、所有以 b 开头的名字。笔记给了两套工具分工很清楚。LIKE 是简单模式匹配只有两个通配符百分号%代表任意多个字符包括零个下划线_代表恰好一个字符。所以first_name LIKE b%是“以 b 开头”LIKE %son是“以 son 结尾”LIKE _o%是“第二个字母是 o”。它够用、好记但表达能力有限。REGEXP 则是正则表达式能力强得多。笔记列了几个常用符号^表示开头$表示结尾|表示或者[abc]匹配其中任意一个字符[a-d]匹配 a 到 d 范围内的字符。于是“以 ey 或 on 结尾”写成ey$|on$“以 my 开头或包含 se”写成^my|se“包含 b 且后面跟 r 或 u”写成b[ru]。对比一下就能看出边界能用 LIKE 说清的需求别上正则正则写起来快读起来慢维护的人容易懵。2.4 排序、截断与去重ORDER BY 和 LIMIT 的配合查出来的数据顺序是数据库说了算想要稳定顺序就得显式排序。ORDER BY 默认升序加 DESC 变降序还能多列排序先按州升序州相同再按名字降序写成ORDER BY state, first_name DESC。注意 DESC 只作用于紧挨着它的那一列不是整句生效这是初学者常踩的坑。LIMIT 负责截断结果LIMIT 3只返回三行。它还有一个双参数写法LIMIT 6, 3意思是跳过前 6 行再取 3 行。这个“偏移量在前、数量在后”的顺序和很多人的直觉相反记不住就想想“先跳过、再拿”。ORDER BY 和 LIMIT 经常搭配使用比如“积分最高的前三名”必须先排序再截断顺序反了结果就完全不是你要的。3. 表不止一张连接与合并到底在解决什么问题3.1 内连接与外连接一张图看懂“留谁”的差别真实数据库很少只有一张表客户和订单分开放想同时看两边信息就得连接。笔记里的内连接写法是FROM customers c JOIN orders o ON c.customer_id o.customer_id其中 c 和 o 是表的别名ON 后面是连接条件。内连接的含义是只保留两边都能对上的行。没有下过单的客户在内连接结果里直接消失。外连接则解决“我不想丢人”的问题。LEFT JOIN保留左表全部行右表对不上的地方填空值。笔记的例子是“返回所有客户不管他们有没有订单”用的就是左连接。这里有个易混点LEFT 指的是写在 JOIN 左边的那张表不是“左边的列”。把表顺序调换LEFT JOIN 的含义就跟着变写之前先想清楚“我要保住哪张表的全部记录”。3.2 USING 与 CROSS JOIN两种特殊连接当两张表用来连接的列名完全一样时可以用 USING 简化写法JOIN orders o USING (customer_id)省掉 ON 那一长串等值判断。它只是语法糖语义和内连接一致但要求列名严格相同名字对不上就用不了。CROSS JOIN 则是另一种极端不做任何匹配把左表每一行和右表每一行两两组合。笔记的例子是颜色和尺码三种颜色配四种尺码结果就是十二行。它看起来有点“暴力”但在生成组合清单、构造测试数据时非常实用。要提醒的是两张表行数一大结果会爆炸式增长用之前先估算一下量级。3.3 UNION 与插入数据结果集的拼接和写入UNION 把两个查询的结果上下拼起来笔记里是把客户和另一类人群的姓名、地址合并成一张清单。它要求两边的列数和类型对得上默认还会去重如果想去重关掉、保留全部得用 UNION ALL。这个差别在统计总数时影响很大别默认以为它只是简单拼接。写入方向笔记给了 INSERT 的基本形态指定列名再给对应的值。单条插入写一组 VALUES多条插入用逗号隔开多组。例子里的DEFAULT表示“这一列用表定义的默认值”配合 NULL 使用能避免手动填一堆占位值。列名和值的顺序必须一一对应少写一个值就会报错这是插入语句最常见的失败原因。4. 几个最容易搞混的地方新手常踩的概念坑4.1 易混点一NULL 和空字符串不是一回事很多人以为“没有电话号码”就是存了个空字符串于是写phone 。但 NULL 表示“未知、未填写”空字符串表示“填了但内容是空的”两者在数据库里完全不同。判断 NULL 只能用 IS NULL 或 IS NOT NULL用等号永远匹配不到。区分方法很简单想表达“这格没填过”用 NULL想表达“填了个空内容”才用空字符串。4.2 易混点二WHERE 和 HAVING 的分工刚学 SQL 的人容易把这两个过滤条件混为一谈。WHERE 在分组之前筛行HAVING 在分组之后筛组。笔记的入门范围里主要用 WHERE但一旦涉及聚合统计就得靠 HAVING。判断标准是条件里出现聚合函数比如计数、求和基本就该用 HAVING只是对原始行做判断用 WHERE。用错位置数据库会直接报错不会悄悄给你错结果。4.3 易混点三内连接和外连接的结果差异这两个连接写起来只差一个 LEFT结果却可能差出一大批行。内连接只留匹配上的外连接保留一侧全部。混淆的根源是很多人默认“连接就是匹配”忘了还有“保留”这层语义。区分办法先问自己“对不上的那些行我要不要”要就外连接不要就内连接。拿客户和订单举例做客户名单用左连接做成交分析用内连接。4.4 易混点四LIKE 的通配符和正则的符号别串用LIKE 里%和_是通配符正则里^、$、|、[]才是元字符。有人把%写进正则或者把^写进 LIKE结果匹配不到还找不到原因。区分方法先看用的哪个运算符LIKE 只认那两个符号REGEXP 才认正则那一套。需求简单用 LIKE需求复杂再上 REGEXP别为了炫技把简单问题写复杂。4.5 易混点五LIMIT 的双参数顺序LIMIT 6, 3是跳过 6 行取 3 行不是取第 6 到第 3 行也不是先取 3 再跳 6。这个顺序反直觉翻车率很高。记法把它读成“偏移量, 数量”偏移量是“扔掉前面多少行”。如果只写一个数字那就是数量偏移量默认为零。分页场景里这两个参数会频繁出现写之前默念一遍顺序能省不少调试时间。5. 什么时候该翻这份笔记什么时候别指望它这份三小时课程笔记的定位非常清楚它是入门阶段的速查表不是参考手册。适合用的场景有这么几类。第一你刚接触数据库需要把 SELECT、WHERE、ORDER BY、LIMIT 这条主线快速串一遍建立“一句查询由哪几块组成”的整体感。第二你已经在写查询但某个运算符的写法记不清了比如 BETWEEN 是否含端点、LIMIT 两个参数谁在前翻一眼就能确认。第三你需要给同事或新人讲清楚内连接和外连接的区别笔记里的客户订单例子足够直观拿来当讲解素材很合适。不适合用的场景同样明确。笔记自己就写明了它覆盖的是核心语言构造远不完整。如果你要做的是复杂报表、多表聚合、窗口函数、性能调优这份材料帮不上忙硬套只会写出又慢又难维护的语句。另外它面向的是入门教学示例表结构简单真实业务里的字段命名、索引设计、事务处理都不在覆盖范围内。把它当成“第一块垫脚石”而不是“终点站”心态就对了。我自己的习惯是每次写稍微复杂一点的查询之前先把要用的运算符在草稿上过一遍尤其是 NULL 判断和 LIMIT 的参数顺序这两处翻车成本最低也最冤。那份笔记我留在手边不是因为记不住语法而是因为它把“为什么这样写”讲得足够短短到愿意在动手前再看一眼。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑