sub_title
 MSSQL
제   목 MSSQL 조인(JOIN)을 이용한 UPDATE 및 DELETE
작성자 웹마당넷 등록일 2008-11-29 14:41:48 조회수 53,897

[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문을 만들어서 해도 될거 같은 기분이 들기도 하는데, 그럴경우 불친절한 에러 메시지를 만나실 수 있습니다. 한마디로 안 된다는 말이죠!!

작성자: 웹마당넷(webmadang@webmadang.net)   http://www.webmadang.net
 
5
    
 
0
        list
 
※ 짧은 댓글일수록 예의를 갖추어 작성해 주시기 바랍니다.
line
reply cancel
 
번호 제목 글쓴이 추천 조회 날짜
34  인덱스를 위한 교재 추천 부탁 드립니다.   member 난모르겠 0 / 0 23399 2020-06-28
33  테이블 부하에 대해서...?   member 헨씀히포 0 / 0 23222 2019-05-24
32  MSSQL - 문자함수(len함수와 datalength 함수) 이미지   admin 웹마당넷 3 / 0 41079 2017-09-10
31  MSSQL - 백업 데이터를 다른 데이터베이스로 복원하기 이미지   admin 웹마당넷 6 / 2 29852 2015-07-05
30  MSSQL - SELECT 결과를 테이블로 만들기 이미지   admin 웹마당넷 1 / 0 27705 2015-06-26
29  기본 데이타 베이스 저장소 위치 바꾸기   member 아침마당 1 / 1 26432 2010-11-04
28  SQL Server 2008 복원시 트랜잭션 로그 백업   member 아침마당 1 / 0 26533 2010-09-25
27  SQL 인젝션 공격을 당했을 경우 인젝션 스크립트 지우는 저장 프로시저   member 아침마당 1 / 0 26075 2010-09-14
26  SQL Server 트랜잭션 로그 파일 줄이는 방법   member 아침마당 0 / 1 32446 2010-09-14
25  [MSSQL] SQL Server 2008 테이블 디자인 수정시 주의 사항   member 아침마당 1 / 0 28223 2010-08-22
24  [MSSQL] ISNULL 함수 간단 예제   member 아침마당 4 / 1 47996 2010-08-05
23  MSSQL - SELECT 와 동시에 INSERT 하기   admin 웹마당넷 14 / 3 153917 2009-02-03
22  MSSQL - IDENTITY 값 초기화 하기   admin 웹마당넷 3 / 2 63439 2009-01-27
21  MS-SQL 클러스터드 인덱스를 어떤 컬럼(들)에 생성하는 것이 유리할까?   member 마카로니 0 / 0 30012 2009-01-08
20  테이블 및 개체의 정보를 확인하기 위한 시스템 저장 프로시저(System Stored pr..   admin 웹마당넷 0 / 0 27629 2008-12-20
19  MSSQL 조인(JOIN)을 이용한 UPDATE 및 DELETE   admin 웹마당넷 5 / 0 53897 2008-11-29
18  SQL injection 웹에서 체크하기   member 수확물 0 / 0 26859 2008-10-10
17  MSSQL - CASE WHEN문   member 다자래 1 / 0 69964 2008-09-19
16  [MSSQL] 파티션 정보 검색   member 수확물 0 / 0 28701 2008-09-08
15  [MSSQL] DDL_Trigger_Example   member 수확물 0 / 0 34646 2008-09-08
14  [MSSQL] xml을 이용한 split   member 수확물 1 / 0 28821 2008-08-26
13  MSSQL - UNION ALL을 이용했을때 테이블명 가져오기 이미지   member 다자래 0 / 0 40221 2008-08-21
12  MSSQL - NULL 값을 다른 값으로 대체하기   member 다자래 8 / 4 101410 2008-08-21
11  [MSSQL] View안에 저장프로스져를 쓰는 방법   member 수확물 0 / 0 45387 2008-08-08
10  MSSQL - 숫자 세자리 마다 콤마(쉼표) 찍기   member 다자래 5 / 0 59237 2008-08-07
write
[2] button