본문 바로가기
프로그래밍/MySQL

📊 [SQL] 제35장 INSERT(3) - 번호를 직접 입력하지 않아도 될까요?

by 강릉바다의 블로그 2026. 7. 10.

제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를 이해하는 데에도 큰 도움이 될 것입니다.