INFORMATION SCHEMA
IT위키
더 많은 작업
INFORMATION SCHEMA(정보 스키마, INFORMATION_SCHEMA)는 데이터베이스에 정의된 테이블, 컬럼, 뷰, 제약조건, 권한 같은 메타데이터를 SQL 표준이 정한 이름과 형식의 읽기 전용 뷰로 보여 주는 가상 스키마이다.
모든 관계형 DBMS 는 스키마 정보를 시스템 카탈로그에 저장한다. 그러나 카탈로그 테이블의 이름과 구조는 제품마다 다르다(Oracle 의 데이터 사전 뷰, SQL Server 의 sys 카탈로그 뷰, PostgreSQL 의 pg_catalog). INFORMATION SCHEMA 는 그 위에 ISO/IEC 9075(SQL 표준)가 정의한 뷰들을 얹어, 어느 DBMS 에서나 같은 질의로 메타데이터를 조회할 수 있게 한 것이다.[1] PostgreSQL 문서는 정보 스키마가 SQL 표준에 정의되어 이식성이 있고 안정적인 반면, 시스템 카탈로그는 그 제품의 구현 사정에 맞춘 것이라고 둘을 구별한다. 대신 정보 스키마에는 그 제품만의 기능에 대한 정보는 담기지 않는다.[1]
| 뷰 | 담는 정보 |
|---|---|
| TABLES | 테이블과 뷰의 목록, 종류(BASE TABLE, VIEW) |
| COLUMNS | 컬럼 이름, 데이터 형식, 기본값, NULL 허용 여부, 순서 |
| VIEWS | 뷰 정의 |
| TABLE_CONSTRAINTS | 기본 키, 외래 키, UNIQUE, CHECK 제약조건 |
| KEY_COLUMN_USAGE | 제약조건에 쓰인 컬럼 |
| REFERENTIAL_CONSTRAINTS | 외래 키가 참조하는 제약조건과 갱신·삭제 규칙 |
| ROUTINES | 저장 프로시저와 함수 |
| TABLE_PRIVILEGES, COLUMN_PRIVILEGES | 부여된 권한 |
-- 특정 테이블의 컬럼 목록 조회 SELECT column_name, data_type, is_nullable FROM information_schema.columns WHERE table_name = 'emp' ORDER BY ordinal_position;
- 읽기 전용이다. 메타데이터를 바꾸려면 CREATE, ALTER, DROP 같은 DDL 을 쓰고, DBMS 가 카탈로그를 고치면 정보 스키마 뷰에 그대로 반영된다.
- 사용자는 자신이 권한을 가진 객체만 볼 수 있다.
- SQL Server 문서는 내부 시스템 테이블이 크게 바뀌어도 정보 스키마 뷰는 ISO 표준 정의를 따르므로 응용 프로그램이 계속 동작한다는 점을 장점으로 든다.[2]
- 지원 범위는 제품마다 다르다. MySQL, PostgreSQL, SQL Server 는 INFORMATION_SCHEMA 를 제공하고, Oracle 은 표준 뷰 대신 자체 데이터 사전 뷰(USER_TABLES, ALL_TAB_COLUMNS 등)를 쓴다.
| 대상 | 성격 |
|---|---|
| INFORMATION SCHEMA | SQL 표준이 정의한 메타데이터 조회용 가상 스키마 |
| 시스템 카탈로그(데이터 사전) | DBMS 가 스스로 만들고 고치는 실제 메타데이터 저장소. 구조가 제품마다 다르다 |
| 트랜잭션 로그 | 데이터 변경 이력을 회복용으로 기록한 것. 메타데이터 조회용이 아니며, SQL 표준에 "SYSTEM_LOG" 라는 메타데이터 스키마는 없다 |
- ↑ 1.0 1.1 「The Information Schema」, PostgreSQL Documentation, https://www.postgresql.org/docs/current/information-schema.html, 확인일: 2026-11-04.
- ↑ 「System Information Schema Views (Transact-SQL)」, Microsoft Learn, https://learn.microsoft.com/en-us/sql/relational-databases/system-information-schema-views/system-information-schema-views-transact-sql, 확인일: 2026-11-04.