컴퓨터 공부/Database

[Database] MYSQL 조인 insert, update, delete

나정_ 2013. 2. 12. 13:15

다중행 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 뒤에 선언해주어 원하는 행들을 삭제할 수 있다.