[MSSQL] UPDATE 문 사용법 3가지 (데이터 수정)

SQL Server에서 테이블이 데이터를 수정하기 위해서는 UPDATE 문을 사용하면 된다. SQL Server에서는 UPDATE 문에서 FROM 절을 사용할 수 있어서 다른 테이블과 조인을 하여 업데이트를 할 수 있다. 조인을 사용하지 않을 경우 서브쿼리를 사용하여 여러 개의 데이터를 업데이트하면 된다. SELECT 해서 UPDATE 하는 방법은 조인 또는 서브쿼리를 사용하면 된다.

 

MSSQL UPDATE문 사용법

목차
  1. 기본적인 UPDATE 방법
  2. 다른 테이블과 조인하여 UPDATE 방법
  3. 서브쿼리를 사용하여 UPDATE 방법

 

기본적인 UPDATE 방법

UPDATE dbo.dept
   SET dname = 'SALES TEAM'
     , loc = 'TEXAS'
 WHERE deptno = 30

 

부서명(dname)과 지역명(loc)을 업데이트하는 예제이다.

업데이트할 칼럼이 여러 개인 경우 SET 절에서 쉼표(,)로 구분하여 칼럼과 값을 기술하면 된다.

 

다른 테이블과 조인하여 UPDATE 방법

UPDATE dbo.dept 
   SET loc = 'CALIFORNIA'
  FROM dbo.emp a
  JOIN dbo.emp b
    ON a.mgr = b.empno
 WHERE b.ename = 'SCOTT'
   AND dept.deptno = b.deptno

 

 

업데이트할 테이블과 다른 테이블을 조인하여 업데이트해야 할 경우 FROM 절을 사용할 수 있다. FROM 절에 조인할 테이블을 기술하고 WHERE 절에서 업데이트할 테이블과 조인하면 된다. 

 

업데이트할 테이블은 별칭을 사용할 수 없으므로 칼럼을 기술할 때 [테이블.칼럼명]으로 사용하면 된다.

 

 

부서(dbo.dept) 테이블의 지역명(loc)이 업데이트된 것을 확인할 수 있다.

 

UPDATE dbo.dept 
   SET loc = 'CALIFORNIA'
  FROM dbo.dept a
  JOIN dbo.emp b
    ON a.deptno = b.deptno
 WHERE b.ename = 'KING'

 

 

업데이트할 테이블이 FROM 절에 존재한다면 FROM 절의 테이블과 업데이트 테이블을 조인할 필요 없다.

 

조인을 해도 무방하지만 조인하지 않아도 FROM 절의 부서(dbo.dept a) 테이블과 업데이트할 부서(dbo.dept) 테이블이 동일한 데이터 범위를 가지므로 정상적으로 업데이트된다.

 

 

부서(dbo.dept) 테이블의 지역명(loc)이 업데이트된 것을 확인할 수 있다.

 

서브쿼리를 사용하여 UPDATE 방법

UPDATE dbo.dept
   SET loc = (SELECT a.loc FROM dbo.dept a WHERE a.deptno = 10)
 WHERE deptno IN (20, 30)

 

SET 절에서 스칼라 서브쿼리를 사용하여 값을 업데이트할 수 있다.

서브쿼리의 결과는 하나의 행, 하나의 열이 조회되어야 한다.

 

UPDATE dbo.dept
   SET loc = 'TEXAS'
 WHERE dept.deptno IN (SELECT a.deptno
                         FROM dbo.emp a
                        WHERE a.job = 'SALESMAN')

 

WHERE 절에서 서브쿼리를 사용하여 업데이트할 데이터 항목을 가져올 수 있다.

조인을 사용하지 않을 경우 WHERE 절에서 서브쿼리를 자주 사용한다.

 

UPDATE dbo.dept
   SET loc = 'TEXAS'
 WHERE EXISTS (SELECT 1
                 FROM dbo.emp a
                WHERE a.job = 'SALESMAN'
                  AND a.deptno = dept.deptno)

 

위의 IN 연산자를 사용한 쿼리를 EXISTS 연산자로 변경한 쿼리문이다. IN 연산자와 동일한 기능을 한다.

상황에 따라서 IN 연산자보다 EXISTS 연산자를 사용할 경우 성능이 좋을 때가 있으므로 사용법을 알아두면 좋다.

EMP, DEPT 테이블 생성 스크립트.txt
0.00MB

 

 

[MSSQL] MERGE 문 (UPDATE와 INSERT를 한번에)

MERGE 문을 사용하면 변경할 테이블에 데이터가 존재하는지 체크하고, UPDATE, DELETE, INSERT를 한 번에 작업이 가능하다. MERGE 문을 사용하지 않을 경우 해당 조건으로 테이블을 SELECT 한 후 IF 조건을

gent.tistory.com

 

[MSSQL] 테이블 생성 방법 2가지 (Create Table)

SQL Server에서 테이블을 생성할 때는 대부분 CREATE TABLE 문을 사용해서 테이블을 생성한다. 그러나 SQL 문이 익숙하지 않을 때는 SSMS 툴을 사용하면 조금 더 쉽게 테이블을 생성하거나 테이블 속성을

gent.tistory.com

 

 

댓글

Designed by JB FACTORY