DB

[MySQL] INSERT INTO ... SET 사용법 완벽 가이드

인생아 2025. 6. 19. 14:33
반응형

MySQL에서 데이터를 테이블에 삽입할 때 가장 일반적으로 사용하는 문법은
INSERT INTO 테이블명 (컬럼1, 컬럼2) VALUES (값1, 값2) 형태이다.
하지만 이 외에도 MySQL에서는 INSERT INTO ... SET이라는 또 다른 삽입 방식을 지원한다.

🔍 INSERT INTO ... SET 문법이란?

INSERT INTO ... SET 구문은 마치 UPDATE 구문처럼 컬럼명과 값을 컬럼 = 값 형태로 나열하여
데이터를 삽입하는 방식이다.
이 방식은 값과 컬럼이 일대일로 명시되어 가독성이 좋고, 특히 프로그래밍 코드와 연동할 때 유리하다.

기본 구문

INSERT INTO 테이블명
SET 컬럼1 = 값1,
    컬럼2 = 값2,
    ...
;

SET 방식은 VALUES 방식과 동일한 결과를 내지만, 특히 코드 기반 삽입 처리 시 변수 연동이 쉬워 자주 활용된다.

반응형

기본 예제 – users 테이블에 사용자 추가

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

INSERT INTO users
SET id = 1,
    name = '김철수',
    age = 28;

컬럼명과 값이 나란히 보여서 직관성이 높고, 코드를 유지보수하기에도 유리하다.

🧪 실전 예제 – 변수와 함께 사용하는 SET 방식

SET @uid = 2;
SET @uname = '이영희';
SET @uage = 31;

INSERT INTO users
SET id = @uid,
    name = @uname,
    age = @uage;

프로그래밍 언어나 SQL 스크립트에서 변수를 사용할 때,
VALUES보다 SET 방식이 더 깔끔하고 가독성이 높다.

반응형

다중 행 삽입은 불가능

INSERT INTO ... SET 구문은 한 번에 한 행만 삽입할 수 있다.
다중 행 삽입은 반드시 VALUES (...) , (...) 방식으로 작성해야 한다.

따라서 이 방식은 폼 입력 처리, API 요청 등 단일 행 중심 환경에서 매우 적합하다.

🔁 트랜잭션과 함께 사용하는 예제

SET autocommit = 0;
START TRANSACTION;

INSERT INTO users SET id = 3, name = '박민수', age = 25;
INSERT INTO users SET id = 4, name = '최지은', age = 29;

COMMIT;

SET 방식도 트랜잭션을 완벽하게 지원한다.
여러 INSERT SET 구문을 트랜잭션으로 묶으면 데이터 안정성이 높아진다.

🔄 INSERT ... SET vs VALUES 비교

항목 INSERT INTO ... VALUES INSERT INTO ... SET
기본형태 컬럼 목록 + VALUES 값 컬럼 = 값 나열
다중 삽입 가능 불가능
가독성 보통 매우 높음
변수 연동 다소 불편 편리함
SQL 표준 여부 O MySQL 전용
추천 용도 일반 데이터 등록 단일 행 삽입, 코드 바인딩
 
반응형

⚠️ 주의사항

  • INSERT INTO ... SET은 MySQL에서만 사용 가능한 문법이다.
  • 다중 행 입력은 반드시 VALUES 방식으로 처리해야 한다.
  • REPLACE INTO나 ON DUPLICATE KEY UPDATE와도 함께 사용할 수 있다.
INSERT INTO users
SET id = 5, name = '김나현', age = 33
ON DUPLICATE KEY UPDATE
name = '김나현(수정)', age = 33;

기존 키가 있을 경우 UPDATE, 없으면 INSERT를 수행하는 구조다.

💡 실무 활용 팁

  • PHP, Node.js, Python 등과 연동할 때 key-value 구조의 데이터를 직접 삽입하기 쉬움
  • API나 백오피스 관리 시스템 등 사용자 입력 기반 처리에 특히 유리
  • 변수를 통한 동적 삽입이 필요할 때 추천

📌 요약

  • INSERT INTO ... SET은 MySQL 전용 단일 행 삽입 구문이다.
  • 컬럼 = 값 형태로 작성되어 가독성이 뛰어나고 유지보수성이 좋다.
  • 변수 사용이 간편하며, 트랜잭션과도 문제없이 호환된다.
  • 대량 삽입보다는 단일 요청 처리에 적합하다.

📎 공식 문서 참고

MySQL INSERT 공식 문서
https://dev.mysql.com/doc/refman/8.0/en/insert.html

반응형