---
id: sql-default
title: "SQL Default"
category: "Database"
status: "draft"
verification_status: "conceptual"
canonical_id: ""
aliases: ["SQL DEFAULT Constraint", "DEFAULT constraint"]
duplicate_of: ""
source_trust_level: "B"
confidence_score: 0.88
created_at: 2026-07-04
updated_at: 2026-07-04
review_reason: ""
merge_history: []
tags: ["sql", "database", "w3schools", "default", "constraints"]
raw_sources: ["https://www.w3schools.com/sql/sql_default.asp"]
applied_in: []
github_commit: ""
---

# [[SQL Default]]

## 🎯 한 줄 통찰 (One-line insight)
DEFAULT auto-fills a column with a fallback value when none is provided, and can hold a system function call (like the current date) instead of a static literal. [S1]

## 🧠 핵심 개념 (Core concepts)
- **DEFAULT constraint** — automatically inserts a default value for a column if no value is specified; applies to all new records. [S1]
- **On CREATE TABLE** — e.g. `City varchar(255) DEFAULT 'Sandnes'`. [S1]
- **System-value defaults** — functions like `CURRENT_DATE()` (MySQL) or `CAST(GETDATE() AS date)` (SQL Server) auto-populate the current date. [S1]
- **On ALTER TABLE** — vendor-specific syntax to add or drop a DEFAULT after table creation (MySQL, SQL Server, MS Access, Oracle all differ). [S1]

## ⚖️ 모순 및 업데이트 (Contradictions & updates)
- **4개 벤더 모두 다른 ALTER 문법**: DEFAULT를 나중에 추가/제거하는 문법이 MySQL(`ALTER ... SET DEFAULT`/`DROP DEFAULT`), SQL Server(`ADD CONSTRAINT ... DEFAULT ... FOR col`), MS Access(`ALTER COLUMN ... SET DEFAULT`), Oracle(`MODIFY col DEFAULT ...`)에서 각각 다름. [S1]

## 📖 세부 내용 (Details)
- Static default on creation: `City varchar(255) DEFAULT 'Sandnes'` inside CREATE TABLE. [S1]
- System-value default (MySQL): `OrderDate date DEFAULT CURRENT_DATE()`. [S1]
- System-value default (SQL Server): `OrderDate date DEFAULT CAST(GETDATE() AS date)`. [S1]
- Add after creation (MySQL): `ALTER TABLE Persons ALTER City SET DEFAULT 'Sandnes';`. [S1]
- Add after creation (SQL Server): `ALTER TABLE Persons ADD CONSTRAINT df_City DEFAULT 'Sandnes' FOR City;`. [S1]

## 🛠️ 적용 사례 (Applied in summary)
현재 발견된 실제 적용 사례가 없습니다 — 값이 비어있을 때 정적 기본값 또는 현재 날짜 같은 시스템 값을 자동 채우는 데 쓰인다. [S1]

## 💻 코드 패턴 (Code patterns)
Static and system-value defaults (SQL):
```sql
CREATE TABLE Persons (
    ID int PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    City varchar(255) DEFAULT 'Sandnes'
);
-- MySQL system default
CREATE TABLE Orders (
    ID int PRIMARY KEY,
    OrderNumber int NOT NULL,
    OrderDate date DEFAULT CURRENT_DATE()
);
```

## ✅ 검증 상태 및 신뢰도
- **상태:** draft
- **검증 단계:** conceptual
- **출처 신뢰도:** B (W3Schools — widely used educational reference, not a primary standards body)
- **신뢰 점수:** 0.88
- **중복 검사 결과:** 신규 생성 (New discovery)

## 🔗 지식 그래프 (Knowledge Graph)
- **상위/루트:** [[SQL Tutorial]]
- **관련 개념:** [[SQL Constraints]], [[SQL Check]], [[SQL Dates]]
- **참조 맥락:** 값이 명시되지 않은 컬럼을 자동으로 채워야 할 때 사용.

## 📚 출처 (Sources)
- [S1] W3Schools — SQL DEFAULT Constraint — https://www.w3schools.com/sql/sql_default.asp

## 📝 변경 이력 (Change history)
- 2026-07-04: Initial draft synthesized from the W3Schools "SQL DEFAULT Constraint" page (Astra wiki-curation, P-Reinforce v3.1 format).
