이번 포스팅에서는 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에 대해서 다뤄봤습니다.
다음 포스팅에서는 더 유익한 정보로 찾아오겠습니다.
'DB > SQL' 카테고리의 다른 글
[세무민의 코딩일기] SQL 내장함수에 대해서 알아보자 1탄!(길이, 진법변환, 문자열 반환 등) (0) | 2021.07.27 |
---|---|
[세무민의 코딩일기] DATE -> INT 변환과 쿼리에서 SET으로 날짜 변수 선언하기(형 변환) (0) | 2021.07.26 |
[세무민의 코딩일기] 쿼리 with rollup 으로 중간 합계 구하는 방법! (0) | 2021.07.24 |
[세무민의 코딩일기] 쉬우면서 어려운 집계함수에 대해서 알아보자! (0) | 2021.07.22 |
CRUD와 다양한 SELECT 검색조건에 대해서 자세하게 알아봅시다![DISTINCT, LIKE, IN, BETWEEN 등] (0) | 2021.07.21 |