코딩하렴

DML Data Manipulation Language - INSERT,UPDATE, DELETE

by 으렴



INSERT

create table dept(
deptno varchar2(4) primary key,
deptname varchar2(30)
);
insert into dept values ('1000','HR');
insert into dept values ('1001','finance');
insert into dept values ('1002','Marketing');

테이블에 데이터를 입력하는 DML문이다.

데이터를 입력할 때 문자열을 입력하는 경우에는 홑따옴표('single quote')를 사용해야 한다.


insert into dept(deptno,deptname) values ('1000','HR');
insert into dept(deptno,deptname) values ('1001','finance');
insert into dept(deptno,deptname) values ('1002','Marketing');

원형은 위와 같다. 특정 테이블에 모든 칼럼에 삽입하는 경우에는 칼럼명을 처음과같이 생략할 수 있다.



INSERT의 주의사항은 INSERT문을 실행했다고 해서 데이터 파일에 저장되는 것이 아니다.

최종적으로 데이터를 저장하려면 Commit을 실행해야한다.

Auto Commit으로 설정된 경우에는 바로 저장된다.



SELECT문으로 입력하기

SELECT문을 사용해서 해당 테이블에 바로 삽입 할 수 있다. 사전에 입력되는 테이블은 생성되어 있는 상태여야 한다.

INSERT INTO DEPT_TEST SELECT * FROM DEPT;

DEPT테이블의 모든데이터를 조회해서 DEPT_TEST테이블에 삽입한다.



Nologging 사용하기

데이터베이스에 데이터를 입력하면 로그파일이 그 정보를 기록한다.

Check point라는 이벤트가 발생하면 로그파일의 데이터를 데이터 파일에 저장한다.

Nologging 옵션은 로그파일의 기록을 최소화 시켜서 입력시에 성능을 향상시키는 방법이다.

Nologging 옵션은 Buffer Cache라는 메모리 영역을 생략하고 기록한다.


ALTER TABLE DEPT NOLOGGING;






UPDATE

원하는 조건으로 검색해서 해당 데이터를 수정해야한다.
만약 UPDATE에 조건문을 입력하지 않으면 모든 데이터가 수정되므로 유의해야한다.

UPDATE DEPT SET ENAME='Marketing' WHERE EMPNO='1000';
주의사항은 데이터를 수정할 때 조건절이 나오는 행 수만큼 수정된다는 것이다.




DELETE

원하는 조건을 검색해서 해당하는 행을 삭제한다.
DELETE문에서 조건문을 입력하지 않으면 모든 데이터가 삭제된다.
DELETE문으로 데이터를 삭제한다고 해서 테이블의 용량이 초기화되지는 않는다.
DELETE FROM EMP WHERE EMPNO=100;


* 테이블 용량이 초기화되지 않는다?
ORACLE 데이터베이스는 저장공간을 할당할 때 Extent단위로 할당한다.
Extent는 테이블에 데이터가 입력되면 Extent에 저장하게 된다.
Extent의 크기가 MAX_EXTENTS를 넘어서게 되면 용량초과 오류가 발생한다 최대로 저장할 수 있는 공간의 의미
DELETE문으로 데이터를 삭제하면 데이터가 삭제되었으므로 용량이 감소할 것이라고 생각하는데 DELETE문은 삭제 여부만 표시하고 용량은 초기화하지 않는다.

DELETE FROM TABLENAME;
테이블의 모든 데이터를 삭제한다.
데이터가 삭제되어도 테이블의 용량은 감소하지 않는다.

TRUNCATE TABLE TABLENAME;
테이블의 모든 데이터를 삭제한다.
데이터가 삭제되면 테이블의 용량을 초기화한다.



사이트의 정보

코딩하렴

으렴

활동하기