Update (SQL)UPDATE 문은 구조화 질의어 중 하나로, 테이블이나 뷰에서 한 개 이상의 행을 바꾼다. 모든 행을 변경해야 되는 경우도 조건절을 사용하여 하위 집합을 선택할 수 있다.
UPDATE table_name SET column_name = value [, column_name = value ...] [WHERE condition]
어떤 데이터베이스 시스템은 예로 PostgreSQL를 들자면, FROM 절이 존재하면 기본적으로 대상 테이블이 fromlist에 응답되는 테이블로 조인한다. 각각의 출력한 행의 조인은 대상 테이블의 업데이트를 의미한다. FROM을 쓸 때 생성된 최대 한 개의 각각의 출력 행이 조인되었는지 확인해야 한다. 다시 말해서, 대상 행은 다른 테이블에 한 개 이상의 행을 다른 테이블로부터 조인할 수 없다. 만약 그럴 경우 오직 하나의 행만 대상 테이블에 조인한다. 그런 후, 오직 하나의 조인된 행은 대상 행의 업데이트에 사용한다. 그러나 어떤 행을 썼는 지 예측하기는 어렵다. [2] 이 불확정성의 원인은 다른 테이블을 좀 더 안전한 서브셀렉트 범위에서만 참조하고, 종종 읽기가 좀 더 어렵고 조인이 좀 더 느려지기 때문이다. ![]() 예제shboard 테이블 중 C2 컬럼 값이 "a"인 모든 행에서 C1 컬럼을 1로 바꾼다. UPDATE shboard SET C1 = 1 WHERE C2 = 'a'
T 테이블 중 C2 컬럼 값이 "a"인 모든 행에서 C1 컬럼을 9로, C3 컬럼을 4로 바꾼다. UPDATE T SET C1 = 9, C3 = 4 WHERE C2 = 'a'
C2 컬럼 값이 "a"이면 C1 컬럼을 1 증가시킨다. UPDATE T SET C1 = C1 + 1 WHERE C2 = 'a'
C2 컬럼 값이 "a"이면 C1 컬럼 값을 "text" 문자열로 프리펜드한다. UPDATE T SET C1 = 'text' || C1 WHERE C2 = 'a'
C2 컬럼 값을 C4 컬럼 값이 0인 T2 테이블의 C3 컬럼 값의 서브 목록에서 찾아질 때만 T1 테이블의 C1 컬럼 값을 2로 바꾼다. UPDATE T1
SET C1 = 2
WHERE C2 IN ( SELECT C3
FROM T2
WHERE C4 = 0)
또한 여러 컬럼을 하나의 UPDATE T SET C1 = 1, C2 = 2
조건절과 UPDATE T SET A = 1 WHERE C1 = 1 AND C2 = 2
UPDATE a
SET a.updated_column = updatevalue
FROM articles a
JOIN classification c
ON a.articleID = c.articleID
WHERE c.classID = 1
또는 오라클 시스템에서 (여기서는 classification.articleID로 인덱스한 것을 가정함) UPDATE
(
SELECT *
FROM articles
JOIN classification
ON articles.articleID = classification.articleID
WHERE classification.classID = 1
)
SET updated_column = updatevalue
각주
|
Portal di Ensiklopedia Dunia