데이터베이스

Total 205
Today 0
profile_image
슈퍼아이피
14-09-03 13:10 0개 655회
MSSQL
[MSSQL 조인(JOIN)을 이용한 UPDATE 및 DELETE]

[MSSQL 조인(JOIN)을 이용한 UPDATE 및 DELETE]


여러 개의 테이블이 서로 관계를 맺고 있는 경우, A 테이블의 데이타를 업데이트 해야 하는데, 조건을 가지고 있는 쪽은 B 테이블인 경우가 심심찮게 있습니다. 이런 경우 서브쿼리를 이용해서 해결할 수도 있겠지만 MSSQL 에서는 바로 테이블간 조인을 걸어서 간편하게 UPDATE 및 DELETE 작업을 처리 할 수 있습니다.

얼마나 간단한지 예제를 실행해서 확인해 보도록 하겠습니다. 아래 SQL문을 쿼리분석기를 열어서 적당한 데이타베이스에서 실행시키면 예쁘장 한 테이블 두개가 생성됩니다. 물론 초기값도 들어 있습니다.

CREATE TABLE [dbo].[tbl_test] (
[seq] [int] PRIMARY KEY NOT NULL,
[domain] [varchar] (70) NOT NULL,
[linkchk] [char] (1) NOT NULL, 
[insert_date] [datetime] NOT NULL 
) 
GO

CREATE TABLE [dbo].[tbl_update] ( 
[seq] [int] PRIMARY KEY NOT NULL, 
[writer] [varchar] (12) NOT NULL, 
[title] [varchar] (100) NOT NULL, 
[insert_date] [datetime] NOT NULL 
)
GO

INSERT INTO tbl_test VALUES ( 1, 'www.webmadang.net', 'Y', getdate());
INSERT INTO tbl_update VALUES( 1, '웹마당넷', '업데이트테스트', getdate());


위에 생성된 두개의 테이블을 조인을 걸어서 초기값을 변경해 보겠습니다. 조건은 tbl_test 의 linkchk 컬럼 값이 "Y"인 놈입니다.


-- 조인을 이용한 UPDATE 예

UPDATE tbl_update
SET tbl_update.writer = '운영자'
FROM tbl_test
WHERE tbl_test.seq = tbl_update.seq AND tbl_test.linkchk = 'Y'

tbl_update 의 writer 컬럼값이 "웹마당넷" 에서 "운영자"로 바뀌게 됨을 확인 할 수 있습니다. 조인을 이용한 DELETE 구문 역시 별 다르지 않습니다. UPDATE 부분의 고유 문장만 DELETE 로 바꾸면 됩니다.

-- 조인을 이용한 DELETE예

DELETE tbl_update
FROM tbl_test
WHERE tbl_test.seq = tbl_update.seq AND tbl_test.linkchk = 'Y'

아주 가끔 INNER JOIN 이나 OUTER JOIN 형식으로 SQL문을 만들어서 해도 될거 같은 기분이 들기도 하는데, 그럴경우 불친절한 에러 메시지를 만나실 수 있습니다. 한마디로 안 된다는 말이죠!!

추천 0 비추천 0

댓글목록

등록된 댓글이 없습니다.