Notice
Recent Posts
Recent Comments
«   2026/08   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Tags
more
Archives
Today
Total
관리 메뉴

Don't forget to smile

[혼자 공부하는 SQL] Chapter 4-3. SQL 프로그래밍 본문

SQL

[혼자 공부하는 SQL] Chapter 4-3. SQL 프로그래밍

에르더그 2022. 11. 29. 01:58

<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 문을 사용