3.4. 데이터베이스 및 테이블 관련 정보 가져오기
만약에 데이터 베이스 또는 테이블 이름을 잊었거나, 또는 주어진 테이블의 구조 (예를 들면, 컬럼 이름이 무엇인지)를 모른다고 할 경우에는? MySQL은 이러한 문제를 다루는 명령문을 제공해 줌으로서 데이터 베이스와 테이블에 대한 정보를 나타내도록 하고 있다.
여러분은 앞에서 SHOW DATABASES를 보았는데, 이것은 서버가 관리하는 데이터 베이스를 목록으로 보여준다. 어떤 데이터 베이스가 현재 사용되고 있는지 보기 위해서는, DATABASE() 함수를 사용한다:
mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| menagerie |
+------------+
아직 아무런 데이터 베이스를 선택하지 않았다면, 결과는 NULL이 된다.
디폴트 데이터 베이스가 가지고 있는 테이블이 무엇인지를 보기 위해서는 (예를 들면, 여러분이 테이블 이름에 대해 확신이 없다면), 다음의 명령어를 사용한다:
mysql> SHOW TABLES;
+---------------------+
| Tables_in_menagerie |
+---------------------+
| event |
| pet |
+---------------------+
이 명령문이 만든 결과에 있는 컬럼 이름은 항상 Tables_in_db_name 형태가 되는데, 여기에서 db_name은 데이터베이스의 이름이 된다.
테이블의 구조를 알고 싶다면, DESCRIBE 명령어가 유용하다; 이 명령어는 각 테이블의 컬럼 정보를 알려준다:
mysql> DESCRIBE pet;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| name | varchar(20) | YES | | NULL | |
| owner | varchar(20) | YES | | NULL | |
| species | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| birth | date | YES | | NULL | |
| death | date | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
Field는 컬럼 이름을 나타내며, Type은 컬럼에 대한 데이터 타입, NULL 은 컬럼이 NULL 값을 가지고 있는지 아닌지를 표시하며, Key는 컬럼이 인덱싱이 되어 있는지 아닌지, 그리고 Default는 컬럼의 디폴트 값을 지정하는 것이다. Extra는 컬럼의 특수 정보를 표시한다; 예를 들면, 컬럼이 AUTO_INCREMENT 옵션을 사용해서 생성되었다면, 이것이 여기에 나오게 된다.
DESC는 DESCRIBE의 단축형이다.
테이블이 인덱스를 가지고 있다면, SHOW INDEX FROM tbl_name은 인덱스에 대한 정보를 보여 준다.