每个开发者都应该了解的SQL查询

发布: (2026年1月17日 GMT+8 17:46)
4 min read
原文: Dev.to

Source: Dev.to

Introduction to SQL

如果你是一名网页开发者,可能在某个阶段接触过数据库。它可能是 PostgreSQL、MySQL、SQLite,或其他任何数据库。无论使用什么技术栈,SQL 总是隐藏在幕后。说实话,写出一条恰好返回所需数据的 SQL 查询,几乎没有比这更让人爽的事了。如果它还能跑得快,那就更棒了。本文将逐一介绍每个开发者都应该掌握的关键 SQL 查询。无论你是在构建 API、仪表盘,还是在凌晨 2 点调试生产问题,这些查询都是你的日常工具。

SELECT – The Foundation

如果 SQL 是一部电影,SELECT 就是它的起源故事。所有有意义的查询都从这里开始。

使用 SELECT 只获取你真正需要的数据。虽然 SELECT * 看起来很方便,但它会拖慢查询速度并浪费带宽,尤其是在大表上。

当你把 SELECTWHEREJOINORDER BY 结合使用时,才会展现出真正的威力。

SELECT id, name, email
FROM users;

WHERE – Filtering the Noise

数据库可以存储数百万行记录。WHERE 帮助你把范围缩小到真正重要的部分。

你可以使用以下方式进行过滤:

  • 比较运算符:=, !=, =
  • 逻辑运算符:AND, OR, NOT

如果没有 WHERE,后果可能很危险。像 DELETE FROM users; 这样的查询如果没有条件就会删除所有记录。务必仔细检查。

SELECT *
FROM orders
WHERE status = 'completed';

INSERT – Adding New Data

每当用户注册、下单或上传内容时,你都需要使用 INSERT

最佳实践

  • 始终指定列名。
  • 尽可能使用批量插入以获得更好性能。
  • 永远不要信任用户输入。使用参数化查询或 ORM 来防止 SQL 注入。
INSERT INTO users (name, email)
VALUES ('Alice', 'alice@example.com');

UPDATE – Changing Existing Data

邮箱会变更,地址会变更,Bug 也会出现。这时就需要 UPDATE

最常见且最危险的错误是忘记写 WHERE 子句。没有它,所有行都会被更新。

技巧

  • 可以一次更新多个列。
  • 在生产环境中使用事务以确保安全。
UPDATE users
SET email = 'alice@newdomain.com'
WHERE id = 42;

DELETE – Removing Data

当需要清理旧的或不再使用的数据时,DELETE 就能完成任务。

使用场景

  • 删除已过期的会话
  • 清理测试数据
  • 删除旧日志

许多生产应用会通过添加 deleted_at 列来实现软删除,而不是永久删除记录。

DELETE FROM sessions
WHERE last_active  100
);

Final Thoughts

掌握这些查询将帮助你:

  • 通过直接查询数据库更快地调试
  • 构建更好、更快的 API
  • 编写更简洁的后端逻辑
  • 在代码评审时给团队留下深刻印象

SQL 并不可怕,它是一种超能力。和任何技能一样,练习得越多,你就会越自信、越不可阻挡。

Back to Blog

相关文章

阅读更多 »

SQLite 中的系统事务到用户事务

用户事务:逃离自动提交 默认情况下,SQLite 运行在 autocommit 模式。每个非 SELECT 语句都会被包装在它自己的事务中:!Autocommit tr...