MySQL开发注意事项(阿里巴巴开发手册)

1. 建表规约

1.1 表示是否概念的字段约束

必须使用is_xxx的方式命名,数据类型是unsigned tinyint( 1 表示是,0 表示否 )

	注意:任何字段如果是非负数,必须是unsigned
1.2 表名、字段名约束

对于表名、字段名必须使用小写字母或数字,禁止数字开头,禁止两个下划线之间只出现数字,而且表名不能使用复数名称

1.3 禁用保留字,比如:desc、range、match等等
1.4 索引名约束
索引名名称约束
主键索引pk_字段名
唯一索引uk_字段名
普通索引idx_字段名
全文索引:InnoDB不支持,Myisam支持性能比较好,一般在char、varchar、text列上创建
1.5 小数类型约束

小数类型为decimal,禁止使用float和double

	原因:在存储的时候,float和double都存在精度损失的问题
	建议:存储数据的范围超过decimal的范围,建议将数据拆分为整数和小数分开进行存储 
1.6 如果存储的字符串长度几乎相等,使用char定长字符串类型

2. 索引规约

2.1 业务上具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引
	说明:建立唯一索引影响insert的数度可以忽略不记,但是建立唯一索引查找速度就会增加
2.2 超过三个表禁止join,需要join的字段,数据类型必须一致;多表关联查询时,保证被关联的字段需要有索引
2.3 在varchar字段上建立索引,必须指定索引长度,没必要对全字段建立索引
2.4 页面搜索严禁左模糊或者全模糊,如果需要请走搜索引擎来解决。

3. SQL语句

3.1 不要使用count(列名)或者count(常量)来替代count(*)
count(*)会统计值为NULL的行,而count(列)不会统计列为null值的行
3.2 count(distinct col)计算该列除NULL之外的重复行
	注意:count(distinct col1,col2)如果其中一列全为null,那么即使另一列有不同的值,也会返回0
3.3 当某一列的值全是NULL,count(col)返回结果为0但是sum(col)的返回结果为NULL
3.4 使用isnull()来判断是否为null值
说明:null与任何值的比较都为null
	1.null<>null返回值为null,而不是false
	2.null=null返回值为null,而不是true
	3.null<>1的返回结果是null,而不是true
3.5 代码写分页查询逻辑时,若count为0应直接返回,避免执行后面的分页语句
3.6 不得使用外键与级联,一切外键必须在应用层解决
3.7 禁止使用存储过程,存储过程难以调试和扩展,更没有移植性
3.8 数据订正(删除或者修改时)要先select,避免误删,确认无误在进行订正

4. ORM映射

4.1 在表查询的时候,一律不准使用 * 作为查询字段列表,需要哪些字段必须明确写明
4.2 POJO类的布尔属性不准加is,而数据库字段必须加is-,要求在resultMap中进行字段和属性之间的映射
4.3 不要用resultClass当返回参数,即使所有类属性名和数据库字段一一对应,也需要定义
4.4 sql.xml配置参数使用#{}
4.5 不允许直接拿HashMap与HashTable作为查询结果集的输出
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值