MySQL에서 변수 선언 및 사용
이 튜토리얼 기사에서는 MySQL 데이터베이스 용 SQL 코드 내에서 변수를 선언하는 방법을 설명합니다.
SQL 스크립트에서 변수를 사용하여 일련의 명령을 실행하는 동안 값을 저장하고 리터럴 대신 사용할 수 있습니다.
MySQL의 사용자 정의 변수
MySQL은 다양한 유형의 변수를 인식합니다. 첫 번째 유형은 접두사로 사용되는@
기호로 식별되는 사용자 정의 변수입니다. MySQL에서는 이전에 선언하거나 초기화하지 않고도 사용자 정의 변수에 액세스 할 수 있습니다. 이렇게하면 초기화 될 때 변수에 NULL 값이 할당됩니다. 예를 들어 값을 제공하지 않고 변수와 함께SELECT
를 사용하는 경우 다음과 같습니다.
SELECT @SomeVariable;
MySQL은 NULL 값을 반환합니다.
사용자 정의 변수 초기화
사용자 정의 변수를 초기화하려면SET
또는SELECT
문을 사용해야합니다. 다음과 같이 각 할당 문을 쉼표로 구분하여 한 번에 여러 변수를 초기화 할 수 있습니다.
SET @FirstVar=1, @SecondVar=2;
변수에 값을 할당하면 주어진 값에 따른 유형을 갖게됩니다. 이전 예에서@FirstVar
및@SecondVar
는int
유형입니다.
사용자 정의 변수의 수명은 세션이 활성 상태 인 동안 지속되며 다른 세션에는 표시되지 않습니다. 세션이 닫히면 변수가 사라집니다.
사용자 정의 변수에 할당 할 수있는 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
단어를 사용하여 식별 할 수 있습니다. GLOBAL
과SESSION
시스템 변수를 구별하는 또 다른 방법은 두 번째 접두사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%'