본문 바로가기
데이터베이스/MySQL

MySQL 메타데이타 얻기

by o테리o 2010. 11. 24.
메타데이타 얻기
  
 • 다양한 메타데이타 리스트를 가능한 방법으로 억세스 하기  
 • INFORMATION_SCHEMA 데이타베이스/스키마의 구조 알아보기
 • 메타데이타를 보기 위한 가능한 명령문 사용하기 
 • SHOW 구문과 INFORMATION_SCHEMA 테이블의 차이

 

8-1. 메타데이타 액세스 방법
 
 • 데이터베이스 구조에 관한 정보는 메타데이타
 • 방법
   – INFORMATION_SCHEMA
   – SHOW
   – DESCRIBE
   – mysqlshow
 • 몇몇 데이타베이스 측면을 위한 메타데이타
 • INFORMATION_SCHEMA는 5.0에서 소개됨
 
8-2. INFORMATION_SCHEMA 데이터베이스
 
 • 메타데이타를 저장하는 주요 서버인 데이터베이스/스키마
 • 가상 데이터베이스
 • 정보를 얻기위해 SELECT 사용
mysql> SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
     -> WHERE TABLE_SCHEMA = 'INFORMATION_SCHEMA'
     -> ORDER BY TABLE_NAME;

8-3. INFORMATION_SCHEMA 테이블
 
 • 테이블 컨텐츠
CHARACTER_SETS 사용가능한 캐릭터 셋
COLLATIONS 각각의 캐릭터 셋을 위한 콜래이션
COLLATION_CHARACTER_SET_APPLICABILITY 캐릭터 셋은 각각의 콜래이션에 적용
COLUMNS 테이블 안에 컬럼
COLUMN_PRIVILEGES 컬럼 권한은 MySQL 사용자 계정에 의해서 따름
ENGINES 스토리지 엔진
EVENTS 스캐줄된 이벤트
FILES MySQL NDB 디스크 데이터 테이블 안에 파일들은 저장됨
KEY_COLUMN_USAGE 키 컬럼 제한
PARTITIONS 테이블 파티션
PLUGINS 서버 플러그인
PROCESSLIST 쓰레드 운영하기
REFERENTIAL_CONSTRAINTS foreign keys
ROUTINES 저장 프로시져와 함수
SCHEMATA 데이타베이스
SCHEMA_PRIVILEGES 데이타베이스 권한은 MySQL 사용자 계정에 따름
STATISTICS 테이블 인덱스
TABLES 데이타베이스 안에 테이블
TABLE_CONSTRAINTS 테이블 제약
TABLE_PRIVILEGES 테이블 권한은 MySQL 사용자 계정에 따름
TRIGGERS 데이터베이스 안에 트리거
USER_PRIVILEGES 전역 권한은 MySQL 사용자 권한에 따름
VIEWS 데이타베이스 보기
 
8-4. INFORMATION_SCHEMA 테이블 보기
 
 • 특정 테이블 명
mysql> SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
     -> WHERE TABLE_SCHEMA = 'INFORMATION_SCHEMA'
     -> AND TABLE_NAME = 'VIEWS';

 • 모든 일반적인 SELECT 특징을 모두 사용
   – 특정 컬럼
   – WHERE 절로 제한된 열
   - GROUP BY 와 ORDER BY로 GROUP 혹은 Sort
   - 조인, 유니온, 서브쿼리 사용
   - 다른 테이블의 결과 산출
   - INFORMATION_SCHEMA 테이블의 상위를 뷰로 생성

mysql> SELECT TABLE_NAME, ENGINE
-> FROM INFORMATION_SCHEMA.TABLES
    -> WHERE TABLE_SCHEMA = 'world';
mysql> SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME
     -> FROM INFORMATION_SCHEMA.COLUMNS
     -> WHERE DATA_TYPE = 'set';
mysql> SELECT CHARACTER_SET_NAME, COLLATION_NAME
     -> FROM INFORMATION_SCHEMA.COLLATIONS
     -> WHERE IS_DEFAULT = 'Yes';
mysql> SELECT TABLE_SCHEMA, COUNT(*)
     -> FROM INFORMATION_SCHEMA.TABLES;
     -> GROUP BY TABLE_SCHEMA;

 
8-5. SHOW 구문
 
 • MySQL은 다양한 SHOW 구문을 지원
 • 일반적으로 사용하는 구문
   – SHOW DATABASES
   – SHOW [FULL] TABLES
   – SHOW [FULL] COLUMNS
   – SHOW INDEX
   – SHOW CHARACTER SET
   – SHOW COLLATION
 • SHOW DATABASE
mysql> SHOW DATABASES;
 • SHOW TABLE
mysql> SHOW TABLES;
mysql> SHOW TABLES FROM mysql;
mysql> SHOW TABLES FROM INFORMATION_SCHEMA;

 • SHOW COLUMNS
mysql> SHOW COLUMNS FROM CountryLanguage;
 • SHOW FULL COLUMNS
mysql> SHOW FULL COLUMNS FROM CountryLanguage\G
 • SHOW와 LIKE
mysql> SHOW DATABASES LIKE'm%';
 • SHOW 와 WHERE
mysql> SHOW COLUMNS FROM Country WHERE `Default` IS NULL;
 • SHOW INDEX
mysql> SHOW INDEX FROM City\G
 • SHOW CHARACTER SET/COLLATION
mysql> SHOW CHARACTER SET;
mysql> SHOW COLLATION;

 
8-6. DESCRIBE 구문
 
 • SHOW COLUMNS와 같음
 • DESC로 단축
   – 문법
     DESCRIBE 테이블 명;
     DESC 테이블 명;
     SHOW COLUMNS FROM 테이블 명;
 • DESCRIBE은 FROM을 지원하지 않음
 • INFORMATION_SCHEMA 테이블 정보를 보여줌
mysql> DESCRIBE INFORMATION_SCHEMA.CHARACTER_SETS;

 

8-7. mysqlshow 명령어
 
 • 클라이언트 프로그램
 • 테이블과 데이터베이스 구조 정보
   – SHOW 구문과 비슷
 • 일반적 문법
    mysqlshow [옵션] [데이터베이스 명[테이블 명[컬럼 명]]]
 • 옵션은 표준 접속 파라미터
shell> mysqlshow
shell> mysqlshowworld
shell> mysqlshowworld City
shell> mysqlshowworld City CountryCode
shell> mysqlshow –u<사용자명> -p "w%“