01-SQL 分类

目录

1. 把 4 大类串成一个故事

2. 一个简单的记忆表(面试秒答用)

3. 结合 SQLite 快速加深记忆的小练习

4. 最后一个超级短的记忆口诀


1. 把 4 大类串成一个故事

一张表的一生:建 → 改行 → 查 → 保证安全

  1. DDL – 建结构(表长啥样)

    • 关键词:结构 / 表

    • 常见:CREATE / ALTER / DROP

    • 口诀:“D-定义(Definition)= 定结构”

    • 在 SQLite 里:

      CREATE TABLE user (
        id INTEGER PRIMARY KEY,
        name TEXT
      );
      
      ALTER TABLE user ADD COLUMN age INTEGER;
      
      DROP TABLE user;
      
  2. DML – 改数据行(表里面的行)

    • 关键词:数据 / 行

    • 常见:INSERT / UPDATE / DELETE

    • 口诀:“M-操作(Manipulation)= 动数据”

    • 在 SQLite 里:

      INSERT INTO user (name, age) VALUES ('Tom', 18);
      UPDATE user SET age = 20 WHERE name = 'Tom';
      DELETE FROM user WHERE name = 'Tom';
      
  3. DQL – 查数据(查结果集)

    • 关键词:查询 / 结果

    • 核心:SELECT

    • 口诀:“Q-查询(Query)= 查数据”

    • 面试必答:SELECT 属于 DQL

    • 在 SQLite 里:

      SELECT * FROM user WHERE age > 18;
      
  4. TCL – 控制事务(要不要生效)

    • 关键词:事务 / 成功失败一起算

    • 常见:BEGIN / ***MIT / ROLLBACK

    • 口诀:“T-事务(Transaction)= 批处理的生死开关”

    • 在 SQLite 里:

      BEGIN;
        INSERT INTO user (name, age) VALUES ('A', 20);
        INSERT INTO user (name, age) VALUES ('B', 25);
      ***MIT;
      -- 出问题就 ROLLBACK;
      

2. 一个简单的记忆表(面试秒答用)

你可以在脑子里背下面这张“极简表”:

类别 全称 关键字举例 一句话理解
DDL Data Definition Language CREATE / ALTER / DROP 定义结构(表、索引)
DML Data Manipulation Language INSERT / UPDATE / DELETE 操作行(增删改)
DQL Data Query Language SELECT 查数据(查询结果)
TCL Transaction Control Language BEGIN / ***MIT / ROLLBACK 控制事务(成或败)

面试话术模版:

SQL 按功能一般分四类:
DDL 定义数据结构,比如 CREATE / ALTER / DROP;
DML 操作数据行,比如 INSERT / UPDATE / DELETE;
DQL 负责查询,核心是 SELECT;
TCL 控制事务,比如 BEGIN / ***MIT / ROLLBACK。
其中 SELECT 属于 DQL

背熟这一段,原封不动说出来就行。


3. 结合 SQLite 快速加深记忆的小练习

建议你开一个 SQLite 的练习库,连做一组“流程题”,一遍过就把 4 类全用了:

-- 1. DDL:新建表
CREATE TABLE a***ount (
  id   INTEGER PRIMARY KEY,
  name TEXT,
  balance REAL
);

-- 2. DML:插入几行
INSERT INTO a***ount (name, balance) VALUES ('Alice', 100.0);
INSERT INTO a***ount (name, balance) VALUES ('Bob',   50.0);

-- 3. DQL:查一下
SELECT * FROM a***ount;

-- 4. TCL + DML:做一次转账
BEGIN;
  UPDATE a***ount SET balance = balance - 20 WHERE name = 'Alice';
  UPDATE a***ount SET balance = balance + 20 WHERE name = 'Bob';
***MIT;

SELECT * FROM a***ount;

