DB

[MySQL] DESCRIBE(DESC)완벽 가이드 사용법(테이블 구조 확인)

인생아 2024. 12. 26. 09:00
반응형

MySQL DESCRIBE 또는 DESC 명령어는 특정 테이블의 구조를 간단하고 명확하게 확인할 수 있는 강력한 도구입니다. 이 명령어는 테이블의 열 이름, 데이터 타입, NULL 여부, 키 정보, 기본값 등을 한눈에 확인할 수 있어 데이터베이스 설계나 관리 작업에서 자주 사용됩니다.

DESCRIBE(DESC) 명령어란?

DESCRIBE 명령어는 테이블의 스키마 정보를 조회하기 위한 SQL 명령어입니다. 이를 통해 테이블의 각 열이 어떤 속성을 가지는지 확인할 수 있습니다. 테이블 설계 변경 전이나 데이터 모델링 과정에서 필수적으로 사용되는 도구입니다.

기본 문법

DESCRIBE 테이블명;

또는 간단히 DESC를 사용할 수 있습니다:

DESC 테이블명;

DESCRIBE 명령어의 주요 정보

DESCRIBE 명령어는 다음과 같은 정보를 반환합니다:

  • Field: 열 이름
  • Type: 데이터 타입 (예: INT, VARCHAR, DATE 등)
  • Null: NULL 허용 여부
  • Key: 키 정보 (PRIMARY, UNIQUE, INDEX 등)
  • Default: 기본값
  • Extra: 추가 정보 (AUTO_INCREMENT, GENERATED 등)
반응형

DESCRIBE 명령어 사용 예제

1. 기본 사용법

CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    position VARCHAR(50),
    hire_date DATE DEFAULT CURRENT_DATE
);

DESCRIBE employees;

출력 예시

+------------+-------------+------+-----+-------------------+----------------+
| Field      | Type        | Null | Key | Default           | Extra          |
+------------+-------------+------+-----+-------------------+----------------+
| id         | int         | NO   | PRI | NULL              | auto_increment |
| name       | varchar(50) | NO   |     | NULL              |                |
| position   | varchar(50) | YES  |     | NULL              |                |
| hire_date  | date        | YES  |     | CURRENT_DATE      |                |
+------------+-------------+------+-----+-------------------+----------------+

이 명령어를 통해 employees 테이블의 구조를 확인할 수 있습니다.

2. 복합 키가 포함된 테이블 확인

CREATE TABLE orders (
    order_id INT AUTO_INCREMENT,
    customer_id INT,
    product_id INT,
    order_date DATETIME DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (order_id),
    UNIQUE KEY (customer_id, product_id)
);

DESC orders;

출력 예시

+-------------+--------------+------+-----+-------------------+----------------+
| Field       | Type         | Null | Key | Default           | Extra          |
+-------------+--------------+------+-----+-------------------+----------------+
| order_id    | int          | NO   | PRI | NULL              | auto_increment |
| customer_id | int          | YES  | UNI | NULL              |                |
| product_id  | int          | YES  | UNI | NULL              |                |
| order_date  | datetime     | YES  |     | CURRENT_TIMESTAMP |                |
+-------------+--------------+------+-----+-------------------+----------------+

위 결과에서 Primary KeyUnique Key의 차이를 명확히 이해할 수 있습니다.

반응형

DESC와 SHOW COLUMNS의 차이

DESCRIBESHOW COLUMNS FROM 테이블명과 유사하지만, 사용자가 더 직관적으로 테이블의 구조를 파악할 수 있도록 최적화된 명령어입니다.

예시: SHOW COLUMNS 사용

SHOW COLUMNS FROM employees;

출력 예시

+------------+-------------+------+-----+-------------------+----------------+
| Field      | Type        | Null | Key | Default           | Extra          |
+------------+-------------+------+-----+-------------------+----------------+
| id         | int         | NO   | PRI | NULL              | auto_increment |
| name       | varchar(50) | NO   |     | NULL              |                |
| position   | varchar(50) | YES  |     | NULL              |                |
| hire_date  | date        | YES  |     | CURRENT_DATE      |                |
+------------+-------------+------+-----+-------------------+----------------+

결과는 동일하지만, DESCRIBE 명령어가 더 간결하고 읽기 쉽습니다.

DESCRIBE 명령어의 주요 활용

1. 테이블 설계 검증

테이블을 생성한 뒤 DESCRIBE를 사용하여 구조가 의도한 대로 설계되었는지 확인합니다.

DESCRIBE orders;

이 명령은 PRIMARY KEY, UNIQUE KEY, AUTO_INCREMENT와 같은 제약 조건이 올바르게 적용되었는지 점검할 수 있습니다.

2. 필드 데이터 타입 확인

VARCHAR, INT, DATE 등 데이터 타입이 정확히 정의되었는지 확인합니다. 잘못된 데이터 타입은 데이터 저장 과정에서 문제를 일으킬 수 있습니다.

3. NULL 여부 및 기본값 확인

NULL이 허용되지 않는 열에는 반드시 데이터를 입력해야 하므로, 설계 단계에서 실수를 방지할 수 있습니다.

반응형

DESCRIBE 명령어의 고급 활용

1. VIEW에 DESCRIBE 사용

뷰(View) 구조를 확인하는 데도 DESC를 사용할 수 있습니다.

CREATE VIEW employee_view AS
SELECT id, name FROM employees;

DESCRIBE employee_view;

출력 예시

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int         | NO   |     | NULL    |       |
| name  | varchar(50) | NO   |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+

2. 저장 프로시저 및 함수 설명

DESCRIBE 명령어는 저장 프로시저나 함수에는 사용할 수 없습니다. 이를 확인하려면 별도의 쿼리를 작성해야 합니다.

DESCRIBE 명령어의 한계와 주의점

  1. 복잡한 제약 조건 미표시
    DESCRIBE 명령어는 CHECK 제약 조건이나 트리거 같은 고급 속성을 표시하지 않습니다.
  2. 외래 키(Foreign Key) 정보 부족
    테이블의 외래 키 정보를 확인하려면 SHOW CREATE TABLE 또는 INFORMATION_SCHEMA를 사용해야 합니다.
  3. 뷰(View)에서 제한
    뷰에서 반환되는 정보는 테이블보다 제한적입니다.

참고

MySQL 공식 문서: https://dev.mysql.com/doc/refman/8.0/en/

반응형