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.