[Oracle] 오라클 #12, insert 삽입구문(특이한 insert 구문)
- Database/Oracle
- 2019. 2. 25. 23:22
Insert문
- DML(insert, update, delete)
- insert into 테이블명(컬럼리스트) values(값리스트);
create table tblMemo(
seq number primary key,
name varchar2(30) not null,
memo varchar2(1000) not null,
regdate date default sysdate not null,
etc varchar2(500) default '비고없음' null,
page number null
);
create sequence memoSeq; --메모테이블의 시퀀스 객체 생성한다.
select * from tblMemo;
insert 문 여러가지 사용 패턴
1. 표준 : 원본테이블에 정의된 컬럼 순서대로 컬럼리스트와 값리스트를 표기하는 방법.
insert into tblMemo(seq,name,memo,regdate,etc,page) values(memoSeq.nextval,'홍길동','집에가고싶다....우우우',sysdate,'비고',1);
2. null 제약을 가진 커럼값 입력하기(=특정컬럼에 null을 대입하기)
insert into tblMemo(seq,name,memo,regdate,etc) values(memoSeq.nextval,'홍길동','집에가고싶다....우우우',sysdate,'비고'); --> null을 넣고싶은 컬럼을 아예 제거
insert into tblMemo(seq,name,memo,regdate,etc,page) values(memoSeq.nextval,'홍길동','집에가고싶다....우우우',sysdate,'비고',null); --> null상수 대입하기
3. default 제약 사용하기
--default 제약이 걸린 컬럼에 null을 넣었더니 default 값이 대신 대입된다.
insert into tblMemo(seq,name,memo,regdate,page) values(memoSeq.nextval,'홍길동','집에가고싶다....우우우',sysdate,1); --> 생략을 사용해서 null대입
insert into tblMemo(seq,name,memo,etc,regdate,page) values(memoSeq.nextval,'홍길동','집에가고싶다....우우우',null,sysdate,1); --> 직접 null 대입 : default동작 X
4. 생략을 통해서 null 대입(디폴트 + 낫널 = 생략에 의한 표현을 사용할 수 있다.)
insert into tblMemo(seq,name,memo,etc,page) values(memoSeq.nextval,'홍길동','집에가고싶다....우우우','비고',1);
5. 직접 null대입 : not null 조건때문에 안됨
insert into tblMemo(seq,name,memo,regdate,etc,page) values(memoSeq.nextval,'홍길동','집에가고싶다....우우우',null,'비고',1);
6. 컬럼리스트 생략(선언할 당시의 컬럼 순서를 참조한다. -> 반드시 값 리스트가 원본 테이블의 컬럼순서와 동일해야한다.)
insert into tblMemo
values(memoSeq.nextval,'홍길동','집에가고싶다....우우우',sysdate,'비고',1);
insert into tblMemo
values(memoSeq.nextval,'홍길동','집에가고싶다....우우우',default,'비고',1);
insert into tblMemo
values(memoSeq.nextval,'홍길동','집에가고싶다....우우우',default,null,1);
insert into tblMemo
values(memoSeq.nextval,'홍길동','집에가고싶다....우우우',default,default,null);
---------------------------------------일반적인 insert ----------------------------------------------
-----------------------------------일반적이지 않은 insert 구문 -------------------------------------------
create table tblMemoCopy(
seq number primary key,
name varchar2(30) not null,
memo varchar2(1000) not null,
regdate date default sysdate not null,
etc varchar2(500) default '비고없음' null,
page number null
);
1. tblMemo -> (복사) -> tblMemoCopy
1) insert into tblMemoCopy
select * from tblMemo; --> insert + 서브쿼리
2) insert into tblMemoCopy
select * from tblMemo where mod(seq,2)=0;
--영업부 직원만의 테이블
insert into 영업부
select * from tblinsa where buseo='영업부';
create table 영업부 --(***************)
as
select * from tblinsa where buseo='영업부'; ->> 이런구문이 허용이 된다는 것. 근데 좋은 사용법이 아님.
select * from 영업부;
--insert + select
-- : 테이블 별도제작(제약사항추가)
-- : 순수한 데이터만 복사
-- : 업무용 O, 개발자 테스트용 O
--create table + select
-- : 테이블 자동생성 + 데이터 복사
-- : 원본테이블의 제약사항은 복사가 안됨.(컬럼명 + 자료형)
-- : 업무용 X, 개발자 테스트용 O
'Database > Oracle' 카테고리의 다른 글
[Oracle] 오라클 #14, group by, having 절(그룹) (0) | 2019.03.03 |
---|---|
[Oracle] 오라클 #13, update, delete문과 rollback (2) | 2019.02.27 |
[Oracle] 오라클 #11, 시퀀스(Sequence) (0) | 2019.02.23 |
[Oracle] 오라클 #10, DDL, DML (0) | 2019.02.21 |
[Oracle] 오라클 #9, Casting, 형변환함수 (0) | 2019.02.20 |