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

MySQL 저장 프로시저로 전체 테이블 조회하기 – SELECT 결과 반환 방법

MySQL에서는 저장 프로시저(Stored Procedure) 내부에 SELECT 문을 작성하여 조건에 맞는 전체 테이블 데이터를 손쉽게 반환할 수 있습니다. 이번 글에서는 테이블 생성부터 데이터 삽입, 저장 프로시저 작성 및 호출까지 전 과정을 예제와 함께 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다. 학생 ID는 자동 증가(AUTO_INCREMENT) 기본 키로 설정합니다.

mysql> create table DemoTable1971
    (
    StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName varchar(20),
    StudentPassword int
    );
Query OK, 0 rows affected (0.00 sec)

2. 샘플 데이터 삽입하기

INSERT 명령어를 사용하여 테이블에 여러 개의 레코드를 추가합니다.

mysql> insert into DemoTable1971(StudentName,StudentPassword) values('John','123456');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1971(StudentName,StudentPassword) values('Chris','123456');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1971(StudentName,StudentPassword) values('David','123456');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1971(StudentName,StudentPassword) values('Mike','123456');
Query OK, 1 row affected (0.00 sec)

3. 저장된 데이터 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select * from DemoTable1971;

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+-----------+-------------+-----------------+
| StudentId | StudentName | StudentPassword |
+-----------+-------------+-----------------+
|         1 | John        |          123456 |
|         2 | Chris       |          123456 |
|         3 | David       |          123456 |
|         4 | Mike        |          123456 |
+-----------+-------------+-----------------+
4 rows in set (0.00 sec)

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

이제 파라미터로 받은 비밀번호와 일치하는 학생 정보를 전체 조회하는 저장 프로시저를 생성합니다. 프로시저 본문 내에서 세미콜론(;)을 사용하므로, 먼저 delimiter //로 구분자를 변경한 후 작성하고, 완료되면 원래 구분자로 되돌려야 합니다.

mysql> delimiter //
mysql> create procedure returnAll(pass varchar(30))
    begin
    select * from DemoTable1971 where StudentPassword=pass;
    end
    //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;

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

생성된 저장 프로시저는 CALL 명령어를 사용하여 호출할 수 있습니다.

mysql> call returnAll('123456');

프로시저가 정상적으로 실행되면 조건에 일치하는 전체 테이블 데이터가 아래와 같이 출력됩니다.

+-----------+-------------+-----------------+
| StudentId | StudentName | StudentPassword |
+-----------+-------------+-----------------+
|         1 | John        |          123456 |
|         2 | Chris       |          123456 |
|         3 | David       |          123456 |
|         4 | Mike        |          123456 |
+-----------+-------------+-----------------+
4 rows in set (0.00 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)

정리

이처럼 MySQL 저장 프로시저 안에 SELECT 문을 포함하면, 반복적으로 사용하는 조회 로직을 하나의 프로시저로 캡슐화할 수 있습니다. 파라미터를 활용하면 특정 조건에 맞는 데이터만 유연하게 반환할 수 있어 코드 재사용성과 유지보수성이 크게 향상됩니다.