INSERT는 SQL에서 데이터베이스의 테이블에 새로운 데이터를 추가할 때 사용하는 구문입니다. SELECT가 데이터를 조회하는 명령이라면 INSERT는 테이블에 새로운 행을 저장하는 역할을 합니다. 회원 가입 정보나 상품 정보, 주문 내역처럼 새로운 데이터가 발생했을 때 해당 내용을 데이터베이스에 저장하기 위해 사용합니다.

INSERT의 기본 문법

INSERT는 INSERT INTO 뒤에 데이터를 추가할 테이블을 지정하고, VALUES 뒤에 실제로 저장할 값을 작성하는 방식으로 사용합니다.

기본적인 형태는 다음과 같습니다.

INSERT INTO member (name, age, city)
VALUES ('김철수', 30, '서울');

위 쿼리는 member 테이블에 새로운 회원 정보를 추가합니다. name에는 김철수, age에는 30, city에는 서울이라는 값이 저장됩니다.

여기서 컬럼명을 직접 지정하는 것이 중요합니다. 어떤 값을 어떤 컬럼에 저장할 것인지 명확하게 표현할 수 있기 때문입니다.

예를 들어 다음과 같이 작성할 수도 있습니다.

INSERT INTO member
VALUES (1, '김철수', 30, '서울');

테이블의 모든 컬럼 순서에 맞춰 값을 입력하는 방식입니다. 하지만 테이블의 컬럼 순서가 변경되거나 컬럼이 추가되면 쿼리가 예상과 다르게 동작할 수 있습니다. 따라서 실제 개발에서는 필요한 컬럼을 명시적으로 지정하는 방식이 보다 안전합니다.

INSERT를 실행하면 기존 데이터가 수정되는 것이 아니라 새로운 행이 추가됩니다. 따라서 같은 테이블에 여러 회원이 존재하는 경우 각각의 회원 정보가 새로운 행으로 저장됩니다.

여러 개의 데이터 추가하기

INSERT는 하나의 행만 추가할 수 있는 것이 아니라 여러 개의 데이터를 한 번에 추가할 수도 있습니다.

INSERT INTO member (name, age, city)
VALUES
('김철수', 30, '서울'),
('이영희', 25, '부산'),
('박민수', 35, '대구');

위 쿼리는 세 개의 회원 데이터를 한 번의 INSERT 문으로 추가합니다.

여러 데이터를 한 번에 추가하면 각각의 데이터를 별도의 INSERT 문으로 반복해서 실행하는 것보다 SQL 문을 간결하게 작성할 수 있습니다. 또한 여러 데이터를 한꺼번에 처리해야 하는 상황에서 활용할 수 있습니다.

INSERT를 사용할 때는 입력하려는 값의 데이터 타입과 컬럼의 제약 조건도 확인해야 합니다. 숫자 컬럼에는 일반적으로 숫자를 입력하고 문자열에는 작은따옴표를 사용합니다.

INSERT INTO member (name, age)
VALUES ('김철수', 30);

문자열인 김철수는 작은따옴표로 감싸고 숫자인 30은 따옴표 없이 작성합니다.

날짜와 시간 데이터를 저장하는 경우에도 컬럼의 데이터 타입에 맞는 값을 입력해야 합니다.

INSERT INTO member (name, created_at)
VALUES ('김철수', '2026-09-20');

실제 데이터베이스에서는 날짜와 시간의 저장 형식이 DBMS와 컬럼의 데이터 타입에 따라 달라질 수 있으므로 테이블 구조를 확인한 뒤 데이터를 입력해야 합니다.

기본 키와 제약 조건

INSERT를 사용할 때는 테이블에 설정된 제약 조건도 함께 고려해야 합니다. 특히 기본 키가 설정된 테이블에서는 이미 존재하는 기본 키 값을 다시 입력할 수 없습니다.

예를 들어 id가 기본 키이고 자동으로 번호가 증가하도록 설정되어 있다면 다음과 같이 회원 정보를 추가할 수 있습니다.

INSERT INTO member (name, age, city)
VALUES ('김철수', 30, '서울');

이 경우 데이터베이스가 새로운 회원의 ID를 자동으로 생성하도록 설정되어 있다면 INSERT 문에서 id를 직접 입력하지 않아도 됩니다.

