강의 컨설팅 트레이닝 무료진단 무료책자 마케팅편지 마케팅정보공유 다이어리 서비스제휴 고객센터

:: SELECT INTO 와 INSERT INTO ::
작성자 : 13 김영철
등록날짜 : 2009.01.24 23:08
2,575

가끔은 SELECT 한 결과를 임시 테이블에 저장하고 싶은 경우가 있습니다. 예를 들어 UPDATE 작업을 한 테이블에 대해서 하려고 하는데 만일의 경우에 대비해서 현재의 내용을 다른 테이블로 잠시 복사해 두고 싶은 경우가 있습니다. SELECT INTO는 이러한 욕구를 만족시켜주는 방법입니다. SELECT INTO를 사용하면 CREATE TABLE 과 같이 테이블을 만드는 과정도 없이 SELECT의 결과를 갖는 테이블을 만들 수 있습니다. 참으로 편리한 기능입니다.

이와 비슷한 기능을 구현 할 수 있는 것이 INSERT INTO 인데, SELECT INTO와는 달리 이미 존재하는 테이블에 SELECT 한 결과를 삽입하게 됩니다.

1. SELECT INTO

만일 Pubs 데이터베이스의 Titles 테이블의 내용을 Titles2 테이블로 복사한다고 가정을 하겠습니다. 우선 Titles 테이블의 전체 내용을 검색하는 쿼리문은 다음과 같습니다.

USE pubs

SELECT * FROM Titles

이렇게 해서 검색된 결과를 Titles2 테이블에 복사를 하고자 한다면 다음과 같이 하면 됩니다.

USE pubs

SELECT * INTO Titles2 FROM Titles

이렇게 하면 Titles2 테이블이 만들어 지면서 SELECT 한 결과가 전부 삽입 됩니다. 이미 만들어진 테이블에 결과를 삽입하는게 아니고 존재하지 않는 테이블을 만들고 거기에 결과가 삽입된다는 사실을 기억하시기 바랍니다.

만일 위 결과로 Titles2 테이블이 만들어진 상황에서 다시 다음과 같이 동일한 작업을 수행하면 어떻게 될까요?

USE pubs

SELECT * INTO Titles2 FROM Titles

다음과 같은 오류가 발생합니다.

서버: 메시지 2714, 수준 16, 상태 6, 줄 1
데이터베이스에 'titles2'(이)라는 개체가 이미 있습니다.

[예제1]

USE pubs

SELECT p.pub_id, p.pub_name, a.* INTO #tbl1
FROM publishers p INNER JOIN authors a
ON p.city = a.city
ORDER BY a.au_lname ASC, a.au_fname ASC

o 검색 결과를 #tbl1 이라는 임시 테이블로 저장합니다.
o #tbl1과 같이 앞에 '#' 이 붙은 테이블은 임시 테이블로서 해당 세션이 끊어지면 자동으로 제거되는 테이블입니다.

2. INSERT INTO

만일 Titles 테이블의 모든 내용을 Titles3 테이블로 복사하기 위해 INSERT INTO를 사용한다고 가정을 하겠습니다. 그럼 다음과 같은 쿼리문을 수행하게 됩니다.

USE pubs

INSERT INTO Titles3 SELECT * FROM Titles

"SELECT * FROM Titles" 의 수행 결과를 그대로 Titles3 테이블에 복사하려고 한 것인데 다음과 같은 오류가 발생하게 됩니다.

서버: 메시지 208, 수준 16, 상태 1, 줄 1
개체 이름 'titles3'이(가) 잘못되었습니다.

INSERT INTO 는 이미 존재하는 테이블에 행을 추가하는 기능이므로 Titles3 테이블이 없는 상황에서 INSERT INTO를 수행 했으므로 오류가 발생하는 것입니다. SELECT INTO 에 의해서 만들어진 TItles2 테이블은 이미 존재하고 있으므로 다음의 쿼리문은 오류가 나지 않습니다.

USE pubs

