2 분 소요

DEFAULT 제약 조건은 SQL에서 값이 입력되지 않은 필드에 자동으로 기본값을 설정하는 기능입니다. 이를 통해 데이터 입력을 간소화하고 일관성 유지에 도움을 줍니다. 특히 대량 입력 시 누락을 방지하거나, 공통 초기값을 자동화하는 데 매우 유용합니다.


1. DEFAULT 제약 조건이란?

특징 설명
기본값 자동 적용 INSERT 시 값을 생략하면 미리 지정된 기본값 저장
다양한 타입 지원 문자열, 숫자, 날짜, 불리언 등 사용 가능
간결한 입력 가능 자주 사용하는 초기값을 자동 적용하여 코드를 줄일 수 있음

2. DEFAULT 설정 방법

2.1. CREATE TABLE에서 설정

CREATE TABLE Test (
    ID INT,
    Name VARCHAR(30) DEFAULT 'Anonymous',
    ReserveDate DATE DEFAULT '2025-05-03',
    RoomNum INT DEFAULT 101
);
  • Name: 'Anonymous'가 기본값
  • ReserveDate: '2025-05-03'
  • RoomNum: 101

2.2. ALTER TABLE에서 설정

✅ 새 필드 추가와 동시에 설정

ALTER TABLE Reservation
ADD Status VARCHAR(20) DEFAULT 'Pending';

✅ 기존 필드에 DEFAULT 추가

ALTER TABLE Reservation
MODIFY COLUMN Name VARCHAR(30) DEFAULT 'Anonymous';

✅ DEFAULT 설정 변경

ALTER TABLE Reservation
ALTER Name SET DEFAULT 'Guest';

3. DEFAULT 삭제 방법

ALTER TABLE Reservation
ALTER Name DROP DEFAULT;

해당 필드의 기본값 설정이 제거됩니다.


4. DEFAULT 사용 예제

✅ 생략 시 자동 적용

INSERT INTO Test (ID) VALUES (1);
필드
ID 1
Name ‘Anonymous’
ReserveDate ‘2024-01-01’
RoomNum 101

✅ 값이 있으면 기본값 무시

INSERT INTO Test (ID, Name) VALUES (2, 'John Doe');
Name 저장 값
Name ‘John Doe’

5. 실전 활용 예제

5.1. 주문 상태 관리

CREATE TABLE Orders (
    OrderID INT PRIMARY KEY,
    Status VARCHAR(20) DEFAULT 'Pending',
    OrderDate DATE DEFAULT CURRENT_DATE
);

기본 상태는 ‘Pending’, 주문일은 자동으로 오늘 날짜 저장


5.2. 사용자 활성 여부

CREATE TABLE Users (
    UserID INT PRIMARY KEY,
    UserName VARCHAR(50),
    IsActive BOOLEAN DEFAULT TRUE
);

새 사용자는 기본적으로 활성화(TRUE) 상태로 등록됨


6. 주의사항 및 팁

❗ NULL과 DEFAULT

INSERT INTO Test (ID, Name) VALUES (3, NULL);
  • 명시적으로 NULL을 입력하면 기본값 사용되지 않음

❗ 기본값으로 수식 사용 불가

CREATE TABLE Example (
    Value INT DEFAULT (10 + 5)
);
  • MySQL은 계산식·함수를 기본값으로 직접 사용 불가

✅ 기본값 변경

ALTER TABLE Orders
ALTER Status SET DEFAULT 'Completed';

7. DEFAULT 제약 조건 & 데이터 타입별 예시

타입 기본값 예제 설명
VARCHAR 'DefaultText' 문자열 기본값 지정
INT 0, 100 숫자 기본값 지정
DATE '2025-01-01' 특정 날짜를 기본값으로 지정
BOOLEAN TRUE 또는 FALSE 논리형 기본값
TIMESTAMP CURRENT_TIMESTAMP 현재 시간 저장 (서버 시각 기준)

8. 요약

  • DEFAULT는 필드에 값이 입력되지 않았을 때 자동으로 지정된 기본값을 설정합니다.
  • CREATE TABLE 또는 ALTER TABLE 명령을 통해 쉽게 설정할 수 있습니다.
  • 문자열, 숫자, 날짜, 시간 등 대부분의 타입에 사용 가능합니다.
  • NULL을 명시적으로 입력하면 DEFAULT는 적용되지 않음에 주의해야 합니다.
  • 자동 초기화가 필요한 필드(예: 상태, 날짜, 활성 여부 등)에 적극 활용하세요.

질문 정리

1. DEFAULT는 어떤 타입에 설정할 수 있나요?

→ 문자열, 숫자, 날짜, 불리언, TIMESTAMP 등 대부분의 MySQL 타입에 설정 가능합니다.

2. DEFAULT는 언제 적용되나요?

해당 필드의 값을 생략한 경우에만 자동 적용됩니다.

3. NULL을 입력하면 기본값이 적용되나요?

→ ❌ 아니요. 명시적 NULL 입력 시 기본값은 무시됩니다.

4. DEFAULT로 현재 시간을 설정할 수 있나요?

→ ✅ 가능합니다. CURRENT_TIMESTAMP 또는 CURRENT_DATE 사용.

5. 기존 필드의 DEFAULT를 변경하거나 삭제하려면?

ALTER TABLE ... ALTER 컬럼명 SET DEFAULT ... 또는 DROP DEFAULT 구문을 사용합니다.

카테고리:

업데이트:

댓글남기기