📄 一句话概括
增删改查四个基本动作,都是 SQL 语句——这是应用与数据库之间的通用语言。
📝 本节和前面几节的关系
界面把请求递下来了,本节看它最后变成什么:SQL 语句的四大基本形。
一、CRUD 四个动作
C(Create 增):INSERT INTO,往表里添记录; R(Read 查):SELECT,把要的数据挑出来(最常用、也最值得练); U(Update 改):UPDATE,修改已存在的记录; D(Delete 删):DELETE,删掉记录。 四个动作背下来,数据库应用的一大半就通了。
二、SQL 的样子
SQL 读起来接近英语:SELECT title FROM book WHERE stock > 0 就是【从 book 表挑出 stock 大于 0 的 title 列】;
SELECT 后面挑哪几列、FROM 后面到哪张表、WHERE 后面加条件——句式固定,像填表格;
WHERE 还有排序(ORDER BY)、分组(GROUP BY)、连接(JOIN)等伙伴,用得越多越顺手。
三、WHERE 的分量
UPDATE 和 DELETE 不带 WHERE,会动整张表——这是数据库操作里最经典的事故; 养成习惯:写 UPDATE/DELETE 先把 WHERE 写好、甚至先跑一次 SELECT 确认范围,再执行; 这条纪律和安全意识是一个道理:动作越大,越要有刹车。
四、动手 Demo:四条 SQL 走一遍 CRUD
真跑一遍增、查、改、删,看每条语句对表做了什么。
import sqlite3
con = sqlite3.connect(":memory:")
con.execute("CREATE TABLE book (id INTEGER PRIMARY KEY, title TEXT, stock INTEGER)")
con.execute("INSERT INTO book VALUES (1, '三国演义', 5)") # C
con.execute("INSERT INTO book VALUES (2, '红楼梦', 3)")
print(list(con.execute("SELECT * FROM book"))) # R
con.execute("UPDATE book SET stock = stock - 1 WHERE id = 1") # U
con.execute("DELETE FROM book WHERE id = 2") # D
print(list(con.execute("SELECT * FROM book")))
实跑输出:
--------------------------------------------------------------------
向 DBMS 发送 CRUD 操作的 SQL 语句
--------------------------------------------------------------------
应用程序与数据库对话的语言就是 SQL。四条基本动作:
增 CREATE/INSERT、查 READ/SELECT、改 UPDATE、删 DELETE
[增] INSERT INTO book VALUES (1, '三国演义', 5);
[查] SELECT * FROM book;
1 《三国演义》 库存 5
2 《红楼梦》 库存 3
[改] UPDATE book SET stock = stock - 1 WHERE id = 1;
改后: 《三国演义》库存 4
[删] DELETE FROM book WHERE id = 2;
删后剩 1 条记录
CRUD 是数据库应用的四个基本动作——增删改查之外的需求, 都是它们的花样组合。
四条语句就是 CRUD 的全部——复杂查询都是它们的花样组合。 每一句都带 WHERE 才动手(改/删时)——不带 WHERE 的 UPDATE 会改掉全表,是新手事故第一名。
30 秒实验
- 写出【把库存小于 3 的书都补到 3】的 UPDATE 语句,说清 WHERE 在哪里。
- 列出你常用软件里三个功能,各对应 CRUD 中的哪一步。
常见误区
- 以为 SELECT 会改数据——查不动数据,改要靠 UPDATE。
- 以为 UPDATE/DELETE 不带 WHERE 没关系——那是把整张表动一遍的重大事故。
自测三问(点开对答案)
1. CRUD 各是什么? —— 增 INSERT、查 SELECT、改 UPDATE、删 DELETE。 2. SQL 语句的句式规律? —— SELECT 挑列、FROM 定表、WHERE 加条件——句式固定像填表。 3. 最经典的事故是什么? —— UPDATE/DELETE 忘了写 WHERE,动了整张表。- ☐ 下一节(8.9 使用数据对象向DBMS发送SQL语句)
相关笔记
- 🗄️ 数据库基础 · 索引 — SQL 语法细节在那边练
- LX_CH8_89 — 下一节:把 SQL 关进一间屋子
- 💻 计算机是怎样跑起来的 · 索引