반대로 기본 키 값을 직접 입력해야 하는 구조라면 다음과 같이 작성할 수 있습니다.

INSERT INTO member (id, name, age)
VALUES (101, '김철수', 30);

이때 이미 id가 101인 데이터가 존재한다면 기본 키 중복으로 인해 INSERT가 정상적으로 실행되지 않을 수 있습니다.

UNIQUE 제약 조건도 INSERT에 영향을 줍니다. 예를 들어 이메일 컬럼에 UNIQUE가 설정되어 있다면 동일한 이메일을 가진 데이터를 여러 개 저장할 수 없습니다.

INSERT INTO member (email, name)
VALUES ('test@example.com', '김철수');

이미 동일한 이메일이 존재한다면 데이터베이스는 제약 조건 위반으로 INSERT를 처리하지 않습니다.

외래 키가 설정된 컬럼도 주의해야 합니다. 다른 테이블의 데이터를 참조하는 외래 키에 존재하지 않는 값을 입력하면 데이터 무결성 문제를 방지하기 위해 INSERT가 거부될 수 있습니다.

따라서 INSERT는 단순히 값을 입력하는 기능처럼 보이지만 실제로는 기본 키, 외래 키, UNIQUE, NOT NULL 등의 테이블 제약 조건을 만족해야 정상적으로 데이터가 저장됩니다.

INSERT는 회원 가입, 상품 등록, 주문 생성 등 새로운 데이터가 발생하는 대부분의 서비스에서 사용됩니다. 애플리케이션에서 사용자가 새로운 정보를 입력하면 서버가 해당 정보를 전달받고 INSERT SQL을 실행하여 데이터베이스에 새로운 행을 저장하는 방식으로 동작할 수 있습니다.

결국 INSERT는 테이블에 새로운 데이터를 추가하기 위한 SQL 구문입니다. INSERT INTO 뒤에 대상 테이블과 컬럼을 지정하고 VALUES 뒤에 저장할 값을 입력합니다. 하나의 행뿐만 아니라 여러 행을 한 번에 추가할 수도 있으며, 기본 키나 UNIQUE와 같은 제약 조건을 만족해야 정상적으로 데이터가 저장됩니다. 다음 단계에서는 이미 저장된 데이터를 변경하는 UPDATE에 대해 알아보겠습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

글쓴이

rjsan46@koreabites.com

관련 게시물

HAVING이란 무엇인가

HAVING은 SQL에서 GROUP BY를 통해 만들어진 그룹에 조건을 적용할 때 사용하는 구문입니다. WHERE가 개별 행을 대상으로 조건을 지정한다면 HAVING은 GROUP BY로 묶인...

모두 읽어보기

GROUP BY란 무엇인가

GROUP BY는 SQL에서 특정 컬럼의 값이 같은 데이터를 하나의 그룹으로 묶어 조회할 때 사용하는 구문입니다. 단순히 데이터를 조회하거나 정렬하는 것과 달리 여러...

모두 읽어보기

ORDER BY란 무엇인가

ORDER BY는 SQL에서 조회한 데이터를 원하는 기준에 따라 정렬할 때 사용하는 구문입니다. 데이터를 단순히 조회하는 것에서 그치지 않고 가격이 높은 순서, 이름이...

모두 읽어보기

WHERE란 무엇인가

WHERE는 SQL에서 원하는 조건에 맞는 데이터만 선택하여 조회하기 위해 사용하는 조건절입니다. 데이터베이스에는 수많은 행이 저장될 수 있기 때문에 전체 데이터를 조회하는 것보다...

모두 읽어보기

SELECT란 무엇인가

SELECT는 SQL에서 데이터베이스에 저장된 데이터를 조회할 때 사용하는 가장 기본적인 명령어입니다. 데이터베이스에는 많은 양의 데이터가 저장될 수 있기 때문에 필요한 정보를 선택해서...

모두 읽어보기

SQL이란 무엇인가

SQL은 데이터베이스에 저장된 데이터를 조회하고 추가하거나 수정하고 삭제하기 위해 사용하는 언어입니다. 관계형 데이터베이스에서는 테이블을 이용해 데이터를 관리하며, SQL을 통해 이러한 데이터를 원하는...

모두 읽어보기