数据库、Spring Boot、MyBatis 与 PHP
为什么写这个命名规则,我在win平台开发,使用docker由于我的数据库命名规则不规范导致错误
数据库命名规则
提示
无论使用 MySQL、PostgreSQL 还是其他关系型数据库
数据库名、表名、字段名:全部小写,单词间用下划线 _ 分隔
为什么要小写?
- Linux 文件系统区分大小写,而 MySQL 表在底层以文件形式存储
- 在 Linux 上:User 和 user 是两个不同的表
- 在 Windows 上:它们被视为同一个
| 表名写法 | 创建语句示例 | Windows 上能成功查询的写法 | Linux 上能成功查询的写法 | 是否跨平台安全? |
|---|---|---|---|---|
| userInfo(含大写字母) | CREATE TABLE userInfo (id INT); | ✅ SELECT * FROM userInfo;✅ SELECT * FROM userinfo;✅ SELECT * FROM USERINFO;✅ SELECT * FROM Userinfo;(任意大小写组合都行) | ✅ SELECT * FROM userInfo;❌ SELECT * FROM userinfo;(报错)❌ SELECT * FROM USERINFO;(报错)❌ SELECT * FROM User_Info;(报错)(必须完全一致: userInfo) | ❌ 不安全(本地开发正常,上线 Linux 可能直接崩) |
| user_info(全小写 + 下划线) | CREATE TABLE user_info (id INT); | ✅ SELECT * FROM user_info;✅ SELECT * FROM USER_INFO;✅ SELECT * FROM User_Info;(因 Windows 不区分大小写) | ✅ SELECT * FROM user_info;❌ SELECT * FROM USER_INFO;(报错)❌ SELECT * FROM UserInfo;(报错)⚠️ 但——只要始终用 user_info 查询,就永远成功 | ✅ 安全(只要团队约定“一律用小写”) |
重要
数据库名、表名、字段名一律使用 全小写 + 下划线(如 user_info),禁止使用大写字母(如 userInfo)
Java(Spring Boot + MyBatis)
public class UserInfo {
private Long id;
private String userName; // 对应 user_name
private String phoneNumber; // 对应 phone_number
}PHP
提示
$userInfo = [
'id' => 1,
'userName' => 'Alice', // 虽然数据库是 user_name,但程序中常用驼峰
];版权所有
版权归属:念宇
