안녕하세요. SQLER의 코난 김대우입니다. 
이번 강좌에서는, 3-2. UPDATE - 데이터 수정을 진행 하겠습니다.


SQLER에서 진행되는, 챗GPT와 함께 배우는 SQL Server 강좌 목록

 

이번에 진행할 강좌는 데이터 수정(UPDATE)입니다.

 

 

 

TL;DR

UPDATE 구문으로 테이블의 로우 데이터를 수정합니다. SET으로 컬럼과 값을 설정하고, WHERE 절로 업데이트 대상을 필터링합니다. 무결성 제약을 위반하지 않도록 주의해야 합니다.


 

UPDATE 구문 예제

먼저 UPDATE 구문 예제를 실행해 보도록 하겠습니다. Production.Product 테이블의 ProductID가 514인 제품을 조회합니다.

USE AdventureWorks;
GO

SELECT ProductID, Name, ListPrice FROM Production.Product
WHERE ProductID = 514;
GO

 

가격을 확인하면 133.34입니다. 이 제품의 가격을 두배로 수정하려면 어떻게 해야 할까요?

 

--업데이트를 수행해 ProductID가 514번인 LL Mountain Seat Assembly 제품의 ListPrice를 *2로 수정
UPDATE Production.Product SET ListPrice = ListPrice * 2
WHERE ProductID = 514;
GO

 

SELECT 수행해 가격을 확인합니다.

SELECT ProductID, Name, ListPrice FROM Production.Product
WHERE ProductID = 514;
GO

결과
ProductID   Name                      ListPrice
----------- ------------------------- --------------
514         LL Mountain Seat Assembly 266.68

 

가격이 266.68로 수정되었습니다.

 

UPDATE 구문으로 문자열 값인 제품명을 변경해 보겠습니다.

-- 제품 이름을 수정
UPDATE Production.Product SET Name = N'LL 산악자전거 안장 부품'
WHERE ProductID = 514;
GO

-- 데이터 조회
SELECT ProductID, Name, ListPrice FROM Production.Product
WHERE ProductID = 514;
GO

이렇게 문자열 값도 수정할 수 있습니다.

여러 컬럼 값을 한 번에 업데이트할 수도 있습니다.

-- 여러 컬럼을 한 번에 수정
UPDATE Production.Product SET Name = N'새로운 LL 산악자전거 안장 부품', ListPrice = ListPrice * 3
WHERE ProductID = 514;
GO

-- 데이터 조회
SELECT ProductID, Name, ListPrice FROM Production.Product
WHERE ProductID = 514;
GO

이렇게 동시에 여러 컬럼을 수정할 수 있습니다.


UPDATE 구문을 다시 체크해 볼게요. 테이블 명 다음에 SET 구문과 함께 수정할 컬럼 값을 설정합니다. 이어서, WHERE 절로 수정될 행을 필터링합니다.

 

 

로우 데이터 갱신 - UPDATE 구문 정보

테이블에 존재하는 로우 데이터를 수정합니다.

UPDATE {table_name | view_name}
SET [{table_name | view_name}] 
    column_name = expression[, column_name = expression...]
[WHERE clause]


SET: 변경할 컬럼과 값을 명시한다.
WHERE: 변경될 로우를 명시한다.


주의사항
UPDATE문이 무결성 제약을 위배한다면 갱신은 이루어지지 않는다.


☑️ 챗GPT 활용: 데이터 무결성 제약에 대해서 설명해 줘

 

WHERE 조건을 넣지 않고 UPDATE를 수행해 망한 경우

실제로도 발생하고 저도 겪어본 경험이 있습니다. WHERE 절 필터링 없이 UPDATE를 하면 어떤 일이 생길까요?

-- SELECT INTO로 Production.Product 테이블을 DoomProduct 테이블로 복사
SELECT * INTO DoomProduct FROM Production.Product;
GO

-- WHERE 조건 없이 DoomProduct 테이블을 업데이트
UPDATE DoomProduct SET Name = N'LL 산악자전거 안장 부품';
GO

-- 테이블 조회 - 망했어요
SELECT * FROM DoomProduct;
GO

-- 테이블 삭제
DROP TABLE DoomProduct;
GO

 

WHERE ProductID = 514로 특정 제품만 수정하려고 했는데 실수로 WHERE절을 빼고 수행한 경우입니다.


