제21장 INFORMATION_SCHEMA Tables
목차
- 21.1 INFORMATION_SCHEMA CHARACTER_SETS 테이블
- 21.2 INFORMATION_SCHEMA COLLATIONS 테이블
- 21.3 INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY 테이블
- 21.4 INFORMATION_SCHEMA COLUMNS 테이블
- 21.5 INFORMATION_SCHEMA COLUMN_PRIVILEGES 테이블
- 21.6 INFORMATION_SCHEMA ENGINES 테이블
- 21.7 INFORMATION_SCHEMA EVENTS 테이블
- 21.8 INFORMATION_SCHEMA GLOBAL_STATUS 및 SESSION_STATUS 테이블
- 21.9 INFORMATION_SCHEMA GLOBAL_VARIABLES 및 SESSION_VARIABLES 테이블
- 21.10 INFORMATION_SCHEMA KEY_COLUMN_USAGE 테이블
- 21.11 INFORMATION_SCHEMA OPTIMIZER_TRACE 테이블
- 21.12 INFORMATION_SCHEMA PARAMETERS 테이블
- 21.13 INFORMATION_SCHEMA PARTITIONS 테이블
- 21.14 INFORMATION_SCHEMA PLUGINS 테이블
- 21.15 INFORMATION_SCHEMA PROCESSLIST 테이블
- 21.16 INFORMATION_SCHEMA PROFILING 테이블
- 21.17 INFORMATION_SCHEMA REFERENTIAL_CONSTRAINTS 테이블
- 21.18 INFORMATION_SCHEMA ROUTINES 테이블
- 21.19 INFORMATION_SCHEMA SCHEMATA 테이블
- 21.20 INFORMATION_SCHEMA SCHEMA_PRIVILEGES 테이블
- 21.21 INFORMATION_SCHEMA STATISTICS 테이블
- 21.22 INFORMATION_SCHEMA TABLES 테이블
- 21.23 INFORMATION_SCHEMA TABLESPACES 테이블
- 21.24 INFORMATION_SCHEMA TABLE_CONSTRAINTS 테이블
- 21.25 INFORMATION_SCHEMA TABLE_PRIVILEGES 테이블
- 21.26 INFORMATION_SCHEMA TRIGGERS 테이블
- 21.27 INFORMATION_SCHEMA USER_PRIVILEGES 테이블
- 21.28 INFORMATION_SCHEMA VIEWS 테이블
- 21.29 InnoDB의 INFORMATION_SCHEMA 테이블
- 21.30 MySQL Cluster의 INFORMATION_SCHEMA 테이블
- 21.31 스레드 풀의 INFORMATION_SCHEMA 테이블
- 21.32 SHOW 문 확장
INFORMATION_SCHEMA
는 데이터베이스 메타 데이터에 대한 액세스를 제공하며, 데이터베이스 또는 테이블의 이름, 컬럼의 데이터 타입, 접근 권한 등의 MySQL Server에 대한 정보를 제공합니다. 이 정보에 사용 될 수있는 다른 용어가 데이터 사전과 시스템 카탈로그입니다.
INFORMATION_SCHEMA 데이터베이스의 사용상의주의
INFORMATION_SCHEMA
는 각 MySQL 인스턴스 내의 데이터베이스이며, MySQL Server가 보유하는 다른 모든 데이터베이스에 대한 정보를 저장하는 장소입니다. INFORMATION_SCHEMA
데이터베이스에는 여러 읽기 전용 테이블이 포함됩니다. 여기에는 실제로 뷰가 있으므로 연결된 파일이 아니라 트리거는 설정할 수 없습니다. 또한 그 이름을 가진 데이타베이스가 없습니다.
USE
문을 사용하여 기본 데이터베이스로 INFORMATION_SCHEMA
를 선택할 수 있지만 수행 할 수있는 작업은 테이블 내용의 읽기만하고 테이블에 대한 INSERT
, UPDATE
, DELETE
작업을 수행 할 수 없습니다.
Example
다음 INFORMATION_SCHEMA
에서 정보를 검색 문의 예를 보여줍니다.
mysql>SELECT table_name, table_type, engine
->FROM information_schema.tables
->WHERE table_schema = 'db5'
->ORDER BY table_name;
+------------+------------+--------+ | table_name | table_type | engine | +------------+------------+--------+ | fk | BASE TABLE | InnoDB | | fk2 | BASE TABLE | InnoDB | | goto | BASE TABLE | MyISAM | | into | BASE TABLE | MyISAM | | k | BASE TABLE | MyISAM | | kurs | BASE TABLE | MyISAM | | loop | BASE TABLE | MyISAM | | pk | BASE TABLE | InnoDB | | t | BASE TABLE | MyISAM | | t2 | BASE TABLE | MyISAM | | t3 | BASE TABLE | MyISAM | | t7 | BASE TABLE | MyISAM | | tables | BASE TABLE | MyISAM | | v | VIEW | NULL | | v2 | VIEW | NULL | | v3 | VIEW | NULL | | v56 | VIEW | NULL | +------------+------------+--------+ 17 rows in set (0.01 sec)
설명 :이 문은 데이터베이스 db5
에있는 모든 테이블의 목록을 요청하는 테이블의 이름, 유형, 스토리지 엔진의 3 가지 정보 만 보여줍니다.
문자 집합 고려 사항
문자 컬럼 ( TABLES.TABLE_NAME
등)의 정의는 일반적으로 VARCHAR(
이며, 여기서 N
) CHARACTER SET utf8N
은 적어도 64입니다. MySQL은 이러한 컬럼에서 모든 검색, 정렬, 비교 및 다른 문자열 조작이 캐릭터 세트 ( utf8_general_ci
)의 기본 데이터 정렬을 사용합니다.
일부 MySQL 개체는 파일로 표현되므로 INFORMATION_SCHEMA
문자열 컬럼에서의 검색은 파일 시스템에서 대소 문자 구별에 의해 영향을받을 수 있습니다. 자세한 내용은 섹션 10.1.7.9 "데이터 정렬과 INFORMATION_SCHEMA 검색" 을 참조하십시오.
SHOW 명령문의 대체 방법으로 INFORMATION_SCHEMA
SELECT ... FROM INFORMATION_SCHEMA
문은 MySQL이 지원하는 다양한 SHOW
문 ( SHOW DATABASES
, SHOW TABLES
등)에 의해 제공된 정보에 액세스하기위한 일관된 방법으로 사용할 수 있습니다. SELECT
는 SHOW
에 비해 다음과 같은 장점이 있습니다.
모든 액세스가 테이블에서 이루어지기 때문에 Codd의 규칙을 준수하고 있습니다.
SELECT
문 익숙한 구문을 사용할 수 학습이 필요한 일부 테이블 및 컬럼의 이름뿐입니다.구현자는 키워드의 추가에 대해 걱정할 필요가 없습니다.
INFORMATION_SCHEMA
쿼리의 결과를 필터링, 정렬, 연결할 수 있으며, 구문 분석하는 데이터 구조와 텍스트 표현 등 응용 프로그램에 필요한 모든 형식으로 변환 할 수 있습니다.이 기술은 다른 데이터베이스 시스템과의 상호 운용성이 우수합니다. 예를 들어, Oracle Database 사용자는 Oracle 데이터 사전 테이블의 쿼리에 익숙해 져 있습니다.
SHOW
잘 알려져 널리 사용되고 있기 때문에, SHOW
문은 계속 대체 방법으로 사용할 수 있습니다. 실제로 섹션 21.32 "SHOW 명령문의 확장" 에서 설명하고있는 바와 같이, INFORMATION_SCHEMA
의 구현에 따라 SHOW
확장이 이루어지고 있습니다
권한
각 MySQL 사용자는 이러한 테이블에 대한 액세스 권한이 있지만 사용자가 적절한 권한을 가진 오브젝트에 대응 한 테이블의 행만을 표시 할 수 있습니다. 일부의 경우 (예를 들어 INFORMATION_SCHEMA.ROUTINES
테이블의 ROUTINE_DEFINITION
열)는 권한이 부족한 사용자는 NULL
로 표시됩니다. 이러한 제한은 InnoDB
테이블에는 적용되지 않습니다. PROCESS
권한 만 있으면 이들을 볼 수 있습니다.
동일한 권한이 INFORMATION_SCHEMA
에서 정보의 선택과 SHOW
문을 통해 동일한 정보의 표시에 적용됩니다. 두 경우 모두 객체에 대한 정보를 표시하려면 해당 오브젝트에 대한 어떠한 권한이 필요합니다.
성능 고려 사항
여러 데이터베이스의 정보를 검색 할 INFORMATION_SCHEMA
쿼리는 장시간 소요 성능에 영향을 미칠 수 있습니다. 쿼리의 효율성을 확인하려면 EXPLAIN
을 사용할 수 있습니다. EXPLAIN
출력을 사용한 INFORMATION_SCHEMA
쿼리의 조정에 관한 자세한 내용은 섹션 8.2.4 "INFORMATION_SCHEMA 쿼리 최적화" 를 참조하십시오.
표준 고려 사항
MySQL에서의 INFORMATION_SCHEMA
테이블 구조의 구현은 ANSI / ISO SQL : 2003 표준 파트 11 Schemata을 준수하고 있습니다. SQL : 2003의 핵심 기능 F021 기본 정보 스키마에 거의 부합하는 것을 의도하고 있습니다.
SQL Server 2000 (이것도 표준을 준수하고 있습니다) 사용자라면 매우 유사한 것으로 알 수 있습니다. 그러나 MySQL에서 구현과 관련이없는 많은 컬럼을 생략하고, MySQL 고유의 컬럼을 추가하고 있습니다. 이러한 열 중 하나가 INFORMATION_SCHEMA.TABLES
테이블의 ENGINE
컬럼입니다.
다른 DBMS는 syscat
과 system
등의 다양한 이름을 사용하고 있습니다 만, 표준 이름은 INFORMATION_SCHEMA
입니다.
표준 또는 DB2, SQL Server, Oracle에서 예약 된 이름을 사용하지 않도록 "MySQL 확장"으로 표시하고 일부 컬럼의 이름을 변경하고 있습니다. (예를 들어, TABLES
테이블에서 COLLATION
을 TABLE_COLLATION
로 변경했습니다.) https://web.archive.org/web/20070428032454/http://www.dbazine.com/db2/db2-disarticles/gulutzan5 기사 마지막의 예약어 목록을 참조하십시오.
INFORMATION_SCHEMA 참조 섹션에서 규칙
다음 섹션에서는 INFORMATION_SCHEMA
에서 테이블 및 컬럼의 각각에 대해 설명합니다. 컬럼에 대해 다음 세 가지 정보가 있습니다.
"
INFORMATION_SCHEMA
이름 "에는INFORMATION_SCHEMA
테이블의 컬럼의 이름이 표시됩니다. 이것은 "비고"필드에서 "MySQL 확장 '이라고 적혀 있지 않은 한, 표준 SQL 이름과 일치합니다."
SHOW
이름 "은 가장 가까운SHOW
문에 동일한 필드 이름이있는 경우에는이 이름이 표시됩니다.「비고」에는 필요에 따라 추가 정보가 기록됩니다. 이 필드가
NULL
의 경우, 컬럼의 값이 항상NULL
임을 의미합니다. 이 필드에 "MySQL 확장"어떤 경우, 그 컬럼은 표준 SQL에 대한 MySQL 확장입니다.
많은 부분은 어떤 SHOW
문이 INFORMATION_SCHEMA
에서 정보를 검색하는 SELECT
와 동등한 지를 나타냅니다. 기본 데이터베이스의 정보를 표시하는 SHOW
명령문은 FROM
절을 생략하면 db_name
INFORMATION_SCHEMA
테이블에서 정보를 검색하는 쿼리의 WHERE
절에 AND TABLE_SCHEMA = SCHEMA()
조건을 추가하면 기본 데이터베이스의 정보를 선택할 수 있습니다 .
InnoDB
스토리지 엔진에 고유의 INFORMATION_SCHEMA
테이블의 자세한 내용은 섹션 21.29 "InnoDB의 INFORMATION_SCHEMA 테이블" 을 참조하십시오. 스레드 풀 플러그인 고유의 INFORMATION_SCHEMA
테이블의 자세한 내용은 섹션 21.31 "스레드 풀의 INFORMATION_SCHEMA 테이블" 을 참조하십시오.
INFORMATION_SCHEMA
데이터베이스에 대한 자주 묻는 질문과 답변 내용은 섹션 A.7 "MySQL 5.6 FAQ : INFORMATION_SCHEMA" 를 참조하십시오.