19.Oracle 中count(1) 、count(*) 和count(列名) 函数的区别

count(1) and count(字段)

两者的主要区别是

  • count(1) 会统计表中的所有的记录数,包含字段为null 的记录。
  • count(字段) 会统计该字段在表中出现的次数,忽略字段为null 的情况。

即不统计字段为null 的记录。

count(*) 和 count(1)和count(列名)区别

执行效果上:

  • count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略为NULL的值。
  • count(1)包括了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略为NULL的值。
  • count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是指空字符串或者0,而是表示null)的计数,即某个字段值为NULL时,不统计

count()函数

1、count(*)将返回表格中所有存在的行的总数包括值为null的行,然而count(列名)将返回表格中除 去null以外的所有行的总数(有默认值的列也会被计入)

2、distinct 列名,得到的结果将是除去值为null和重复数据后的结果

sql 复制代码
1  -- 创建test表
 2  SQL> create table test
 3  (
 4  ename varchar2(10),
 5  sal number(4)
 6  );
 7 
 8 -- 向test表中插入数据
 9 SQL> insert into test values('fxe1',90);
10 SQL> insert into test(ename) values('fxe2');
11 SQL> insert into test(ename) values('fxe3');
12 SQL> insert into test(ename) values('fxe4');
13 SQL> insert into test values('fxe5',80);
14 SQL> insert into test values('fxe6',80);
15 
16 SQL> select * from test; -- 查询test表中的所有数据
17 ENAME      SAL
18 ---------- ----------
19 fxe1        90
20 fxe2
21 fxe3
22 fxe4
23 fxe5        80
24 fxe6        80
25 ---------- ----------26
27 SQL> select count(*) from test;  -- count(*):包含NULL,一共6条记录
28 COUNT(*)
29 ----------
30 6        
31 
32 SQL> select count(1) from test;  -- count(1):包含NULL,一共6条记录,和count(*)的结果一样
33 COUNT(1)
34 ----------
35 6       
36 
37 SQL> select count(sal) from test;  -- count(列名):不包含NULL,但包含重复值项,一共3条记录
38 COUNT(SAL)
39 ----------
40 3              
41 
42 SQL> select count(distinct sal) from test;  -- count(列名):不包含NULL,去重"count(distinct sal)",一共2条记录
43 COUNT(DISTINCTSAL)
44 ------------------
45 2              
46 
47 SQL> select distinct sal from test;
48 SAL
49 ----------
50 80
51 90
相关推荐
不对法36 分钟前
navicat pg库安装mysql fdw 外表扩展
数据库·mysql
Ai 编码助手2 小时前
MySQL缓存参数如何优化与表结构如何优化才算是最大性能的优化
数据库·mysql·缓存
PGCCC2 小时前
【PGCCC】Postgresql slru 缓存和存储
数据库·缓存·postgresql
敲代码的飞2 小时前
短视频矩阵系统的源码, OEM贴牌源码
大数据·c语言·数据库·人工智能·矩阵
卷心菜是俺2 小时前
分布式数据库中间件mycat
数据库·分布式·中间件
萝卜兽编程2 小时前
MySQL数据库专栏(五)连接MySQL数据库C API篇
c语言·开发语言·数据库·mysql
小菜日记^_^3 小时前
增删改查基础项目总结
java·数据库·spring boot·后端·spring·servlet·tomcat
说书客啊3 小时前
计算机毕业设计 | SpringBoot咖啡商城 购物采买平台 后台管理软件(附源码)
java·数据库·人工智能·spring boot·后端·毕业设计·课程设计
IT闫3 小时前
【MySQL】——数据库恢复技术
数据库·mysql
ShareBeHappy_Qin3 小时前
MySQL —— Innodb 索引数据结构
数据结构·数据库·mysql·innodb索引数据结构