☰
SQL三小时入门笔记:核心语法速查与常见误区
2026/10/31 11:32:24 网站建设 项目流程

简介:这份资源是B站Mosh老师三小时SQL入门课程的配套笔记,以PDF形式整理,面向零基础或希望系统梳理SQL语法的开发者与数据库初学者,帮助读者在观看视频后快速回顾核心知识点。压缩包内共1个PDF文件,约2.43MB,内容以速查表形式组织,涵盖SQL基础概念、SELECT子句、WHERE条件筛选、AND/OR/NOT逻辑操作符,以及IN、BETWEEN、LIKE、REGEXP等常用操作符的语法与示例,并延伸至IS NULL、ORDER BY、LIMIT、内外连接、USING、交叉连接、UNION与数据插入等主题,目录结构清晰,便于按模块检索。已有981人学习下载,适合作为课程复习提纲或日常查询手册使用,能帮助读者快速定位语法写法、对照示例理解条件筛选与多表连接思路,逐步建立较完整的SQL知识框架。

1. 到底什么是 SQL:一份三小时课程笔记能讲清多少事

很多人第一次听到 SQL,脑子里浮现的是一堆大写字母和分号,像某种只有程序员才懂的咒语。其实换个生活场景就通了:你手机里的通讯录,能按姓氏排序、能搜出所有姓“张”的人、能只显示最近半年联系过的——这些动作背后,就是 SQL 在干活。SQL 全称结构化查询语言,通俗地说,它是人和关系型数据库之间约定好的一套“提问句式”:你用固定格式问,数据库用表格回答。它不负责画界面,也不管数据长什么样,只专注一件事——把想要的数据准确地捞出来。搞懂它,你就能自己从一堆表格里翻出答案,而不是每次都求人帮忙导数据。这份来自三小时入门课程的笔记,把最常用的那批句式压缩成了一张速查表,正好适合拿来建立第一层认知。

2. 为什么 SQL 值得单独学:它解决的是“问对问题”的成本

2.1 数据库不是 Excel,SQL 也不是公式

不少人把 SQL 当成“高级版 Excel 公式”,觉得拖拖拽拽也能出结果,何必学一门语言。差别在于规模和数据关系。Excel 适合一张表几百上千行、自己看着办;数据库里往往是几十张表互相咬合,客户表、订单表、商品表各管一摊,靠人眼对不上号。SQL 的价值是把“我要什么”写成一句可重复执行的指令,今天跑、明天跑、换个人跑,结果一致。打个比方,Excel 像手工记账本,SQL 像给账本配了一个听得懂人话的会计——你说“把去年消费超过一千的客户按城市分组数一下”,它就去办,不用你一行行筛。

课程笔记里反复出现的SELECT * FROM customers WHERE state = 'CA',拆开看就是三件事:从哪张表拿(customers)、拿哪些列(* 表示全部)、按什么条件筛(state 等于 CA)。这三段式结构是后面所有复杂查询的地基,先把这个骨架记牢,比背一百条语法有用。

2.2 三小时能覆盖的,恰好是日常八成场景

入门课程通常不追求讲全,而是挑高频构造讲透。这份笔记的目录顺序很说明问题:先 SELECT 和 WHERE 解决“取数+过滤”,再逻辑运算符、IN、BETWEEN、LIKE、REGEXP 解决“条件怎么写得更准”,然后 ORDER BY、LIMIT 解决“排序和截取”,最后 JOIN、UNION、INSERT 解决“多表拼合和写入”。这条线走下来,日常写报表、查异常、导名单基本够用。

提示:笔记里明确写了 SQL 不区分大小写,但 MySQL 里每条语句必须以分号结尾。这两条是新手翻车率最高的地方,写完不加分号,报错信息往往还看不出原因。

2.3 为什么是“笔记”而不是“教程”

三小时视频的信息密度有限,真正能留下来的是结构。笔记把每个操作符配一句示例,比如WHERE points BETWEEN 100 AND 200、WHERE first_name LIKE 'b%',这种“一句场景一句写法”的对照,比大段讲解更适合事后翻查。它的定位不是让你从零读懂原理,而是你听完课、动手写时卡住了,能快速对上是哪个关键字用错了。理解这一点,就不会指望靠它变成专家,也不会低估它作为“随身卡片”的作用。

