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
'DB' 카테고리의 다른 글
[MySQL] INSERT + 트랜잭션(Transaction) 연동 완벽 가이드 (2) | 2025.06.20 |
---|---|
[MySQL] INSERT + SELECT 사용법 완벽 가이드 (0) | 2025.06.20 |
[MySQL] 있으면 UPDATE, 없으면 INSERT (오라클의 MERGE INTO) (2) | 2025.06.19 |
[MySQL] INSERT IGNORE 사용법 완벽 가이드(데이터 중복 방지) (0) | 2025.06.19 |
[MySQL] INSERT 다중 행 삽입 사용법 완벽 가이드 (1) | 2025.06.19 |
[MySQL] INSERT 기본 사용법 완벽 가이드 (0) | 2025.06.19 |
[MySQL] SET autocommit = 0/1 완벽 가이드 사용법(오토커밋 설정) (2) | 2025.06.18 |
[MySQL] RELEASE SAVEPOINT 완벽 가이드 사용법(SAVEPOINT 삭제) (0) | 2025.06.18 |