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
相关文章推荐
- MySql 5.6 数据单向同步详细步骤(亲测成功同步)
- mysql日志类型分析
- mysql--------InnoDB和MyISAM的区别
- mysql pattern matching
- 辛星浅析MySQL中的last_insert_id()
- mysql的insert on duplicate与replace into的一些研究
- mysql游标错误
- 解决ubuntu server mysql load data infile 导入本地文件ERROR 1148 (42000)错误。
- MySQL5.5主从同步配置及问题
- mysql语句在node.js中的写法
- MySQL不支持的特性
- MySQL 远程连接配置和排
- mac使用终端运行mysql,mysql终端,mysql mac,mysql目录,mysql路径
- mysql 修改root密码 admin数据库消失解决方法
- mysql 命令大全
- mysql主从备份读写分享
- 1130 - Host ‘win7' is not allowed to connect to this mysql server
- 关于mysql inner join 连接查询的优化
- 配置免安装版的mysql
- MySQL 批量导入 csv 文件