호기심 많은 분석가

[MySQL] MySQL에서 for문 사용하기 본문

Coding/Coding Test & Algorithm

[MySQL] MySQL에서 for문 사용하기

DA Hun 2021. 5. 20. 11:56

목표. MyTable의 DAY라는 column이 11부터 17까지의 값을 가질 때의 address값을 뽑아내 보자

1. 빈 테이블 생성

# MyTable이라는 TABLE이 있을 경우 지워줌
DROP TABLE IF EXISTS `MyTable`;

# MyTABLE이라는 TABLE에 ADDRESS(문자열이면서 가변형)
CREATE TABLE MyTable (ADDRESS VARCHAR(50));

2. procedure를 사용한 for문 작성

# 마찬가지로 add_function이라는 procedure가 있을 경우 삭제
DROP procedure IF EXISTS `add_function`;

DELIMITER $$
CREATE PROCEDURE add_function()
BEGIN
	DECLARE i INT DEFAULT 11; # i값의 초기값을 11로 설정
    	WHILE (i <= 17) DO # for문, i가 17이 될 때까지 반복
		INSERT INTO `MyTable`(ADDRESS) # MyTable의 ADDRESS column에 value를 넣어줌
		select DISTINCT(wds.address) from WDS_ROW_PROCESS as wds # wds라는 table의 day컬럼에조건을 부여하여address의 unique값 추출
		where wds.day=i; # day 조건문
        SET i = i + 1; # i 증가
	END WHILE; # for문 종료
END $$
DELIMITER ; # 구분기호를 다시 ;로 바꿔줌

 여기서 DELIMITER $$이란 $$로 문장을 구분한다는 약속이다. 위의 예시에선 PROCEDURE을 마치는 구분자 기호로 $$을 사용함. 이렇게 우리는 for문을 사용한 procedure을 만들어주었음

3. procedure 실행

# procedure 실행
CALL add_function();

# Table 확인
SELECT * FROM MyTable;

 CALL 문법을 사용하여 우리는 procedure를 실행할 수 있었다.


 약간의 SQL 문법에 대한 이해와 Python의 for, while문을 사용해보셨다면 쉽게 이해할 수 있으실 겁니다. 조금의 도움이라도 되셨길 바라며 글을 마무리하겠습니다. 궁금하신 점 있으면 문의주세요. :)