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

MySQL 사용자 정의 변수 완벽 가이드: 개념부터 활용법까지

MySQL에서 사용자 정의 변수(User-Defined Variables)가 무엇인지, 그리고 실무에서 어떻게 활용할 수 있는지 알아보겠습니다. 먼저 사용자 정의 변수를 다룰 때 반드시 알아야 할 핵심 규칙부터 살펴봅니다.

사용자 정의 변수의 주요 규칙

  • 사용자 변수는 @var_name 형태로 작성합니다. 여기서 'var_name'은 변수 이름을 의미하며, 영숫자 문자와 마침표(.), 밑줄(_), 달러 기호($)로 구성됩니다.

  • 변수 이름에 위 문자 외의 다른 문자를 포함하려면, 해당 문자를 문자열(string) 또는 식별자(identifier)로 따옴표 처리해야 합니다.

  • 사용자 정의 변수는 세션(session) 단위로 동작합니다.

  • 한 클라이언트가 정의한 사용자 변수는 다른 클라이언트가 조회하거나 사용할 수 없습니다.

  • 단, 예외적으로 Performance Schema의 user_variables_by_thread 테이블에 대한 접근 권한이 있는 사용자는 모든 세션의 모든 사용자 변수를 확인할 수 있습니다.

  • 클라이언트 세션이 종료되면 해당 세션의 모든 변수는 자동으로 해제됩니다.

  • 사용자 변수 이름은 대소문자를 구분하지 않으며, 최대 길이는 64자입니다.

기본 구문(Syntax)

사용자 정의 변수를 설정하는 대표적인 방법은 SET 문을 사용하는 것입니다. 아래 명령어 형식으로 변수를 선언하고 값을 할당할 수 있습니다.

SET @var_name = expr [, @var_name = expr] ...

SET 문을 사용할 때는 = 또는 :=를 할당 연산자로 사용할 수 있습니다. 참고로 SELECT 문 안에서 변수에 값을 할당할 때는 반드시 :=를 사용해야 합니다.

값 할당하기

사용자 변수에는 제한된 데이터 타입 집합의 값만 할당할 수 있으며, 여기에는 정수(integer), 소수(decimal), 부동 소수점(floating-point), 바이너리 또는 논바이너리 문자열(binary/nonbinary string), 그리고 NULL 값이 포함됩니다.

  • 소수(decimal) 및 실수(real) 값을 할당할 때는 값의 정밀도(precision)와 스케일(scale)가 유지되지 않습니다.

  • 허용되지 않는 타입의 값은 자동으로 허용 가능한 타입으로 변환됩니다.

  • 이러한 타입 강제(coercibility) 규칙은 테이블 컬럼 값에 적용되는 규칙과 동일합니다.

  • MySQL 사용자 변수는 쿼리 결과를 클라이언트 측 임시 변수에 따로 저장하지 않고도 기억해야 할 때 매우 유용합니다.

  • 메모리 위치를 명시적으로 지정하지 않고도 데이터를 손쉽게 저장하고 재사용할 수 있습니다.

활용 예시

-- 변수에 값 할당
SET @total_sales = 0;

-- 쿼리 결과를 변수에 저장
SELECT SUM(price) INTO @total_sales FROM orders;

-- 변수를 조건으로 활용
SELECT * FROM orders WHERE price > @total_sales / 10;

이처럼 사용자 정의 변수를 활용하면 복잡한 쿼리 내에서 중간 계산 결과를 재사용할 수 있어 코드의 가독성과 효율성을 높일 수 있습니다.