📄 一句话概括
SELECT 是 SQL 的主角——【要哪几列、从哪张表】一句话说清;全 SQL 里你用得最多的就是它。
📝 本节和前面几节的关系
表里已有数据(3-6 填好了 students);从本节起进入【查询家族】的主线:3-7 学【要哪几列】,3-8~3-10 学【留哪几行】(WHERE 一族),3-13 起学【怎么排、怎么算】。SELECT 学不透,后面全悬空。
一、SELECT 的基本式
-- 准备块(没建表先跑 3-6 的准备块)
-- 要所有列、所有行
SELECT * FROM students;
-- 只要两列(顺序由你定)
SELECT name, score FROM students;
-- 挑列输出(name 前 score 后也行)
SELECT score, name FROM students;
*读作【所有列】——方便,但正式查询别滥用(见误区)- SELECT 管竖切(挑列),FROM 管从哪张表切;【横切(挑行)】是 WHERE 的活(3-8)
二、给列起别名:AS
输出的列头默认是列名,想换个人话标题用 AS:
SELECT name AS 姓名, score AS 分数 FROM students;
姓名 分数
张三 85
李四 92
...
- AS 只改输出标题,不改表里的列名
- 别名是给人看的报表的最低成本美化
三、SELECT 是【取副本】不是【搬走】
重要画面感:SELECT 从不影响表里的数据——查一百遍,students 还是那五行。
- 它是【抄一份给你看】:DBMS 按你的要求筛一份副本返回
- 想改数据是 UPDATE(3-11)、想删数据是 DELETE(3-12)——那些才是动真格的
四、动手 Demo:竖切三种玩法
-- ① 全表
SELECT * FROM students;
-- ② 只看姓名和分数
SELECT name, score FROM students;
-- ③ 带别名,还能现场算一列
SELECT name AS 姓名, score AS 分数, score * 1.1 AS 加分后 FROM students;
③ 的输出:
姓名 分数 加分后
张三 85 93.5
李四 92 101.2
王五 78 85.8
赵六 64 70.4
钱七 <空>
看到什么算成功:③里多出一列【加分后】——SELECT 的选择项可以是表达式(现算),不只能挑现成列;钱七那格跟着是空(NULL 参与算术还是 NULL,3-10 掀桌)。
五、30 秒实验
把 SELECT * 和 SELECT name, score 各跑一遍:
- 两句返回的数据量差一半以上(* 是四列,点名是两列)
- 想象表有一百列、一千万行——
SELECT *意味着把根本不看的九十六列也全读全传——这就是【别滥用 *】的工程理由
六、常见误区
- "SELECT 会改表里的数据" —— 不会,取的是副本;动真格的 UPDATE/DELETE 在后面。
- "SELECT * 最省事,永远用它" —— 省的是打字,费的是带宽和内存;正式代码点名要哪列。
- "别名 AS 会改掉表结构" —— 只改本次输出的标题,表纹丝不动。
自测三问(点开对答案)
1. SELECT 管哪个方向的切?FROM 管什么? **SELECT 竖切挑列,FROM 指定表**;横切挑行是 WHERE 的活。 2. `*` 是什么意思?为什么正式代码少用? **所有列**——大表上会读传大量不看的列。 3. AS 改的是什么? **本次输出的列标题**,不改表结构。- ☐ 下一节(3-8 WHERE、=、AND、OR-缩小范围查找符合条件的记录)
相关笔记
- INSERT INTO-添加记录 —— 上一节:表里有货了,本节开始取货
- 🗄️ 数据库基础 · 索引 —— 全课路线图