回答:
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'dbName';
これは私のものです:
USE databasename;
SHOW TABLES;
SELECT FOUND_ROWS();
AND table_type = 'BASE TABLE'
use databasename;コマンドに関するメモ。データベースが本当に大きい場合、コマンドは長い待機時間で実行できます。その場合、ログインはオプション-A、すなわち:mysql -uroot -p -Aで行う必要があり、コマンドは高速に動作します。
すべてのデータベースと要約をカウントしたい場合は、これを試してください:
SELECT IFNULL(table_schema,'Total') "Database",TableCount
FROM (SELECT COUNT(1) TableCount,table_schema
FROM information_schema.tables
WHERE table_schema NOT IN ('information_schema','mysql')
GROUP BY table_schema WITH ROLLUP) A;
以下は実行例です。
mysql> SELECT IFNULL(table_schema,'Total') "Database",TableCount
-> FROM (SELECT COUNT(1) TableCount,table_schema
-> FROM information_schema.tables
-> WHERE table_schema NOT IN ('information_schema','mysql')
-> GROUP BY table_schema WITH ROLLUP) A;
+--------------------+------------+
| Database | TableCount |
+--------------------+------------+
| performance_schema | 17 |
| Total | 17 |
+--------------------+------------+
2 rows in set (0.29 sec)
試してみる !!!
FROM節の副問合せなのですか?なぜSELECT IFNULL(table_schema, 'Total') Database, COUNT(*) TableCount FROM information_schema.tables WHERE table_schema NOT IN ('information_schema','mysql') GROUP BY table_schema WITH ROLLUPですか?
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'dbo' and TABLE_TYPE='BASE TABLE'
これはあなたにあなたのmysqlのすべてのデータベースの名前とテーブル数を与えます
SELECT TABLE_SCHEMA,COUNT(*) FROM information_schema.tables group by TABLE_SCHEMA;
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'database_name';
これが役立ち、データベース内のテーブルの数のみが返されることを願っています
Use database;
SELECT COUNT(*) FROM sys.tables;
sys.tables存在しないmysql
FOUND_ROWS()、最初の方法を使用したときに返されたテーブルの数よりも、使用したときに返されたテーブルの数の方が多かった。