SQL 基础查询
进阶SQL 查询骨架:SELECT 栏位 FROM 表 WHERE 条件 ORDER BY 栏位 DESC。* 代表全部栏位;文字值用单引号 '3A';AND/OR 组合条件;DESC 降幂、ASC 升幂。
- SQL 是跟资料库沟通的标准语言;查询骨架:SELECT 栏位 FROM 表。
- * 代表全部栏位;只选需要的栏位,结果更清爽。
- WHERE 筛选记录:文字值加单引号 '3A',数字直接写;相等只用一个 =。
文体小知识:编程教学课每个概念都配一段可以亲手试的代码例子,照住输入、改一改,最快学会。
§课文原文 Passage
1SQL(Structured Query Language,结构化查询语言)是跟资料库沟通的标准语言:你用一句 SQL 讲清楚要什么,资料库负责找出来。最基本的句式:SELECT 栏位 FROM 资料表。例如 SELECT * FROM students; 中,星号 * 代表全部栏位,整句意思是「由 students 表取出所有记录的所有栏位」。
2只想看部分栏位,就把栏位名逐一列出:SELECT name, score FROM students; 只返回姓名和分数两列。只想看部分记录,就加 WHERE 条件:SELECT * FROM students WHERE class = '3A'; 只返回 3A 班的行。WHERE 可以用比较运算子 =、>、<、>=、<=,也可以用 AND、OR 组合几个条件。
3结果还可以排序:ORDER BY score DESC 把分数由高至低排(DESC = 降幂),ASC 是升幂(不写时的预设)。想只看头几名,排序后再 LIMIT 3 就返回最高三人。一句完整的查询可以同时用齐这些部件。
4SQL 有一个书写惯例:关键字(SELECT、FROM、WHERE)用大写,表名栏位名用原样,文字值用单引号 '3A',数字值直接写 80。看懂一句 SQL 的秘诀是按结构拆:先看 SELECT 拿什么栏位,再看 FROM 哪张表,最后看 WHERE 和 ORDER BY 怎样筛选和排序。
1重点摘要 Summary
SQL 查询骨架:SELECT 栏位 FROM 表 WHERE 条件 ORDER BY 栏位 DESC。* 代表全部栏位;文字值用单引号 '3A';AND/OR 组合条件;DESC 降幂、ASC 升幂。
2生字卡 Vocabulary
跟资料库沟通的标准语言,用于查询、新增、修改和删除资料。
指定要返回哪些栏位的 SQL 关键字,SELECT * 表示全部栏位。
指定资料来自哪一张资料表的 SQL 关键字。
设定条件只返回符合的记录,例如 WHERE score >= 80。
WHERE 中比较用的符号:=、>、<、>=、<=;SQL 判断相等只用一个 =。
组合多个条件:AND 要求全部成立,OR 只要随便中一个成立。
把结果按某栏位排序,DESC 由高至低,ASC 由低至高(预设)。
只返回结果的头几笔,例如排序后 LIMIT 3 取最高三名。
SELECT 后的星号,代表资料表的全部栏位。
3逐步讲解 Steps
- 第一句 SQL:全表查询SQL(结构化查询语言)是与资料库沟通的标准语言:你用一句 SQL 讲清楚要什么,资料库负责找出来。第一句:SELECT * FROM students;,星号代表所有栏位。若 students 表有 5 笔记录(小明 3A 85、Mary 3B 90 等),这句返回全部 5 行、全部栏位。SELECT 指定要什么栏位,FROM 指定哪张表,句尾分号结束语句;SQL 关键字惯例用大写,方便与表名、栏位名区分。
- 选择栏位与筛选记录只取需要的栏位:SELECT name, score FROM students; 只返回姓名与分数两列,班别、学号不出现,结果清爽。只要部分记录:加 WHERE 条件,SELECT * FROM students WHERE class = '3A'; 只返回 3A 班的行。注意文字值必须加单引号 '3A',数字则直接写 score = 85。比较运算子有 =、>、<、>=、<=,例如 WHERE score >= 80 便取出 80 分或以上的所有记录。
- AND 组合条件AND 要求两个条件同时成立:SELECT * FROM students WHERE class = '3A' AND score >= 80; 只返回 3A 班且 80 分以上的行。例如 3A 班小明 85 分入选;3B 班 Mary 90 分虽然分数足够,但班别不合,被筛走;3A 班 60 分的同学同样落选。组合条件是精准查询的核心:OR 则是任一条件成立即返回。书写时每个条件必须独立完整,连接词放在两个条件之间,层次分明。
- ORDER BY 排序ORDER BY 把结果排序:SELECT name, score FROM students ORDER BY score DESC; 使全体学生按分数由高至低排列,Mary 90 排第一、小明 85 第二。DESC 是降幂,ASC 是升幂,不写时预设 ASC。排序不会改变资料库内储存的资料,只改变这一次查询的显示次序。想找前几名,排序之后再加 LIMIT:ORDER BY score DESC LIMIT 3 只返回最高三人,如同颁奖台只站三个人。
- 砌一句完整查询四个部件组合出完整查询:SELECT name, score FROM students WHERE score >= 80 ORDER BY score DESC LIMIT 3;。逐段解读:SELECT name, score 取姓名与分数;FROM students 资料来自学生表;WHERE score >= 80 只要 80 分以上;ORDER BY score DESC 由高至低排;LIMIT 3 只看头三名。读 SQL 的秘诀就是按 SELECT、FROM、WHERE、ORDER BY、LIMIT 的次序逐段拆解,每段只回答一个问题。
- 书写惯例与格式SQL 的书写惯例:关键字 SELECT、FROM、WHERE、ORDER BY 用大写;表名与栏位名照原样写;文字值用单引号 '3A',数字值直接写 80;句尾加分号。这些惯例并非语法强制,多数资料库接受小写关键字,但大写关键字令语句结构一目了然,团队合作时尤其重要。缩排亦有帮助:长查询把 WHERE 与 ORDER BY 另起新行,可读性大增,修改时也不易看漏条件。
- 资料库在生活中的应用资料库无处不在:学校的学籍系统、图书馆的借阅纪录、网店订单、串流平台的影片清单,背后都是一张张资料表。你浏览购物网站时点击「价格由低至高」,网站执行的正是 ORDER BY price ASC;「只看 4 星以上」就是 WHERE rating >= 4。学懂 SELECT、WHERE、ORDER BY 之后,便明白几乎所有查询介面的底层逻辑,这是 ICT 课程中最贴近真实工作的技能之一。
4图解 Diagrams
5例题示范 Example
例题:students 表有栏位 student_id、name、class、score。写一句 SQL:列出 3B 班 70 分或以上的学生姓名和分数,分数由高至低排列。
- 决定栏位:要姓名和分数 → SELECT name, score。
- 决定来源表:资料在学生表 → FROM students。
- 决定条件:班别 3B 而且 70 分以上 → WHERE class = '3B' AND score >= 70(文字 '3B' 加引号,数字 70 不用)。
- 决定排序:由高至低 → ORDER BY score DESC。组合:SELECT name, score FROM students WHERE class = '3B' AND score >= 70 ORDER BY score DESC;
- 答案:SELECT name, score FROM students WHERE class = '3B' AND score >= 70 ORDER BY score DESC;
6常见错误 Mistakes
75 题快测 Quick check
Q1SELECT * FROM students; 中的 * 代表什么?
Q2只返回 80 分以上的记录,应加什么子句?A. ORDER BY B. WHERE score >= 80 C. SELECT 80
Q3ORDER BY score DESC 中 DESC 的意思是什么?
Q4WHERE class = '3A' AND score >= 80 的结果是哪些记录?
Q5写一句 SQL:列出 students 表全部学生的姓名,按姓名字母顺序排列。
8重点回顾 Recap
- SQL 是跟资料库沟通的标准语言;查询骨架:SELECT 栏位 FROM 表。
- * 代表全部栏位;只选需要的栏位,结果更清爽。
- WHERE 筛选记录:文字值加单引号 '3A',数字直接写;相等只用一个 =。
- AND 要求全部条件成立,OR 任何一个成立即可。
- ORDER BY 排序:DESC 由高至低、ASC 由低至高(预设);LIMIT 取头几笔。