MySQL에있는 테이블 수를 계산하는 쿼리


129

나는 가지고있는 테이블 수를 늘리고 있으며 때로는 데이터베이스의 테이블 수를 계산하기 위해 빠른 명령 줄 쿼리를 수행하는 것이 궁금합니다. 가능합니까? 그렇다면 어떤 쿼리입니까?

답변:


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

출처

이 내 꺼야:

USE databasename; 
SHOW TABLES; 
SELECT FOUND_ROWS();

위의 두 가지 방법을 시도했지만 사용 FOUND_ROWS()했을 때 반환 된 테이블 수가 첫 번째 방법을 사용할 때 반환 된 테이블 수보다 큽니다.
Amr

이 또한 뷰를 계산합니다. 테이블 만 원하는 경우 다음을 추가하십시오.AND table_type = 'BASE TABLE'
Thomasleveil

use databasename;명령 에 대한 참고 사항 입니다. 데이터베이스가 실제로 큰 경우 명령은 긴 대기 시간으로 실행될 수 있습니다. 이 경우, -A 옵션 (예 :)을 사용하여 로그인해야하며 mysql -uroot -p -A명령이 빠르게 작동합니다.
azurecorn

24

모든 데이터베이스와 요약을 계산하려면 다음을 시도하십시오.

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)

시도 해봐 !!!


1
하위 쿼리 만 사용할 때만 작동합니다. 전체 쿼리 / 하위 쿼리를 실행하려고하면 구문 오류가 발생했습니다.
Gaia

2
@Gaia 죄송합니다, 데이터베이스가 예약어라는 것을 잊었습니다. 그래서 나는 큰 따옴표로 단어를 둘러 쌌습니다.
RolandoMySQLDBA

@RolandoMySQLDBA 이것은 달콤합니다. 모든 db의 총 db 크기도 보여줄 수 있습니까?
J. Scott Elblein

@ J.ScottElblein DBA.SE 게시물을보십시오 : dba.stackexchange.com/questions/31801/…
RolandoMySQLDBA

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?
eggyal

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

1
조회수를 포함하지 않으므로 답변이되어야합니다! +1
Testo Testini 2018 년

4

이것은 당신에게 mysql에있는 모든 데이터베이스의 이름과 테이블 수를 줄 것이다.

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

3

테이블 수를 계산하려면 다음을 수행하십시오.

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

때로는 쉬운 일이 일을 할 것입니다.


이것은 정확히 5 년 전에 추가 된 승인 된 답변에있는 것입니다.

좋고 독특한 대답과 일이 매우 쉬운 명령입니다. 완벽
Ajay2707

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

이것은이 질문에 익숙한 사람들에게는 아주 자명하지만, 그렇지 않은 사람들에게는 약간의 설명 이이 대답에 큰 반주가 될 것입니다.
mickmackusa

이것은 기존의 대답 과 반복되는 것 같습니다 .
Pang

레코드의 경우 : 전체 elementos에는 테이블 및 뷰가 데이터베이스 오브젝트로 포함되어 있음을 기억하십시오.
marcode_ely

1

데이터베이스의 테이블을 계산하는 여러 가지 방법이있을 수 있습니다. 내가 가장 좋아하는 것은 다음과 같습니다.

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

이것은 질문에 대답하지 않습니다.
마이크

1

커맨드 라인에서 :

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

위 예제에서 root는 username 및 password이며 localhost에서 호스팅됩니다.


0
SELECT COUNT(*) FROM information_schema.tables

이것은 DB의 모든 테이블에 대한 것입니까?


-1

이것이 도움이되기를 바라며 데이터베이스의 테이블 수만 반환합니다.

Use database;

SELECT COUNT(*) FROM sys.tables;

6
sys.tables존재하지 않는mysql
Grisha Weintraub
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.