Permintaan untuk menghitung jumlah tabel yang saya miliki di MySQL


129

Saya menambah jumlah tabel yang saya miliki dan kadang-kadang saya ingin tahu hanya untuk melakukan permintaan baris perintah cepat untuk menghitung jumlah tabel dalam database saya. Apakah itu mungkin? Jika demikian, apa permintaannya?

Jawaban:


296
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'dbName';

Sumber

Ini adalah milikku:

USE databasename; 
SHOW TABLES; 
SELECT FOUND_ROWS();

Saya sudah mencoba 2 metode di atas dan jumlah tabel yang dikembalikan ketika saya gunakan FOUND_ROWS()lebih besar dari jumlah tabel yang dikembalikan ketika saya menggunakan metode pertama.
— Amr

ini juga menghitung tampilan, jika Anda hanya menginginkan tabel, tambahkanAND table_type = 'BASE TABLE'
— Thomasleveil

Hanya sebuah catatan tentang use databasename;perintah. Jika databasenya benar-benar besar, perintahnya bisa dijalankan dengan waktu tunggu yang lama. Dalam hal ini, login harus dilakukan dengan opsi -A, yaitu:, mysql -uroot -p -Adan perintah akan bekerja dengan cepat.
— azurecorn

24

Jika Anda ingin menghitung semua database ditambah ringkasan, silakan coba ini:

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;

Berikut ini contoh proses:

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)

Cobalah !!!


1
Saya hanya membuatnya bekerja ketika saya hanya menggunakan subquery. Terjadi kesalahan sintaksis jika saya mencoba menjalankan seluruh kueri / subquery.
— Gaia

2
@ Gaia Maaf, saya lupa bahwa Database adalah kata yang dilindungi undang-undang. Jadi, saya mengelilingi kata itu dengan Kutipan Ganda.
— RolandoMySQLDBA

@RolandoMySQLDBA Ini manis, apakah Anda punya satu untuk juga menunjukkan ukuran total db dari semua db juga?
— J. Scott Elblein

@ J.ScottElblein Coba posting DBA.SE saya: dba.stackexchange.com/questions/31801/…
— RolandoMySQLDBA

Mengapa subquery dalam FROMklausa? Kenapa tidak adil 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?
— eggyal

10
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'dbo' and TABLE_TYPE='BASE TABLE'

1
Ini harus menjadi jawaban karena tidak termasuk pandangan! +1
— Testo Testini

4

Ini akan memberi Anda jumlah nama dan tabel semua database di mysql Anda

SELECT TABLE_SCHEMA,COUNT(*) FROM information_schema.tables group by TABLE_SCHEMA;

3

Untuk menghitung jumlah tabel, lakukan ini:

USE your_db_name;    -- set database
SHOW TABLES;         -- tables lists
SELECT FOUND_ROWS(); -- number of tables

Terkadang hal-hal mudah akan berhasil.


Inilah yang ada dalam jawaban yang diterima ditambahkan 5 tahun yang lalu.

jawaban yang bagus dan unik dan perintahnya sangat mudah. perfect
— Ajay2707

3
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'database_name';

Ini cukup jelas bagi mereka yang terbiasa dengan permintaan ini, tetapi bagi mereka yang tidak, sedikit penjelasan akan menjadi iringan yang hebat dengan jawaban ini.
— mickmackusa

Ini sepertinya hanya pengulangan dari jawaban yang ada ini .
— Pang

Sebagai catatan: Ingat total elemen termasuk Tabel dan Tampilan sebagai objek Database.
— marcode_ely

1

Mungkin ada beberapa cara untuk menghitung tabel database. Favorit saya adalah ini di:

SELECT
    COUNT(*)
FROM
    `information_schema`.`tables`
WHERE
    `table_schema` = 'my_database_name'
;

1
select name, count(*) from DBS, TBLS 
where DBS.DB_ID = TBLS.DB_ID 
group by NAME into outfile '/tmp/QueryOut1.csv' 
fields terminated by ',' lines terminated by '\n';

Ini tidak menjawab pertanyaan.
— Mike

1

dari baris perintah:

mysql -uroot -proot  -e "select count(*) from 
information_schema.tables where table_schema = 'database_name';"

pada contoh root di atas adalah nama pengguna dan kata sandi, di-host di localhost.


0
SELECT COUNT(*) FROM information_schema.tables

ini untuk semua tabel dalam DB?


-1

Semoga ini bisa membantu, dan hanya mengembalikan jumlah tabel dalam database

Use database;

SELECT COUNT(*) FROM sys.tables;

6
sys.tablestidak ada dimysql
— Grisha Weintraub
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.