Navicat使用教程:获取MySQL中的行数(第1部分)
下载Navicat Premium最新版本
Navicat Premium是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL、Oracle及PostgreSQL数据库,让管理不同类型的数据库更加的方便。
在MySQL中有几种获取行数的方法。一些数据库管理产品提供数据库统计信息,如表大小,但也可以使用直接的SQL来完成。在这篇文章中,我们将使用本机COUNT()函数来检索MySQL数据库中一个表或视图中的行数。在第2部分中,我们将学习如何从多个表甚至从数据库中的所有表中获取行计数。
COUNT()函数的多种形式
您可能已经知道COUNT()函数返回表中的行数。但是还有一点要比这个多,因为COUNT()函数可以用来计算表中的所有行,或者只计算那些符合特定条件的行。秘密在函数签名中,它有几种形式:COUNT(*)、COUNT(expression)和COUNT(DISTINCT expression)。
在每种情况下,COUNT()都返回一个BIGINT,该BIGINT包含匹配行的数量,如果未找到匹配行,则返回零。
对表中的所有行进行计数
要对表中的所有行进行计数,无论它们是否包含空值,请使用COUNT(*)。该形式的COUNT()函数基本上返回由SELECT语句返回的结果集中的行数。
1
SELECT COUNT(*) FROM cities;
像上面这样的语句,在没有WHERE子句或附加列的情况下调用COUNT(*)函数,将在MyISAM表上执行得非常快,因为行数存储在information_schema数据库的Tables表的Table_Rows列中。
对于事务性存储引擎(如InnoDB),存储精确的行计数是有问题的,因为InnoDB不在表中保留行的内部计数。如果是这样,并发事务可能会同时“看到”不同数量的行。因此,SELECT COUNT(*)语句只对当前事务可见的行进行计数。这意味着,在繁重的工作负载期间使用COUNT(*) 运行查询可能会导致数字稍微不准确。
只对具有COUNT(expr)的非空行进行计数
不向COUNT()传递任何内容将执行函数的COUNT(expr)版本,但sans参数除外。这样调用COUNT()只返回不包含空值的行。例如,假设我们有一个名为code_values的简单表:
public ushort TransactionIdentifier { get; set; }
public ushort ProtocolIdentifier { get; set; }
public ushort Length { get; set; }
public short UnitIdentifier { get; set; }
public ModbusHeader(IByteBuffer buffer)
{
TransactionIdentifier = buffer.ReadUnsignedShort();
ProtocolIdentifier = buffer.ReadUnsignedShort();
Length = buffer.ReadUnsignedShort();
UnitIdentifier = buffer.ReadByte();
}
public ModbusHeader(www.fengshen157.com/ ushort transactionIdentifier, short unitIdentifier)
: this(transactionIdentifier, 0x0000,www.gcyL157.com unitIdentifier) // for modbus protocol:www.michenggw.com Protocol Identifier = 0x00
{
}
private ModbusHeader(www.dasheng178.com ushort www.mcyllpt.com transactionIdentifier, ushort protocolIdentifier, short unitIdentifier)
{
TransactionIdentifier = transactionIdentifier;
ProtocolIdentifier = protocolIdentifier;
UnitIdentifier = unitIdentifier;
}
public IByteBuffer Encode()
{
IByteBuffer buffer = Unpooled.Buffer();
buffer.WriteUnsignedShort(TransactionIdentifier);
buffer.WriteUnsignedShort(ProtocolIdentifier);
buffer.WriteUnsignedShort(Length);
buffer.WriteByte(UnitIdentifier);
code_values
+-------+
| code |
+-------+
| 1 |
+-------+
| |
+-------+
| |
+-------+
| 4 |
+-------+
从表中选择COUNT()将返回2,即使有4行:
SELECT COUNT(*) FROM code_values;
+---------+
| COUNT() |
+---------+
| 2 |
+---------+
请注意,很少使用此版本的COUNT()函数,因为在规范化的数据库中,空行不应该是问题,这种情况只有在表没有主键时才会发生。在大多数情况下,COUNT(*)都可以正常工作。
当然,COUNT(expr)确实接受正确的表达式。下面是另一个同样获取空行和非空行的查询:
1
SELECT COUNT(IFNULL(code, 1)) FROM code_values;
计算非空值
COUNT函数的COUNT(expr)版本还接受单个列名,其效果是COUNT(column_name)将返回column_name不为空的记录数。因此,以下SELECT查询将获取描述列包含非空值的行数:
1
SELECT COUNT(description) FROM widgets;
在第2部分中,我们将学习如何使用COUNT(DISTINCT expression)签名以及如何从多个表中获取行计数。
转载于:https://www.cnblogs.com/qwangxiao/p/10369952.html
Navicat使用教程:获取MySQL中的行数(第1部分)相关推荐
- java中获取文件总行数_关于java:如何以有效的方式获取文件中的行数?
本问题已经有最佳答案,请猛点这里访问. 我有一个大文件. 它包括大约3.000-20.000行. 如何使用Java获取文件中的行总数? 从你的评论到答案来判断,你要找的词是"有效的" ...
- jdbc获取结果行数_如何获取JDBC中的行数?
I've executed a JDBC query to obtain a resultset. Before iterating over it, I'd like to quickly find ...
- jdbc获取结果行数,如何获取JDBC中的行数?
I've executed a JDBC query to obtain a resultset. Before iterating over it, I'd like to quickly find ...
- MySQL中的行级锁,表级锁,页级锁
数据库锁是数据库系统中非常重要的一个概念,本文将深入分析数据库中的锁相关知识,您可点击下方音频收听或直接查看文稿中的文字. 在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并 ...
- Mysql中的行级锁、表级锁、页级锁
转载自 Mysql中的行级锁.表级锁.页级锁 在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足. 在数据库的锁机制中介绍过,在DBMS中,可以按 ...
- mysql java 获取周_Java中获取Mysql中datetime类型的数据
由于Java中的日期类型只有Date类型,而Mysql中即有date型,又有datetime型,当我们想要在java中获取Mysql中datetime类型的数据或向Mysql数据库中插入datetim ...
- 如何合并mysql中的行_如何在MySQL中合并行?
要合并MySQL中的行,请使用GROUP_CONCAT(). 让我们首先创建一个表-mysql> create table DemoTable734 ( Id int, Name varchar ...
- python nums函数获取结果记录集有多少行记录_PHP mysqli_num_rows():获取查询结果的行数...
在 PHP 中,想要获取由 SELECT 语句查询到的结果集中有多少条数据的话,则需要使用 mysqli_num_rows() 函数来实现.首先我们来看一下该函数的语法结构: 面向对象风格的写法 $m ...
- python excel行数_Python:打开现有的Excel文件并计算工作表中的行数
我有一个现有的Excel文件.我想加载那个并获取此工作表中的行数,以便稍后写入此工作表的下一行并再次保存.我收到以下错误消息: AttributeError: 'Worksheet' object h ...
- excel总行数 java_计算Excel工作表列中的行数(提供的Java代码)
参考我之前的问题 How to calculate number of rows in a column of Excel document using Java,我能够计算给定表格中的总列数.现在, ...
最新文章
- 文件上传之Springmvc方式上传原理分析
- 【附全部代码+图片】使用HTML5+CSS3绘制HTML5的logo——Web前端系列学习笔记
- ZooKeeper学习第一期---Zookeeper简单介绍(转)
- mysql win10 无法配置文件_MySQL设置文件无法更改的处理方案详细说明(Win10)
- 将android中如何调整Toast位置?
- 模板类的声明和定义要放在同一个文件
- 公众号 多服务器配置_多领国微信官方公众号在线
- 扇贝有道180926每日一句
- 【图像直线拟合】基于matlab最小二乘法图像直线拟合【含Matlab源码 100期】
- ajax 循环php数组,使用Jquery,AJAX,PHP和数组进行实时更新
- 阿拉伯文字库 阿拉伯语字库 阿拉伯 字库 变形组合算法
- Springboot创建webService接口时的cxfconfi文件报错出现DispatcherServletPath不能找到
- gps天线拆解图片_GPS天线原理解析
- border缩写属性
- 也就整了一万字的「数据指标体系」指南。
- 计算机为何引入16进制,计算机内存地址为什么要用16进制数来表示
- 水星无线路由器设置虚拟服务器,水星路由器无线中继设置步骤
- 双非本科生进大厂,而我还在底层默默地爬树(上)
- Gym 102028D Keiichi Tsuchiya the Drift King(2018 ICPC 焦作站 D 题) 计算几何
- 【邻接表】77 邻接表:顶点u的下一个邻接点