Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 저장 프로시저로 특정 테이블의 상세 정보 조회하기

데이터베이스에 저장된 특정 테이블의 구조와 세부 정보를 자주 확인해야 한다면, 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; 한 줄로 간편하게 재사용할 수 있다는 장점이 있습니다.