mysql-使用NULL的恩恩怨怨

1、不要使用 count(列名)或 count(常量)来替代 count(*), count(*)就是 SQL92 定义的标准统计行数的语法,跟数据库无关,跟 NULL 和非 NULL 无关。

说明: count(*)会统计值为 NULL 的行,而 count(列名)不会统计此列为 NULL 值的行。

2、count(distinct col) 计算该列除 NULL 之外的不重复数量。注意 count(distinct col1, col2) 如果其中一列全为 NULL,那么即使另一列有不同的值,也返回为 0。

 说明:distinct会统计为null的行,只是count不统计null的行

3、当某一列的值全是 NULL 时, count(col)的返回结果为 0,但 sum(col)的返回结果为NULL,因此使用 sum()时需注意 NPE 问题。

正例: 可以使用如下方式来避免 sum 的 NPE(Null Point Exception) 问题: 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 应直接返回,避免执行后面的分页语句

总结:珍爱生命,远离null

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mysql-connector-java是Java语言操作MySQL数据库的驱动程序。您可以按照以下步骤使用mysql-connector-java: 1. 下载mysql-connector-java jar文件,可以从MySQL官网或Maven仓库中下载。 2. 将mysql-connector-java jar文件添加到Java项目中的classpath中。您可以手动将文件复制到项目的lib目录中,或者使用构建工具(如Maven)自动下载和添加依赖项。 3. 在Java代码中使用如下的代码加载并连接MySQL数据库: ```java import java.sql.*; public class MySQLConnector { public static void main(String[] args) { Connection conn = null; try { // 加载mysql-connector-java驱动程序 Class.forName("com.mysql.jdbc.Driver"); // 建立数据库连接 String dbUrl = "jdbc:mysql://localhost:3306/mydb"; String user = "root"; String password = "mypassword"; conn = DriverManager.getConnection(dbUrl, user, password); // 执行SQL语句 Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM mytable"); // 处理查询结果 while (rs.next()) { System.out.println(rs.getString("mycolumn")); } // 关闭数据库连接 rs.close(); stmt.close(); conn.close(); } catch (SQLException ex) { ex.printStackTrace(); } catch (ClassNotFoundException ex) { ex.printStackTrace(); } } } ``` 在上面的代码中,我们首先通过Class.forName()方法加载mysql-connector-java驱动程序。然后,我们使用DriverManager.getConnection()方法建立与MySQL数据库的连接。接下来,我们创建一个Statement对象并使用它执行查询。最后,我们处理查询结果并关闭数据库连接。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值