에듀테크 프로젝트 대시보드
INSERT / UPDATE / DELETE
데이터를 바꾸는 세 문장. PostgreSQL 은 RETURNING 으로 바뀐 행을 즉시 돌려줍니다.
INSERT INTO students (name, grade) VALUES ('김한양', 1)
RETURNING id, created_at; -- 방금 생성된 값 회수
INSERT INTO students (name, grade)
VALUES ('이한양', 1), ('박한양', 2), ('최한양', 3); -- 다중행
INSERT INTO students_archive
SELECT * FROM students WHERE graduated; -- 쿼리 결과를 삽입UPDATE students SET grade = grade + 1 WHERE graduated = false
RETURNING id, grade;
-- 다른 테이블 값으로 갱신 (UPDATE ... FROM)
UPDATE exams e
SET class_id = s.class_id
FROM students s
WHERE s.id = e.student_id AND e.class_id IS NULL;DELETE FROM exams WHERE exam_date < '2020-01-01' RETURNING id;
-- 조인 삭제 (DELETE ... USING)
DELETE FROM exams e
USING students s
WHERE s.id = e.student_id AND s.graduated;
TRUNCATE exams; -- 전체 삭제 (빠름, WHERE 불가, 시퀀스 유지)
TRUNCATE exams RESTART IDENTITY CASCADE;WHERE 없는 UPDATE/DELETE 는 전체 행에 적용됨WHERE 로 SELECT count(*) 해보기BEGIN; → 실행 → 결과 확인 → COMMIT 또는 ROLLBACK