(三)SQL语句
来源:互联网 发布:宇喜多秀家数据 编辑:程序博客网 时间:2024/06/06 21:00
1:不要使用count(列名)或count(常量)来替代count(*),count(*)是SQL92定义的标准统计行数的语法,跟数据库无关,根null和非null无关。说明:count(*)会统计值为null的行,而count(列名)不会统计此列为null的值。
2:count(distinct col)计算该列除null之外不重复的行数,注意count(distinct col1, col2),如果其中一列全为null,那么即使另一列有不同的值,也返回0。
3:当某一列的值全为null,count(col)的返回结果为0,但sum(col)的返回结果为null,因此使用sum()时需要注意NPE问题。正例:可以使用如下方式来避免sum的NPE问题,SELECT IF(ISNULL(SUM(g)), 0, SUM(g)) FROM table;
4:使用ISNULL()来判断是否为NULL值。说明:NULL与任何值的直接比较都为null。
1:NULL<>NULL的返回结果是NULL,而不是false。
2:NULL=NULL的返回结果是NULL,而不是true。
3:NULL<>1的返回结果是NULL,而不是true。
5:在代码中使用分页查询逻辑时,若count为0时应该直接返回,避免执行后面的分页语句。
6:不得使用外键与级联,一切外键概念必须在应用层解决。
说明:以学生和成绩为例,学生表中的student_id是主键,那么成绩表中的student_id则为外键。如果更新学生表中的student_id,同时触发成绩表中的student_id更新,即为级联更新。外键与级联更新适用于单机低并发,不适合于分布式,高并发集群;级联更新是强阻塞,存在数据库更新风暴的风险;外键影响数据库的插入速度。
7:进制使用存储过程,存储过程难易调试和扩展,更没有移植性。
8:数据订正时,删除和修改记录时,要先select,避免出现误删除,确认无误才能执行更新语句。
9:in操作能避免就避免,若实在避免不了,需要仔细评估in后边的集合元素数量,控制在1000个以内。
10:如果有全球化需要,所有的字符和存储表示,均已 utf-8编码。
11:TRUNCATE TABLE比DELETE速度快,且实用的系统和事物日志资源较少,但TRUNCATE无事物且不触发trigger,有可能造成事故,故不建议在代码中使用此语句。TRUNCATE TABLE与不带where字句的delete功能相同。
- sql语句(三)
- (三)SQL语句
- SQL语句(三)
- sql 语句大全(三)
- 经典SQL语句大全(三)
- SQL语句经典大全(三)技巧
- 经典SQL语句大全(三)
- sql语句的使用(三)
- Mysql优化(三)sql语句优化
- SQL语句积累(三)
- Sql语句练习三
- SQL语句基础教程(三)
- SQL 语句汇总(三)
- 三、动态SQL语句
- 三、动态SQL语句
- 三、动态SQL语句
- 三、动态SQL语句
- 三、动态SQL语句
- makefile(Android.mk)打印变量方法
- The Stack Is An Implementation Detail, Part Two
- 字符串数组中查找固定字符串
- 用python实现aes ECB/CBC/CTR/CCM 的可执行文件
- java中的类型依赖
- (三)SQL语句
- Java开发中的23种设计模式详解
- lsof笔记
- Oracle12C--动态SQL(60)
- IDEA破解 2017 IDEA l激活(测试可用)
- C++如何判断一个string字符串,是否是数字
- Hadoop Protobuf RPC 调用说明
- springmvc常用注解
- Toast的常用与不常用功能