본문 바로가기
DataBase/MSSQL

[MSSQL] INSERT INTO SELECT 문 (조회된 결과를 삽입)

by 코딩이라구 2023. 11. 14.

지난번 MSSQL에서 INSERT 문의 사용법을 다뤄보았습니다. 이번에는 심화과정으로 원하는 데이터를 SELECT(조회) 한 후 그 결과를 현재 테이블에 INSERT(삽입) 하는 방법에 대하여 알아보도록 하겠습니다.

 

● MSSQL INSERT 문의 기본 문법에 대하여 궁금하신 분들께서는 아래 링크를 참조해주세요.

 

[MSSQL] INSERT 문 사용법 및 예제 (+ 여러개 레코드 추가)

지난 시간에는 MSSQL SELECT 문을 통한 데이터 조회하는 방법에 대하여 알아보았고, 이번 시간에는 MSSQL에 데이터를 삽입(추가) 하기 위한 INSERT 문의 사용법을 알아보고 간단한 예제도 다뤄보도록

chragu.com


MSSQL INSERT INTO SELECT 문

 

1. INSERT INTO SELECT 문 기본 문법

MSSQL에서 다른 혹은 같은 테이블에서 데이터를 조회(SELECT) 한 결과를 원하는 테이블에 INSERT 하는 경우 사용되는 문법이 INSERT INTO SELECT 쿼리문입니다.

INSERT INTO [삽입할 테이블명] ([컬럼명1], [컬럼명2], ..., [컬럼명n])
SELECT [컬럼명1], [컬럼명2], ..., [컬럼명n]
  FROM [조회할 테이블명]
 WHERE [조건절];

여기서 중요한 점은 INSERT 할 컬럼의 개수와 SELECT 된 컬럼의 개수가 동일해야 하며, 매칭되는 컬럼의 데이터 형태 역시 같아야합니다.


2. INSERT INTO SELECT 문 예제

테이블 명시

● 테이블명 'Club'

● 컬럼명 상세
1. Name(이름) varchar(10) NOT NULL
2. Age(나이) int NOT NULL
3. Gender(성별) varchar(10) NOT NULL DEFAULT 'M'
4. City(도시) varchar(20) NOT NULL DEFAULT '서울'

기존 테이블 데이터

순번 / 컬럼명 Name Age Gender City
1 소선기 54 M 강릉
2 윤영미 54 W 파주
3 이광우 40 M 안산
4 이성현 42 M 대구

예제

-- INSERT INTO SELECT 쿼리문

-- ● 같은 테이블에서 이름이 나이가 54살인 사람의 레코드를 조회하여 복사
-- 2명의 나이가 54살이므로 2개의 레코드가 추가됩니다.
-- (컬럼개수 및 데이터형태가 같으므로 컬럼명 생략 가능)
INSERT INTO Club
SELECT *
  FROM Club
 WHERE Age = 54;

-- ● 이름이 '소선기'이고 나이가 54살인 사람을 찾아서 이름 및 나이를 바꿔서 등록
-- 바꿔서 등록할 이름은 '소성철'이며, 나이는 34살입니다.
-- ( 성별은 기본값으로 추가되며, 도시만 조회된 값에서 삽입합니다. )
INSERT INTO Club ( Name, Age, City )
SELECT '소성철', 34, City
  FROM Club
 WHERE Name = '소선기'
   AND Age = 54;

결과 테이블 데이터 (순번 5~7이 새롭게 추가된 레코드)

순번 / 컬럼명 Name Age Gender City
1 소선기 54 M 강릉
2 윤영미 54 W 파주
3 이광우 40 M 안산
4 이성현 42 M 대구
5 소선기 54 M 강릉
6 윤영미 54 W 파주
7 소성철 34 M 강릉

 

이번시간에는 MSSQL에서 조회된 레코드를 토대로 동일하거나 참조하여 데이터를 등록하는 INSERT INTO SELECT 문에 대하여 알아보았으며, 조회된 레코드 개수에 따라 단일 또는 여러개(다수)의 레코드가 추가될 수 있다는 점도 알게 되었습니다. 감사합니다.


MSSQL 도움될 글

 

[MSSQL] SELECT 문 사용법 및 예제

MSSQL에서 테이블의 존재하는 데이터를 조회(검색)를 하기 위해서는 SELECT 명령어를 사용해야 합니다. 이번에는 기본적인 MSSQL SELECT 문의 사용법에 대하여 알아보고 간단한 예제도 다뤄보도록 하

chragu.com

 

MSSQL TOP 사용법 (행의 수를 지정하여 출력)

이번에는 MSSQL에서 SELECT 문 사용 시 테이블의 레코드를 조회할 때 원하는 행의 수만큼 지정하여 화면에 출력하기 위한 구문에 대하여 알아보도록 하겠습니다. MySQL에서는 LIMIT 구문으로 사용되는

chragu.com

 

[MSSQL] 문자열 원하는 영역 자르기 (SUBSTRING, LEFT, RIGHT)

MSSQL 데이터베이스의 검색 방법에서 문자열을 원하는 길이(영역)의 문자열만큼 잘라서 조회해야 할 경우가 있습니다. 이번에는 MSSQL에서 문자열 자르기의 3가지 종류인 SUBSTRING, LEFT, RIGHT 함수에

chragu.com


참조하면 좋은 링크

https://woogie-db.tistory.com/66

댓글