본문 바로가기

프로그래밍/MSSQL

[MSSQL] INSERT (데이터 삽입), SELECT INTO (테이블 복사), INSERT INTO SELECT (데이터 복사)

반응형

 

 

 

 

 

INSERT

테이블에 데이터 삽입한다.

 

INSERT INTO 테이블명(칼럼1,칼럼2,칼럼3,...) VALUES(데이터1,데이터2,데이터3,...)

 

INSERT INTO table_ggmouse(name, age) VALUES('bella', 30)
INSERT INTO table_ggmouse(name, age) VALUES('zzong', 25)
INSERT INTO table_ggmouse(name, age) VALUES('sohee', 28)

SELECT * FROM table_ggmouse

 

결과 데이터

 

 

 

 

 

 

INSERT INTO SELECT

테이블의 데이터를 대상 테이블에 복사한다.

 

위에서 설명한 단순 INSERT문은 데이터를 한줄씩 넣는 방식이다.

 

만일 다른 테이블의 있는 다량의 데이터를 가져와서 한 번에 삽입하고 싶다면, INSER INTO SELECT문을 이용해보자.

 

INSERT INTO 대상테이블명 (컬럼명)
SELECT 컬럼명 FROM 원본테이블명
WHERE 조건

 

 

INSERT INTO table_age (age)
SELECT age FROM table_ggmouse

SELECT * FROM table_age

 

결과 데이터

 

 

 

다른 서버의 DB로 데이터를 복사

 

INSERT INTO [서버주소].대상테이블명 (컬럼명)
SELECT 컬럼명 FROM 원본테이블명
WHERE 조건

 

 

여기서 주의할점은 다른 서버의 DB로 데이터를 복사할 때, 트랜잭션은 걸 수 없다.

 

BEGIN TRAN
INSERT INTO [서버주소].대상테이블명 (컬럼명)
SELECT 컬럼명
FROM 원본테이블명
WHERE 조건

COMMIT TRAN

메시지7391, 수준16, 상태2, 줄2

연결된서버"xxx.xxx.xxx.xx"의OLE DB 공급자"SQLNCLI10"이(가) 분산트랜잭션을시작할수없으므로요청한작업을수행할수없습니다.

 

 

 

 

SELECT INTO

데이터를 포함한 테이블을 복사한다.

 

즉, 동일한 테이블이 생성된다.

 

SELECT 컬럼명 INTO 생성할테이블명
FROM 원본테이블명
WHERE 조건

 

 

SELECT * INTO ggmouse
FROM table_ggmouse

SELECT * FROM ggmouse

 

결과 데이터

 

TIP
 
 

데이터를 제외한 테이블의 구조만 동일한 테이블을 만들고 싶다면 조건을 추가하여 조회되는 데이터가 없도록하면 된다. 예) WHERE 1=2

 

 

 

 

 

반응형