3. 过滤与匹配:WHERE 后面那些操作符到底怎么选

3.1 比较、逻辑、IN、BETWEEN 的分工

WHERE 子句是 SQL 里最像“提问”的部分,条件写得准,结果才对。比较运算符(>、>=、<、<=、=、<>)负责单点判断,逻辑运算符 AND、OR、NOT 负责把多个判断串起来。这里有个容易忽略的细节:AND 要求两边都成立,OR 只要一边成立,NOT 则把整个条件反过来。笔记里的例子很典型——WHERE birthdate > '1990-01-01' AND points > 1000找的是“又年轻又有积分”的人,换成 OR 就变成“满足其一即可”,结果集立刻变大。

IN 和 BETWEEN 是两种“偷懒但清晰”的写法。要匹配多个离散值,比如 VA、NY、CA 三个州,用state IN ('VA','NY','CA')比写三个 OR 更短也更不容易漏括号。要匹配一个连续区间,points BETWEEN 100 AND 200等价于points >= 100 AND points <= 200,边界是包含的。选哪个不看技术难度,看语义:离散列举用 IN,范围判断用 BETWEEN,读代码的人一眼就懂你的意图。

3.2 LIKE 与 REGEXP:模糊匹配的两档火力

LIKE 是最朴素的模糊匹配,只有两个通配符:%代表任意多个字符,_代表恰好一个字符。first_name LIKE 'b%'找的是以 b 开头的名字,LIKE '_ob'找的是三个字符、后两位是 ob 的名字。它够用、好记,但表达力有限,没法描述“以 ey 或 on 结尾”这种组合。

REGEXP 把正则表达式引进来,火力立刻上一个档次。笔记里列了几个锚点:^表示开头,$表示结尾,|表示或,[abc]匹配其中任一字符,[a-d]匹配区间内任一字符。于是REGEXP 'ey$|on$'能一次捞出两种结尾,REGEXP '^my|se'能同时覆盖“以 my 开头”和“包含 se”。代价是可读性下降,写错一个符号结果就偏了。日常够用 LIKE 就别上 REGEXP,只有在模式确实复杂时才值得动用它。

3.3 IS NULL:空值不是零,也不是空字符串

这是初学者最容易栽的坑。数据库里的 NULL 表示“没有值”,它不等于 0,也不等于空字符串''。所以判断“没有电话号码”不能写phone = NULL,必须写phone IS NULL。原因在于 NULL 参与任何比较都返回“未知”,而不是真或假,用等号永远筛不出东西。笔记里专门列了这一条,说明它在实际查询里出现频率不低——缺失数据、可选字段、未填写的日期,都靠 IS NULL 来处理。

4. 排序、截取与多表拼合:从单表到“关系”的跨越

4.1 ORDER BY 与 LIMIT:控制结果的形状

取到数据只是第一步,怎么呈现同样重要。ORDER BY 决定排序,默认升序,加 DESC 变降序,还可以多列叠加:ORDER BY state, first_name DESC表示先按州升序排,州相同的再按名字降序排。LIMIT 负责截取,LIMIT 3取前三行,LIMIT 6, 3表示跳过前六行再取三行——这个“偏移量, 数量”的写法在分页场景里很常见,翻页时改的就是前面那个数字。

注意:LIMIT 单独用没有意义,它总是配合 ORDER BY 才有稳定结果。不加排序直接 LIMIT,每次返回哪几行是不确定的,这种“玄学”结果在排查问题时最坑人。

4.2 JOIN 的本质:按共同字段把两张表缝起来

单表查询再熟,遇到“客户和他下的订单”这种关系就得靠 JOIN。内连接JOIN ... ON只保留两边都能对上的行;左外连接LEFT JOIN保留左表全部行,右表对不上的地方填 NULL。笔记里的例子很直白:FROM customers c LEFT JOIN orders o ON c.customer_id = o.customer_id返回所有客户,有没有订单都列出来,没订单的订单字段为空。这个区别决定了你统计“有多少客户下过单”还是“有多少客户”时该用哪种连接,用错就会少算人。

如果两张表用于连接的列名完全一样,可以用USING (customer_id)简化写法,省掉 ON 里的等值条件。CROSS JOIN 则是另一种逻辑:不做匹配,直接把两张表的所有组合铺开,比如颜色和尺码交叉,得到每种颜色配每个尺码的完整清单。UNION 把两个查询结果上下拼在一起,要求列数和类型对得上,笔记里用客户表和客户线索表合并姓名地址来演示。