실수로 회사의 운영 환경(Production)에서 이런 문제가 발생했을 경우, 백업본이 없다면 회사에 비즈니스에 큰 영향이 있을 수 있습니다. 개인이 회사를 퇴사하는 정도로 끝나지 않을 수 있으니 주의에 또 주의해야 합니다.


이런 경우를 예방하기 위해 데이터 수정 작업을 하실 때에는, 운영 환경이 아닌 개발 환경에서 충분히 테스트하고, 이후 “트랜잭션(TRANSACTION) 강좌”에서 배우게 될 BEGIN TRAN / COMMIT TRAN 구문과 트랜잭션 격리 수준(Transaction Isolation Level)을 이용해 신중하게 수정하는 것이 좋습니다. 


운영 환경에서 이런 상황이 발생할 경우, 이후에 강좌로 진행되는 백업본을 이용해(반드시 백업본이 있어야만) 지정 시간까지 복구(RESTORE - STOP AT)를 이용해 복원 가능합니다.


데이터를 수정 할때에는 항상 주의하세요.


☑️ 챗GPT 활용: 개발환경, 테스트환경, 스테이징환경, 운영환경 등 애플리케이션 개발 환경에 대해서 알려줘
 

 

SQL 강좌 책 구매

강좌가 도움이 되셨다면, 책으로 구매 가능합니다. 책 판매 수익금은 전액 코딩 교육 사회공헌 활동에 기부되며, 아래 링크에서 구매하시면 더 많은 금액이 기부됩니다. 

 

책구매 링크: 챗GPT와 함께하는 마이크로소프트 SQL Server 2022 

책구매링크.png

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 13561
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 8380
2254 SQL강좌: 6-2. 데이터 무결성 - 테이블 컬럼과 NULL 제약 코난(김대우) 2023.08.18 21
2253 SQL강좌: 6-1. 데이터 무결성 - 데이터 무결성 이해 file 코난(김대우) 2023.08.18 29
2252 SQL강좌: 5-4. 테이블 수정 file 코난(김대우) 2023.08.18 43
2251 SQL강좌: 5-3. 테이블 생성 file 코난(김대우) 2023.08.18 20
2250 SQL강좌: 5-2. 테이블 생성과 데이터형 선택 [1] 코난(김대우) 2023.08.18 15
2249 SQL강좌: 5-1. SQL Server 테이블 file 코난(김대우) 2023.08.18 23
2248 SQL강좌: 4-8. 시스템 카탈로그 엿보기 file 코난(김대우) 2023.08.18 25
2247 SQL강좌: 4-7. 최적의 데이터베이스 구성 file 코난(김대우) 2023.08.18 39
2246 SQL강좌: 4-6. 데이터베이스의 데이터와 로그 코난(김대우) 2023.08.18 10
2245 SQL강좌: 4-5. 데이터베이스 삭제 file 코난(김대우) 2023.08.18 20
2244 SQL강좌: 4-4. 데이터베이스 옵션 file 코난(김대우) 2023.08.18 44
2243 SQL강좌: 4-3. 데이터베이스 크기조절 file 코난(김대우) 2023.08.18 24
2242 SQL강좌: 4-2. 데이터베이스 생성 file 코난(김대우) 2023.08.18 27
2241 SQL강좌: 4-1. SQL Server 데이터베이스와 데이터베이스 개체의 이해 file 코난(김대우) 2023.08.18 56
2240 SQL강좌: 3-4. TRUNCATE TABLE / 트랜잭션 수행 [1] 코난(김대우) 2023.08.18 30
2239 SQL강좌: 3-3. DELETE를 이용한 로우 삭제 코난(김대우) 2023.08.18 22
» SQL강좌: 3-2. UPDATE - 데이터 수정 코난(김대우) 2023.08.18 22
2237 SQL강좌: 3-1. 데이터 삽입, 삭제, 수정 - INSERT를 이용한 행 삽입 코난(김대우) 2023.08.18 28
2236 SQL강좌: 2-14. SQL 쿼리 자동생성 - 쿼리 디자이너 file 코난(김대우) 2023.08.18 48
2235 SQL강좌: 2-13. SELECT 결과셋을 XML, JSON 형식으로 출력 코난(김대우) 2023.08.18 36





XE Login