然后自己在脑子里问:

  • 创建表是啥类?→ DDL

  • 插入 / 更新是啥类?→ DML

  • SELECT 呢?→ DQL

  • BEGIN/***MIT 是啥?→ TCL

多做 2–3 次这样的“全流程练习”,这四个分类基本就牢固 + 能说人话


4. 最后一个超级短的记忆口诀

先建表(DDL),再改行(DML),再来查(DQL),最后保(TCL)。

  • 建表 / 改结构 → DDL

  • 增删改行 → DML

  • 查 → DQL(SELECT)

  • 保不保这批操作 → TCL(事务)

先直接回答你这几个点,我们一句一句来拆。


5. ALTER TABLE user ADD COLUMN age INTEGER; 是啥意思?

直白版解释:

把已有的 user 表,改造一下,多加一列 age,类型是整数。

具体发生了什么:

  • ALTER TABLE user:对名字叫 user 的表“动手术”

  • ADD COLUMN age INTEGER:给这张表新增一列

    • 列名:age

    • 类型:INTEGER(整数)

对已有数据的影响:

  • 表里以前已经存在的每一行都会多出一个 age

  • 但这个列的值一开始是 NULL(相当于“没有填年龄”)

你之后可以再用:

UPDATE user SET age = 18 WHERE name = 'Tom';

来给某一行补上 age


6. 事务,通俗一点怎么理解?

一句话版本:

事务 = 一组要么全部成功,要么全部当作没发生的操作。

更生活化一点:

  • 想象“发红包转账”:从你这里扣 100,给朋友加 100

  • 这两个操作必须同时成功,否则就乱套了:

    • 只扣了你 100,没给他加 100 → 你亏

    • 只给他加了 100,没扣你 → 银行亏

所以数据库会说:
“我把这几条 SQL 当成一个整体来看:

  • 中间都顺利 → 我一次性确认(提交)

  • 中间出错 → 当作都没干过(回滚)”

这个“整体”,就是事务(transaction)。

记忆关键词:

一组操作,要么全成,要么全不成。


7. BEGIN / ***MIT / ROLLBACK 言简意赅解释

这三个就是控制事务的三个按钮

7.1 BEGIN —— 开始一笔事务

  • 含义:“从现在起,这几条语句算一伙的。”

  • 后面跟着的 INSERT / UPDATE / DELETE 都在同一笔事务里。

SQL 示例:

BEGIN;  -- 开始记账(还没真正写死到数据库)
UPDATE a***ount SET balance = balance - 100 WHERE name = 'Alice';
UPDATE a***ount SET balance = balance + 100 WHERE name = 'Bob';
-- 这里还只是“暂存”,没最终生效

7.2 ***MIT —— 提交(确认生效)

  • 含义:“刚才这整笔操作,我确认没问题,全部生效。”

  • 一旦 ***MIT; 成功执行,刚才的更新就写死在数据库里了。

接上面的例子:

***MIT;  -- OK,这笔转账正式生效

7.3 ROLLBACK —— 回滚(撤销刚才这笔)

  • 含义:“刚才这整笔操作,当作没发生。”

  • 只要事务还没提交,一句 ROLLBACK; 就能把这期间的修改全部撤回。

例如:

BEGIN;
UPDATE a***ount SET balance = balance - 100 WHERE name = 'Alice';
UPDATE a***ount SET balance = balance + 100 WHERE name = 'Bob';

-- 发现不对,比如中间检查出余额不足
ROLLBACK;  -- 撤销这两条 UPDATE,好像从没执行过

8. 帮你串一下(面试/记忆用)

  • 事务(Transaction)
    一组要么全成功、要么全撤销的操作。

  • BEGIN
    我现在开始做一笔“成败一体”的事了。

  • ***MIT
    一切正常,确认生效

  • ROLLBACK
    出问题了,全部撤回,当作没干过。

  • ALTER TABLE user ADD COLUMN age INTEGER;
    user 这张表多加一个整型的 age,旧数据这一列初始都是 NULL

转载请说明出处内容投诉
CSS教程网 » 01-SQL 分类

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买