SQL 자주쓰는 쿼리 _ CASE Query 편!! [ 조건문 쿼리 ]
- 프로그래밍 정보
- 2010. 2. 7.
아...
어제 블로그 스킨 바꾸고 HTML / CSS 수정한다고 시간 보냈더니
이제야 또 포스팅 하네요 --;;;
아.. 각설하고 ㅋㅋㅋㅋ
바로 들어가보면......
오늘은 SQL 의 조건문!!!
바로 CASE 문 입니다~~~
흔히 조건문 하면 IF ELSE 문 생각이 나곤 하는데,
뭐 SQL 도 비슷하지요~
SQL 도 DB만 이용할 뿐이지 원본적인건 랭귀지는 랭귀지 니 깐요 ㅋㅋㅋㅋ
UPDATE 테이블명 SET 값이 대입될 칼럼명 =
CASE
WHEN 비교칼럼1 = 비교값1
THEN 대입될 값1
WHEN 비교칼럼2 = 비교값2
THEN 대입될 값2
ELSE 값3
END;
실습 스샷을 보기전에 우선 여기에서
ELSE 문 같은 경우 선택사항이지만 혹시 모든 조건이 만족하지 않으면
(ELSE가 없다면) UPDATE 가 되지 않습니다.
따라서 모든 조건이 만족하지 않을 경우를 대비하여 디폴트 값인 ELSE를 추가합니다
또, END 문 뒤에 WHERE 절을 추가해서 조건식이 가능하고,
UPDATE 뿐만 아니라 SELECT, INSERT, DELETE 에서도 사용 가능!!!
우선 현재 저번 글에 이어서 test 테이블 입니다.
데이터가 3개의 행이 저장되어 있군요...
조건문을 실행해 보면~
조건문에서 살짝 설명을 달아 보면,
test_table 의 test_name 칼럼을 수정 하길 원하는데,
조건식으로 만약 id 값이 2 라면 test_name 에는 김구를 넣고
id 값이 4 라면 test_name 에 인터넷 을 넣고,
모든 조건이 만족하지 않으면 test_name 에 디폴트를 넣네요
위 기존 데이터를 보면 id 값이 2는 있고 4는 없으므로
id 2번 값의 test_name 이 홍길동에서 김구로 바뀌겟네요
결과를...........
와우.... 엄청난 일이 났네요...
원했던건 id 값이 2번인 것만 '김구'로 바꾸는 것이었는데
ELSE 문 때문에 해당하지 않는 값들은 모두 이름이 디폴트로 바꼈네요 !!!!!!!!!!!!!!!!!!!!!!!!
만일, 데이터가 한 2000 개 정도 되는 테이블에서 이렇게 했다면
ㅎㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷ
생각해도 짜릿하군요...
그럼 이제 어떻게 해야 될까요???
실행했던 쿼리를 이전단계로 되돌릴 순 없을까?
흔히 Undo 나 Redo 기능은 없을까?
결론만 말하면 없습니다 ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
일일이 다 수행해 줘야 되겠군요...
하지만 해결법은 있습니다.
얼마 후에 포스팅 할 View 와 트랜잭션, 그리고 임시 테이블을 이용하면 되거든요!!
아... 조건문은 별 내용이 없어서 포스트가 짧은듯 하네요 ㅋㅋㅋㅋ