MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで各テーブルの行数を調べるには?information_schema.tablesの使い方

MySQLでデータベース内の各テーブルのレコード数(行数)を調べたいときは、システムテーブル「information_schema.tables」を利用すると便利です。information_schemaにはテーブル名や行数といったメタデータが格納されており、SQLを1文実行するだけで全テーブルの行数を一覧表示できます。

行数を取得するための基本構文

SELECT table_name, table_rows
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'yourDatabaseName';
  • table_name … テーブルの名前
  • table_rows … そのテーブルの行数(概算値)
  • TABLE_SCHEMA … 調べたいデータベース名を指定します

実行例:「test」データベースの場合

ここでは、データベース名が「test」であるケースを実行してみましょう。次のクエリを実行すると、テーブル名とそれぞれの行数が一覧で出力されます。

mysql> SELECT table_name, table_rows
    -> FROM INFORMATION_SCHEMA.TABLES
    -> WHERE TABLE_SCHEMA = 'test';

実行結果は次のようになります(抜粋)。

+------------------------------------+------------+
| TABLE_NAME                         | TABLE_ROWS |
+------------------------------------+------------+
| _student_trackerdemo               |          0 |
| _studenttrackerdemo                |          0 |
| add30minutesdemo                   |          0 |
| addcolumn                          |          0 |
| addingcurrencysymboldemo           |          4 |
| addingdaysdemo                     |          8 |
| addoneday                          |          2 |
| agecalculatesdemo                  |          4 |
| agedemo                            |          4 |
| aliasdemo                          |          2 |
| allcharacterbeforespace            |          4 |
| allownulldemo                      |          2 |
| allrecordsfromadate                |          5 |
| allrecordswithactive               |          6 |
| allrows                            |          4 |
| appenddatademo                     |          3 |
...(中略)...
| uservariableinlike                 |          5 |
| view_student                       |          0 |
| viewdemo                           |          2 |
| wheredemo                          |          4 |
| wholewordmatchdemo                 |          2 |
| yesterdaydatedemo                  |          2 |
| zipcodepadwithzerodemo             |          4 |
+------------------------------------+------------+
243 rows in set (0.86 sec)

このように、「test」データベースには243個のテーブルが存在し、各テーブルごとの行数を一度に確認できました。

注意点:InnoDBでは概算値になる

information_schemaのtable_rowsは、ストレージエンジンの種類によって挙動が異なります。

  • MyISAM: 正確な行数が返されます
  • InnoDB: 統計情報をもとにした概算値が返されるため、実際の行数とズレる場合があります

InnoDBのテーブルで正確な行数が必要な場合は、COUNT(*)を使用してください。

SELECT COUNT(*) FROM yourTableName;

また、特定の複数テーブルについて正確な行数をまとめて比較したい場合は、UNION ALLを組み合わせるとよいでしょう。

SELECT 'employee' AS table_name, COUNT(*) AS table_rows FROM employee
UNION ALL
SELECT 'student', COUNT(*) FROM student;

用途に応じてinformation_schemaとCOUNT(*)を使い分けることで、効率的かつ正確に行数を把握できます。

  1. JavaでMySQLテーブルのカラム数を取得・カウントする方法

    MySQLテーブルのカラム(列)数をJavaで取得するには、ResultSetMetaDataインターフェースを使用します。ResultSetMetaDataを活用すれば、カラムの総数だけでなく、各カラムの名前やデータ型といった詳細情報も簡単に取得できます。前提:サンプルテーブルの作成まずは動作確認用のテーブルを作成しましょう。以下のSQLでは、3つのカラムを持つ「DemoTable」を作成しています。mysql> create table DemoTable     -> (     -> St

  2. MySQLでテーブルの行数を取得する最も簡単な方法|COUNT(*)の使い方を解説

    MySQLでテーブルの行数(レコード数)を取得する最も簡単な方法は、集計関数 COUNT(*) を使うことです。この記事では、実際にテーブルを作成し、データを挿入して、COUNT(*) で行数を取得するまでの一連の手順を、サンプルコードとともにわかりやすく解説します。 1. テーブルの作成 まず、CREATE TABLE文を使ってサンプル用のテーブルを作成します。ここでは「FirstName」という1つのカラムを持つシンプルなテーブルを定義します。 mysql> create table DemoTable1575     -> ( &nb