Z
ZHANK
实战技巧

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 会锁表,选低峰期