테이블에 값을 삽입할 때는 INSERT
구문을 사용한다. 이 구문은 크게 세가지 형태로 만들어질 수 있다.
INSERT INTO table (columns...) VALUES (.... );
: 각 칼럼에 (정의하지 않으면 스키마의 모든 칼럼에)( ... )
의 값을 각각 적용해서 새로운 레코드를 삽입한다. 지정한 칼럼이나 혹은 전체 칼럼과 값의 개수가 맞지 않으면 에러가 발생한다.INSERT INTO table SELECT ...;
: SELECT 구문을 실행해서 그 결과의 각 행을 해당 테이블의 새로운 행으로 삽입한다. SELECT 결과의 각 칼럼의 순서와 개수는 테이블의 칼럼과 일치해야 한다. 아니면 최소한 칼럼 목록을 명시한다.INSERT INTO table DEFAULT VALUES;
: 모든 칼럼의 디폴트값이 정의되어 있다면 디폴트 값으로 새 레코드를 생성한다.
액션
INSERT
키워드는 REPLACE
, INSERT OR REPLACE
등으로 변경될 수 있다. 이는 특정 제한에 의한 충돌 발생 시 이를 해결하기 위한 방편을 정의한다. REPLACE
는 INSERT OR REPLACE
와 같은 명령이며 정확하게는 INSERT
문 내에서 ON CONFILCT
에 대한 처리로, UNIQUE 제약이나 PRIMARY KEY가 겹치는 등의 삽입 오류가 발생했을 때, 기존 레코드를 UPDATE 하는 방식으로 처리한다.