Truy vấn để đếm số lượng bảng tôi có trong MySQL


129

Tôi đang tăng số lượng bảng tôi có và đôi khi tôi tò mò chỉ cần thực hiện một truy vấn dòng lệnh nhanh để đếm số lượng bảng trong cơ sở dữ liệu của mình. Điều đó có thể không? Nếu vậy, truy vấn là gì?

Câu trả lời:


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

Nguồn

Cái này của tôi ư:

USE databasename; 
SHOW TABLES; 
SELECT FOUND_ROWS();

Tôi đã thử 2 phương thức trên và số lượng bảng được trả về khi tôi sử dụng FOUND_ROWS()lớn hơn số lượng bảng được trả về khi tôi sử dụng phương thức đầu tiên.
Amr

điều này cũng tính số lượt xem, nếu bạn chỉ muốn các bảng, hãy thêmAND table_type = 'BASE TABLE'
Thomasleveil

Chỉ cần một lưu ý về use databasename;lệnh. Nếu cơ sở dữ liệu thực sự lớn, lệnh có thể thực thi với thời gian chờ đợi lâu. Trong trường hợp đó, đăng nhập nên được thực hiện với tùy chọn -A, tức là : mysql -uroot -p -A, và lệnh sẽ hoạt động nhanh.
azurecorn

24

Trong trường hợp bạn muốn đếm tất cả các cơ sở dữ liệu cộng với một bản tóm tắt, vui lòng thử điều này:

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;

Đây là một mẫu chạy:

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)

Hãy thử một lần !!!


1
Tôi chỉ làm cho nó hoạt động khi tôi chỉ sử dụng truy vấn con. Có lỗi cú pháp nếu tôi cố chạy toàn bộ truy vấn / truy vấn con.
Gaia

2
@Gaia Xin lỗi, tôi quên rằng Cơ sở dữ liệu là một từ dành riêng. Vì vậy, tôi bao quanh từ này với Dấu ngoặc kép.
RolandoMySQLDBA

@RolandoMySQLDBA Điều này thật tuyệt, bạn có một cái để hiển thị tổng kích thước db của tất cả các db không?
J. Scott Elblein

@ J.ScottElblein Hãy thử bài DBA.SE của tôi: dba.stackexchange.com/questions/31801/ chủ
RolandoMyQueryDBA

Tại sao các truy vấn con trong FROMmệnh đề? Tại sao không chỉ 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
Đây phải là câu trả lời vì không bao gồm lượt xem! +1
Testo Testini

4

Điều này sẽ cung cấp cho bạn tên và số lượng bảng của tất cả các cơ sở dữ liệu trong bạn mysql

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

3

Để đếm số lượng bảng, chỉ cần làm điều này:

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

Đôi khi những điều dễ dàng sẽ làm công việc.


Đây chính xác là những gì trong câu trả lời được chấp nhận được thêm vào 5 năm trước.

câu trả lời tốt và độc đáo và điều là lệnh rất dễ dàng. hoàn hảo
Ajay2707

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

Điều này khá tự giải thích cho những người quen thuộc với truy vấn này, nhưng đối với những người không hiểu, một chút giải thích sẽ là một phần bổ trợ tuyệt vời cho câu trả lời này.
mickmackusa

Đây dường như chỉ là một sự lặp lại của câu trả lời hiện có này .
Pang

Đối với bản ghi: Hãy nhớ tổng số phần tử bao gồm Bảng và Dạng xem dưới dạng đối tượng Cơ sở dữ liệu.
marcode_ely

1

Có thể có nhiều cách để đếm các bảng của cơ sở dữ liệu. Yêu thích của tôi là trên này:

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';

Điều này không trả lời câu hỏi.
Mike

1

từ dòng lệnh:

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

trong ví dụ gốc là tên người dùng và mật khẩu, được lưu trữ trên localhost.


0
SELECT COUNT(*) FROM information_schema.tables

cái này cho tất cả các bảng trong DB?


-1

Hy vọng điều này sẽ giúp và chỉ trả về số lượng bảng trong cơ sở dữ liệu

Use database;

SELECT COUNT(*) FROM sys.tables;

6
sys.tableskhông tồn tại trongmysql
Grisha Weintraub
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.