MySQL设计规范

一、表名 不要用大小写混合(即驼峰式),应该全部用小写,使用下划线作为连接符。

Linux中表名默认区分大小写,Windows中默认不区分(全部转为小写),相互间的导入导出会有问题!!

> 使Linux下MySQL不区分大小写
1、ROOT用户登录,vi /etc/my.cnf
2、找到 [mysqld],在里面加入一行 lower_case_table_names=1
3、重启数据库 service mysqld restart

在Thinkphp中,M('表名')方法,大小写这种形式的表名会自动被转为下划线形式而导致无法读取,只能使用 M() 空方法来操作数据库,会给后面的开发带来诸多不便。

二、列名/字段名 不建议用大小写混合(即驼峰式),应该全部用小写,使用下划线作为连接符。

因为在Thinkphp 3.2.3中,为了规范起见,默认配置下所有的查询值返回字段名为小写。当然这个可以在config.php配置回来区分大小写,但还是建议统一采用小写加下划线的形式。

    //兼容处理:列名返回时区分大小写,默认是全部为小写
    'DB_PARAMS'=>array(\PDO::ATTR_CASE => \PDO::CASE_NATURAL),

ThinkPHP参考网址:http://www.thinkphp.cn/topic/26803.html

三、注意SQL的关键字非常多

like(喜欢数,sql关键字为模糊查询),order(订单,sql关键字为排序),等等这些很可能被误用而导致一些SQL语句不能执行。设计时注意规避,包括表名、列名。

四、让 MySQL where 查询条件区分大小写:

根本原因:MySQL一般的数据库编码格式都是 utf8,utf8_general_ci。

其中的ci是 case insensitive 的意思,即大小写不敏感!所以,查询的时候所用的条件是不区分大小写的。

比如:

SELECT * FROM member WHERE name='batsing'

会把名为 batsing 和 Batsing 等大小写不一样的都选了出来

 

解决方案1:在查询语句中的末尾加上  collate utf8_bin,即是指定该条语句区分大小写。但有些会报错,要自己多调试。如 :

SELECT * FROM member WHERE name='batsing' collate utf8_bin

 

解决方案2:修改数据库类型,可以修改整个数据库,也可以修改单个表,这个要根据自己的项目来决定。

比如改为 utf8_bin 编码格式。

你可能感兴趣的:(MySQL设计规范)