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)签名以及如何从多个表中获取行计数。
Navicat使用教程:获取MySQL中的行数(第1部分)的更多相关文章
- 【2017-06-29】在登录页面自动返回上次请求页面、Js获取table中的行数与列数
一.在登录页面自动返回上次请求页面 Request.UrlReferrer比如 if (Request.UrlReferrer != null) { //如果能获取来路地址 Response.Redi ...
- mysql获取表中数据行数
获取单个表的行数 使用count(*)或者count(1) SELECT count(1) AS count FROM table_name; 执行结果 获取两个表的行数 使用union组合每个sel ...
- MySQL中查询行数最多的表并且排序
#切换到schema use information_schema; #查询数据量最大的30张表 并排序 select table_name,table_rows from tables order ...
- Navicat使用教程:获取MySQL中的高级行数(第2部分)
Navicat Premium是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL.Oracle及PostgreSQL数据库,让管理不同类型的数据库更加的方便. 在上篇文章中,我 ...
- [数据库事务与锁]详解五: MySQL中的行级锁,表级锁,页级锁
注明: 本文转载自http://www.hollischuang.com/archives/914 在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的 ...
- 【数据库】数据库的锁机制,MySQL中的行级锁,表级锁,页级锁
转载:http://www.hollischuang.com/archives/914 数据库的读现象浅析中介绍过,在并发访问情况下,可能会出现脏读.不可重复读和幻读等读现象,为了应对这些问题,主流数 ...
- MySQL中的行级锁,表级锁,页级锁
在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足. 在数据库的锁机制中介绍过,在DBMS中,可以按照锁的粒度把数据库锁分为行级锁(INNODB引 ...
- 【转】MySQL中的行级锁,表级锁,页级锁
在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足. 在数据库的锁机制中介绍过,在DBMS中,可以按照锁的粒度把数据库锁分为行级锁(INNODB引 ...
- 转 MySQL中的行级锁,表级锁,页级锁
对mysql乐观锁.悲观锁.共享锁.排它锁.行锁.表锁概念的理解 转载. https://blog.csdn.net/puhaiyang/article/details/72284702 实验环境 ...
随机推荐
- fiddler抓包工具教程
Fiddler是一个蛮好用的抓包工具,可以将网络传输发送与接受的数据包进行截获.重发.编辑.转存等操作.也可以用来检测网络安全.反正好处多多,举之不尽呀!当年学习的时候也蛮费劲,一些蛮实用隐藏的小功能 ...
- [MIT Intro. to algo]Lecture 1: 课程介绍,算法优势,插入算法和归并算法分析,渐近符号
The theoretical study of computer program performance and resource useage. First, analysis and the ...
- 解决java读取大文件内存溢出问题
1. 传统方式:在内存中读取文件内容 读取文件行的标准方式是在内存中读取,Guava 和Apache Commons IO都提供了如下所示快速读取文件行的方法: Files.readLines(new ...
- HPCMS V9使用ajax方式提交表单
一.前台模板(注:需要引入jquery文件) <form id="myform" class="subscribe-form subscription" ...
- 你也可以手绘二维码(二)纠错码字算法:数论基础及伽罗瓦域GF(2^8)
摘要:本文讲解二维码纠错码字生成使用到的数学数论基础知识,伽罗瓦域(Galois Field)GF(2^8),这是手绘二维码填格子理论基础,不想深究可以直接跳过.同时数论基础也是 Hash 算法,RS ...
- MyBatis思维导图
1.初识框架技术 2.搭建MyBatis环境 3.掌握MyBatis的核心API 4.掌握MyBatis的核心配置文件:主要用于配置数据库连接和MyBatis运行时所需的各种特性 5.掌握SQL映射文 ...
- PHP中你应该知道的require()文件包含的正确用法
以前看一些PHP框架源码的时候,很奇怪在文件包含的时候,会用dirname(__FILE__)来拼凑文件路径,不知道这样做有什么好处,后来终于发现了其中的缘由. 我们来看一个简单的例子: 有a,b,c ...
- PHP 抽象类和接口区别
php中抽象类和接口的区别 1) 概念 面向对象的三大概念:封装,继承,多态 把属性和方法封装起来就是类. 一个类的属性和方法被另外的类复制就是继承,PHP里面的任何类都可以被继承,被继承的 ...
- 常用算法Java实现之希尔排序
希尔排序严格来说是基于插入排序的思想,又被称为缩小增量排序. 具体流程如下: 1.将包含n个元素的数组,分成n/2个数组序列,第一个数据和第n/2+1个数据为一对... 2.对每对数据进行比较和交换, ...
- 使用成员资格管理用户Membership
ASP.NET成员资格使您可以验证和管理Web应用程序的用户信息.它提供验证用户凭据,创建和修改成员资格用户以及管理用户设置(如密码和电子邮件地址)的功能. ASP.NET成员资格主要用于ASP.NE ...