본문 바로가기

AI/MySQL

MySQL INSERT


INSERT

-- 테이블에 데이터를 입력할 때 쓴다.

INSERT INTO 테이블명(컬럼명) VALUES(값) -- 기본 형태

 

-- 사용 예시

-- 예시를 위해 아이디와 이름, 나이를 작는 testTbl1이란 테이블을 우선 만든다.

빈 테이블

 

-- 입력 예시

INSERT INTO testTbl1 

VALUE(1, '홍길동', 25); -- 컬럼명을 생략할 수 있으나 컬럼별 값의 순서가 바뀌면 안된다. 

 

INSERT INTO testTbl1(id, userName) 

VALUE(2, '설현'); -- 컬럼과 값의 순서는 일치해야 한다, NULL 값도 입력가능


INSERT INTO testTbl1(userName, age, id) 

VALUE ('하니',26,3); -- 풀스택으로 입력할 경우는 컬럼과 값의 순서만 일치하면 컬럼의 순서가 바뀌어도 입력데이터는                               순서에 맞게 들어간다.

 

INSERT INTO testTbl1 VALUES(NULL, '나연', 20),(NULL, '정연', 18),(NULL, '모모', 19); -- 이런 식으로 입력도 가능

 

 


AUTO_INSCREMENT

-- AUTO_INSCREMENT 는 값을 1씩 자동증가 시킬 때 사용한다.

-- id는 자동증가, userName, age 칼럼을 갖는 testTbl2라는 테이블을 만들어라.

CREATE TABEL testTbl2(

   id INT AUTO_INSCREMENT PRIMARY KEY,

   userName CHAR(3),

   age INT

); 

 

-- 만든 테이블에 다음과 같이 아이디를 제외한 값을 입력하고 확인

INSERT INTO testTbl2(userName, age) VALUES('지민', 25);
INSERT INTO testTbl2(userName, age) VALUES('윤아', 22);
INSERT INTO testTbl2 VALUES(NULL, '유경', 21); -- 간략형으로 입력할 땐 VALUES의 아이디가 들어갈 부분에 NULL을                                                                      입력해야 한다.
SELECT*FROM testTbl2;

ID를 따로 입력하지 않았지만 AUTO_INSCREMENT를 사용해서 자동증가했다.

 

SELECT LAST_INSERT_ID(); -- 마지막 입력된 ID를 확인하는 함수

 


ALTER

-- 테이블을 수정할 때 사용

-- 위 테이블의 자동증가를 100부터 증가하게 수정하시오

ALTER TABLE testTbl2 AUTO_INSCREMENT = 100;

 

-- 그리고 값을 입력하고 확인해보자.

INSERT INTO testTbl2 VALUES(NULL, '찬미',23);

INSERT INTO testTbl2 VALUES(NULL, '정수',22);
SELECT*FROM testTbl2;

ALTER로 수정한 뒤 입력한 두개의 데이터는 ID가 100부터 시작한 것을 확인할 수 있다

 

-- 위의 테이블에서 값을 3씩 증가하게 하고 싶다.

SET @@auto_increment_increment = 3;

 

-- 확인을 위해 3개의 테이터를 간략형으로 입력

INSERT INTO testTbl2 VALUES(NULL, '나연', 20),(NULL, '정연', 18),(NULL, '모모', 19);

SELECT*FROM testTbl2;

수정한 뒤부터는 아이디가 3씩 자동증가 하는 것을 확인할 수 있다

 

 

 


IGNORE - 조건부 데이터 입력

-- userID, name, addr 행을 가진 memberTBL 테이블을 생성. usertbl에서 3개의 데이터만 가져와라.

CREATE TABLE memberTBL(
   SELECT userID, name, addr FROM usertbl LIMIT 3
); 

-- userID에 기본키를 할당하도록 수정

ALTER TABLE memberTBL
ADD CONSTRAINT pk_memberTBL PRIMARY KEY(userID);

 

-- 아래 3개의 데이터를 입력하고 한번에 실행하면

-- 이미 bbk를 가지고 있는 행이 존재하기 때문에 에러가 남

INSERT INTO memberTBL VALUES('BBK', '비비코', '미국'); 
INSERT INTO memberTBL VALUES('SJH', '서장훈', '서울');
INSERT INTO memberTBL VALUES('HJY', '현주엽', '경기');

 

-- 해결하기 위해 IGNORE문 삽입 

-- 이미 bbk를 가지고 있는 행은 넘기고 나머지 2행이 추가된다.
INSERT IGNORE INTO memberTBL VALUES('BBK', '비비코', '미국'); 
INSERT IGNORE INTO memberTBL VALUES('SJH', '서장훈', '서울');
INSERT IGNORE INTO memberTBL VALUES('HJY', '현주엽', '경기');

 

-- 기본키가 중복되면 데이터 수정이 되도록 하시오.
INSERT INTO memberTBL VALUES('BBK', '비비코', '미국')
ON DUPLICATE KEY UPDATE name = '비비코', addr = '미국'; -- 키가 중복되면 업데이트

바비킴이 비비코로 수정된 것을 확인

 

-- 만약 중복되면 이름과 주소만 바꿔라. 현재 중복된 키가 없어서 추가로 입력되었다.

INSERT INTO memberTBL VALUES('DJM', '동짜몽', '일본')
ON DUPLICATE KEY UPDATE name = '동짜몽', addr = '일본';

 

-- 조관우의 주소를 서울로 변경하라. 만약 PK가 중복 존재한다면 이 들어가면 INSERT 조건문으로.

INSERT INTO memberTBL VALUES('JKW', '조관우', '서울')
ON DUPLICATE KEY UPDATE addr = '서울';

PK가 중복되었지만 조관우의 주소가 경기에서 서울로 변경되었다

 

반응형

'AI > MySQL' 카테고리의 다른 글

MySQL DELETE  (0) 2021.08.07
MySQL UPDATE  (0) 2021.08.07
MySQL SELECT  (0) 2021.08.07
MySQL #계정추가, #권한부여, #권한조회, #DCL  (0) 2021.08.05
MySQL #테이블, #인덱스, #뷰  (0) 2021.08.05