15장 데이터 삽입하기
Last updated
Was this helpful?
Last updated
Was this helpful?
데이터베이스 테이블에 행을 삽입하기 위해 INSERT를 사용한다.
INSERT 문은
완전한 행 삽입하기
부분 행 삽입하기
쿼리 결과 삽입하기
의 방법으로 사용할 수 있다.
INSERT 문과 시스템 보안
INSERT 문은 특별한 보안 권한이 필요할 수 있다. 사용하기 전 권한이 있는지 확인해보자
테이블에 데이터를 삽입하는 가장 간단한 방법은 기본 INSERT 문을 사용하는 것이다.
기본 INSERT 문은 테이블 이름을 명시하고 새로운 행에 삽입할 값을 넣는다.
위의 예시에서 보듯 INSERT에 추가할 테이블 이름, VALUES에 추가할 데이터를 넣어 새로운 값을 추가한다. VALUES를 보면 각 테이블 열에 해당하는 값을 포함해야 한다는 것을 알 수 있다.
이러한 방식으로 행을 삽입하는 것은 간단하지만 안전한 방식은 아니다. 테이블에 정의된 열의 순서에 전적으로 의존하기에 열의 순서를 제대로 알지 못하거나 이후 테이블 구성이 바뀐다면 문제가 발생할 수 있는 SQL 문이다.
따라서 다음과 같은 방법으로 INSERT 문을 안전하게 사용하자.
위와 같은 방법으로 INSERT 문을 사용하면 실제 테이블의 순서가 아닌 INSERT 문에서 정의한 열 순서대로 VALUES의 값이 매치된다. 테이블 구조가 변경되더라도 INSERT 문이 올바르게 작동한다.
또한, 열 이름을 다르게 표기하거나 기본 키에 중복된 내용을 적게 되면 에러가 발생한다.
안전하게 데이터를 추가할 수 있다. INSERT의 열과 VALUES의 개수를 맞추는 것도 중요하다.
위에서 사용한 INSERT 문의 추가할 열 이름과 VALUES의 추가할 값만 남기면 원하는 열에만 값을 추가할 수 있다.
하지만 열에 NULL을 포함할 수 있어야 하고, 해당 열이 기본값이 필요한 경우 에러가 발생하고 행은 삽입되지 않는다.
보통 특정 값을 삽입할 때 INSERT 문을 사용하지만, SELECT 문에서 가져온 결과를 테이블에 넣는 형태도 있다. 이를 INSERT SELECT 문이라 하며, 이름에서 보듯 INSERT와 SELECT로 구성되어 있다.
CustNew 테이블에서 해당 열에 해당하는 데이터를 Customers로 삽입한다.
위 예시에서 보듯 다른 테이블의 행을 검색해 특정 테이블에 삽입할 수 있다. 이때, INSERT와 SELECT의 열 이름은 같지 않아도 된다. DBMS는 SELECT 문으로 반환되는 열 이름에 신경쓰지 않고, INSERT 문의 열 순서에 맞게 SELECT 문의 열 순서대로 값을 추가한다.
또한, INSERT SELECT 문에서 사용하는 SELECT 문에서는 WHERE 절을 사용해 가져오는 데이터를 필터링 후 삽입할 수 있다.
여러 행 삽입하기
INSERT 문은 하나의 행을 삽입하기 때문에 여러 행을 삽입하려면 여러 번 실행해야 한다.
이때 INSERT SELECT 문을 사용하면, 결과 행을 모두 삽입하기에 하나의 문장으로 여러 행을 삽입할 수 있다.
INSERT 문을 사용하지 않고 데이터를 삽입할 수 있다. 새로운 테이블에 데이터를 복사하는 방법이다.
CREATE SELECT 문을 사용하면 완전히 새로운 테이블에 기존 테이블의 내용을 복사할 수 있다.
SELECT INTO는 다음과 같은 특징이 있다.
WHERE나 GROUP BY 절과 같은 SELECT 문의 옵션을 모두 사용 가능하다.
여러 테이블의 데이터를 삽입하기 위해 조인을 사용 가능하다.
데이터를 가져온 테이블 수와는 관계없이, 가져온 데이터는 하나의 테이블에 삽입된다.
INSERT문
INSERT SELECT문
SELECT INTO
INSERT 문과 지정된 열을 사용해 Customers 테이블에 데이터 삽입해보기.
Orders와 OrderItems 테이블의 백업용 사본 만들기.