DB/SQL

[세무민의 코딩일기] 새로 만들 테이블에 기존 테이블의 값을 insert 하는 Tip

세기루민 2021. 7. 25. 10:00
728x90

이번 포스팅에서는 auto_increment와 insert에 대해서 간략하게 다뤄볼 계획입니다.

사실 auto_increment라는건 대부분 알 것입니다. 

테이블을 생성 시 정수 primary key값을 가지는 컬럼에 되어있는 경우가 많기 때문이죠 


auto_increment란 자동으로 1씩 증가하는 값을 입력해줍니다. 

그렇지만 auto_increment를 자유롭게 변경할 수 있는데 아래의 코드와 같이하면 됩니다.

# 테스트 테이블 생성
CREATE TABLE TEMP1(
	KEYNUMBERING INT AUTO_INCREMENT PRIMARY KEY,
	NUMBER1 INT,
    NUMBER2 INT,
    VARCHARS VARCHAR(30)
);

# auto_increment값을 2로 변경
SET @@auto_increment_increment=2;

# temp1 테이블에 하나씩 넣어보기
INSERT INTO TEMP1 (NUMBER1, NUMBER2, VARCHARS) VALUES (22, 31, '사과');
INSERT INTO TEMP1 (NUMBER1, NUMBER2, VARCHARS) VALUES (13, 11, '파인애플');
INSERT INTO TEMP1 (NUMBER1, NUMBER2, VARCHARS) VALUES (53, 11, '체리');
INSERT INTO TEMP1 (NUMBER1, NUMBER2, VARCHARS) VALUES (64, 31, '수박');
INSERT INTO TEMP1 (NUMBER1, NUMBER2, VARCHARS) VALUES (68, 44, '참외');
INSERT INTO TEMP1 (NUMBER1, NUMBER2, VARCHARS) VALUES (99, 53, '오렌지');
INSERT INTO TEMP1 (NUMBER1, NUMBER2, VARCHARS) VALUES (43, 51, '바나나');

"SET @@AUTO_INCREMENT_INCREMENT"

위와 같은 한줄을 넣어주면 테이블에 2씩 증가하는 것을 볼 수 있습니다.

이 경우에는 기본적으로 전체 컬럼이 변경되는 경우이고 

특정 부분 이후로 변경하기를 원한다면 

# 테이블 속성 변경
ALTER TABLE TEMP1 AUTO_INCREMENTS=30;

아래와 같이 테이블의 속성을 변경해준 뒤 INSERT 하면 된다.


사실 테이블의 전체 값을 INSERT하는 것은 가끔 값이 겹치는 경우에 

INSERT~~~VALUE~~~

위와 같이 작성하는것이 정말 귀찮은 일 중 하나다.

# TEMP2 테이블 생성
CREATE TABLE TEMP2(
	KEYID INT,
    NUMBERING INT,
    NAMEING VARCHAR(50));
    
# TEMP1 컬럼들에 대한 값을 TEMP2에 INSERT
INSERT INTO TEMP2(
	SELECT KEYNUMBERING, NUMBER1, VARCHARS
    FROM TEMP1);
    
 SELECT * FROM TEMP2;

위의 코드처럼 INSERT할때 복사하려는 해당 테이블의 값을 조회한 뒤 INSER 해주면 끝입니다.

위의 코드를 입력한 뒤 조회해보면 위와 같습니다. 

여기서 응용을 조금 해본다면 

# TEMP3 테이블 생성
CREATE TABLE TEMP3(
	KEYID INT,
    NUMBERING INT,
    NAMEING VARCHAR(50));
    
# TEMP1의 조건에 해당하는 값을 INSERT
INSERT INTO TEMP3(
	SELECT KEYNUMBERING, NUMBER1, VARCHARS
    FROM TEMP1
    WHERE NUMBER1 BETWEEN 40 AND 60
    );   
    
SELECT * FROM TEMP3;

위의 사진과 코드처럼 조건에 해당하는 값만 새로운 테이블에 넣어줄 수 있습니다.


우선 오라클에서는 확인을 안해봤지만 MYSQL에서는 가능합니다.

어떻게 보면 이건 의미 없는 것 아니냐고 물어볼 수 있는데 

예를 들어서 품목 테이블, 사은품 테이블이 존재하는 상황이고

추가로 여름 시즌 품목 및 사은품 테이블을 생성해야 한다고 가정해봅시다.

사은품과 품목이 데이터가 100개 정도라면 괜찮겠지만 

대부분 기업에서는 100개만 있지 않고 더 많겠죠?

그렇기 때문에 INSERT 복사 붙여넣기로 하는 방법과 엑셀 변환하는 방법이 있겠지만 

INSERT 복사 붙여넣기를 하는 방법보단 

사은품과 품목 테이블을 JOIN 걸어서 필요한 값들만 한번에 INSERT 하는 것도 방법이 될수 있다는 것입니다.


이번 포스팅에서는 INSERT와 AUTO_INCREMENT에 대해서 다뤄봤습니다.

다음 포스팅에서는 더 유익한 정보로 찾아오겠습니다.

728x90