열 이름과 값을 짝지어
INSERT는 새 행을 테이블에 넣어. INSERT INTO users VALUES (...)처럼 열 목록을 생략하면 스키마의 물리 순서에 기대게 되니, 어떤 값이 어디로 가는지 열 이름을 적는 편이 안전해. 여러 행도 한 문장으로 넣을 수 있어.
제약은 넣는 순간 검사돼
NOT NULL, CHECK, UNIQUE, 외래 키를 어긴 값은 저장되지 않아. 실패를 앱에서 미리 흉내 내기보다 데이터베이스 오류를 분명히 처리해. 충돌이 예상되면 ON CONFLICT와 DO UPDATE를 써서 원자적으로 대응하고, 새 값을 가리킬 때는 EXCLUDED.column을 이용해. 실제 column 이름은 의도를 드러내야 해. 한 번에 5행을 넣어 보며 제약이 전체 문장에 어떻게 적용되는지 확인해.