Don't forget to smile
[혼자 공부하는 SQL] Chapter 4-3. SQL 프로그래밍 본문
<IF 문>
IF 문은 조건문으로 가장 많이 사용되는 프로그래밍 문법 중 하나
IF <조건식> THEN
SQL 문장들
END IF;

1) SQL 프로그래밍은 반드시 스토어드 프로시저 내부에서 수행해야 하므로 PROCEDURE 생성 후
IF 100 = 100이라는 조건을 선언

2) 주어진 100 = 100이라는 조건이 참이므로 SELECT 문의 문장이 그대로 출력
<IF ~ ELSE 문>
IF ~ ELSE 문은 조건에 따라 다른 부분을 수행
조건이 참일 경우 IF, 그렇지 않을 경우 ELSE 문을 수행

1) DECLARE 예약어를 이용해 myNum 변수를 선언한 후 변수에 200이라는 정수를 대입
이 때 IF 문을 이용하여 myNum이 100일 경우의 조건식을 선언

2) myNum은 현재 200이므로 ELSE 문의 SELECT 문이 출력
<IF 문의 활용>

1) 데뷔 일자를 저장하는 debutDate, 오늘 날짜를 저장하는 curDate, 데뷔 일자로부터 지난 기간은 days 변수에 저장
이후 지난 기간인 days를 365로 나눈 값, 즉 데뷔 연수가 5년 이상일 경우 해당 기간을 출력하는 코드

2) 위와 같이 데뷔 년수가 5년 이상이기 때문에 정상적으로 날짜가 출력되는 것을 알 수 있음
<CASE 문>
CASE 문은 여러 조건 중 하나를 선택할 경우 사용
CASE
WHEN 조건1 THEN
SQL 문장들1
WHEN 조건2 THEN
SQL 문장들2
WHEN 조건3 THEN
SQL 문장들3
ELSE
SQL 문장들4
END CASE;

1) 위와 같이 점수와 점수에 따른 학점을 출력하는 다중 분기일 때 CASE 문이 유용
주어진 코드는 선언된 point의 점수 범위에 따라 출력되는 학점 credit이 달라짐

2) 이미 point에 88점이라는 정수를 선언했으므로 학점은 80점 이상인 B가 출력
<CASE 문의 활용>

1) CASE 문을 적절히 활용하여 인터넷 마켓 데이터베이스의 회원들의 등급 산정이 가능
우선 GROUP BY를 사용하여 회원별 총 구매액을 출력

2) 이후 ORDER BY 명령을 사용하여 총 구매액이 많은 순서대로 출력

3) 회원의 이름 역시 출력해야 하지만 이름은 member 테이블에 있으므로 두 테이블을 조인

4) 이 때 구매하지 않은 회원의 아이디와 이름도 출력되어야 하므로 내부 조인을 외부 조인으로 변경

5) 마지막으로 구매액에 따른 회원 등급 분류 CASE 문을 삽입하면 위와 같이 새로운 회원등급 열이 생성
<WHILE 문>
WHILE 문은 필요한 만큼 같은 내용을 반복하는 반복문
WHILE <조건식> DO
SQL 문장들
END WHILE;

1) 위와 같이 1부터 100까지의 모든 정수의 합을 구하는 프로그램에 WHILE 문을 사용할 수 있음
위 코드는 i와 hap이라는 정수 변수를 선언한 후 WHILE 문을 사용하여 i의 값을 순차적으로 증가시키는 방법을 사용

2) 그 결과, 정상적으로 1부터 100까지의 합인 5050이 출력
<WHILE 문의 응용>

1) WHILE 문을 원하는 시점에 종료하기 위해서 ITERATE와 LEAVE 문을 사용 가능
ITERATE [레이블] 명령은 본인이 지정한 레이블로 이동하여 계속 진행하는 명령
LEAVE [레이블]은 본인이 지정한 레이블을 빠져나가는, 즉 WHILE 문이 종료되는 명령을 의미
위 코드에선 선언한 myWhile 레이블을 이용해 각각 ITERATE와 LEAVE 문을 사용하였음

2) 그 결과, 사전에 계획한 4의 배수를 제외하고 1000이 넘으면 연산을 종료하는 명령 수행 완료
<동적 SQL>
SQL문은 대부분 내용이 고정되어 있지만, 상황에 따라 내용 변경이 필요할 때 동적 SQL을 사용

1) 동적 SQL은 위와 같이 SQL을 미리 준비하는 PREPARE 문과 준비된 SQL을 실행하는 EXECUTE 문을 사용
'SQL' 카테고리의 다른 글
| [혼자 공부하는 SQL] Chapter 5-2. 제약조건으로 테이블을 견고하게 (2) | 2022.12.01 |
|---|---|
| [혼자 공부하는 SQL] Chapter 5-1. 테이블 만들기 (1) | 2022.11.30 |
| [혼자 공부하는 SQL] Chapter 4-2. 두 테이블을 묶는 조인 (0) | 2022.11.28 |
| [혼자 공부하는 SQL] Chapter 4-1. MySQL의 데이터 형식 (0) | 2022.11.28 |
| [혼자 공부하는 SQL] Chapter 3-3. 데이터 변경을 위한 SQL 문 (0) | 2022.11.28 |