관리 메뉴

JIE0025

[MySQL] 데이터 삽입 INSERT 본문

개발/Database

[MySQL] 데이터 삽입 INSERT

Kangjieun11 2021. 4. 12. 10:18
728x90

INSERT 문

INSERT [INTO] tablename [(열1,열2 ...)] VALUES (값1,값2 ....)

 

- 테이블 이름 다음에 나오는 열은 생략 가능하다. 

단 열의 순서 및 개수는 동일해야한다.

USE cookDB;

CREATE TABLE testTBL1 (id int, userName char(3), age int);

INSERT INTO testTBL1 VALUES (1,'KHY','18');

 

- id와 이름만 입력, 나이는 입력X

INSERT INTO testTBL1 (id, userName) VALUES (2,'PJA');

 

- 열의 순서 변경해 입력

INSERT INTO testTBL1 (userName,age,id) VALUES ('HWO', 19,3);

 

AUTO_INCREMENT 

 

- 자동으로 1부터 증가하는 값을 입력

굳이 입력하지 않아도 자동으로 값이 늘어남

- 특정 Primary Key (기본키) , Unique Key(유일한 값) 로 설정한다.

- 데이터 형식이 숫자인 열에만 사용 가능하다.

- AUTO_INCREMENT 로 지정된 열은 INSERT 문에서 NULL 값으로 지정하면 자동으로 값이 입력된다.

USE cookDB;
CREATE TABLE testTBL2;(
id int AUTO_INCREMENT PRIMARY KEY.
userName char(3),
age int
);

INSERT INTO testTBL2 VALUES (NULL, 'HEW',13);
INSERT INTO testTBL2 VALUES (NULL, 'DAS',14);
INSERT INTO testTBL2 VALUES (NULL, 'KKR',15);
SELECT * FROM testTBL2;
iduserNameage
1HEW13
2DAS14
3KKR15

 

- AUTO_INCREMENT 값을 100부터 시작하고 싶다면?

ALTER TABLE testTBL2 AUTO_INCREMENT=100;

INSERT INTO testTBL2 VALUES (NULL, 'QWE',16);
SELECT * FROM testTBL2;
iduserNameage
1HEW13
2DAS14
3KKR15
100QWE16

 

AUTO_INCREMENT 로 증가되는 값 (N) 지정

@@auto_increment_increment = N;

USE cookDB;
CREATE TABLE testTBL3;(
id int AUTO_INCREMENT PRIMARY KEY.
userName char(3),
age int
);

ALTER TABLE testTBL AUTO_INCREMENT = 1000;
@@auto_increment_increment = 3;

INSERT INTO testTBL2 VALUES (NULL, 'HEW',13);
INSERT INTO testTBL2 VALUES (NULL, 'DAS',14);
INSERT INTO testTBL2 VALUES (NULL, 'KKR',15);
SELECT * FROM testTBL3;
iduserNameage
1000HEW13
1003DAS14
1006KKR15

 

여러행을 한번에 입력

INSERT INTO testTBL3 VALUES (NULL, 'DAD', 45), (NULL, 'MOM',42), (NULL, 'SON',15);
iduserNameage
1000HEW13
1003DAS14
1006KKR15
1009DAD45
1012MOM42
1015SON15

 

다른 테이블의 데이터 가져와서 입력

INSERT INTO 데이터입력테이블 (입력할 속성)
SELECT 다른 테이블에서 가져올 속성
FROM 다른 테이블
WHERE 조건;

 

employees 테이블의 데이터를 가져와서 testTBL4 테이블에 입력해보자

USE cookDB;
CREATE TABLE testTBL4 (id int, Fname varchar(50), Lname varchar(50));
INSERT INTO testTBL4
SELECT emp_no, first_name, last_name
FROM employees.employees;

 

<결과확인>

employees 테이블

 

 

 

 

 

데이터 복사된 testTBL4 테이블

 

 

 

 

 

테이블 정의 생략하고 다른테이블 데이터 복사하기

CREATE TABLE 생성할테이블
 (SELECT 다른 테이블에서 가져올 속성
FROM 다른 테이블 이름
);
SELECT * FROM testTBL5 LIMIT 3;

CREATE TABLE testTBL5
 (SELECT emp_no, first_name, last_name FROM
employees.employees);


SELECT * FROM testTBL5 LIMIT 3;

 

 

 

 

 

 

위의 예제는 다른 테이블에서 데이터를 가져올 때 열의이름이 그대로 왔다. 

 

다른 테이블에서 데이터를 가져올 때 열이름을 바꾸는 방법은 다음과 같다. 

CREATE TABLE testTBL5
 (SELECT emp_no AS id, first_name AS Fname, last_name AS Lname
 FROM employees.employees);
SELECT * FROM testTBL6 LIMIT 3;