수색…


통사론

  • UPDATE 테이블
    SET column_name = value , column_name2 = value_2 , ..., column_name_n = value_n
    WHERE 조건 ( 논리 연산자 condition_n)

모든 행 업데이트

이 예제는 예제 데이터베이스의 Cars Table 을 사용합니다.

UPDATE Cars
SET Status = 'READY'

이 문은 행 세트를 필터링하기 위해 WHERE 절이 없기 때문에 'Cars'테이블의 모든 행의 'status'열을 'READY'로 설정합니다.

지정된 행 업데이트

이 예제는 예제 데이터베이스의 Cars Table 을 사용합니다.

UPDATE 
    Cars
SET 
    Status = 'READY'
WHERE 
    Id = 4

이 문은 ID가 4 인 'Cars'행의 상태를 'READY'로 설정합니다.

WHERE 절은 각 행에 대해 평가되는 논리 표현식을 포함합니다. 행이 기준을 충족하면 값이 업데이트됩니다. 그렇지 않으면 행이 변경되지 않습니다.

기존 값 수정하기

이 예제는 예제 데이터베이스의 Cars Table 을 사용합니다.

UPDATE Cars
SET TotalCost = TotalCost + 100
WHERE Id = 3 or Id = 4

업데이트 작업에는 업데이트 된 행의 현재 값이 포함될 수 있습니다. 이 간단한 예제에서 TotalCost 는 두 행에 대해 100 씩 증가합니다.

  • 자동차 3 호의 총 비용이 100에서 200으로 증가했습니다.
  • 자동차 # 4의 총 비용이 1254에서 1354로 증가했습니다.

열의 새 값은 이전 값 또는 동일한 테이블이나 조인 된 테이블의 다른 열의 값에서 파생 될 수 있습니다.

다른 테이블의 데이터로 업데이트

아래 예제는 또한 Customer 이기도하고 현재 Employees 테이블에 설정된 전화 번호가없는 직원의 PhoneNumber 를 기입합니다.

(이 예제에서는 예제 데이터베이스의 EmployeesCustomers 테이블을 사용합니다.)

표준 SQL

상관 하위 쿼리를 사용하여 업데이트 :

UPDATE 
    Employees
SET PhoneNumber =
    (SELECT 
         c.PhoneNumber
     FROM 
         Customers c
     WHERE 
         c.FName = Employees.FName 
         AND c.LName = Employees.LName)
WHERE Employees.PhoneNumber IS NULL

SQL : 2003

MERGE 사용하여 업데이트 :

MERGE INTO 
    Employees e
USING 
    Customers c 
ON 
    e.FName = c.Fname 
    AND e.LName = c.LName
    AND e.PhoneNumber IS NULL
WHEN MATCHED THEN
   UPDATE 
      SET PhoneNumber = c.PhoneNumber

SQL 서버

INNER JOIN 사용하여 업데이트 :

UPDATE 
    Employees
SET 
    PhoneNumber = c.PhoneNumber
FROM 
    Employees e
INNER JOIN Customers c
        ON e.FName = c.FName 
        AND e.LName = c.LName
WHERE 
    PhoneNumber IS NULL

업데이트 된 레코드 캡처

때로는 방금 업데이트 된 레코드를 캡처하려고합니다.

CREATE TABLE #TempUpdated(ID INT)

Update TableName SET Col1 = 42
    OUTPUT inserted.ID INTO #TempUpdated
    WHERE Id > 50


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow