본문 바로가기
CS/DataBase

데이터베이스 첫걸음 정리 - 16장. 행 추가하기 INSERT

by yongckim 2022. 9. 8.
728x90
반응형

데이터베이스에서 데이터를 조회할때는 SELECT 명령을 통해 조회할 수 있습니다.

그렇다면 데이터를 추가할때는 어떻게 해야할까요?

데이터베이스 데이터를 추가할때는 INSERT 명령을 사용할 수 있습니다.

INSERT로 행 추가하기

INSERT 명령을 사용하면 테이블의 행 단위로 데이터를 추가할 수 있습니다.

먼저 테스트 용도로 다음 테이블을 생성해봅시다.

CREATE TABLE sample ( 
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
a varchar(30) NOT NULL,
b date
);

desc로 해당 테이블의 구조를 확인해보면 다음과 같습니다.

이제 INSERT 명령을 통해 행을 추가해봅시다.

먼저 INSERT INTO 뒤에 추가할 테이블 명을 적어줍시다.

INSERT INTO 테이블명

테이블 명 뒤에는 VALUES를 통해 해당 테이블에 넣을 값을 지정해줍니다.

INSERT INTO 테이블명 VALUES(값1, 값2 ...);

이제 다음 명령을 통해 실제로 테이블에 값을 넣어봅시다.

INSERT INTO sample VALUES(1, 'ABC', '2022-08-30');

이제 테이블에 SELECT를 통해 조회해보면 넣은 값이 잘 들어간 것을 볼 수 있습니다.

SELECT * FROM sample;

값을 저장할 열 지정하기

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

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

여기서 주의해야 할점은 VALUES 구에 값을 지정할때 지정한 열과 동일한 데이터 타입과 동일한 개수로 값을 지정해야 합니다.

INSERT INTO 테이블명(열1, 열2...) VALUES(값1, 값2...)

이번에는 열을 지정해서 테이블에 데이터를 추가해보겠습니다.

INSERT INTO sample(a, id) VALUES('XYZ', 2);

이제 테이블에 SELECT를 통해 조회해보면 넣은 값이 잘 들어간 것을 확인할 수 있습니다.

SELECT * FROM sample;

별도의 값을 지정하지 않은 b 열의 경우 NULL값이 들어간 것을 볼 수 있습니다.

NOT NULL 제약

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

아까 만든 테이블에 INSERT를 통해 모든 값이 NULL인 행을 추가해봅시다.

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

위와 같이 a에 NOT NULL 제약이 걸려있어 NULL을 넣을시 에러가 발생하게 됩니다.

이와 같이 테이블에 저장하는 데이터를 설정으로 제한하는 것을 “제약"이라고 부릅니다.

INSERT 명령에서 a에 값을 준 상태로 다시 실행해보면 정상적으로 동작하는 것을 확인할 수 있습니다.

INSERT INTO sample VALUES(NULL, 'asd', NULL);

NULL은 여러 측면에서 주의해야할 필요가 있습니다.

예를들어 NULL을 비교할때는 IS NULL을 사용해야 한다거나 NULL을 포함한 연산 결과는 모두 NULL이 되는 상황이 발생합니다.

이때문에 NULL을 허용하지 않고 싶다면 NOT NULL을 통해 제약을 거는 것이 좋습니다.

Default

desc 명령어를 사용하면 Default라는 항목을 찾을 수 있습니다.

Default는 값을 지정하지 않았을 경우 사용되는 초기값을 말합니다.

Default 값은 테이블을 정의할 때 사용할 수 있습니다.

열을 지정해 행을 추가하는 경우 지정하지 않은 열을 Default 값을 사용하여 저장하게 됩니다.

값을 지정하지 않은 경우 이외에도 VALUES에서 DEFAULT 키워드를 사용하면 디폴트 값을 저장할 수 있습니다.

다음은 DEFAULT를 명시적으로 지정하는 방법입니다.

INSERT INTO sample VALUES(4, 'DEF', DEFAULT);

DB를 조회해보면 b의 값이 DEFAULT 값인 NULL로 지정된 것을 확인할 수 있습니다.

정리

  • INSERT 명령을 사용하면 테이블의 행 단위로 데이터를 추가할 수 있습니다.
  • INSERT 명령으로 행을 추가할때 값을 지정할 열을 선택할 수 있습니다. 단, 지정한 열에 데이터 형식에 맞게 VALUES 구로 값을 지정해야 합니다.
  • 행을 추가할 때 NULL을 허용하지 않고 싶은 경우 NOT NULL 제약을 통해 막을 수 있습니다.
  • 행을 추가할때 값을 지정하지 않으면 Default에 지정된 값이 들어갑니다.
반응형