MYSQL 심오한 @변수

byeolhee·2022년 10월 25일
0

@ 변수

MYSQL 에서 변수를 사용한다. 처음에 너무 기본적인거만 알아가지고 몰랐는데 종종 보여져서 값을 누적한다거나 해서 요즘 사용해보려 노력하고 있다.

  1. 사용자변수
  • 사용자가 직접 정의
  • 정수, 10진수, 부동 소수점, 2진수, 이진문자열, NULL 등 제한된 데이터 유형 세트에서 지정 가능
  • 변수는 세션단위로 실행되기 때문에 한 클라이언트에서 정의한 사용자 변수는 다른 클라이언트에서 보거나 사용할 수 없다.
SET @변수이름 := 대입값;
SET @변수이름 = 대입값;
SELECT @변수이름 := 대입값;

사용법

-여러개 지정도 가능하다.

SET @star := 1, @best =20;
SELECT @star := 1, (@var := @var +1) a from tb_table

SET @stat = 1, @fin = 2010;
SELECT * FROM emp2 WHERE empno BETWEEN @stat AND @fin
  • 저장하는 값에 따라 자료형이 정해짐
  • Integer, Decimal, Binary, 문자열 타입만 취급할 수 있다.
  • 변수를 초기화 하지 않은 경우는 null, 자료형은 string이다.
  1. 지역변수

DECLARE로 선언해 사용해서 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 ;

## 대강 매개변수로 프로시저 생성 하면서 받아서 내부 변수 factor 로 3.45라고 세팅. DECIMAL는 데이터 소수점 2자리까지 확보되었다는 뜻 같다. 
## 아무튼 그래서 select 문을 실행!

프로시저 알못인데 언제 능숙해질까 걱정이다.
2. 는 이 분 아래 주소 남겨둔 금융님을 티스토리를 이용해서 보자.

  1. 시스템 변수
  • SQL 내에 기본적으로 정의 된 변수들
    1) 글로벌변수 : 서버 인스턴스 전체 적용되는 변수
    2) 세션변수 : MYSQL 서버 접속할 때 갖고있는 옵션 기본값을 제어. MYSQL 서버가 기억하고 있다가 연결이 만들어지는 세션에 기본값으로 적용한다.

참고 사이트 : https://codingspooning.tistory.com/141

요즘 이 분 티스토리 글을 보면서 조금씩 연습중인데 재밌다.

profile
데이터 우주를 헤맵니다. 응답하라 데이터

0개의 댓글