Java开发手册之SQL语句

Java开发手册之SQL语句Java开发手册之SQL语句

大家好,又见面了,我是你们的朋友全栈君。

  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编码,注意字符统计函数的区别。
    说明
    SELECT LENGTH("轻松工作"); 返回为12
    SELECT CHARACTER_LENGTH("轻松工作"); 返回为4
    如果需要存储表情,那么选择utfmb4来进行存储,注意它与utf-8编码的区别。
  11. 【参考】 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少,但TRUNCATE 无事务且不触发trigger,有可能造成事故,故不建议在开发代码中使用此语句。
    说明TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106517.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java 继承是什么_java中继承指的是什么

    java 继承是什么_java中继承指的是什么java中继承指的是什么发布时间:2020-08-2014:46:11来源:亿速云阅读:55作者:小新这篇文章将为大家详细讲解有关java中继承指的是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。java中继承是什么?Java中的继承是一个对象获取父对象的所有属性和行为的机制。它是面向对象编程系统(OOP)的重要组成部分。Java中继承的思想是,创建基于现…

    2022年7月7日
    19
  • 计算机组成原理知识点总结(第2篇 第3、4章)[通俗易懂]

    计算机组成原理知识点总结(第2篇 第3、4章)[通俗易懂]基于计算机组成原理(第2版)唐朔飞编著第2篇计算机系统的硬件结构 第3章系统总线总线是连接多个部件(模块)的信息传输线,是各部件共享的传输介质。在某一时刻只允许有一个部件向总线发送信息,但多个部件可以同时从总线上接收相同的信息。总线通信分为异步和同步两大类。总线的定义:为多个功能组件服务的一组公用信息线。按功能分类:地址总线、数据总线、控制总线。按连接部件不同分类:片内总线、系…

    2022年5月10日
    32
  • MATLAB心形图_心形曲线函数表达式

    MATLAB心形图_心形曲线函数表达式收藏几个经典的函数,用来当作数学优化方法求解的例子。再收藏几个有趣的函数图像。1平面心形图像经过网上搜索,平面坐标系中,下面函数最想心形图像,而且函数形式简单,不需要分段。改变右面的数值可以变化心形图像的大小。>ezplot(‘x^2+(y-(x^2)^(1/3))^2=9’)

    2022年9月5日
    2
  • 线性回归目标函数—–最小二乘法推导过程「建议收藏」

    线性回归目标函数—–最小二乘法推导过程「建议收藏」在学习线性回归的时候

    2022年5月16日
    41
  • pycharm 2021.9.2 激活码_在线激活

    (pycharm 2021.9.2 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html1S…

    2022年3月27日
    105
  • FormatDateTime说解[通俗易懂]

    描述返回一个日期或时间格式的表达式。语法FormatDateTime(Date[,NamedFormat])FormatDateTime函数语法有如下几部分:部分描述Date必需的。要被格式化的日期表达式。NamedFormat可选的。数字值,表示日期/时间所使用的格式。如果忽略该值,则使用vbGeneralDate。设置值N…

    2022年4月10日
    55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号