INSERT문/UPDATE문/DELETE문 (DML)
insert
- DML(insert, update,delete)
- insert into 테이블명 (컬럼리스트) values (값 리스트);
//insert문 사용할 떄 여러가지 패턴
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
);
표준 : 원본 테이블의 정의된 컬럼 순서대로 컬럼리스트와 값리스트를 표기하는 방법
insert into tblMemo (seq, name, memo, regdate, etc, page)
values (memoSeq.nextval, '홍길동', '메모입니다.', sysdate, '비고', 1);
cf) 반드시 컬럼리스트의 순서와 값리스트의 순서는 동일해야 한다.
insert into tblMemo (name, memo, regdate, etc, page, seq)
values (memoSeq.nextval, '홍길동', '메모입니다.', sysdate, '비고', 1);
cf) insert 문을 작성할 때 원본 테이블의 컬럼리스트 순서와는 상관없다.
insert into tblMemo (name, memo, regdate, etc, page, seq)
values ('홍길동', '메모입니다.', sysdate, '비고', 1, memoSeq.nextval);
cf) null 제약을 가진 컬럼값 입력하기(= 특정 컬럼에 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);
cf)default 제약 사용하기
1) default 제약이 걸린 컬럼에 null을 넣었더니 default값이 대신 대입된다.
insert into tblMemo(seq,name,memo,regdate,page)
values (memoSeq.nextval,'홍길동','메모입니다',sysdate,1); -생략을 사용해서 null 대입
2) null 상수를 직접 넣은 경우에는 default 제약이 동작하지 않는다.
insert into tblMemo(seq,name,memo,regdate,etc,page)
values (memoSeq.nextval,'홍길동','메모입니다',sysdate,null,1); --null 상수를 사용해서 null 대입
3) default 제약 + not null 제약이 동시에 걸린 컬럼은 생략한 표현을 사용할 수 있다.
insert into tblMemo(seq,name,memo,etc,page)
values (memoSeq.nextval,'홍길동','메모입니다','비고',1);
cf) 컬럼 리스트 생략
1) insert into tblMemo values (memoSeq.nextval, '홍길동', '메모입니다.', sysdate, '비고', 1);
2) 컬럼 리스트 생략은 테이블을 선언할 당시의 컬럼 순서를 참조한다. -> 반드시 값 리스트가 원본 테이블의 컬럼 순서와 동일
insert into tblMemo values ('홍길동', '메모입니다.', sysdate, '비고', 1,memoSeq.nextval);
** insert + select
- 테이블 별도 제작(제약 사항 추가)
- 순수한 데이터만 복사
- 업무용 O + 개발자 테스트용 O
**create table + select
- 테이블 자동 생성 + 데이터 복사
- 원본 테이블의 제약 사항은 복사가 안된다.(컬럼명 + 자료형)
- 업무용 X + 개발자 테스트용 O
---------------------------------------------------------------------------------------------
update
- DML(insert, update,delete)
- 원하는 행의 원하는 데이터를 수정하는 명령어
- update 테이블명 set 컬럼명 = 수정할값 [컬럼명 = 수정할값] x N[where절]
- where 절 : 수정하고 싶은 레코드 지정
update name set gender ='f' where name='유재석';
ex)홍길동 : 부장 -> 이사[진급]
- 수정할 대상이 유일한 행(1개) -> 식별 -> PK -> num 컬럼 -> num 컬럼을 조건으로
update insa set jikwi = '이사' where name = '홍길동';
ex)다중행(그룹) 업데이트
- 모든 기획부 직원의 급여 10%인상
update insa set basicpay = basicpay *1.1 where buseo ='기획부';
ex) 모든행 업데이트
update insa set basicpay = basicpay *1.1
----------------------------------------------------------------------------------------------------
delete
- DML(insert, update,delete)
- (행) 데이터를 삭제하는 명령어
- 일부 컬럼값만 삭제 불가능 > update(null)
- delete [from] 테이블명 [where절]
delete from insa where city ='서울';
delete from insa where city <>'경기';
delete from insa where num =1002;
delete from insa;