如何在MySQL中查看表的方法

使用 SHOW TABLES 查看当前数据库表的列表并运行 SHOW TABLES; 指定要查看表的数据库并运行 SHOW TABLES FROM db_name; 要过滤表名称,请运行 SHOW TABLES LIKE 'pattern%'; 要查看表结构详细信息,请运行 SHOW COLUMNS FROM table_name; 使用 DESCRIBE 表名。
快速查看列信息。
使用 SELECT FROM information_schema.tables WHERE table_schema='db_name';查询数据库中的所有表。
使用 SELECT FROM information_schema.columns WHERE table_schema='db_name' AND table_name='table_name';检查列详细信息 要过滤列名,请不要使用 DESCRIBE,而使用 SHOW COLUMNS。
使用 INFORMATION_SCHEMA 执行自动化任务。
为了可视化这一点,请使用 MySQL Workbench 工具。

MySQL查询数据库表记录数

他们问了非常详细的问题。
事实上,MySQL中表记录的数量取决于存储引擎。
让我告诉你我遇到的陷阱和我的现实经历。

上周,一位客户问我为什么使用 information_schema 和直接使用 COUNT() 检查同一张表有很大的区别。
我一看,简直是MyISAM和InnoDB混合体的老古董了。
您可以直接检查 table_rows 并将其用作精确值。

首先我们来谈谈MyISAM。
这个老头简单粗暴:
直接查看information_schema.tables的table_rows就可以了。
比如我们2 02 3 年在上海的一个商场测试的,表只有几百条数据。
如果你检查 table_name AS '表名', table_rows AS '记录数' FROM information_schema.tables WHERE table_schema='testdb' ,出来的 table_rows 与 COUNT() 完全相同,并且速度非常快。
但注意:虽然MyISAM速度很快,但它早已被InnoDB取代,在实际中不宜使用。

目前InnoDB是主流,但是比较麻烦。

1 .官方建议是估计值。
information_schema.tables 中的 table_rows 是 InnoDB 估计值。
我们测试了2 02 2 年在深圳的一张1 0000条数据的InnoDB表,直接看table_rows,是9 000多条,实际COUNT()是1 03 00多条。
相差近1 0%,足够喝一整壶了。
看看这个 data_length / avg_row_length 方法。
我在2 02 3 年北京的一个项目上尝试过,表的数据大小为5 00MB,计算出平均行长为5 00字节。
划分后,我们得到 1 000 万行。
实际数量为9 8 0万,误差幅度为5 %。
比直接使用 table_rows 更可靠。
但这不是确切的值。

2 你真的想精确吗?您需要使用以下脚本: 我在2 02 1 年广州的一个老项目中学到了这一点。
如果你有很多表,这就是你实际需要做的。
首先,生成 SQL,复制它,然后在另一个表上运行它。
不过,我尝试了一下。
如果有几十张表的话,需要半天的时间才能执行完成。
我不会在生产环境中这样做。

3 .性能坑: 对于大型表,直接使用 COUNT()。
我在2 02 2 年上海的一个电商项目中亲眼目睹了这一点。
该表有5 00万条条目。
花了1 0多分钟才完成查表并锁定。
运维端一度处于翻墙边缘。
因此,建议每晚执行此类操作或使用 SELECT COUNT() FROM table_name READ LOCK;这虽然缓慢但安全。

我的建议可以概括如下:
轻松检查秤。
就用information_schema中的table_rows,大概了解一下,不用当真。
统计准确吗? :如果表很少,请使用 COUNT()。
如果您有大量表,请编写脚本来批量运行它们或使用工具(例如pt-query-digest)来分析它们。
2 02 3 年我在成都教了一个新手如何使用这个方法,发现它比手动复制SQL要容易得多。
长期监控:必须与业务结合。
例如,我是一家电子商务公司,有一天我注意到用户表table_rows突然增加了5 0%。
所以你需要检查是否有任何错误。
在这种情况下,应定期运行完整的统计(例如,清晨)。

如果只是想大概了解一下,可以使用方法4 ,以table_rows为参考,看看data_length和index_length可以快速了解表有多大。
如果您想要真正精确,请使用方法 2 ,但要做好准备。
跑步可能会致命。

mysql中查看表的语句

等等,昨天调试电商订单表的时候,突然发现用DESCRIBE订单表看字段类型,发现有一个金额字段明明设计为DECIMAL(1 0,2 ),但实际数据中却混杂了多个整数。
当时我想知道这是否可能是因为导入特定批次时脚本的准确性错误。
再看一下表定义,其实没有什么问题。
此时我使用 SHOW CREATE TABLE 对表进行排序。
果然,我看到默认值里有注释“Default 0”。
即使没有生效,至少我知道了历史原因。
生产库中的数据问题有时会通过这些明显的细节暴露出来。