기본값

기본값 (Default Values)

테이블을 설계할 때 "이 열에 값이 안 들어오면 뭘 넣어줄까?"를 정해두고 싶을 때가 있어요. 바로 그게 기본값(default value)이에요. 새 행이 만들어질 때 일부 열에 값이 지정되지 않으면, 그 열들은 각자 정의된 기본값으로 채워져요.

출처: 공식문서

기본값을 정하지 않으면?

명시적으로 기본값을 선언하지 않으면 기본값은 null 값이에요. null 값은 "알 수 없는 데이터"를 나타내는 것으로 볼 수 있으니, 이 동작은 대개 말이 되죠. 데이터 조작 명령에서도 기본값이 뭔지 알 필요 없이 "이 열을 기본값으로 설정해줘"라고 명시적으로 요청할 수 있어요. (자세한 내용은 6장에서 다룹니다.)

기본값 정의하는 법

테이블 정의에서 기본값은 열 데이터 타입 뒤에 나열해요:

CREATE TABLE products (
    product_no integer,
    name text,
    price numeric DEFAULT 9.99
);

기본값은 표현식(expression)일 수도 있어요. 이 표현식은 기본값이 삽입될 때마다 평가되며, 테이블이 생성될 때가 아니라는 점이 중요해요. 흔한 예시로는 timestamp 열에 CURRENT_TIMESTAMP를 기본값으로 두어 행이 삽입된 시각으로 설정되게 하는 경우가 있어요.

시퀀스 번호 만들기

또 하나 흔한 예시는 각 행에 "일련 번호"를 만드는 거예요. PostgreSQL에서는 보통 이런 식으로 처리해요:

CREATE TABLE products (
    product_no integer DEFAULT nextval('products_product_no_seq'),
    ...
);

여기서 nextval() 함수는 시퀀스 객체(sequence object)에서 연속된 값을 공급해줘요. 이 패턴은 워낙 흔해서 전용 축약 표기법이 따로 있는데, 바로 이거예요:

CREATE TABLE products (
    product_no SERIAL,
    ...
);

SERIAL 축약 표기법에 대한 자세한 내용은 8.1.4절을 참고하세요.

더 알아보기 (Learn more)