본문 바로가기

MySQL

[MySQL] 사용자 변수

반응형

참고 : http://link2me.tistory.com/536



MySQL을 사용하다 보면, auto increment을 통해 값을 자동 증가 시키지 않은 테이블을 만나게 된다.


물론 코드상에서 for, while문등에서 변수를 계속 증가시켜 뿌려줄 수도 있겠지만.


MySQL에서도 변수를 증가 시킬 수 있는 방법이 있어서 정리한다.



01. MySQL에서의 사용자 변수
 -. MySQL에서 하나의 명령문에 있는 값을 다른 명령문으로 전달하는 것이 가능하다.
 -. 사용자 정의 변수에 값을 저장한 후에 나중에 그 값을 참조할 수 있다.
 -. 한 클라이언트에서 정의된 사용자 변수는 다른 클라이언트에서는 보이지 않으며 사용할 수 없다.
 -. 해당 커넥션에서 정의된 모든 변수는 클라이언트가 종료되면 자동으로 해제된다.


02. MySQL 사용자 변수 값 할당 방법
 -. SET @var_name = expr  (정수, 실수, 문자열, NULL) SET 변수할당은 = 또는 := 둘다 사용 가능하다.
 -. 비 SET 문에서는 := 로 할당한다. = 는 비교 연산자로 취급되기 때문이다.
 -. 여러개의 변수를 선언할때는 DECLARE @ 변수명 자료형, @변수명 자료형과 같은 방법으로 계속 적어주면 된다.
 -. SELECT 문의 가장 기본은 SELECT/FROM/WHERE이다.
 -. 복잡한 쿼리문을 작성할 때도 SELECT/FROM/WHERE를 작성하고 나머지 부분을 채우는 것이 좋다.




 SET(사용자 변수)과 함께 쿼리를 실행한 첫번째 경우

 SET @rownum = 0;
 SELECT (@rownum := @rownum + 1) AS num, end_date, m_id, create_date FROM academy_coupon3 LIMIT 10;

 출력결과


위의 예제를 살펴보면 num이라는 컬럼이 추가되고.


그 값이 계속 증가하여 보여주는것을 알 수 있다.


이렇게 변수가 한번 생성되면 해당변수는 클라이언트를 종료할때 까지 계속 유지가 되는데.


아래처럼 확인을 할 수 가 있다.



 SET(사용자 변수)을 사용하지 않고 위의 쿼리만 실행한 두번째 경우

 SELECT (@rownum := @rownum + 1) AS num, end_date, m_id, create_date FROM academy_coupon3 LIMIT 10;
 출력결과


위 내용을 보면 num의 값이 11부터 시작되는것을 확인할 수 있기에.


클라이언트가 종료되기까지 계속 사용이 가능하다.


만약 클라이언트를 종료하고 다시 쿼리를 실행한다면.



 클라이언트를 종료, 재실행 후 SET(사용자 변수)을 지정하지 않고 쿼리만 실행한세번째 경우

 SELECT (@rownum := @rownum + 1) AS num, end_date, m_id, create_date FROM academy_coupon3 LIMIT 10;
 출력결과


위의 이미지 처럼 num 컬럼의 값들이 전부 null로 표기되는 것을 알 수 있다.





반응형