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

MySQL 사용자 정의 변수와 IF 문, SELECT를 활용해 사용자 정의 메시지 출력하는 방법

MySQL에서는 사용자 정의 변수(User-Defined Variable)와 IF() 함수를 조합하면 쿼리 결과에 따라 원하는 메시지를 동적으로 출력할 수 있습니다. 이번 글에서는 테이블을 생성하고 데이터를 삽입한 뒤, SELECT 문의 결과를 사용자 정의 변수에 저장하고 IF 문으로 조건별 메시지를 설정하는 과정을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable2008
(
   Value int
);
Query OK, 0 rows affected (10.59 sec)

위 쿼리는 Value라는 int 타입의 컬럼 하나를 가진 DemoTable2008 테이블을 만듭니다.

2. 데이터 삽입하기

다음으로 INSERT 명령을 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable2008 values(10);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable2008 values(20);
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable2008 values(30);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable2008 values(-31);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable2008 values(-28);
Query OK, 1 row affected (0.17 sec)

양수 세 개(10, 20, 30)와 음수 두 개(-31, -28)를 입력했습니다.

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

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select * from DemoTable2008;

실행 결과는 다음과 같습니다.

+-------+
| Value |
+-------+
|    10 |
|    20 |
|    30 |
|   -31 |
|   -28 |
+-------+
5 rows in set (0.00 sec)

4. 사용자 정의 변수와 IF 문으로 메시지 설정하기

이제 핵심 단계입니다. 먼저 SELECT 문의 결과(합계)를 사용자 정의 변수 @value에 할당한 후, IF() 함수를 이용해 조건에 따라 다른 메시지를 반환하는 쿼리입니다.

mysql> set @value:=(select sum(Value) from DemoTable2008);
Query OK, 0 rows affected (0.03 sec)
mysql> select if(@value > 0, 'Value is greater than 0','Not greater than') as Result;

여기서 @value에는 모든 값의 합인 1(= 10 + 20 + 30 − 31 − 28)이 저장됩니다. 이 값이 0보다 크기 때문에 첫 번째 메시지가 출력됩니다.

실행 결과는 다음과 같습니다.

+-------------------------+
| Result                  |
+-------------------------+
| Value is greater than 0 |
+-------------------------+
1 row in set (0.00 sec)

정리

SET @변수:=(SELECT ...) 구문으로 서브쿼리 결과를 사용자 정의 변수에 담고, IF(조건, 참일 때 값, 거짓일 때 값) 형태로 조건 판단을 하면 복잡한 애플리케이션 로직 없이도 SQL 내에서 간편하게 조건별 메시지를 처리할 수 있습니다. 합계 대신 COUNT, AVG 등 다른 집계 함수를 활용하면 다양한 상황에서 응용할 수 있습니다.