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

MySQL 저장 프로시저로 테이블의 모든 데이터를 조회하는 방법

MySQL에서 특정 테이블의 전체 데이터를 손쉽게 조회하고 싶다면 저장 프로시저(Stored Procedure)를 활용할 수 있습니다. 저장 프로시저는 자주 사용하는 쿼리를 미리 정의해 두고 필요할 때마다 간단히 호출만 하면 되기 때문에 반복 작업을 크게 줄여 줍니다.

1. 저장 프로시저 생성하기

아래 예제에서는 student_detail 테이블의 모든 레코드를 가져오는 selectdetails()라는 이름의 프로시저를 생성해 보겠습니다.

mysql> Delimiter //
mysql> Create Procedure selectdetails()
    -> BEGIN
    -> Select * from student_detail;
    -> END//
Query OK, 0 rows affected (0.00 sec)

DELIMITER를 변경하는 이유

프로시저 본문 안에는 세미콜론(;)으로 끝나는 여러 개의 SQL 문장이 포함될 수 있습니다. MySQL 클라이언트가 세미콜론을 문장 종료 기호로 해석하지 않도록 임시로 구분 기호를 //로 변경한 후, 프로시저 생성이 완료되면 원래대로 되돌려 주는 것이 일반적인 작성 방식입니다.

2. 저장 프로시저 호출하기

프로시저 생성이 완료되면 먼저 구분 기호를 다시 세미콜론으로 되돌린 뒤, CALL 명령어로 프로시저를 실행합니다.

mysql> Delimiter ;
mysql> CALL selectdetails();
+-----------+-------------+------------+
| Studentid | StudentName | address    |
+-----------+-------------+------------+
|      100 | Gaurav      | Delhi      |
|      101 | Raman       | Shimla     |
|      103 | Rahul       | Jaipur     |
|      104 | Ram         | Chandigarh |
|      105 | Mohan       | Chandigarh |
+-----------+-------------+------------+
5 rows in set (0.00 sec)
Query OK, 0 rows affected (0.01 sec)

실행 결과를 보면 student_detail 테이블에 저장된 학생 5명의 정보(학번, 이름, 주소)가 모두 출력된 것을 확인할 수 있습니다.

3. 정리

  • Delimiter 변경: 프로시저 내부의 세미콜론 충돌을 방지하기 위해 구분 기호를 임시로 변경합니다.
  • BEGIN ~ END 블록: 프로시저가 실행할 SQL 로직을 이 블록 안에 작성합니다.
  • CALL 명령어: 생성된 프로시저를 호출하여 결과를 즉시 확인할 수 있습니다.

이처럼 저장 프로시저를 활용하면 복잡한 SELECT 문을 매번 입력할 필요 없이, 짧은 호출 한 번으로 동일한 결과를 얻을 수 있습니다. 여러 문장을 조합한 더 복잡한 로직에도 같은 방식으로 확장해 사용할 수 있습니다.