MySQL에서 INSERT문은 데이터베이스(Database)에 데이터를 추가하기 위하여 사용하는 SQL문입니다. 기본적인 사용법으로 테이블(Table)을 선택하고 추가할 데이터를 컬럼에서 설정한 데이터 타입에 맞게 순서대로 나열하여 레코드(행, Row)를 추가합니다.
- MySQL에서 데이터를 추가하기 위한 기본적인 INSERT 문법
INSERT INTO 'table_name'
VALUES ('column_value1', 'column_value2', ... );
이때 컬럼(Column)의 값은 테이블에 정의되어 있는 순서대로 입력을 하여야 합니다.
MySQL INSERT 문 DATABASE 데이터 삽입/추가
1. 모든 컬럼에 데이터 추가
MySQL에서 'INSERT' 문을 통하여 테이블의 모든 열에 대한 데이터를 삽입하는 방법입니다.
- INSERT INTO [테이블명] VALUES([데이터1], [데이터2], ...)
※ 테이블의 열과, 데이터 값의 순서는 현재 테이블의 컬럼 순서대로 같은 타입의 값으로 추가하여야 합니다.
INSERT INTO example
VALUES
(
1,
'홍길동',
'서울'
);
2. 특정 컬럼에 데이터 추가
MySQL INSERT 문에서 테이블의 특정 열(Column)만을 선택하여 데이터를 삽입합니다. 주로 AUTO_INCREAMENT가 설정되어 있거나 NULL 제약 조건으로 설정한 열과 DEFAULT 제약 조건이 설정된 열은 INSERT 시 데이터 값을 생략하실 수 있습니다.
- INSERT INTO [테이블명] ([컬럼명1], [컬럼명2]) VALUES ([데이터1], [데이터2])
/* 예제 : example 테이블에 하나의 레코드를 추가합니다. name 컬럼에만 값 대입 */
INSERT INTO example (name)
VALUES
(
'홍길동'
);
3. 여러 개의 레코드 추가 (다중 행 삽입)
위의 1, 2번의 내용은 단일 행을 기준으로 예시를 들었으며, MySQL INSERT 구문에서는 여러 개의 행를 동시에 추가하는 것이 가능합니다.
- INSERT INTO [테이블명] ([컬럼명1], [컬럼명2]) VALUES ([데이터1], [데이터2]), ([데이터1], [데이터2]), ...
다중 행을 하나의 쿼리문으로 삽입하게 되면, 각각의 INSERT 쿼리문 보다 성능을 향상시킬 수 있습니다.
※ 전체 컬럼의 데이터를 입력하는 경우 컬럼명은 생략하셔도 됩니다.
/* 예제 : example 테이블에 3개의 레코드를 동시에 추가합니다. */
INSERT INTO example (name)
VALUES
('홍길동'),
('김철수'),
('김영희');
4. 특정 테이블의 내용을 해당 테이블에 추가 ( INSERT INTO ~ SELECT ~ 문 )
SELECT에서 조회한 결과 레코드를 추가합니다.
이때 조회 시 출력되는 컬럼들의 데이터형이나 개수가 맞아야 합니다.
INSERT INTO member (name, hp)
SELECT name, hp
FROM phone
WHERE name LIKE '김%';
5. MySQL INSERT 문 자주 발생하는 오류 및 예외 처리
MySQL INSERT 구문을 사용할 때 자주 발생하는 오류입니다.
- 중복 데이터 삽입 : 주로 자주 발생하는 오류로 기본키(PRIMARY KEY) 또는 유일키(UNIQUE KEY)에서 중복 데이터로 인한 오류가 발생합니다. 이때, 'INSERT IGNORE' 또는 'ON DUPLICATE KEY UPDATE' 구문을 사용하여 중복된 데이터를 처리합니다.
- NULL 값 삽입 : NOT NULL 제약 조건이 있는 열(Column)에 NULL 값을 삽입할 때 발생하는 오류로 'ISNULL' 구문을 통하여 NULL 값인 경우 빈 값 또는 다른 데이터가 들어갈 수 있도록 처리합니다.
- 외래 키 제약 조건을 위반하는 데이터 삽입 : 데이터베이스의 참조 무결성을 위반할 때 발생하는 오류로 데이터를 삽입하기 전에 해당 테이블의 제약 조건을 확인 후 데이터 삽입 처리를 진행합니다.
또한, 예외 처리 방법 중 INSERT 작업이 실패할 수 있는 경우를 판단하여, 여러 개의 작업들을 트랜잭션(Transaction)으로 묶어, 작업이 모두 성공하였을 때만 Commit을 하고 실패한 경우에는 Rollback 작업을 하도록 처리해두는 것도 데이터를 정확한 값으로 유지하기 좋은 방법입니다.
※ 위의 MySQL INSERT 예외 처리에 들어간 'INSERT IGNORE', 'ON DUPLICATE KEY UPDATE', 'ISNULL' 구문은 다른 포스팅에서 더 자세하게 알아볼 것이며, 링크를 통하여 손쉽게 보실 수 있도록 업데이트하겠습니다.
이상으로 MySQL에서 INSERT 문을 통하여 레코드를 추가하는 다양한 방법에 대하여 알아보았습니다. 특히, SELECT 조회 결과를 INSERT 하는 방식을 잘 사용하신다면 더욱 편리한 Query문을 다루실 수 있습니다.
더 추가할 내용이 생길 경우, 주기적으로 확인하고 업데이트하겠습니다. 찾아주셔서 감사합니다!
'DataBase > MySQL' 카테고리의 다른 글
MySQL UPDATE 문 조건에 맞는 여러 개의 데이터 변경 방법 (0) | 2024.08.14 |
---|---|
MySQL TRUNCATE 명령어 (테이블 초기화) (0) | 2022.12.21 |
MySQL DELETE 문 정리 (테이블 데이터 삭제) (0) | 2022.12.21 |
MySQL 날짜(DATE) 조건 검색 사용법 (0) | 2022.12.21 |
MySQL 일별, 주별, 월별, 특정 기간별 통계 조회 (1) | 2022.12.19 |
댓글