행 추가하기 - INSERT

유석현(SeokHyun Yu)·2022년 8월 9일
0

SQL

목록 보기
16/45
post-thumbnail

서론

지금까지 배운 SELECT 명령은 데이터 검색을 위한 것으로, 명령을 실행하면 데이터베이스 서버가 클라이언트로 결과를 반환하는 형식으로 처리된다.

이와 반대로 데이터를 추가할 경우에는 클라이언트에서 서버로 데이터를 전송하는 형식을 취하며 서버 측은 전송받은 데이터를 데이터베이스에 저장한다.

웹 페이지에서 '회원가입'이나 '추가'와 같은 버튼을 클릭했을 때 처리되는 데이터 추가 기능이라 생각하면 이해하기 쉽다.

그럼 지금부터 데이터를 추가하는 데 필요한 INSERT 명령에 대해 알아보겠다.


1. INSERT 로 행 추가하기

RDBMS에서는 INSERT 명령을 사용해 테이블의 행 단위로 데이터를 추가한다.

먼저 기존의 테이블에 어떤 데이터가 저장되어 있는지 SELECT 명령으로 확인해보자.

sample_table에는 3개의 열이 정의되어 있지만 저장된 데이터가 없어 아무것도 표시되지 않는다.

그럼 실제로 INSERT 명령을 실행하여 데이터를 추가해보겠다.

INSERT INTO sample_table VALUES(1, 10, 335);

먼저 INSERT INTO 뒤에 데이터를 추가할 테이블을 지정하고, 테이블에 추가할 데이터VALUES 구를 사용해 지정한다.

값을 지정할 때는 해당 열의 데이터 형식에 맞도록 지정해야 한다.

그럼 실제로 행이 잘 추가되었는지 SELECT 명령을 통해 확인해보자.


2. 값을 저장할 열 지정하기

INSERT 명령으로 행을 추가할 경우 값을 저장할 열을 지정할 수 있다.

열을 지정할 경우에는 테이블명 뒤괄호로 묶어 열명을 나열하고 VALUES 구로 값을 지정한다.

VALUSE 구에 값을 지정할 경우에는 지정한 열과 동일한 개수로 값을 지정해야 한다.

그럼 지금부터 sample_table에 id열과a열만 지정해 데이터를 추가해보고 SELECT 명령으로 확인해보자.

INSERT INTO sample_table(id, a) VALUES(2, 98);

행이 추가되었다.

다만 별도의 값을 지정하지 않았던 b열에는 기본값(default)NULL이 저장된 것을 볼 수 있는데 이에 관해서는 뒤에서 다루도록 하겠다.


3. NOT NULL 제약

행을 추가할 때 유효한 값이 없는 상태(NULL)로 두고 싶을 경우에는 VALUES 구에서 NULL로 값을 지정할 수 있다.

실제로 sample_table의 모든 열에 NULL인 행을 추가해보자.

INSERT INTO sample_table VALUES(NULL, NULL, NULL);

하지만 위의 INSERT 명령을 실행하면 에러가 발생한다.

이는 id 열에 대해 NULL 값을 허용하지 않는 'NOT NULL 제약'이 걸려있기 때문이다.

이와 같이 '테이블에 저장하는 데이터를 설정으로 제한하는 것'을 통틀어 '제약'이라고 부른다.

NOT NULL 제약은 그중 하나로 이 외에도 다양한 제약이 있다.


4. DEFAULT

DESC 명령으로 sample_table의 열 구성을 살펴보면 Default라는 항목을 찾을 수 있다.

Default는 값을 따로 지정하지 않았을 경우 사용하는 기본값을 말한다.

별도의 값을 지정하지 않았던 b열에 NULL이 저장됐었던 것처럼, 열을 지정해서 행을 추가할때 지정하지 않은 열은 Default 값을 사용하여 암묵적으로 저장된다.

그와 반대로 Default 를 명시적으로 지정할 수도 있다.

INSERT INTO sample_table(id, a, b) VALUES(1, 98, DEFAULT);
profile
Backend Engineer

0개의 댓글