4.3 INSERT:写入时的默认值与多行插入

查询之外,写入也是基础能力。INSERT INTO customers(first_name, phone, points) VALUES ('Mosh', NULL, DEFAULT)演示了三件事:指定列名可以跳过不写的列,NULL 可以显式写入表示空,DEFAULT 表示交给数据库用默认值。多行插入则是在 VALUES 后面跟多组括号,用逗号隔开,一次写多条记录,比循环单条插入省事得多。这些细节单看琐碎,实际建数据、造测试样本时天天用到。

5. 常见误区与易混概念:这几组词别再混着用

5.1 WHERE 和 HAVING 不是一回事

易混点:都用来筛数据,看起来可以互换。为什么混:初学阶段只接触单表过滤,还没遇到分组聚合,自然分不清。怎么区分:WHERE 在分组之前过滤原始行,HAVING 在分组之后过滤聚合结果。笔记覆盖的是基础查询,还没到 GROUP BY,但提前知道这条边界,等学到聚合时就不会把条件写错位置。

5.2 NULL 与空字符串、零值

易混点:都表示“没有内容”。为什么混:界面上看都是空白,直觉上以为相等。怎么区分:NULL 是“未知/缺失”,空字符串是一个长度为 0 的确定值,0 是一个确定的数字。判断缺失只能用 IS NULL 或 IS NOT NULL,用等号比较永远得不到想要的结果。

5.3 LIKE 的 % 与 REGEXP 的 .*

易混点:都表示“任意字符”。为什么混:正则里.*和 LIKE 的%语义接近,写顺手了就串。怎么区分:LIKE 只有%和_两个通配符,语法简单;REGEXP 走的是正则体系,.匹配单个字符、*表示重复,含义完全不同。在 LIKE 里写.*不会报错,但匹配的是字面上的点和星号,结果自然不对。

5.4 INNER JOIN 与 LEFT JOIN 的行数差异

易混点:都叫 JOIN,写出来都能跑。为什么混:小数据量下两者结果可能一样,掩盖了差异。怎么区分:内连接只留匹配上的行,左连接保留左表全部行。判断标准很简单——你想不想要“没有对应记录”的那部分主体。统计客户总数用左连接,统计有订单的客户用内连接。

5.5 UNION 与 JOIN 的方向

易混点:都是“合并”。为什么混:中文都翻译成合并、连接。怎么区分:JOIN 是横向拼列,把两张表的字段并到一行里;UNION 是纵向拼行,把两个结果集上下叠起来。一个变宽,一个变长,想清楚要的是哪种形状就不会选错。

6. 什么时候该翻这份笔记,什么时候别指望它

判断一份资料的价值,看它能不能在你卡住的那几分钟里给出答案。这份三小时课程笔记最适合的场景很具体:你已经看过一遍讲解,动手写查询时忘了某个操作符的写法,或者不确定 LIKE 和 REGEXP 该选哪个,翻到对应小节,一句示例就能对上。它按“基础语法—过滤—排序—连接—写入”的顺序编排,每个知识点配一条可直接改参数运行的语句,当速查卡片用效率很高。刚入门、想快速建立 SQL 句式骨架的人,拿它对照练习也合适。

但它有明确的边界。笔记自己就写了,这些内容覆盖的是核心语言构造,“并不完整”。它不讲索引优化、事务、存储过程,也不深入讲 GROUP BY 聚合和子查询——而这些恰恰是实际工作里绕不开的部分。指望靠它通过面试或独立设计数据库,会失望。另外,示例基于 MySQL 语法,换到其他数据库产品,分号规则、LIMIT 写法、正则支持程度都可能有出入,照搬前先确认环境。

我自己的习惯是:把这类速查笔记放在手边当“后悔药”,写查询前先扫一眼对应小节,确认关键字没拼错、条件位置没放反,再动手。血泪经验是,很多报错不是逻辑难,而是 NULL 用了等号、LIMIT 没配 ORDER BY 这种小地方翻车。从那以后我每次写带过滤和连接的查询,都强制把 WHERE 条件、连接类型、排序截取这三段过一遍,错漏明显少了。希望这份整理也能帮到你,需要完整速查内容时,按文末方式获取即可。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询