SQL 基础查询

进阶

SQL 查询骨架:SELECT 栏位 FROM 表 WHERE 条件 ORDER BY 栏位 DESC。* 代表全部栏位;文字值用单引号 '3A';AND/OR 组合条件;DESC 降幂、ASC 升幂。

适合:中三资讯及通讯科技 · 单元:资料库入门 · 建议学习路径第 6/13 课

学完呢课,你会识:
  • SQL 是跟资料库沟通的标准语言;查询骨架:SELECT 栏位 FROM 表。
  • * 代表全部栏位;只选需要的栏位,结果更清爽。
  • WHERE 筛选记录:文字值加单引号 '3A',数字直接写;相等只用一个 =。
文体:编程教学课有声朗读

文体小知识:编程教学课每个概念都配一段可以亲手试的代码例子,照住输入、改一改,最快学会。

资讯及通讯科技Information & Communication Technology

§课文原文 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

S
SQL结构化查询语言

跟资料库沟通的标准语言,用于查询、新增、修改和删除资料。

S
SELECT选取关键字

指定要返回哪些栏位的 SQL 关键字,SELECT * 表示全部栏位。

F
FROM来源表关键字

指定资料来自哪一张资料表的 SQL 关键字。

W
WHERE条件筛选

设定条件只返回符合的记录,例如 WHERE score >= 80。

C
Comparison operator比较运算子

WHERE 中比较用的符号:=、>、<、>=、<=;SQL 判断相等只用一个 =。

A
AND / OR逻辑组合

组合多个条件:AND 要求全部成立,OR 只要随便中一个成立。

O
ORDER BY排序

把结果按某栏位排序,DESC 由高至低,ASC 由低至高(预设)。

L
LIMIT限制笔数

只返回结果的头几笔,例如排序后 LIMIT 3 取最高三名。

W
Wildcard *星号万用字

SELECT 后的星号,代表资料表的全部栏位。

3逐步讲解 Steps

  1. 第一句 SQL:全表查询SQL(结构化查询语言)是与资料库沟通的标准语言:你用一句 SQL 讲清楚要什么,资料库负责找出来。第一句:SELECT * FROM students;,星号代表所有栏位。若 students 表有 5 笔记录(小明 3A 85、Mary 3B 90 等),这句返回全部 5 行、全部栏位。SELECT 指定要什么栏位,FROM 指定哪张表,句尾分号结束语句;SQL 关键字惯例用大写,方便与表名、栏位名区分。
  2. 选择栏位与筛选记录只取需要的栏位:SELECT name, score FROM students; 只返回姓名与分数两列,班别、学号不出现,结果清爽。只要部分记录:加 WHERE 条件,SELECT * FROM students WHERE class = '3A'; 只返回 3A 班的行。注意文字值必须加单引号 '3A',数字则直接写 score = 85。比较运算子有 =、>、<、>=、<=,例如 WHERE score >= 80 便取出 80 分或以上的所有记录。
  3. AND 组合条件AND 要求两个条件同时成立:SELECT * FROM students WHERE class = '3A' AND score >= 80; 只返回 3A 班且 80 分以上的行。例如 3A 班小明 85 分入选;3B 班 Mary 90 分虽然分数足够,但班别不合,被筛走;3A 班 60 分的同学同样落选。组合条件是精准查询的核心:OR 则是任一条件成立即返回。书写时每个条件必须独立完整,连接词放在两个条件之间,层次分明。
  4. 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 只返回最高三人,如同颁奖台只站三个人。
  5. 砌一句完整查询四个部件组合出完整查询: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 的次序逐段拆解,每段只回答一个问题。
  6. 书写惯例与格式SQL 的书写惯例:关键字 SELECT、FROM、WHERE、ORDER BY 用大写;表名与栏位名照原样写;文字值用单引号 '3A',数字值直接写 80;句尾加分号。这些惯例并非语法强制,多数资料库接受小写关键字,但大写关键字令语句结构一目了然,团队合作时尤其重要。缩排亦有帮助:长查询把 WHERE 与 ORDER BY 另起新行,可读性大增,修改时也不易看漏条件。
  7. 资料库在生活中的应用资料库无处不在:学校的学籍系统、图书馆的借阅纪录、网店订单、串流平台的影片清单,背后都是一张张资料表。你浏览购物网站时点击「价格由低至高」,网站执行的正是 ORDER BY price ASC;「只看 4 星以上」就是 WHERE rating >= 4。学懂 SELECT、WHERE、ORDER BY 之后,便明白几乎所有查询介面的底层逻辑,这是 ICT 课程中最贴近真实工作的技能之一。

4图解 Diagrams

SQL 查询:同资料库讲嘢 SELECTSELECT 姓名, 班别FROM studentsWHERE 班别 = "3A";意思:喺 students 表入面,拣出所有 3A 班嘅姓名同班别三只关键字:SELECT 拣咩栏位 · FROM 边张表 · WHERE 过滤条件SQL 系同资料库沟通嘅标准语言——一句话代替人手逐格揾试吓:SELECT * 意思系「全部栏位」;加 ORDER BY 可以排序
图 1:SQL SELECT 查询

5例题示范 Example

例题:students 表有栏位 student_id、name、class、score。写一句 SQL:列出 3B 班 70 分或以上的学生姓名和分数,分数由高至低排列。

  1. 决定栏位:要姓名和分数 → SELECT name, score。
  2. 决定来源表:资料在学生表 → FROM students。
  3. 决定条件:班别 3B 而且 70 分以上 → WHERE class = '3B' AND score >= 70(文字 '3B' 加引号,数字 70 不用)。
  4. 决定排序:由高至低 → ORDER BY score DESC。组合:SELECT name, score FROM students WHERE class = '3B' AND score >= 70 ORDER BY score DESC;
  5. 答案:SELECT name, score FROM students WHERE class = '3B' AND score >= 70 ORDER BY score DESC;

6常见错误 Mistakes

✗ 「WHERE class = 3A 就可以,不用引号。」
✓ 文字值必须加单引号:WHERE class = '3A';不加会当成栏位名而出错。数字值(80)才不用引号。
✗ 「判断相等写 WHERE score == 85。」
✓ SQL 只用一个等号 = 判断相等;== 是 Python 等程式语言的写法,在 SQL 会出语法错误。
✗ 「SELECT name, score FROM student; 表名差不多就行。」
✓ 表名必须一字不差:表叫 students 就不能写 student,否则出「table not found」;栏位名同理。
✗ 「AND 和 OR 随便用,结果差不多。」
✓ 差很远:WHERE class = '3A' AND score >= 80 要求两个条件同时成立;换成 OR 连 3B 班 90 分也会入选。
✗ 「ORDER BY score 是由大排到小。」
✓ 不写方向预设是 ASC 升幂(小至大);要由大至小必须明确写 DESC。

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 取头几笔。

同级其他科

同一科其他级别