2014/08/12 - [DB/MySQL] - MySQL SELECT 쿼리로 한꺼번에 다른 테이블에 INSERT 하기 (INSERT ... SELECT ... FROM ...)
이번 포스팅은 MS-SQL에서 INSERT SELECT문과 SELECT INTO FROM문을 이용하여 데이터를
일괄로 삽입 해보고자 한다.
1. INSERT SELECT
- temp_table (기존에 쌓여있는 데이터가 들어있는 테이블)
CREATE TABLE temp_table( id varchar(20), title varchar(20), flag varchar(1) )
- test_table (temp_table 의 데이터를 insert하기위한 테이블)
CREATE TABLE test_table ( id varchar(20), title varchar(20) )
- temp_table에 임의의 데이터를 INSERT
insert into temp_table(id,title,flag) values('1','제목1','Y'); insert into temp_table(id,title,flag) values('2','제목2','N'); insert into temp_table(id,title,flag) values('3','제목3','Y'); insert into temp_table(id,title,flag) values('4','제목4','Y'); insert into temp_table(id,title,flag) values('5','제목5','N'); insert into temp_table(id,title,flag) values('6','제목6','Y'); insert into temp_table(id,title,flag) values('7','제목7','Y'); insert into temp_table(id,title,flag) values('8','제목8','N'); insert into temp_table(id,title,flag) values('9','제목9','Y');
이제부터 temp_table -> test_table에 id값과 title값만을 insert하고자 한다.
조건으로 flag 값이 'Y' 인 데이터만을 INSERT 하도록 하겠음
- INSERT ... SELECT ... FROM .. 실행
(조건 사용여부는 상황에 따라 넣어주면 되겠다)
INSERT test_table(id,title) SELECT id,title FROM temp_table WHERE flag = 'Y'
- 실행결과
정상적으로 test_table에 flag값이 Y인 데이터가 일괄로 들어같 것을 확인 할 수 있었다.
※ 기존 테이블과 신규 테이블구조가 동일하면 하단처럼 INSERT SELECT 가능
INSERT test_table SELECT * FROM temp_table
2. SELECT INTO FROM
이번 방법은 TABLE COPY 및 CREATE VIEW와 비슷한 개념인듯..
사용법
SELECT [컬럼 1] , [컬럼 2] INTO [신규 생성할 테이블명] FROM [기존 테이블명]
위와 같은 구조이다.
예를 들어 다음쿼리를 실행시켜 보도록 하자
SELECT * INTO into_table FROM temp_table
temp_table의 데이터를 into_table을 생성하여 모든 데이터를 insert 하겠다 라는 것과 같은 내용이다.
- 실행결과
확인결과 기존 temp_table의 테이블구조 + 데이터가 동일하게 into_table로 생성 및 insert 되었다.
※ INSERT ... SELECT VS SELECT .. INTO .. FROM 차이점
- INSERT SELECT : INSERT할 테이블 및 SELECT 할 테이블이 모두 존재
- SELECT INTO : SELECT 테이블이 존재하고 INSERT 테이블이 존재하지 않을경우
도움이 되셨다면 공감클릭! 궁금하신점은 댓글!!
MS-SQL - 널체크(ISNULL 사용하기) (0) | 2014.08.23 |
---|---|
MS-SQL 2005 이상 row_number() over(order by 정렬조건) 을 이용하여 페이징쿼리를 동작시켜보자 (0) | 2014.08.15 |
MS-SQL 계층형 트리구조 쿼리 (재귀호출) - with ...(col 1, col 2 ...,col n) as ... union . (2) | 2014.08.12 |
MS-SQL 시퀀스 identity 생성 및 초기화하기 (0) | 2014.08.11 |