2. UPDATE를 이용한 행 수정 > MSSQL Tip

본문 바로가기
 

2. UPDATE를 이용한 행 수정

페이지 정보

작성자 no_profile 휴먼 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 댓글 0건 조회 10,995회 작성일 09-01-17 11:42

본문

2. UPDATE를 이용한 행 수정

 

이번에 소개해 드릴 내용은? 행 데이터의 수정입니다.

다르게 말한다면? ROW 데이터의 수정이라고도 하지요. 역시나 INSERT 처럼 간단하니

큰 부담은 가지지 않으셔도 됩니다.

그럼 먼저 샘플을 보실까요? ^_^

 

 
select title_id, price, title from titles where title_id like 'BU1032'
 

이렇게 먼저 데이터를 검색해 보도록 하지요..

그럼 결과로..

title_id price title 

-------- --------------------- 

BU1032 19.9900 The Busy Executive's Database Guide

(1개 행 적용됨)


이런 식으로 결과가 나올 겁니다.

그렇지요?  이제 이 녀석에 대해 수정을 가해 보도록 하지요.

 

 
UPDATE titles
SET price = price * 2
WHERE title_id like 'BU1032'
select title_id, price, title from titles where title_id like 'BU1032'
 

이렇게.. WHERE 절의 title_id는 BU1032 인 녀석만 골라서..

price 컬럼의 값을 * 2 하는 UPDATE를 행해 보지요..

그후 바로.. SELECT 를 해 보면?

title_id price title 

-------- --------------------- 

BU1032 39.9800 The Busy Executive's Database Guide

(1개 행 적용됨)

이렇게 PRICE 의 값이 두배가 늘어난 것을 아실 수 있을 겁니다.

다음으로 TITLE을 바꿔 볼까요? 역시나..

 

 
UPDATE titles
SET title = '빠르게 DB를 배우는 가이드'
WHERE title_id like 'BU1032'

select title_id, price, title from titles where title_id like 'BU1032'
 

자 SET 구문을 자세히 봐 보시구요...

 

중요한건? WHERE절으로 수정될 녀석을 쓰윽~ 골라낸후~~~

SET 구문에 어떤 처리를 한다 라고~~ 명시만 하면? 게임 끝이라는 겁니다. ^_^

 

간단하지요?

이제 UPDATE의 구문 정보를 봐 보시지요.

 

행 데이터의 갱신 - UPDATE
테이블이 이미 존재하는 행 데이터를 변경한다.
        UPDATE{table_name | view_name}
                SET[{table_name | view_name}]
                        column_name = expression[, column_name = expression...]
                [WHERE clause]
        - SET
                - 변경할 컬럼과 값을 명시한다.
        - WHERE
                - 변경될 행을 명시한다.
        - UPDATE문이 무결성 제약을 위배한다면 갱신은 이루어지지 않는다.
 
 
UPDATE discounts
SET discount = discount + .10
WHERE lowqty >= 100
 
 
다른 테이블의 데이터를 이용하여 갱신할 수 있다.
        UPDATE rable_name [(column_list)]
                SET column_name
                (SELECT column_name
                  FROM table_list
                  WHERE search_conditions)
                WHERE clause
        - 외부 WHERE절은 수정될 행을 결정한다.
        - 내부 WHERE절은 사용될 데이터를 결정한다.
 
중첩 SELECT 문은 단일 값을 반환하는 경우에만 의미가 있다.
        - 단일 값을 반환하지 않는 경우는 계산 함수를 사용해야 한다
        UPDATE rable_name [(column_list)]
                SET column_name
                (SELECT column_name
                  FROM table_list
                  WHERE search_conditions)
                WHERE clause
        - 외부 WHERE절은 수정될 행을 결정한다.
        - 내부 WHERE절은 사용될 데이터를 결정한다.
 
중첩 SELECT 문은 단일 값을 반환하는 경우에만 의미가 있다.
        - 단일 값을 반환하지 않는 경우는 계산 함수를 사용해야 한다.
 
 
UPDATE titles
SET price = price * 2
WHERE pub_id IN
(SELECT pub_id
FROM publishers
WHERE pub_name = 'New Moon Books')
 
 
단일 update문은 같은 행을 두 번 이상 갱신하지 않는다.
        - 갱신중 발생하는 로그 양을 최소화하기 위해서
 
중첩되는 SELECT 문의 FROM절에 유의해야 한다.
        - UPDATE의 대상 테이블이 FROM절에 나타나는 경우에 원하지 않는 동작을 할 수 있다.
자 이제 한마디를 더 드리도록 할까요?
이럴 경우 입니다. 

 

 
UPDATE titles
SET price = price * 2
select title_id, price, title from titles
 

이렇게.. WHERE 절의 title_id는 BU1032 인 녀석만 골라서 수정하려 했는데.

실수로 WHERE절을 빼고 처리할 경우 입니다. 

가끔 이럴때 어떻게 복구하는 지 묻는 분이 계시답니다.

 

이럴때 상당한 문제가 되겠지요..

이럴 경우는 추후 배우실 백업본을 이용해 일정 시각까지 복구를 이용해 하셔야 합니다.

 

이장 데이터의 삽입,삭제, 수정에서 이럴 경우를 미연에 방지하기 위한 작업을 이제 

배우실 겁니다. 

트랜젝션이란 녀석을 이용하는 방식 이지요.....

우선은 저렇게 WHERE절을 빼는 경우 문제가 커질 소지가 있다는 것을

숙지하시고 데이터에 수정이나 삭제를 가할때 특히나 주의 하시길 바랍니다.

 

순간의 실수가 사표와 연결되는 겁니다..  그럼 이만.

다음으로 데이터의 삭제를 보시겠습니다.

 


 

2. UPDATE를 이용한 행 수정 - 문서의 끝입니다.

댓글목록

등록된 댓글이 없습니다.

Total 12건 1 페이지
MSSQL Tip 목록
번호 제목 글쓴이 조회 날짜
열람중 no_profile 휴먼 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 10996 01-17
11 no_profile 휴먼 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 16410 01-17
10 no_profile 휴먼 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 15390 01-17
9 no_profile 휴먼 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 16588 01-17
8 no_profile 휴먼 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 17019 01-17
7 no_profile 휴먼 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 16610 01-17
6 no_profile 휴먼 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 9911 01-20
5 no_profile 휴먼 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 18060 02-05
4 no_profile 휴먼 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 16169 02-22
3 no_profile 휴먼 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 10611 02-22
2 no_profile 휴먼 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 16325 02-22
1 no_profile 최고관리자 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11024 11-29
게시물 검색