다중행 Insert, Update, Delete를 배워보자
웹페이지 sm을 하다가 보면 디비를 이전해야하는 경우가 다반사로 발생한다.
그럴 경우 필요한 것이 다중행 insert, update, delete인데 이들을 사용하면 한 쿼리로 여러행의 값들을 테이블에 집어 넣을 수 있다.
이번 글은 insert, update, delete가 무엇인지 안다는 가정하에 예시로만 글을 진행하도록 하겠다.
1. 다중행 Insert ( 다중 조인 insert )
INSERT
INTO 테이블 명
(
seq,
businesslog_seq,
confirm_user_seq,
confirm_id,
confirm_name,
regist_dtime
)
SELECT
CASE candi.working_tb_seq WHEN @seq THEN @rr:=@rr+1 ELSE @rr:=1 END as seq,
(@seq := candi.working_tb_seq) as working_seq,
user.user_seq,
candi.candidate_id,
candi.candidate_name,
candi.regist_dtime
FROM tb_working_candidate candi ,tb_user_m user , (SELECT @seq:='', @rr:=1 FROM DUAL) aa
WHERE candi.working_type = 'WO03' AND candi.candidate_id= user.user_id
ORDER BY candi.candidate_seq desc
다중 행 insert에는 values 가 없다
select 로 조인을 이용하여 원하는 값으로 테이블을 만들어준 다음에 가져와 집어 넣는다.
2. 다중행 Update ( 다중 조인 update )
UPDATE
테이블 명 AS b
INNER JOIN 조인하고자 하는 테이블 명 AS u
ON (b.confirm_name = u.user_name)
SET b.confirm_id = u.user_id
WHERE b.confirm_name = u.user_name;
현재 위 update 쿼리는
u 테이블에 존재하는 id 값을 b 테이블에서 confirm_id라는 값에 update시키고 싶을 경우 u테이블을 join을 걸어 값을 update할 수 있다.
3. 다중 행 Delete ( 다중 조인 delete )
DELETE au
FROM 테이블1 명 au , 테이블2 명 p
WHERE au.proceedings_seq = p.proceedings_seq
AND au.user_name = p.user_name
조인을 통하여 해당 alias를 Delete 뒤에 선언해주어 원하는 행들을 삭제할 수 있다.
'컴퓨터 공부 > Database' 카테고리의 다른 글
[Database] Oracle 11g 설치방법 (0) | 2013.04.25 |
---|---|
[Database] Mysql의 타입 종류 (3) | 2013.04.04 |
[Database] MYSQL groupby rollup (0) | 2012.12.30 |
[Database] mysql explain 이해 (6) | 2012.12.27 |
[Database] Groupby에 대해서 알아보자 (0) | 2012.12.22 |