您的位置:首页 > 数据库 > MySQL

MySQL设计规范

2015-08-21 15:57 211 查看

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

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

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

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

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

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

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


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

三、写的代码中SQL关键字使用大写作为规范

比如 SELECT sth FROM theorder WHERE swhere ORDER BY id DESC; 这样用大写关键字写可以非常直观地分辨出语句的段落,而使用小写的话则分辨起来比较费神,也容易看错。况且,网上的参考资料也绝大部分是使用大写关键字,突然看到小写的话觉得比较突兀,而大小写混用的话情况会遭。

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

like(喜欢数,sql关键字为模糊查询),order(订单,sql关键字为排序),等等这些很可能被误用而导致一些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 编码格式。

六、服务器上每个网站要用独立的SQL用户

比如 batsing.com 就使用 batsing 用户,设置单独的密码,而且数据库权限为只一个数据库,不能操作其它不相关数据库。最好设置登录权限为仅本地和限定几个IP。

没什么特别重大的事情不要以 root 用户登录和使用mysql
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: