제35장. INSERT (3)
"번호를 직접 입력하지 않아도 될까요?"
학습 목표
이번 장을 학습하면 다음 내용을 할 수 있습니다.
- AUTO_INCREMENT의 역할을 설명할 수 있다.
- 번호를 자동으로 생성하는 이유를 이해할 수 있다.
- DEFAULT의 역할을 설명할 수 있다.
- 자동으로 입력되는 값의 장점을 설명할 수 있다.
지난 시간을 떠올려 봅시다.
지금까지 우리는 새로운 데이터를 추가하는 방법을 배웠습니다.
예를 들어 고객을 추가할 때 다음과 같이 작성했습니다.
INSERT INTO Customers
(
CustomerID,
CustomerName,
Country
)
VALUES
(
100,
'홍길동',
'Korea'
);
그런데 한 가지 궁금한 점이 있습니다.
고객 번호를 사람이 직접 입력해야 할까요?
만약 두 사람이 동시에 새로운 고객을 등록하면서 모두 100번을 입력했다면 어떻게 될까요?
번호가 중복되어 데이터베이스에 문제가 생길 수 있습니다.
그래서 대부분의 데이터베이스는 번호를 자동으로 만들어 주는 기능을 제공합니다.
AUTO_INCREMENT란?
AUTO_INCREMENT는
새로운 행이 추가될 때마다
번호를 자동으로 1씩 증가시키는 기능입니다.
예를 들어 CustomerID가 AUTO_INCREMENT로 설정되어 있다면
다음과 같이 번호가 자동으로 만들어집니다.
| CustomerID | CustomerName |
| 91 | Alice |
| 92 | Bob |
| 93 | Charlie |
다음 고객을 추가하면
자동으로 94가 저장됩니다.
직접 번호를 입력할 필요가 없습니다.
INSERT는 어떻게 달라질까요?
AUTO_INCREMENT가 설정되어 있다면
번호를 생략할 수 있습니다.
INSERT INTO Customers
(
CustomerName,
Country
)
VALUES
(
'홍길동',
'Korea'
);
실행 결과
| CustomerID | CustomerName | Country |
| 94 | 홍길동 | Korea |
CustomerID는
MySQL이 자동으로 입력합니다.
SQL를 한 줄씩 살펴보기
INSERT INTO Customers
Customers 테이블에 새로운 데이터를 추가합니다.
(CustomerName,
Country)
CustomerID를 작성하지 않았습니다.
VALUES
(
'홍길동',
'Korea'
);
입력하지 않은 CustomerID는
자동으로 생성됩니다.
그림으로 이해하기
사용자
↓
이름 입력
국가 입력
↓
MySQL
↓
CustomerID 자동 생성
↓
새로운 행 저장
즉,
사람이 하지 않아도 되는 일은
데이터베이스가 대신 처리합니다.
DEFAULT란?
자동으로 입력되는 것은
번호만이 아닙니다.
컬럼에 DEFAULT가 설정되어 있으면
값을 입력하지 않아도
기본값이 저장됩니다.
예를 들어
Country
↓
DEFAULT 'Korea'
라고 설정되어 있다면
다음과 같이 작성할 수 있습니다.
INSERT INTO Customers
(
CustomerName
)
VALUES
(
'홍길동'
);
실행 결과
| CustomerName | Country |
| 홍길동 | Korea |
Country는 자동으로 Korea가 저장됩니다.
AUTO_INCREMENT와 DEFAULT의 차이
| 기능 | 역할 |
| AUTO_INCREMENT | 새로운 번호를 자동으로 만든다. |
| DEFAULT | 값을 입력하지 않으면 기본값을 저장한다. |
둘 다
자동으로 값을 채워 준다는 공통점이 있습니다.
실제 업무에서는?
온라인 쇼핑몰에서 회원가입을 하면
회원 번호는 자동으로 만들어집니다.
학교에서도
학번이나 도서 번호,
주문 번호,
게시글 번호 등은 대부분 자동으로 생성됩니다.
또한
가입일을 자동으로 오늘 날짜로 저장하거나,
회원 등급을 기본값인 "일반회원"으로 저장하는 것도
DEFAULT를 이용하는 대표적인 사례입니다.
많이 하는 실수
실수 ①
AUTO_INCREMENT 컬럼에
직접 번호를 입력하려고 한다.
가능한 경우도 있지만,
특별한 이유가 없다면
자동으로 생성되도록 두는 것이 좋습니다.
실수 ②
AUTO_INCREMENT가 있는데도
매번 번호를 계산하여 입력한다.
현재 번호 확인
↓
+1 계산
↓
INSERT
이 방법은
동시에 여러 사용자가 작업하면
중복 번호가 생길 수 있습니다.
실수 ③
DEFAULT가 설정되어 있는데
굳이 같은 값을 계속 입력한다.
자동으로 입력되는 값은
데이터베이스에 맡기는 것이 더 안전합니다.
실무 습관
자동으로 처리할 수 있는 것은 데이터베이스에 맡기세요.
프로그램이 번호를 계산하는 것보다
MySQL이 직접 AUTO_INCREMENT를 관리하는 것이
더 안전하고 빠릅니다.
실무에서는
"사람이 계산하는 것보다 데이터베이스가 계산하도록 만든다."
라는 원칙을 자주 사용합니다.
한눈에 정리
| 기능 | 설명 |
| AUTO_INCREMENT | 번호를 자동으로 증가시킨다. |
| DEFAULT | 값을 입력하지 않으면 기본값을 저장한다. |
이번 장 핵심 정리
✅ AUTO_INCREMENT는 번호를 자동으로 생성한다.
✅ 번호를 직접 입력하지 않아도 된다.
✅ DEFAULT는 기본값을 자동으로 저장한다.
✅ 자동 기능을 사용하면 실수를 줄일 수 있다.
| 방법 | 사용하는 경우 |
| INSERT ... VALUES | 직접 값을 입력할 때 |
| INSERT ... SELECT | 조회한 결과를 저장할 때 |
| AUTO_INCREMENT | 번호를 자동 생성할 때 |
| DEFAULT | 기본값을 자동 입력할 때 |
연습 문제
기본 문제
① AUTO_INCREMENT의 역할을 설명하시오.
② DEFAULT의 역할을 설명하시오.
응용 문제
① 회원 번호를 자동으로 생성하면 어떤 장점이 있는지 설명하시오.
② 학교의 학생 관리 시스템에서 AUTO_INCREMENT를 사용할 수 있는 예를 두 가지 찾아보시오.
도전 문제
다음 중 AUTO_INCREMENT를 사용하는 것이 적절한 컬럼을 모두 고르시오.
- 학생 이름
- 주문 번호
- 회원 번호
- 상품 번호
- 전화번호
정답
기본 문제
① 새로운 행이 추가될 때 번호를 자동으로 생성한다.
② 값을 입력하지 않았을 때 미리 지정한 기본값을 자동으로 저장한다.
💡 실무 이야기
처음에는 "번호를 직접 입력하는 것이 더 정확하지 않을까?"라고 생각할 수 있습니다.
하지만 실제 업무에서는 정반대입니다.
쇼핑몰, 은행, 병원, 학교처럼 여러 사용자가 동시에 데이터를 입력하는 시스템에서는 사람이 번호를 계산하는 순간 중복이나 충돌이 발생할 수 있습니다. 그래서 고유 번호 생성은 데이터베이스가 담당하고, 프로그램은 필요한 정보만 전달하는 구조를 사용합니다.
이 장에서 꼭 기억해야 할 문장은 다음과 같습니다.
"사람이 관리할 수 있는 것은 사람이 하고, 데이터베이스가 더 잘하는 일은 데이터베이스에 맡긴다."
이 사고방식은 이후 배우게 될 UPDATE, DELETE, 그리고 PRIMARY KEY를 이해하는 데에도 큰 도움이 될 것입니다.
'프로그래밍 > MySQL' 카테고리의 다른 글
| 📊 [SQL] 제34장 INSERT(2) - 조회한 결과를 그대로 저장할 수 있을까요? (0) | 2026.07.10 |
|---|---|
| 📊 [SQL] 제33장 INSERT - 이제 데이터를 추가해 볼까요? (0) | 2026.07.10 |
| 📊 [SQL] 제32장 서브쿼리(3) - FROM절에서 사용하는 서브쿼리 (0) | 2026.07.10 |
| 📊 [SQL] 제31장 서브쿼리(2) - 여러 개의 결과를 반환하는 서브쿼리 (0) | 2026.07.09 |
| 📊 [SQL] 제30장 서브쿼리 - SELECT 안에 또 SELECT를 사용할 수 있을까요? (0) | 2026.07.08 |