DB

[MySQL] INSERT 기본 사용법 완벽 가이드

인생아 2025. 6. 19. 12:20
반응형

MySQL에서 데이터를 새로 추가할 때 가장 먼저 사용하게 되는 명령어는 바로 INSERT이다.
이 명령어는 단순한 것 같지만, 다양한 방식의 삽입과 주의사항,
그리고 실무에서 활용할 수 있는 다양한 응용 형태를 포함하고 있다.

🔍 INSERT INTO란?

INSERT INTO는 MySQL에서 새로운 행(Row)을 테이블에 추가하는 명령어이다.
기본적인 구문은 아래와 같다.

INSERT INTO 테이블명 (컬럼1, 컬럼2, ...) VALUES (값1, 값2, ...);
  • 테이블명: 데이터를 삽입할 대상 테이블
  • 컬럼명: 삽입할 데이터가 들어갈 컬럼(열) 목록
  • VALUES: 실제 삽입할 값들

컬럼 순서와 값의 순서는 반드시 일치해야 하며, 컬럼을 생략하는 경우 테이블 전체 구조를 알아야 한다.

반응형

✅ INSERT 기본 예제

CREATE TABLE users (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  age INT
);

INSERT INTO users (id, name, age) VALUES (1, '김철수', 28);

위 코드는 users라는 테이블에 하나의 사용자 데이터를 추가하는 기본 예제이다.

⚙️ 컬럼명 생략도 가능할까?

-- 테이블 컬럼 순서를 정확히 알고 있다면 생략 가능
INSERT INTO users VALUES (2, '이영희', 31);

하지만 이 방식은 테이블 구조가 바뀔 경우 오류가 발생할 수 있어 명시적으로 컬럼명을 작성하는 것을 권장한다.

반응형

🧪 실전 예제 1 – 다중 행 INSERT

한 번에 여러 행을 추가할 수도 있다. 이는 성능 측면에서도 매우 유리하다.

INSERT INTO users (id, name, age)
VALUES 
  (3, '박민수', 25),
  (4, '최지은', 32),
  (5, '홍길동', 29);

이 방식은 반복 INSERT보다 훨씬 빠르며, 특히 대량의 데이터를 초기 등록할 때 많이 사용된다.

🧪 실전 예제 2 – SELECT 결과를 기반으로 INSERT

다른 테이블의 데이터를 복사하거나 파생 테이블을 만들 때는 INSERT INTO ... SELECT 문을 사용한다.

INSERT INTO archive_users (id, name, age)
SELECT id, name, age FROM users WHERE age >= 30;

이 구문은 특정 조건을 만족하는 데이터를 새 테이블에 그대로 복사할 때 유용하다.

🧪 실전 예제 3 – NULL 값과 DEFAULT 활용

테이블이 DEFAULT 값을 정의하고 있다면, INSERT 시 해당 컬럼을 생략할 수 있다.

CREATE TABLE products (
  id INT PRIMARY KEY,
  name VARCHAR(50),
  stock INT DEFAULT 100
);

INSERT INTO products (id, name) VALUES (1, '키보드');
-- stock은 자동으로 100으로 삽입됨

또는 명시적으로 NULL을 입력하면, NULL 허용 컬럼에 한해 빈 값으로 저장된다.

반응형

⚠️ INSERT 사용 시 주의사항

  • 기본 키(PK) 중복 시 에러 발생
  • NOT NULL 제약 조건이 있는 컬럼에 값을 넣지 않으면 오류 발생
  • 외래 키 제약(FK)이 설정된 컬럼은 참조 무결성에 맞게 데이터 삽입 필요
  • 트랜잭션 중에는 반드시 COMMIT 또는 ROLLBACK으로 마무리할 것

💡 INSERT 성능 향상 팁

  • 대량 삽입 시 다중 행 INSERT를 사용할 것
  • LOAD DATA INFILE과 같이 고속 삽입 기능도 고려 가능
  • 인덱스가 너무 많은 테이블에는 INSERT 성능 저하가 발생할 수 있음
  • 트랜잭션 단위로 묶어서 삽입하면 디스크 I/O 감소 효과가 있다

📌 INSERT 요약

항목 설명
명령어 INSERT INTO
사용 목적 테이블에 새 데이터 삽입
주요 구문 INSERT INTO 테이블 (컬럼...) VALUES (...)
고급 구문 INSERT INTO ... SELECT ...
실무 팁 컬럼명 명시, 다중 행 처리, 트랜잭션과 함께 사용
📎 공식 문서 참고

 

반응형