SQL 最佳实践
总结命名规范、SQL 注入防御、分库分表思路
SQL 最佳实践
好的 SQL 不仅是正确的,更是安全、可读、可维护的。
学完本章你将: 掌握命名规范、SQL 注入防御、分库分表思路。
命名规范
sql
-- ✅ 好的命名
CREATE TABLE user_orders ( -- 小写 + 下划线
id INTEGER PRIMARY KEY,
user_id INTEGER NOT NULL, -- 外键带 _id
created_at DATETIME DEFAULT CURRENT_TIMESTAMP, -- 时间列 _at
is_deleted INTEGER DEFAULT 0 -- 布尔 is_
);
-- ❌ 不好的命名
-- CREATE TABLE UserOrders ( -- 大写不统一
-- userId INTEGER, -- 驼峰在 SQL 里不友好
-- );
SQL 注入防御
永远不要拼接用户输入到 SQL 里!
java
// ❌ 危险——用户输入直接拼 SQL
String sql = "SELECT * FROM users WHERE name = '" + userName + "'";
// 用户输入: ' OR '1'='1' --
// 变成: SELECT * FROM users WHERE name = '' OR '1'='1' --'
// ✅ 安全——参数化查询
PreparedStatement stmt = conn.prepareStatement(
"SELECT * FROM users WHERE name = ?"
);
stmt.setString(1, userName);
生产环境原则
| 原则 | 做法 |
|---|---|
| 备份先行 | 写 UPDATE/DELETE 前确认有备份 |
| 事务包裹 | 多条写操作放一个事务里 |
| 先在测试库跑 | 测试通过再上生产 |
| 大表变更谨慎 | ALTER TABLE 会锁表,选低峰期 |