• 다양한 메타데이타 리스트를 가능한 방법으로 억세스 하기
• 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%“
'데이터베이스 > MySQL' 카테고리의 다른 글
[MySQL] my.cnf 최적화 (0) | 2011.11.15 |
---|---|
[MySQL] 다양한 Query 문 (0) | 2011.10.10 |
사설아이피가 부여된 내부 MySQL 계정으로 원격접속하는 방법 (0) | 2011.06.11 |
MySQL 문자열 합치기 - CONCAT (0) | 2011.04.21 |
MySQL flush privileges 명령어 (0) | 2010.07.28 |