全书目录

第十八篇:MySQL 完全指南 —— 城市户籍总账宇宙

第六章:常见 SQL —— 柜员每天到底在户籍总账楼里做什么

1 分钟 179 字 第 341 / 962 个阅读单元

你平时最常写的 SQL,大致就是四类:

text
新增  INSERT
查询  SELECT
修改  UPDATE
删除  DELETE

先看新增:

sql
INSERT INTO citizens (
  household_id, national_id, full_name, gender, birth_date
) VALUES (
  1, '310101199905080022', '周宁', 'F', '1999-05-08'
);

查某一户下的所有在册人口:

sql
SELECT citizen_id, full_name, birth_date
FROM citizens
WHERE household_id = 1
  AND status = 'active'
ORDER BY birth_date;

修改状态:

sql
UPDATE citizens
SET status = 'moved'
WHERE citizen_id = 2;

删除一条误录数据:

sql
DELETE FROM citizens
WHERE citizen_id = 999999;

除了增删改查,还要会几种“柜台统计”:

1. 分组统计

sql
SELECT household_id, COUNT(*) AS citizen_count
FROM citizens
WHERE status = 'active'
GROUP BY household_id;

2. 过滤分组结果

sql
SELECT household_id, COUNT(*) AS citizen_count
FROM citizens
WHERE status = 'active'
GROUP BY household_id
HAVING COUNT(*) >= 3;

3. 取前几条

sql
SELECT citizen_id, full_name, created_at
FROM citizens
ORDER BY created_at DESC
LIMIT 10;

4. 看表结构

sql
DESCRIBE citizens;
SHOW INDEX FROM citizens;
SHOW CREATE TABLE citizens;

一个很实用的认知是:

SQL 不是“命令式逐步操作”,而是“声明你要什么结果”。 你说“我要哪类记录”,MySQL 再决定怎么去账册里翻。