1. INFORMATION_SCHEMA란?
- INFORMATION_SCHEMA는 데이터베이스의 메타데이터(구조 정보)를 조회할 수 있도록 제공하는 가상 시스템 데이터베이스이다.
- 이는 SQL 표준에서 정의된 정보 저장소이며, 대부분의 관계형 데이터베이스 관리 시스템(RDBMS)에서 지원된다.
- 사용자는 INFORMATION_SCHEMA를 활용하여 테이블, 컬럼, 인덱스, 제약 조건 등 데이터베이스의 구조적 정보를 조회할 수 있다.
1.1 주요 테이블 및 설명
1.1.1 TABLES
- 데이터베이스 내의 테이블 목록을 확인할 수 있는 뷰이다.
- 주요 컬럼:
- TABLE_SCHEMA : 테이블이 속한 데이터베이스(스키마) 이름
- TABLE_NAME : 테이블 이름
- TABLE_TYPE : 테이블 유형 (BASE TABLE, VIEW 등)
- ENGINE : 스토리지 엔진(MyISAM, InnoDB 등)
- TABLE_ROWS : 테이블 내 예상 행 수
SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'my_database';
1.1.2 COLUMNS
- 특정 테이블에 포함된 컬럼 정보를 조회할 수 있다.
-
- TABLE_SCHEMA : 테이블이 속한 데이터베이스 이름
- TABLE_NAME : 테이블 이름
- COLUMN_NAME : 컬럼 이름
- DATA_TYPE : 데이터 타입 (VARCHAR, INT 등)
- CHARACTER_MAXIMUM_LENGTH : 문자열 컬럼의 최대 길이
- IS_NULLABLE : NULL 허용 여부 (YES/NO)주요 컬럼
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'users';
1.1.3 SCHEMATA
- 데이터베이스(스키마) 정보를 확인할 수 있다.
- 주요 컬럼:
- SCHEMA_NAME : 데이터베이스 이름
- DEFAULT_CHARACTER_SET_NAME : 기본 문자 인코딩 (utf8, utf8mb4 등)
SELECT SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME
FROM INFORMATION_SCHEMA.SCHEMATA;
1.1.4 VIEWS
- 데이터베이스에서 생성된 뷰(Views) 목록을 확인할 수 있다.
- 주요 컬럼:
- TABLE_SCHEMA : 뷰가 속한 데이터베이스 이름
- TABLE_NAME : 뷰 이름
- VIEW_DEFINITION : 뷰를 생성한 SQL 문
SELECT TABLE_NAME, VIEW_DEFINITION
FROM INFORMATION_SCHEMA.VIEWS
WHERE TABLE_SCHEMA = 'my_database';
1.1.5 KEY_COLUMN_USAGE
- 기본 키(Primary Key), 외래 키(Foreign Key) 등의 키 정보를 조회할 수 있다.
- 주요 컬럼:
- TABLE_SCHEMA : 테이블이 속한 데이터베이스 이름
- TABLE_NAME : 테이블 이름
- COLUMN_NAME : 컬럼 이름
- CONSTRAINT_NAME : 제약 조건 이름 (PRIMARY, FOREIGN 등)
- REFERENCED_TABLE_NAME : 참조하는 테이블 (외래 키의 경우)
- REFERENCED_COLUMN_NAME : 참조하는 컬럼 (외래 키의 경우)
SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.KEY_COLUM_USAGE
WHERE TABLE_SCHEMA = 'my_database';
1.1.6 STATISTICS
- 테이블의 인덱스(Index) 정보를 확인할 수 있다.
- 주요 컬럼:
- TABLE_SCHEMA : 테이블이 속한 데이터베이스 이름
- TABLE_NAME : 테이블 이름
- INDEX_NAME : 인덱스 이름
- COLUMN_NAME : 인덱스가 적용된 컬럼
- SEQ_IN_INDEX : 인덱스 내에서 컬럼의 순서
- NON_UNIQUE : 고유 여부 (0이면 UNIQUE, 1이면 중복 가능)
SELECT TABLE_NAME, INDEX_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.STATISTICS
WHERE TABLE_SCHEMA = 'my_database';
'Hack&Dev > Web' 카테고리의 다른 글
CURL 이란? (0) | 2025.03.19 |
---|---|
PHP - STRCMP [DREAMHCK] wargame.kr strcmp (0) | 2025.03.15 |
img 태그의 src 속성과 자동 GET 요청 [Dreamhack csrf-1 참고] (0) | 2025.03.06 |
SSRF(Server-Side Request Forgery)와 우회 기법 (Dreamhack SSRF 문제 curling 기준) (2) | 2025.02.23 |
Flask 디버그 모드에서의 LFI(Local File Inclusion) 및 PIN 탈취 취약점 (0) | 2025.02.22 |