iBetter Books
수정

데이터 조작 (INSERT, UPDATE, DELETE)

테이블이 준비되었으면 데이터를 채울 차례입니다. 데이터를 넣고(INSERT), 바꾸고(UPDATE), 지우는(DELETE) 세 가지 명령을 배웁니다.

INSERT — 데이터 추가

-- 모든 컬럼에 값 지정INSERT INTO students (name, email, grade) VALUES ('김민준', '[email protected]', 3);-- 컬럼 이름 생략 (순서 맞춰야 함)INSERT INTO students VALUES (NULL, '이서연', '[email protected]', 2, NULL, NULL);-- 여러 행 한 번에 추가INSERT INTO students (name, grade) VALUES    ('박지호', 1),    ('최유진', 2),    ('강동현', 3);

AUTOINCREMENT가 설정된 id 컬럼은 NULL을 넣거나 생략하면 자동으로 증가합니다.

UPDATE — 데이터 수정

-- 특정 학생 성적 수정UPDATE students SET grade = 3 WHERE id = 1;-- 여러 컬럼 동시 수정UPDATE students SET grade = 2, email = '[email protected]' WHERE name = '이서연';-- 조건 없이 전체 수정 (주의!)UPDATE students SET score = 0;

주의: WHERE 절을 빠뜨리면 모든 행이 수정됩니다. 항상 먼저 SELECT로 대상을 확인하는 습관을 들이세요.

DELETE — 데이터 삭제

-- 특정 행 삭제DELETE FROM students WHERE id = 3;-- 조건에 맞는 여러 행 삭제DELETE FROM students WHERE grade = 1;-- 전체 삭제 (테이블 구조는 유지)DELETE FROM students;

안전한 수정/삭제 습관

-- 1단계: 먼저 SELECT로 대상 확인SELECT * FROM students WHERE grade = 1;-- 2단계: 확인 후 UPDATE/DELETE 실행DELETE FROM students WHERE grade = 1;

UPSERT — 있으면 수정, 없으면 추가

SQLite 3.24+에서 지원하는 INSERT OR REPLACE 또는 ON CONFLICT 구문입니다.

INSERT INTO students (id, name, grade)VALUES (1, '김민준', 4)ON CONFLICT(id) DO UPDATE SET grade = excluded.grade;

이미 id = 1인 행이 있으면 grade를 업데이트하고, 없으면 새로 추가합니다.

마지막 삽입 ID 확인

INSERT INTO students (name) VALUES ('신입생');-- 방금 삽입된 행의 id 확인SELECT last_insert_rowid();

정리

INSERT, UPDATE, DELETE로 데이터를 조작하는 방법을 배웠습니다. UPDATE와 DELETE에서 WHERE 절을 빠뜨리지 않는 것이 가장 중요합니다. 다음 장에서는 원하는 데이터를 꺼내오는 SELECT를 배웁니다.