MYSQL数据库开发规范
来源:互联网 发布:软件开发网站 编辑:程序博客网 时间:2024/05/29 11:30
自己总结的mysql开发规范,够用就行了。
1、表
1.1 表必须要有主键,主键使用自动递增,类型为int。
1.2 表名使用有意义的英文单词,可用下划线分割。如需使用缩写时,不可使用意义不明的缩写。
1.3 需要多表join的字段,数据类型保持绝对一致。
1.4 字段命名时需要加上表名,确保所有表中的字段都是唯一的。如字段中有关联其他表的字段,则字段名和关联表的字段一致即可。
1.5 所有字段必须写有注释。
1.6 用varchar类型存储时间或日期。
1.7 尽可能把字段定义为非空。
1.8 字段的字符集设置为utf8,排序规则设置为utf8_general_ci。
1.9 表名和字段名统一使用小写。
1.10 不要在字段上建立外键约束,约束请从程序上进行控制。
1.11 建立合理的冗余字段会使查询更高效。如:表中有单价和数量字段,总金额是字段算出来的,如果建立总金额字段,查询时就避免了转换的过程(用空间换时间)。
2、索引
2.1 索引以字段名_ 索引类型方式命名,如:staff_status_normal
2.2 表中的num字段必须建立索引。
2.3 页面中的查询选项,如下拉框、按编码查询,需要在这些字段上建立索引,模糊查询字段不需要建立索引。
2.4 若A表的a字段被B表关联,则A表的a需要建立索引。
3、SQL
3.1 给每张表都起一个别名,这样做可以增加可读性、在客户端中写SQL时可以很方面的点出来字段还可以带来性能的提升。如:select a.id fromtable a
3.2 不需要在表名前增加数据库前缀,这样做没有任何意义。如:cmdb.sn_staff
3.3 使用now()而不使用sysdate()是个好习惯。如果系统中存在主从数据库,使用sysdate()会导致主从数据库的数据不一致。
3.4 不要写select * 这样的代码,指定需要的字段名。
3.5 避免在where子句中使用函数,这样会让使用函数字段的索引失效。
如:select a.name from student awhere left(0,a.num)=’abc’
3.6不要使用count(列名)来替代count(*),count(常量)和count(*)的性能几乎一致。即使列名加了索引count(column_name)也比count(*)慢,而且count(column_name)不计算为null的行数。
3.7 注意null与任何值逻辑运算符计算结果都为null,并不会返回true或者false,所以判断字段是否为空是请使用is null或者is not null。
3.8 尽量使SQL格式化,好的编码风格会让程序容易排错和一目了然。
3.9 全模糊查询无法使用索引,请尽可能避免。使用右模糊查询可以走索引,
如:select a.num from student a where a.name like ‘张%’。
3.10 使用not in时请确保子查询列中没有null值,否则请用not exists代替,否则会产生严重的bug。
如:表a,表b,SQL:selecta_string from a where a_string not in (select b_string from b),预期返回,实际没有任何的返回值。
使用not exists可正确返回结果:select a_string from awhere not exists (select b_string from b where a.a_string=b.b_string)。
3.11 使用not in不会返回字段为null的数据。select * from t1 where t1.name not in ('A'),假如有一条数据的name为null,那么不会返回这条数据。
3.12 int占4字节,范围是[-2147483648,2147483647],int(10)并不会影响这个范围。
- mysql数据库开发规范
- mysql数据库开发规范
- MySQL数据库开发规范
- MySQL数据库开发规范
- MYSQL数据库开发规范
- Mysql 数据库开发规范
- MYSQL数据库开发规范
- MySQL数据库编码开发规范
- MySQL数据库编程开发规范
- MySQL 数据库规范--开发篇
- MySQL 数据库规范--开发篇
- MySQL 数据库规范--开发篇
- MySQL数据库SQL开发规范
- MySQL数据库设计与开发规范
- MySQL实战(七)数据库开发规范
- Mysql数据库设计规范之三数据库SQL开发规范
- MYSQL数据库规范-字段规范
- MYSQL 数据库总体规范
- “安全协议自动验证技术服务与工具开发”之PKI
- hdoj 1037 Keep on Truckin'(巨水无比)
- Android_xrecyclerview
- QMUI Android UI 框架正式发布、提高 Android UI 开发效率的 UI 库
- 阿里资深专家专访:流量清洗与人工智能
- MYSQL数据库开发规范
- 二叉链表中序遍历非递归算法
- 【Java】12.Semaphore使用与分析
- SRS 代码分析【RTMP Chunck数据发送】
- 微信公众号的联系电话,点击能够直接拨打
- 前端开发微信小程序需要注意的那些事儿
- LeetCode.151 Reverse Words in a String(单词切分和List转成数组)
- java生成UUID的方法总结
- 14-CSS3提高 重点部分 盒模型 浮动