💻 第八章 一用就会的数据库
📄 一句话概括

增删改查四个基本动作,都是 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 秒实验

  1. 写出【把库存小于 3 的书都补到 3】的 UPDATE 语句,说清 WHERE 在哪里。
  2. 列出你常用软件里三个功能,各对应 CRUD 中的哪一步。

常见误区

  1. 以为 SELECT 会改数据——查不动数据,改要靠 UPDATE。
  2. 以为 UPDATE/DELETE 不带 WHERE 没关系——那是把整张表动一遍的重大事故。
自测三问(点开对答案) 1. CRUD 各是什么? —— 增 INSERT、查 SELECT、改 UPDATE、删 DELETE。 2. SQL 语句的句式规律? —— SELECT 挑列、FROM 定表、WHERE 加条件——句式固定像填表。 3. 最经典的事故是什么? —— UPDATE/DELETE 忘了写 WHERE,动了整张表。

相关笔记