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?

Genadinik
sumber

Jawaban:

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

Sumber

Ini adalah milikku:

USE databasename; 
SHOW TABLES; 
SELECT FOUND_ROWS();
Joseadrian
sumber
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 !!!

RolandoMySQLDBA
sumber
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'
Mukund
sumber
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;
Rohit Dubey
sumber
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.

jmm
sumber
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';
Arun Kasyakar
sumber
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'
;
automatix
sumber
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';
Swamy
sumber
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.

Rajiv Singh
sumber
0
SELECT COUNT(*) FROM information_schema.tables
Shan
sumber
ini untuk semua tabel dalam DB?
0

mysql> tampilkan tabel;

itu akan menampilkan nama-nama tabel, lalu hitungan di atas tabel.

sumber

Mohammed Nosirat
sumber
-1

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

Use database;

SELECT COUNT(*) FROM sys.tables;
mjohnbatcha
sumber
6
sys.tablestidak ada dimysql
Grisha Weintraub