본문 바로가기

카테고리 없음

[DB공부] 9. DML - 미완성

1. insert

암시적(열 리스트에서 열을 생략)

INSERT INTO departments (department_id, department_name) VALUES (30, 'Purchasing');

명시적(values절에서 null키워드를 지정)

INSERT INTO departments VALUES (100, 'Finance', NULL, NULL)


특정 날짜 및 시간 값 삽입

INSERT INTO employees 

VALUES      (114, 'Den', 'Raphealy', 'DRAPHEAL', '515.127.4561', 

                 TO_DATE('FEB 3, 1999', 'MON DD, YYYY'), 'SA_REP', 11000, 0.2, 100, 60);


다른 테이블에서 행 복사

insert into sales_reps(id, name, salary, commission_pct)

select employee_id, last_name, salary, commission_pct

from employees

where job_id like '%REP%';

**values절을 사용하지 않는다.

insert 절의 열 개수와 subquery의 열 개수를 일치시킨다.


테이블의 데이터 변경 : update
update cafedept
set deptno = 30 
where deptno = 20;


다른 테이블을 기반으로 행 갱신

UPDATE copy_emp 

SET department_id = (SELECT department_id 

                             FROM employees 

                             WHERE employee_id = 100) 

WHERE job_id = (SELECT job_id 

                       FROM employees 

                       WHERE employee_id = 200);


테이블의 행 삭제

- 특정행 삭제

DELETE FROM departments WHERE department_name = 'Finance';

- where절을 생략하면 테이블의 모든 행이 삭제된다.

DELETE FROM copy_emp;


truncate문

테이블은 빈 상태로, 테이블 구조는 그대로 남겨둔 채 테이블에서 모든 행을 제거한다.

TRUNCATE TABLE copy_emp;

테이블이 참조 무결성 제약 조건의 상위 요소인 경우 해당 테이블을 truncate할 수 없습니다. TRUNCATE 문을 실행하기 전에 제약 조건을 비활성화해야 합니다.


ROLLBACK 또는 COMMIT를 실행하는 경우에만 Lock이 해제됩니다.