메인 콘텐츠로 건너뛰기

VillageSQL is a drop-in replacement for MySQL with extensions.

All examples on this page work on VillageSQL. Install Now →
INFORMATION_SCHEMA는 표준 SQL 쿼리를 통해 MySQL 서버 메타데이터를 노출하는 가상 데이터베이스입니다. SHOW TABLES, SHOW COLUMNS, DESCRIBE가 알려줄 수 있는 모든 것을 INFORMATION_SCHEMA도 알려줄 수 있습니다 — 그것도 WHERE, JOIN, 집계의 모든 기능과 함께.

테이블과 열

데이터베이스의 모든 테이블 나열하기:
table_rows는 InnoDB 테이블의 경우 추정치(인덱스 통계에서 파생)이며 정확한 개수가 아닙니다. 정밀한 값에는 SELECT COUNT(*)를 사용하세요. 테이블의 모든 열 나열하기:
모든 테이블에서 특정 타입의 모든 열 찾기:

인덱스

테이블의 모든 인덱스 나열하기:
기본 키가 없는 테이블 찾기:

제약 조건

모든 제약 조건(PRIMARY KEY, UNIQUE, FOREIGN KEY, CHECK) 나열하기:
모든 외래 키와 그것이 참조하는 대상 나열하기:
CHECK 제약 조건 나열하기:

저장 루틴

모든 저장 프로시저와 함수 나열하기:
루틴의 정의 보기:

뷰와 트리거

모든 뷰 나열하기:
모든 트리거 나열하기:

권한

현재 사용자의 유효 권한 보기:

주요 테이블 참조

INFORMATION_SCHEMA와 SHOW 명령 비교

SHOW 명령은 축약형이며, 대개 INFORMATION_SCHEMA에 대응물이 있습니다: 필터링, 조인, 집계가 필요할 때는 INFORMATION_SCHEMA 쿼리가 더 낫습니다. 대화형 검사에는 SHOW 명령으로 충분합니다.

자주 묻는 질문

INFORMATION_SCHEMA 쿼리는 느린가요?

InnoDB 테이블의 경우 일부 쿼리(특히 TABLES와 STATISTICS에 대한 쿼리)는 인덱스 통계 갱신을 유발하며, 큰 스키마에서는 느릴 수 있습니다. 메타데이터를 자주 조회한다면, 캐시된 통계에 더 빠르게 접근할 수 있는 mysql.innodb_table_stats와 mysql.innodb_index_stats를 사용하세요.

table_rows 값이 왜 잘못되어 보이나요?

information_schema.tables.table_rows는 InnoDB 인덱스 통계에서 나온 추정치이며 실시간 개수가 아닙니다. 큰 테이블에서는 40-50% 차이가 날 수 있습니다. 통계를 새로 고치려면 ANALYZE TABLE tablename을 실행하거나, 정확한 개수에는 SELECT COUNT(*)를 사용하세요.

문제 해결

참고