INSERT INTO Titles2 SELECT * FROM Titles

[예제2]

USE pubs

INSERT INTO Titles SELECT * FROM Titles

o TItles 테이블의 검색 결과를 다시 Titles 테이블에 추가하게 됩니다.
o 물론 위 쿼리문은 Titles 테이블에 설정된 PRIMARY KEY 제약 조건에 따라 삽입은 이루어지지 않고 오류가 발생합니다.
o 이 방법은 테스트를 위해 테이블의 행의 수를 무작정 늘려나갈 때 유용하게 사용 할 수 있습니다.

3. 정리

SELECT INTO와 INSERT INTO는 단순한 기능이지만 실제 업무에서 많이 사용 됩니다. 그러므로 사용 방법을 잘 익혀 두시면 많은 도움을 받을 수 있습니다.

좀더 자세한 사항은 온라인 설명서를 참고하여 주시기 바랍니다.

----------------------------------------------------------------------------------------

출처 : http://www.sqlworld.pe.kr

 

"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기,
각종 광고, 영업, 판매, 제안서, 전단지
반응율 3배×10배 이상 높이는 마법의 8단계 공식"
자세히보기

Comments

번호 제목 글쓴이 날짜 조회
2715 MySQL 에서 사용되는 sql문 정리 M 최고의하루 12.19 2743
2714 [ MySQL ] MySQL 기본적으로 익혀야할 과제 M 최고의하루 12.18 2501
2713 [ MySQL ] MySql4.x / PHP4.x / Apache 한글깨짐 M 최고의하루 12.18 3257
2712 [ MySQL ] MySQL 5 한글 UTF8 한글 깨짐 분석 (Windows 용) M 최고의하루 12.04 5731
2711 MySQL 명령어 정리 M 최고의하루 12.04 2388
2710 MSSQL 페이징 13 김영철 01.24 2487
2709 mssql 암호화 13 김영철 01.24 2487
2708 mysql과 mssql의 변환시 유의사항 13 김영철 01.24 2673
2707 mssql 백업방법 13 김영철 01.24 2773
2706 데이터 정보 확인방법 13 김영철 01.24 2355
2705 MS-SQL JDBC "ResultSet Can Not Re-Read Row Data" 예외 처리 방법 13 김영철 01.24 3283
2704 IDENTITY 속성 13 김영철 01.24 2160
2703 Jsp + Mssql Long타입 데이타 사용시 문제점 13 김영철 01.24 2764
2702 PWDENCRYPT와 PWDCOMPARE를 통해 암호화 기능 13 김영철 01.24 3471
2701 MSSQL 기본값 13 김영철 01.24 3037
2700 :: 데이터베이스의 종류 :: 13 김영철 01.24 2350
2699 :: 데이터베이스의 객체 :: 13 김영철 01.24 2635
2698 :: Transact-SQL 이란 :: 13 김영철 01.24 2886
2697 :: 단순 SELECT 문 :: 13 김영철 01.24 2368
2696 :: WHERE 절 :: 13 김영철 01.24 2803
2695 :: ORDER BY, GROUP BY :: 13 김영철 01.24 2479
2694 :: 조인(Join) 이란? :: 13 김영철 01.24 2182
2693 :: 조인(Join)의 사용 예 :: 13 김영철 01.24 2343
열람중 :: SELECT INTO 와 INSERT INTO :: 13 김영철 01.24 2576
2691 :: 데이터베이스의 구조 :: 13 김영철 01.24 2307
2690 :: 데이터베이스 생성 :: 13 김영철 01.24 2112
2689 :: 데이터 무결성 :: [출처] :: 데이터 무결성 :: (쇼핑몰 대박못내는 진짜이유!) |작성자 프런티어 13 김영철 01.24 3177
2688 :: 인덱스(Index) :: 13 김영철 01.24 2091
2687 :: 뷰(View) :: 13 김영철 01.24 2817
2686 :: 저장프로시저 (Stored Procedure) :: 13 김영철 01.24 2784
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취