사용자 정의 변수
사용자 정의 변수 선언 및 초기화
SET @변수이름 = 대입값;
-- or
SET @변수이름 := 대입값;
SELECT @변수이름 := 대입값;
SET 이외의 명령문에서는 = 가 비교연산자로 취급되기 때문에, SELECT 로 변수를 선언하고 값을 대입할 때는 := 를 사용한다.
사용자 정의 변수 사용법
SET @start = 15, @finish = 20;
-- 또는
SELECT @start := 15, @finish := 20;
SELECT * FROM employee WHERE id BETWEEN @start AND @finish;
※ 참고
저장하는 값에 의해 자료형이 정해지며, Integer, Decimal, Float, Binary 그리고 문자열 타입만 취급할 수 있다.
또한 변수를 초기화 하지 않은 경우 값은 NULL, 자료형은 String 타입이다.
지역변수
지역변수 선언 및 초기화
DELIMITER $$
CREATE PROCEDURE testPro(var1 INT)
BEGIN
DECLARE start INT DEFAULT 1; -- int start = 1 과 같다.
DECLARE finish INT DEFAULT 10;
SELECT var1, start, finish;
SELECT * FROM employees WHERE id BETWEEN start AND fisnish;
END $$
DELIMITER ;
CALL testPro(1);
DECLARE 로 먼저 선언 후에 사용하며, 지역변수로 사용하거나 스토어 프로시저(저장 프로시저)의 매개변수로 사용될 수 있다.
또한 변수의 범위는 변수가 선언되는 곳의 BEGIN ~ END 블록으로 제한된다.
※ 참고
DEFAULT 기재를 하지않으면 초기값은 NULL 이다.
시스템 변수
시스템 변수 확인하기
SHOW GLOBAL VARIABLES;
-- 모든 시스템 변수를 확인한다.
SHOW GLOBAL VARIABLES LIKE 'CHAR%';
-- 변수 이름이 CHAR로 시작되는 시스템 변수를 확인한다.
※ 참고
첫번째 방식처럼 모든 시스템 변수를 확인하는 경우 시스템 변수의 개수가 무려 400개가 넘기 때문에 패턴(LIKE)을 이용하여 필요한 변수를 확인하는 것이 좋다.
시스템 변수 수정하기
SET GLOBAL [시스템 변수 이름] = 적용할 값 ;
예를들어 character_set_server의 값을 utf8 로 바꾸고 싶다면,
SET GLOBAL character_set_server = utf8;
참고