서론
지금까지 배운 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);