데이터 조작 언어. 테이블에 값을 삽입하거나 수정하거나 삭제하거나 조회하는 언어
1) 표현식
INSERT
INTO EMPLOYEE
(
EMP_ID, EMP_NAME, DEPT_CODE
)
VALUES
(
'900', '장채현', 'D1'
);
-- INSERT시 서브쿼리 이용
INSERT
INTO EMP_01
(
EMP_ID,
EMP_NAME,
DEPT_TITLE
)
(
SELECT
EMP_ID
, EMP_NAME
, DEPT_TITLE
FROM EMPLOYEE
LEFT JOIN DEPARTMENT(DEPT_CODE = DEPT_ID)
);
INSERT ALL
-- WHERE절에서 구조만 복사하고 데이터는 복사하고 싶지 않을 경우 FALSE인 경우를 만들어 쓴다.
-- EMP_DEPT_01 테이블에서 부서 코드 D1인 직원 조회 후
-- 사번, 이름, 소속 부서, 입사일을 삽입하고
-- EMP_MANAGER 테이블에서 부서코드가 D1인 직원을 조회해서
-- 사번, 이름, 관리자 사번을 삽입한다.
CREATE TABLE EMP_DEPT_D1
AS
SELECT
EMP_ID
, EMP_NAME
, DEPT_CODE
, HIRE_DATE
FROM EMPLOYEE
WHERE 1 = 0;
INSERT ALL
INTO EMP_DEPT_D2
VALUES
(
EMP_ID
, EMP_NAME
, DEPT_CODE
, HIRE_DATE
)
INTO EMP_MANAGER
VALUES
(
EMP_ID
, EMP_NAME
, MANAGER_ID
)
SELECT
EMP_ID
, EMP_NAME
, DEPT_CODE
, HIRE_DATE
, MANAGER_ID
FROM EMPLOYEE
WHERE DEPT_CODE = 'D1';
-- 입사일 기준으로 2000/01/01 전에 입사한 사원의
-- 사번, 이름, 입사일, 급여를 조회하여 EMP_OLD 테이블에 삽입하고
-- 그 후에 입사한 사원은 EMP_NEW 테이블에 삽입
INSERT ALL
WHEN HIRE_DATE < '2000/01/01'
THEN
INTO EMP_OLD
VALUES
(
EMP_ID
, EMP_NAME
, HIRE_DATE
, SALARY
)
WHEN HIRE_DATE >= '2000/01/01'
THEN
INTO EMP_NEW
VALUES
(
EMP_ID
, EMP_NAME
, HIRE_DATE
, SALARY
)
SELECT
EMP_ID
, EMP_NAME
, HIRE_DATE
, SALARY
FROM EMPLOYEE;
1) 표현식
-- 방명수 사원의 월급과 보너스를
-- 유재석 사원과 동일하게 수정
UPDATE
EMPLOYEE
SET (SALARY, BONUS) = (SELECT
SALARY
, BONUS
FROM EMPLOYEE
WHERE EMP_NAME = '유재석'
)
WHERE EMP_NAME = '방명수';
1) 표현식
2)
3) TRUNCATE
4) MERGE
MERGE
INTO EMP_M01 M1
USING EMP_M02 M2
ON (M1.EMP_ID = M2.EMP_ID)
WHEN MATCHED THEN
UPDATE
SET M1.EMP_NAME = M2.EMP_NAME
, M1.EMP_ID = M2.EMP_ID
WHEN NOT MATCHED THEN
INSERT
(
M1.EMP_NAME, M1.EMP_ID
)
VALUES
(
M2.EMP_NAME, M2.EMP_ID
);
USERS_TABLES : 계정이 가지고 있는 테이블들 / DATA DICTIONARY
USER_CONSTRAINTS 데이터 타입에 따른 제약 조건
USER_CONS_COLUMNS 컬럼별 제약 조건 확인