테이블에 존재하는 데이터를 수정합니다.
동시성에 유의해야 합니다(?). 수정 시 대상 행을 LOCK을 잡는다. 영화관 표 예매 시스템처럼.
table_name이라는 이름의 테이블의 column_1에는 value1을, column_2에는 value2를 넣는다
UPDATE
table_name
SET
column_1 = value1,
column_2 = value2
WHERE 조건
;
이전 글에서 쓰던 테이블 사용하여,
'last_update' 컬럼을 추가하고 디폴트DEFAULT 값을 현재 시간(current_date)으로 바꾼다
ALTER TABLE link ADD COLUMN last_update date;
ALTER TABLE link ALTER COLUMN last_update
SET DEFAULT current_date;
SELECT * FROM link;
기존에 있는 행에는 아무 일도 일어나지 않는다.
last_update 컬럼 중에 NULL인 행의 값을 DEFAULT 값으로 수정한다
UPDATE link
SET last_update = DEFAULT
WHERE
last_update IS NULL;
SELECT * FROM link;
디폴트를 현재시간으로 두어서 전부 현재 시간이 업데이트된 걸 확인할 수 있다.
rel 컬럼의 데이터를 전부 'no data'로 수정한다
UPDATE link
SET rel = 'no data'
;
여기서 WHERE 절이 없이 실행하면 데이터 손실에 대한 경고 메시지가 뜬다. 디비버 기능이다.
무시하고 실행하면
반영된 것을 볼 수 있다.
'데이터 분석 > SQL' 카테고리의 다른 글
[쉽게 쓴 SQL] UPDATE JOIN 문 (0) | 2020.11.23 |
---|---|
[쉽게 쓴 SQL] INSERT 구문 (0) | 2020.11.23 |
[쉽게 쓴 SQL] EXISTS (0) | 2020.11.21 |
[쉽게 쓴 SQL] ANY 그리고 IN, ALL (0) | 2020.11.21 |
[쉽게 쓴 SQL] 서브쿼리란? (0) | 2020.11.09 |