BigData

[초보] SQL 기초 모음 - UPDATE(1)

IT오이시이 2022. 8. 11. 06:00
728x90

 

 

[초보] 데이터 분석을 위한 SQL 기초 모음

1.[초보] SQL 기초 모음 - SELECT(1)

2.[초보] SQL 기초 모음 - INSERT(1)

3. [초보] SQL 기초 모음 - UPDATE(1)

4. [초보] SQL 기초 모음 - DELETE(1)

출처: [AgileBus - IT 기술자를 위한 최신 기술 Trends:티스토리]

 

 

[초보] SQL 기초 모음 - UPDATE(1) 원리

 

테이블 또는 뷰의 데이터를 갱신하려면 UPDATE문을 사용 합니다.
UPDATE문을 사용하여 WHERE절의 탐색 조건을 충족시키는 각 행에서 하나 이상의 컬럼(열)의 값을 변경할 수 있습니다.
Update문은 간단하면서도 상황에 따라 복잡한 Update Join 문으로 작성하여 한번에 많은 데이터 수정이 가능하다.

 

1. (Simple Update)테이블의 특정 컬럼의 값을 수정 하는 방법

UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];

 

[예시]

UPDATE customers
SET cust_name = 'Tome', cust_nick = 'Maveric', code_postal = '123-234'
WHERE cust_id = 200

 

2. (Update Join) 두 테이블을 JOIN하여 테이블의 값을 수정하는 방법

UPDATE t1
SET t1.c1 = t2.c2, t1.c2 = expression, ...
FROM t1
[INNER | LEFT] JOIN t2 ON join_predicate
WHERE where_predicate;

 

UPDATE Tablealias
SET A.c1 = B.C1, ...
FROM tableA A
[INNER | LEFT] JOIN tableA B ON join_predicate
WHERE where_predicate;

 

UPDATE [변경될테이블]
SET [컬럼1] = a.[컬럼1] , [컬럼2] = a.[컬럼2]
FROM [조인테이블1] a
JOIN [조인테이블2] b ON a.[컬럼] = b.[컬럼]
WHERE [변경될테이블].[조건컬럼] = a.[조건컬럼]

* WHERE절에서 조인된 테이블과 UPDATE 대상 테이블과의 조건이 중요하다.

UPDATE Per
SET Per.PersonCityName=Addr.City, Per.PersonPostCode=Addr.PostCode
FROM Persons Per
INNER JOIN AddressList Addr
ON Per.PersonId = Addr.PersonId


* 각 데이터베이스 마다 Update Join의 형식에서 차이가 있으나 작동 방식은 같다. UPDATE가 작동되는 동안 해당 테이블의 Primary KEY 를 통해서 Row를 인식하고 수정 컬럼의 값을 수정 할수 있다.

-- Oracle --
UPDATE emp e
SET e.dname = (SELECT d.dname FROM dept d WHERE d.deptno = e.deptno)
WHERE EXISTS (SELECT 0 FROM dept d WHERE d.deptno = e.deptno) ;

-- MSSQL --
UPDATE e
SET e.dname = d.dname
FROM emp e
INNER JOIN dept d ON d.deptno = e.deptno;

-- MySQL --
UPDATE emp e
INNER JOIN dept d ON d.deptno = e.deptno
SET e.dname = d.dname ;

 

[예시]

* UPDATE문의 WHERE 조건으로 지정된 값을 수정할 수 있다.

UPDATE t1 SET c1 = c1 + 1
WHERE c1 IN ( SELECT t1.c1 FROM t1 WHERE t1.c1 > 10);


* UPDATE문에 Table을 JOIN하여 관련 테이블의 값으로 연산의 결과를 저장할 수 있다.

UPDATE sales.commissions
SET sales.commissions.commission = c.base_amount * t.percentage
FROM sales.commissions c
INNER JOIN sales.targets t ON c.target_id = t.target_id;

 

UPDATE sales.commissions
SET sales.commissions.commission = c.base_amount * COALESCE(t.percentage, 0.1)
FROM sales.commissions c
LEFT JOIN sales.targets t ON c.target_id = t.target_id;

* COALESCE(A, B, C ...) 는 Null이 아닌 첫번째 값을 출력한다. COALESCE(t.percentage, 0.1) : t.percentage의 값이 NULL이면 0.1, NULL이 아니면 원래 값을 나타낸다.

UPDATE t1
SET a.Calculated_Column= b.[Calculated_Column]
FROM table1 a
INNER JOIN table2 b ON a.common_field = b.[common_field]
WHERE a.BatchNO = '222'

 

 

[초보] SQL 기초 모음

1.[초보] SQL 기초 모음 - SELECT(1)
2.[초보] SQL 기초 모음 - INSERT(1)
3. [초보] SQL 기초 모음 - UPDATE(1)
4. [초보] SQL 기초 모음 - DELETE(1)
728x90
반응형