04.DML(Data Manipulation Language)
by SANGGI JEON
DML (Data Manipulation Language)
- ADD new rows
- Modify existing rows
- Remove existing rows
1. INSERT
- 묵시적 방법
- 컬림 이름, 순서 지정하지 않음, 테이블 생성시 정의한 순서에 따라 값 지정
INSERT INTO author
VALUES (1, '박경리', '토지 작가');
INSERT INTO author
VALUES (1, default, '토지 작가');
- 명시적 방법
- 컬럼 이름 명시적 사용. 지정되지 않은 컬럼 NULL 자동 입력
INSERT INTO author (author_id, author_name)
VALUES (2, '이문열')
- Subquery 이용
- 타 테이블로부터 데이터 복사(테이블은 이미 존재하여야 함)
- CREATE TABLE AS SELECT는 없는 테이블을 생성하고 데이터 복사
INSERT INTO department_usa
SELECT department_id, department_name
FROM deptments
WHERE department_name='IT';
2. UPDATE
- 조건을 만족하는 레코드를 변경
UPDATE emp
SET sal = sal+100, comm=0
WHERE deptno=10;
- WHERE 절이 생략되면 모든 레코드에 적용
- 모든 직원의 월급 10%인상
UPDATE emp
SET sal = sal*1.1
- Subquery를 이용한 변경
- 담당업무가 ‘SCOTT’과 같은 사람들의 월급을 부서 최고액으로 변경
UPDATE emp
SET sal = (SELECT MAX(sal) FROM emp)
WHERE job=(SELECT job FROM emp WHERE ename='SCOTT');
3. DELETE
- 조건을 만족하는 레코드 삭제
- 이름이 ‘SCOTT인 사원 삭제’
DELETE FROM emp
WHERE ename = 'SCOTT';
- 조건이 없으면 모든 레코드 삭제
- 모든 직원 정보 삭제
DELETE FROM emp;
- Subquery를 이용한 DELETE
DELETE FROM emp
WHERE deptno = (SELECT deptno from dept
WHERE dname='SALES')
4. Rollback & COMMIT
- INSERT, UPDATE, DELETE 수행시 Rollback Segment에 저장된 상태이기 때문에 Rollback으로 되돌리거나 COMMIT으로 확정할 수 있음
5. 참고
- 데이터 입력, 수정시 자주 사용되는 Pseudo 컬럼
- User: Current user name
- SYSDATE: current date and time
- ROWID: Location information of rows
INSERT INTO emp(eno, hiredate)
VALUES (200, SYSDATE);
- DEFAULT: default 값이 정의된 컬럼에 기본 값을 입력할 경우 사용할 수 있음
INSERT INTO book VALUES (200, 'Gems', DEFAULT)
- DELETE와 TRUNCATE의 차이점
- Delete는 Rollback 가능 but 대량의 log 등을 유발하므로 TRUNCATE보다 느림
- 모든 DML문은 Integrity Constraint를 어길 경우 에러 발생
Subscribe via RSS