지난번 MSSQL에서 INSERT 문의 사용법을 다뤄보았습니다. 이번에는 심화과정으로 원하는 데이터를 SELECT(조회) 한 후 그 결과를 현재 테이블에 INSERT(삽입) 하는 방법에 대하여 알아보도록 하겠습니다.
● MSSQL INSERT 문의 기본 문법에 대하여 궁금하신 분들께서는 아래 링크를 참조해주세요.
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 도움될 글
참조하면 좋은 링크
'DataBase > MSSQL' 카테고리의 다른 글
[MSSQL] DELETE(삭제) 문 사용법 및 예제 (0) | 2024.04.16 |
---|---|
MSSQL UPDATE 사용법 및 예제 (0) | 2024.02.29 |
[MSSQL] INSERT 문 사용법 및 예제 (+ 여러개 레코드 추가) (0) | 2023.11.13 |
[MSSQL] SELECT 문 사용법 및 예제 (0) | 2023.11.02 |
MSSQL TOP 사용법 (행의 수를 지정하여 출력) (0) | 2023.06.30 |
댓글