250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 연결리스트
- 비관적락
- execute
- shared lock
- PS
- 일대다
- 즉시로딩
- 이진탐색
- 다대일
- FetchType
- 낙관적락
- exclusive lock
- eager
- 힙
- 백트래킹
- 연관관계
- fetch
- 유니크제약조건
- 지연로딩
- BOJ
- querydsl
- 스프링 폼
- 스토어드 프로시저
- JPQL
- 다대다
- 데코레이터
- SQL프로그래밍
- 동적sql
- CHECK OPTION
- dfs
Archives
- Today
- Total
흰 스타렉스에서 내가 내리지
SQL 프로그래밍 - IF, CASE, WHILE 본문
728x90
Stored Procedure
DELIMITER $$
CREATE PROCEDURE 프로시저_이름()
BEGIN
-- 이 부분에 SQL 프로그래밍 코딩
END $$ -- stored procedure 종료
DELIMITER ; -- 종료 문자를 다시 세미콜론으로 변경
CALL 프로시저_이름(); -- stored procedure 실행
DELIMITER $$ :
세미콜론(;)으로는 SQL의 끝인지, stored procedure의 끝인지 구별할 수 없어서 $$를 사용한다.
IF 문
IF <조건식> THEN
...
END IF;
사용 예시
DROP PROCEDURE IF EXISTS ifProc1;
DELIMITER $$
CREATE PROCEDURE ifProc1()
BEGIN
IF (100 = 100) THEN
SELECT * FROM member;
END IF;
END $$
DELIMITER ;
CALL ifProc1();
IF ~ ELSE 문
DROP PROCEDURE IF EXISTS ifProc2;
DELIMITER $$
CREATE PROCEDURE ifProc2()
BEGIN
DECLARE myNum INT; -- 1
SET myNum = 200; -- 2
IF myNum = 100 THEN
SELECT '100입니다.';
ELSE
SELECT '100이 아닙니다.';
END IF;
END $$
DELIMITER ;
CALL ifProc2();
1 : DECLARE 예약어를 사용해서 myNum 변수를 선언한다. 제일 뒤에는 변수의 데이터 형식을 INT로 지정했다.
2 : SET 예약어로 myNum 변수에 200을 대입했다.
IF 문의 활용
191~193 : 변수를 선언한다.
195 : INTO 명령어를 통해 추출한 데이터를 debutDate에 저장한다.
199 : CURRENT_DATE() 내장함수로 현재 날짜를 불러올 수 있다. 이를 curDATE라는 변수에 저장한다.
200 : DATEDIFF() 내장함수로 날짜의 차이를 구한다. 일수로 계산해준다.
CASE 문
다른 프로그래밍 언어의 switch 와 같다.
CASE
WHEN 조건1 THEN
...
WHEN 조건2 THEN
...
WHEN 조건3 THEN
...
ELSE
...
END CASE;
CASE 문의 활용
구매금액에 따른 회원 등급 나누기
WHILE 문
WHILE <조건식> DO
SQL 문장들
END WHILE;
1부터 100까지 더하는 예제
WHILE 문의 응용
* ITERABLE [레이블] : 지정한 레이블로 가서 계속 진행한다.
* LEAVE [레이블] : 지정한 레이블을 빠져나간다. 즉 WHILE 문이 종료된다.
283 : WHILE 문을 myWhile 이라는 레이블로 지정한다.
285~288 : i가 4의 배수라면 i를 1증가시키고 ITERATE를 만나서 283번줄의 레이블로 올라간다. 즉, WHILE 문을 계속 진행한다.
290~292 : hap이 1000을 초과하면 LEAVE를 만나서 myWhile 레이블을 빠져 나간다.
'SQL' 카테고리의 다른 글
[MySQL] 테이블 생성 (0) | 2022.08.05 |
---|---|
동적 SQL - PREPARE, EXECUTE (0) | 2022.08.05 |
SQL 고급 문법 - 두 테이블을 묶는 조인(내부,외부,상호,자체) (0) | 2022.07.31 |
SQL 고급 문법 - MySQL의 데이터 형식 (0) | 2022.07.30 |
데이터 변경을 위한 SQL 문 (CRUD) (0) | 2022.07.29 |