Language/SQL

[MySQL] 데이터를 입력하는 INSERT ~ 문

seoraroong 2024. 8. 20. 22:58

INSERT

INSERT를 사용해 테이블에 행 데이터를 입력한다

 

 

 

INSERT 문의 기본 문법

INSERT INTO 테이블 [(열1, 열2, ...)] VALUES (값1, 값2, ...)

 

 

 

INSERT 문 주의 사항

테이블 이름 다음에 나오는 열을 생략할 수 있다.

열 이름 생략 시 VALUES에 나오는 값의 순서 및 개수와 테이블을 정의할 때의 열 순서 및 개수와 동일해야 한다.

 

 

 

USE market_db;
CREATE TABLE hongong1 (toy_id INT, toy_name CHAR(4), age INT);
INSERT INTO hongong1 VALUES (1, '우디', 25);

// 위 예제에서 age를 입력하고 싶지 않다면 다음과 같이 작성

INSERT INTO hongong1 (toy_id, toy_name) VALUES(2, '버즈');

// 이 경우 age 열에는 NULL 값이 들어감

// 열의 순서를 바꿔 입력하고 싶으면 열 이름과 값을 원하는 순서에 맞춰 작성

INSERT INTO hongong1 (toy_name, age, toy_id) VALUES('제시', 20, 3);

 

 

 

 

자동으로 증가하는 AUTO_INCREMENT

AUTO_INCREMENT 는 열을 정의할 때 1부터 증가하는 값을 입력하는 옵션이다.

INSERT 에서는 해당 값이 없다고 생각하고 입력해주어야 한다.

📌 AUTO_INCREMENT 로 지정하는 열은 PRIMARY KEY (PK) 로 지정해야 한다.

 

 

- AUTO_INCREMENT를 사용해 간단한 테이블 만들기

CREATE TABLE hongong2 (
   toy_id INT AUTO_INCREMENT PRIMARY KEY,
   toy_name CHAR(4),
   age INT);

 

- 테이블에 데이터 입력하기

INSERT INTO hongong2 VALUES (NULL, '보핍', 25);
INSERT INTO hongong2 VALUES (NULL, '슬링키', 22);
INSERT INTO hongong2 VALUES (NULL, '렉스', 21);
SELECT * FROM hongong2;

 

- 현재 어느 숫자까지 증가했는지 확인하기

SELECT LAST_INSERT_ID();

 

- AUTO_INCREMENT로 입력되는 다음 값을 100부터 시작하도록 변경하기

ALTER TABLE hongong2 AUTO_INCREMENT=100;
INSERT INTO hongong2 VALUES (NULL, '재남', 35);
SELECT * FROM hongong2;

 

- AUTO_INCREMENT로 처음부터 입력되는 값을 1000, 3씩 증가하도록 변경하기

CREATE TABLE hongong3 (
   toy_id INT AUTO_INCREMENT PRIMARY KEY,
   toy_name CHAR(4),
   age INT);
ALTER TABLE hongong3 AUTO_INCREMENT=1000; // 시작값을 1000으로 지정
SET @@auto_increment_increment=3; // 3씩 증가하도록 지정

//데이터 입력
INSERT INTO hongong3 VALUES (NULL, '토마스', 20);
INSERT INTO hongong3 VALUES (NULL, '제임스', 23);
INSERT INTO hongong3 VALUES (NULL, '고든', 25);
SELECT * FROM hongong3;

 

 

 

 

다른 테이블의 데이터를 한번에 입력하는 INSERT INTO ~ SELECT

다른 테이블에 이미 데이터가 입력되어 있는 경우 INSERT INTO ~ SELECT 구문으로 해당 테이블의 데이터를 가져와서 한 번에 입력할 수 있다.

 

📌 SELECT 문의 열 개수는 INSERT 할 테이블의 열 개수와 일치해야 한다.