MySQL에서 변수 선언 및 사용

Gustavo du Mortier 2023년1월30일
  1. MySQL의 사용자 정의 변수
  2. 사용자 정의 변수 초기화
  3. SELECT 문에서 변수를 필드로 사용
  4. MySQL에서 로컬 변수 선언
  5. MySQL에서 시스템 변수 선언
MySQL에서 변수 선언 및 사용

이 튜토리얼 기사에서는 MySQL 데이터베이스 용 SQL 코드 내에서 변수를 선언하는 방법을 설명합니다.

SQL 스크립트에서 변수를 사용하여 일련의 명령을 실행하는 동안 값을 저장하고 리터럴 대신 사용할 수 있습니다.

MySQL의 사용자 정의 변수

MySQL은 다양한 유형의 변수를 인식합니다. 첫 번째 유형은 접두사로 사용되는@기호로 식별되는 사용자 정의 변수입니다. MySQL에서는 이전에 선언하거나 초기화하지 않고도 사용자 정의 변수에 액세스 할 수 있습니다. 이렇게하면 초기화 될 때 변수에 NULL 값이 할당됩니다. 예를 들어 값을 제공하지 않고 변수와 함께SELECT를 사용하는 경우 다음과 같습니다.

SELECT @SomeVariable;

MySQL은 NULL 값을 반환합니다.

사용자 정의 변수 초기화

사용자 정의 변수를 초기화하려면SET 또는SELECT 문을 사용해야합니다. 다음과 같이 각 할당 문을 쉼표로 구분하여 한 번에 여러 변수를 초기화 할 수 있습니다.

SET @FirstVar=1, @SecondVar=2;

변수에 값을 할당하면 주어진 값에 따른 유형을 갖게됩니다. 이전 예에서@FirstVar@SecondVarint 유형입니다.

사용자 정의 변수의 수명은 세션이 활성 상태 인 동안 지속되며 다른 세션에는 표시되지 않습니다. 세션이 닫히면 변수가 사라집니다.

사용자 정의 변수에 할당 할 수있는 5 가지 데이터 유형이 있습니다.

  • 문자열 (이진 또는 비 이진)
  • 정수
  • 십진수
  • 부동 소수점
  • 모든 유형과 연관 될 수있는NULL.

변수에 값을 할당하려면=또는:=기호를 사용할 수 있습니다. 다음 두 명령문은 동일한 효과를 갖습니다.

SET @MyIntVar = 1;
SET @MyIntVar := 1;

SELECT 문에서 변수를 필드로 사용

변수는SELECT 문의 필드 목록에 포함될 수 있습니다. 다음 예와 같이 선택에서 필드를 지정할 때 변수와 필드 이름을 혼합 할 수 있습니다.

SET @IndexVar := 1;
SELECT @IndexVar, ISBN FROM Books;

MySQL에서 로컬 변수 선언

지역 변수는 이름에@접두사가 필요하지 않지만 사용하기 전에 선언해야합니다. 지역 변수를 선언하려면 DECLARE문을 사용하거나 STORED PROCEDURE선언 내에서 매개 변수로 사용할 수 있습니다.

지역 변수를 선언 할 때 선택적으로 기본값을 할당 할 수 있습니다. 기본값을 지정하지 않으면 변수가 NULL 값으로 초기화됩니다.

각 변수는 선언을 포함하는BEGIN ... END 블록으로 구분 된 범위 내에 있습니다.

다음 예제는 로컬 변수를 사용하는 두 가지 방법을 보여줍니다. 프로 시저 매개 변수 및 프로 시저 내부 변수로 :

DELIMITER $$

CREATE PROCEDURE GetUpdatedPrices(itemcount INT)
BEGIN
	DECLARE factor DECIMAL(5, 2);
	SET factor:=3.45;
	SELECT PartNo, Description, itemcount * factor * ListPrice FROM Catalogue;
END
$$

DELIMITER ;

이전 예에서 변수itemcount는 프로 시저에 값을 전달하는 매개 변수로 사용되었습니다. 이 변수는 나중에 테이블에서 얻은ListPrice 필드를 곱하기 위해SELECT 문에서 사용됩니다. 지역 변수 factor는 결과 가격을 곱하는 데 사용되는 10 진수 값을 저장하는 데 사용됩니다.

MySQL에서 시스템 변수 선언

개별 클라이언트 연결 (SESSION 변수)에 영향을 미치거나 전체 서버 작업 (GLOBAL 변수)에 영향을 미치는 값을 저장하는 데 사용되는 시스템 변수라는 세 번째 유형의 변수가 있습니다.

시스템 변수는 일반적으로 서버 시작시 설정됩니다. 이를 위해 명령 줄을 사용하거나 옵션 파일에SET 문을 포함 할 수 있습니다. 그러나 해당 값은 SQL 스크립트 내에서 수정할 수 있습니다.

시스템 변수는 접두사로 이중@기호를 사용하거나SET 문에서GLOBAL 또는SESSION 단어를 사용하여 식별 할 수 있습니다. GLOBALSESSION 시스템 변수를 구별하는 또 다른 방법은 두 번째 접두사global 또는session을 사용하는 것입니다. 다음은 시스템 변수에 값을 할당하는 방법에 대한 몇 가지 예입니다.

-- Alternative ways to set session system variables:
SET interactive_timeout=30000;
SET SESSION interactive_timeout=30000;
SET @@interactive_timeout=30000;
SET @@local.interactive_timeout=30000;

-- Alternative ways to set global system variables:
SET @@global.interactive_timeout=30000;
SET GLOBAL interactive_timeout=30000;

세션 또는 서버에서 사용중인 시스템 변수를 보려면SHOW VARIABLES 문을 사용할 수 있습니다. 특정 변수의 값을 얻으려면 비교 연산자를 추가하여이 목록을 필터링 할 수 있습니다. 예를 들면:

SHOW VARIABLES LIKE '%timeout%'