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

MySQL에서 배열 변수를 다루는 방법 완벽 가이드

MySQL에서 배열 변수를 사용할 수 있을까?

MySQL은 Oracle이나 PostgreSQL과 달리 배열(array) 타입의 변수를 기본적으로 지원하지 않습니다. 따라서 배열처럼 여러 값을 하나의 구조로 다루고 싶다면 별도의 우회 방법이 필요합니다.

가장 간단하고 널리 쓰이는 해결책은 DUAL 테이블과 UNION ALL을 조합하는 것입니다. 이 방법을 사용하면 별도의 테이블 생성 없이 쿼리 한 번으로 배열과 유사한 결과 집합을 만들 수 있습니다.

기본 문법

SELECT yourValue1 AS ArrayValue FROM DUAL
UNION ALL
SELECT yourValue2 FROM DUAL
UNION ALL
SELECT yourValue3 FROM DUAL
UNION ALL
SELECT yourValue4 FROM DUAL
UNION ALL
.
.
.
SELECT yourValueN FROM DUAL;

예제로 살펴보기

1부터 10까지의 숫자를 마치 배열 요소처럼 한 번에 조회하는 예제입니다:

mysql> SELECT 1 AS ArrayValue FROM DUAL
    -> UNION ALL
    -> SELECT 2 FROM DUAL
    -> UNION ALL
    -> SELECT 3 FROM DUAL
    -> UNION ALL
    -> SELECT 4 FROM DUAL
    -> UNION ALL
    -> SELECT 5 FROM DUAL
    -> UNION ALL
    -> SELECT 6 FROM DUAL
    -> UNION ALL
    -> SELECT 7 FROM DUAL
    -> UNION ALL
    -> SELECT 8 FROM DUAL
    -> UNION ALL
    -> SELECT 9 FROM DUAL
    -> UNION ALL
    -> SELECT 10 FROM DUAL;

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

+------------+
| ArrayValue |
+------------+
| 1          |
| 2          |
| 3          |
| 4          |
| 5          |
| 6          |
| 7          |
| 8          |
| 9          |
| 10         |
+------------+
10 rows in set (0.00 sec)

핵심 포인트 정리

  • DUAL 테이블: 실제 데이터 없이 상수나 표현식을 조회할 때 사용하는 특수한 가상 테이블입니다.
  • UNION ALL: 여러 SELECT 결과를 하나의 결과 집합으로 합칩니다. 중복 제거가 필요 없어 UNION보다 성능상 유리합니다.
  • 첫 번째 SELECT 문의 컬럼 별칭(AS ArrayValue)이 전체 결과 집합의 컬럼 이름으로 결정됩니다.

값의 개수가 많아지면 쿼리가 길어질 수 있지만, 임시 테이블이나 저장 프로시저 없이 즉석에서 값 목록을 만들어야 할 때 매우 유용한 패턴입니다.