데이터베이스에 저장된 특정 테이블의 구조와 세부 정보를 자주 확인해야 한다면, DESCRIBE 명령을 포함하는 저장 프로시저(Stored Procedure)를 만들어 두면 매우 편리합니다. 아래 예제는 'tabledetails'라는 이름의 프로시저를 생성하고, 이를 호출하여 Student_detail 테이블의 모든 세부 정보를 한 번에 출력하는 과정을 보여줍니다.
저장 프로시저 생성 및 호출 예제
mysql> DELIMITER //
mysql> Create Procedure tabledetails()
-> BEGIN
-> DESCRIBE Student_detail;
-> END //
Query OK, 0 rows affected (0.00 sec)
mysql> DELIMITER ;
mysql> CALL tabledetails;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| Studentid | int(11) | NO | PRI | NULL | |
| StudentName | varchar(20) | YES | | NULL | |
| address | varchar(20) | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
Query OK, 0 rows affected (0.04 sec)
코드 동작 원리
위 코드가 단계별로 동작하는 방식은 다음과 같습니다.
- DELIMITER // : 기본 구분자인 세미콜론(;) 대신 //를 새 구분자로 지정하여, 프로시저 내부의 세미콜론이 SQL 문의 끝으로 잘못 해석되지 않도록 합니다.
- CREATE PROCEDURE : 'tabledetails'라는 이름의 저장 프로시저를 생성합니다.
- DESCRIBE : Student_detail 테이블의 필드명(Field), 데이터 타입(Type), NULL 허용 여부(Null), 키(Key), 기본값(Default), 추가 정보(Extra) 등 테이블 구조 전체를 반환합니다.
- CALL : 생성된 프로시저를 호출하여 그 결과를 화면에 출력합니다.
실행 결과에서 확인할 수 있듯이, Student_detail 테이블은 기본 키(PRI)인 Studentid(int(11)), 그리고 StudentName(varchar(20)), address(varchar(20))까지 총 3개의 컬럼으로 구성되어 있습니다. 이처럼 저장 프로시저를 활용하면 여러 테이블의 구조를 반복적으로 확인해야 할 때마다 일일이 명령어를 입력할 필요 없이, CALL tabledetails; 한 줄로 간편하게 재사용할 수 있다는 장점이 있습니다.