INSERT
테이블에 새 행을 삽입합니다. VALUES 구문을 포함한 단일 행, VALUES 구문을 포함한 다중 행, 또는 쿼리(INSERT INTO...SELECT)의 결과에 의해 정의되는 하나 이상의 행을 삽입할 수 있습니다.
참고
대량의 데이터를 로드하려면 COPY 명령을 사용하는 것이 가장 좋습니다. 테이블을 채우는 데 개별적인 INSERT문을 사용하는 방식은 엄청나게 느릴 수 있습니다. 대안으로 데이터가 이미 다른 Amazon Redshift 데이터베이스 테이블에 존재하는 경우 성능을 개선하려면 INSERT INTO SELECT 또는 CREATE TABLE AS를 사용합니다. COPY 명령을 사용한 테이블 로드에 대한 자세한 내용은 Amazon Redshift에서 데이터 로드 섹션을 참조하세요.
참고
단일 SQL 문의 최대 크기는 16MB입니다.
구문
INSERT INTO table_name [ ( column [, ...] ) ] {DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ( { expression | DEFAULT } [, ...] ) [, ...] ] | query }
파라미터
- table_name
-
임시 또는 영구 테이블입니다. 테이블의 소유자 또는 테이블에 대한 INSERT 권한을 가진 사용자만이 행을 삽입할 수 있습니다. query 절을 사용하여 행을 삽입할 경우 쿼리에 이름이 지정된 테이블에 대한 SELECT 권한이 있어야 합니다.
참고
INSERT(외부 테이블)를 사용하여 외부 카탈로그의 기존 테이블에 SELECT 쿼리의 결과를 삽입합니다. 자세한 내용은 INSERT(외부 테이블) 섹션을 참조하세요.
- column
-
테이블의 한 개 이상의 열에 값을 삽입할 수 있습니다. 임의의 순서대로 대상 열 이름을 나열할 수 있습니다. 열 목록을 지정하지 않은 경우 삽입되는 값은 CREATE TABLE 문에서 선언된 순서대로 테이블 열에 상응해야 합니다. 삽입되는 값의 개수가 테이블에 있는 열의 개수보다 작을 경우 처음 n개의 열이 로드됩니다.
INSERT 문에 (암시적으로 또는 명시적으로) 나열되지 않은 임의의 열로 선언된 기본값 또는 null 값이 로드됩니다.
- DEFAULT VALUES
-
테이블 생성 시 테이블의 열에 기본값이 할당된 경우 이런 키워드를 사용하여 전적으로 기본값으로 구성되는 행을 삽입합니다. 어떤 열에도 기본값이 없는 경우에는 이러한 열에 null이 삽입됩니다. NOT NULL로 선언된 열이 있는 경우에는 INSERT 문이 오류를 반환합니다.
- VALUES
-
각각 하나 이상의 값으로 구성된 하나 이상의 행을 삽입하려면 이 키워드를 사용하세요. 각 행에 대한 VALUES 목록은 열 목록과 일치해야 합니다. 여러 행을 삽입하려면 표현식의 각 목록 사이에 쉼표를 구분 기호로 사용하세요. VALUES 키워드를 반복하지 마세요. 다중 행 INSERT 문에 대한 모든 VALUES 목록은 같은 수의 값을 포함해야 합니다.
- expression
-
단일 값 또는 단일 값으로 계산되는 표현식입니다. 각각의 값은 자신이 삽입되는 열의 데이터 형식과 호환 가능해야 합니다. 가능한 경우 데이터 형식이 열의 선언된 데이터 형식과 일치하지 않는 값은 자동으로 호환 가능한 데이터 형식으로 변환됩니다. 예:
-
10진수 값
1.1
은 INT 열에1
로 삽입됩니다. -
10진수 값
100.8976
은 DEC(5,2) 열에100.90
으로 삽입됩니다.
표현식에 형식 캐스팅 구문을 포함시킴으로써 값을 호환 가능한 데이터 형식으로 명시적으로 변환할 수 있습니다. 테이블 T1에서 열 COL1이 CHAR(3) 열인 경우를 예로 들면 다음과 같습니다.
insert into t1(col1) values('Incomplete'::char(3));
이 문은 값
Inc
를 열에 삽입합니다.단일 행 INSERT VALUES 문의 경우 스칼라 하위 쿼리를 표현식으로 사용할 수 있습니다. 하위 쿼리의 결과는 적절한 열에 삽입됩니다.
참고
하위 쿼리는 다중 행 INSERT VALUES 문을 위한 표현식으로 지원되지 않습니다.
-
- DEFAULT
-
테이블 생성 시 정의된 대로, 열의 기본값을 삽입하려면 이 키워드를 사용하세요. 열에 대한 기본값이 존재하지 않으면 null이 삽입됩니다. NOT NULL 제약 조건이 있는 열이 CREATE TABLE 문에서 자신에게 할당된 명시적 기본값이 없는 경우에는 이 열에 기본값을 삽입할 수 없습니다.
- query
-
임의의 쿼리를 정의하여 테이블에 하나 이상의 행을 삽입합니다. 쿼리가 생성하는 모든 행이 테이블에 삽입됩니다. 쿼리는 테이블에 있는 열과 호환되는 열 목록을 반환해야 하지만, 열 이름이 일치할 필요는 없습니다.
사용 노트
참고
대량의 데이터를 로드하려면 COPY 명령을 사용하는 것이 가장 좋습니다. 테이블을 채우는 데 개별적인 INSERT문을 사용하는 방식은 엄청나게 느릴 수 있습니다. 대안으로 데이터가 이미 다른 Amazon Redshift 데이터베이스 테이블에 존재하는 경우 성능을 개선하려면 INSERT INTO SELECT 또는 CREATE TABLE AS를 사용합니다. COPY 명령을 사용한 테이블 로드에 대한 자세한 내용은 Amazon Redshift에서 데이터 로드 섹션을 참조하세요.
삽입되는 값의 데이터 형식은 CREATE TABLE 정의에 의해 지정된 데이터 형식과 일치해야 합니다.
테이블에 많은 수의 행을 새로 삽입한 후.
-
테이블을 완전히 비워 스토리지 공간을 회수하고 행을 다시 정렬합니다.
-
테이블을 분석하여 쿼리 플래너에 대한 통계를 업데이트합니다.
값이 DECIMAL 열에 삽입되고 지정된 규모를 초과할 때, 로드된 값은 적당히 반올림됩니다. 예를 들어, 20.259
라는 값이 DECIMAL(8,2) 열에 삽입되는 경우 저장되는 값은 20.26
입니다.
GENERATED BY DEFAULT AS IDENTITY 열에 추가할 수 있습니다. GENERATED BY DEFAULT AS IDENTITY로 정의된 열을 직접 입력하는 값으로 업데이트할 수 있습니다. 자세한 내용은 GENERATED BY DEFAULT AS IDENTITY 섹션을 참조하세요.