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)
上一篇 2022年4月22日 下午11:40
下一篇 2022年4月22日 下午11:40


相关推荐

  • jenkins自定义构建参数_git怎么切换分支

    jenkins自定义构建参数_git怎么切换分支前言当我们的自动化项目越来越多的时候,在代码仓库会提交不同的分支来管理,在用jenkins来构建的时候,我们希望能通过参数化构建git仓库的分支。下载安装GitParameter插件系统管理-

    2022年7月31日
    64
  • javascript倒置再次被否定作用

    javascript倒置再次被否定作用

    2022年1月11日
    48
  • PS套索工具抠图及快捷键[通俗易懂]

    PS套索工具抠图及快捷键[通俗易懂]一、首先打开Photoshop,并打开一张所需的要抠图的文件,并按Ctrl+J复制一层二、套索工具在工具栏的上方,快捷键为L。鼠标点击工具栏选择套索工具,或按快捷键L选择,套索工具有三个子工具菜单,套索,多边形套索和磁性套索1.普通套索工具。这个工具时根据操作者控制鼠标的路径来选取选取的,且精度不易控制,完全靠制作者的手法来控制精度我们只要选择这个工具,然后按着鼠标左键开始跟着鼠标轨迹把选取描绘出来,最后松开鼠标,即可完成2.多边形套索工具。适合选取比较规则的几何图形首先点区图片要扣取的一

    2022年6月22日
    61
  • chatgptai智能体怎么创建

    chatgptai智能体怎么创建

    2026年3月16日
    2
  • 如何求a类不确定度_不确定度a类分量与随机误差相对应

    如何求a类不确定度_不确定度a类分量与随机误差相对应1.计算A类不确定度u(a):某一工业容器温度控制要求为10℃,用温度计连续。A类不确定度的计算方法n=6时,u(a)=S(x)数据平均值设为q用贝塞尔公式S(x)*S(x)=[(X1-q)*(X1-q)+(X2-q)*(X2-q).+(X6-q)(X6-q)]/(6-1)可求出a类不确定度b类Ub就是0.6."A类不确定度"和"B类不确定度"的区别在于测定方法、输入量、系统效应的不…

    2026年2月26日
    5
  • ResNet 18 的结构解读「建议收藏」

    ResNet 18 的结构解读「建议收藏」现在很多网络结构都是一个命名+数字,比如(ResNet18),数字代表的是网络的深度,也就是说ResNet18网络就是18层的吗?其实这里的18指定的是带有权重的18层,包括卷积层和全连接层,不包括池化层和BN层。下面先贴出ResNet论文中给出的结构列表。对Pytorch中ResNet18网络的源码分析(这里),我画出了大致的网络结构图。可以看出,数字18=17个…

    2022年5月26日
    44

发表回复

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

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