오라클에서 SELECT INSERT를 수행하는 방법은
동일한 테이블, 컬럼일 경우
혹은 테이블과 컬럼이 다를 경우
두 가지의 경우가 있는데
먼저 테이블이나 컬럼이 같을 경우에는
INSERT INTO 테이블명
SELECT 컬럼명
FROM 테이블명
이런 식으로 사용한다
여기서 테이블명 뒤에 컬럼을
지정해주지 않을 경우에는
INSERT 하려는 테이블의
모든 컬럼을 작성해주어야 한다
특정 컬럼에만 INSERT 하려면
INSERT INTO 테이블명(컬럼명)
SELECT 컬럼명
FROM 테이블명
과 같이 컬럼을 지정해줘야 한다
여기서 테이블과 컬럼이 다를 경우에는
스크린샷 위의 방법처럼 맞추기 힘들기 때문에
아래 방법으로 진행하게 된다
다음으로는 SELECT INSERT 시
시퀀스(Sequence)를 섞는 경우인데
시퀀스 대신
MAX+1을 사용하는 경우도 있지만
시퀀스가 훨씬 편하고 나아서
시퀀스를 쓰는게 낫다
시퀀스 개념은 아래 글을 참조해주면 되고
테스트로 간단히 확인해보려면
아래 내용을 복사한 뒤 실행해주면
1에서 9999까지 올라가는 시퀀스가 생성된다
CREATE SEQUENCE SEQ
INCREMENT BY 1
START WITH 1
MINVALUE 0
MAXVALUE 9999
NOCYCLE
NOCACHE
시퀀스를 생성한 다음
시퀀스명.NEXTVAL을 사용하면
사용할 때마다 값이
INCREMENT BY의 값에 따라 올라가게 되는데
위 예제로는 1씩 자동증가 된다는 말이다
INSERT INTO 테이블
SELECT 시퀀스명.NEXTVAL, 컬럼
FROM 테이블
을 사용해주면
SELECT 후 INSERT되는 값들이
시퀀스의 값을 가지고 삽입된다는 얘기다
'SQL > Oracle' 카테고리의 다른 글
오라클 PK 조회 추가 삭제 변경방법 정리 (0) | 2020.06.04 |
---|---|
오라클 SELECT UPDATE 동시에 하는 방법 정리 (0) | 2020.06.03 |
오라클 WHERE절 ANY SOME ALL 사용방법 및 예제 (0) | 2020.05.20 |
오라클 NULL 개념 및 사용방법 정리 (0) | 2020.05.20 |
오라클 테이블 컬럼 디폴트 설정 변경 삭제방법 (0) | 2020.05.19 |
댓글