업데이트(SQL)

Update (SQL)

SQL UPDATE 문은 테이블에 있는 하나 이상의 레코드의 데이터를 변경한다.모든 행을 업데이트하거나 조건을 사용하여 하위 집합을 선택할 수 있다.null

UPDATE문장의 형식은 다음과 같다.[1]

UPDATE table_name column_name = [, column_name = 값 ...] WHERE[조건]

를 위해UPDATE성공하려면 사용자에게 데이터 조작 권한이 있어야 함(UPDATE테이블 또는 열의 권한 및 업데이트된 값이 모든 적용 가능한 제약 조건(예: 기본 , 고유 인덱스, 제약 조건 및 제약 조건)과 충돌하지 않아야 한다.null

Postgre와 같은 일부 데이터베이스에서는SQL, FROM 절이 있을 때 본질적으로 일어나는 일은 대상 테이블이 fromlist에 언급된 테이블에 결합되어 있고, 조인의 각 출력 행은 대상 테이블의 업데이트 작업을 나타낸다.FROM을 사용할 때는 조인이 수정할 각 행에 대해 최대 한 개의 출력 행을 생성하는지 확인해야 한다.즉, 대상 행은 다른 테이블에서 둘 이상의 행에 결합하면 안 된다.그럴 경우, 조인 행 중 하나만 대상 행을 업데이트하는 데 사용되지만, 어떤 행이 사용될지는 쉽게 예측할 수 없다.[2]null

이러한 불규칙성 때문에 하위 선택 항목 내에서만 다른 표를 참조하는 것이 안전하지만 조인트를 사용하는 것보다 읽기 어렵고 느리기도 하다.null

MySQL은 ANSI 표준을 준수하지 않는다.[3]null

C2열의 값이 "a"인 행에서만 표 T의 C1열의 값을 1로 설정한다.null

갱신하다 T    세트 C1 = 1  어디에 C2 = 'a' 

T에서 C2의 값이 "a"인 모든 행에 대해 C1열의 값을 9로, C3의 값을 4로 설정한다.null

갱신하다 T    세트 C1 = 9,        C3 = 4  어디에 C2 = 'a' 

C2열의 값이 "a"인 경우 C1열의 값을 1씩 증가시킨다.null

갱신하다 T    세트 C1 = C1 + 1  어디에 C2 = 'a' 

C2 열의 값이 "a"인 경우 C1 열의 값을 문자열 "text"로 앞에 붙이십시오.null

갱신하다 T    세트 C1 = '텍스트'    C1  어디에 C2 = 'a' 

T1C1 열 값을 2로 설정하고, C2 값이 표 T2의 C3 열 값 하위 목록에서 C4 열이 0이 되도록 한다.

갱신하다 T1    세트 C1 = 2  어디에 C2  ( 선택 C3                  From T2                 어디에 C4 = 0) 

하나의 업데이트 문에서 여러 열을 업데이트할 수도 있다.

갱신하다 T    세트 C1 = 1,        C2 = 2 

복잡한 조건과 JOIN도 가능하다.

갱신하다 T    세트 A = 1  어디에 C1 = 1    AND C2 = 2 

일부 데이터베이스는 FROM 절의 비표준 사용을 허용한다.

갱신하다 a    세트 a.[updated_column] = 업데이트 가치   From 기사들 a        가입하다 분류 c          켜기 a.기사ID = c.기사ID  어디에 c.classID = 1 

또는 Oracle 시스템(분류에 대한 인덱스가 있다고 가정)에서아티클ID:

갱신하다 (   선택 *     From 기사들     가입하다 분류       켜기 기사들.기사ID = 분류.기사ID    어디에 분류.classID = 1 ) 세트 [updated_column] = 업데이트 가치 

테이블 이름이 긴 경우:

갱신하다 마이메인테이블 AS a 세트 a.엘나메 = 스미스 어디에 a.피플ID = 1235 

잠재적 문제

  • 할로윈 문제를 보라.그것은 어떤 종류의 것이 가능하다.UPDATE다음이 될 때 무한 루프(infinite loop)가 되는 문장WHERE조항과 하나 또는 그 이상SET절은 서로 얽힌 지수를 활용할 수 있다.

참조

  1. ^ 이 페이지에서 단순화된 http://dev.mysql.com/doc/refman/5.0/en/update.html
  2. ^ "UPDATE". January 2012.
  3. ^ "SQL - Update a table column, then the other column with updated value of the former. MySQL / PostgreSQL differ".