- DQL (QUERY 데이터 질의 언어) : SELECT(쿼리문)
- DML (MANIPULATION 데이터 조작 언어) : INSERT, UPDATE,DELETE, [SELECT]
- DDL (DEFINITION 데이터 정의 언어) : CREATE, ALTER, DROP
- DCL (CONTROL 데이터 제어 언어) : GRANT, REVOKE, [COMMIT,ROLLBACK]
- TCL (TRANSACTION 트랜잭션 제어 언어) : COMMIT, ROLLBACK
< DML 데이터 조작 언어 >
테이블에 데이터를 삽입(INSERT)하거나, 수정(UPDATE)하거나, 삭제(DELETE)하는 구문
1. INSERT
테이블에 새로운 행을 추가시키는 구문
[표현법]
1) 특정 컬럼을 지정하지 않고 삽입하고자 할 때
INSERT INTO 테이블명 VALUES(값, 값, 값, 값, ..);
컬럼 순번을 지켜서 VALUES에 값을 나열해야됨 (컬럼 갯수만큼 값 제시)
부족하게 값을 제시했을 경우 => not enough values 오류
값을 더 많이 제시 했을 경우 => too many values 오류
INSERT INTO EMPLOYEE
VALUES(900,'장채현','980911-2154320','jang_ch@br.com','01012345678',
'D1','J7',4000000,0.2,200,SYSDATE,NULL,DEFAULT);
2) 특정 컬럼을 선택해서 값을 제시하고자 할 때
INSERT INTO 테이블명 (컬럼명,컬럼명,컬럼명) VALUES (값,값,값);
한 행으로 추가되기 때문에 선택안된 컬럼에는 기본적으로 NULL이 들어감
=> NOT NULL 제약조건이 걸려있는 컬럼은 반드시 선택해서 직접 값 제시해야함
단, 기본값(DEFAULT)이 지정되어 있으면 NULL이 아닌 기본값이 들어감
INSERT
INTO EMPLOYEE
(
EMP_ID
, EMP_NAME
, EMP_NO
, JOB_CODE
, HIRE_DATE
)
VALUES
(
901
, '강람보'
, '890130-2156002'
, 'J7'
, TO_DATE('901223 143000','RRMMDD HH24MISS')
);
3) 서브쿼리를 수행결과값을 통째로 INSERT하고자 할 때
INSERT INTO 테이블명
(서브쿼리);
INSERT INTO EMP_01
(
SELECT EMP_ID,EMP_NAME,DEPT_TITLE
FROM EMPLOYEE
LEFT JOIN DEPARTMENT ON (DEPT_CODE = DEPT_ID)
);
2. INSERT ALL
두개 이상의 테이블에 각각 INSERT 할 때 사용되는 서브쿼리가 동일 할 경우
[표현법]
1) INSERT ALL
INTO 테이블명1 VALUES (컬럼명,컬럼명,...)
INTO 테이블명2 VALUES (컬럼명,컬럼명, ..)
서브쿼리;
INSERT ALL
INTO EMP_DEPT 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';
2) INSERT ALL
WHEN 조건1 THEN
INTO 테이블명1 VALUES(컬럼명, 컬럼명,...)
WHEN 조건2 THEN
INTO 테이블명2 VALUES(컬럼명, 컬럼명,...)
서브쿼리;
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;
** 추가 : INSERT시 컬럼값으로 서브쿼리를써도됨
INSERT INTO EMPLOYEE(EMP_ID, EMP_NAME,EMP_NO,JOB_CODE, SALARY)
VALUES (500,'김말순','900912-2345676','J7',(SELECT MAX(SALARY)FROM EMPLOYEE));
'ORACLE' 카테고리의 다른 글
ORACLE 07. DML (DELETE) (0) | 2022.11.23 |
---|---|
ORACLE 07. DML (UPDATE) (0) | 2022.11.23 |
ORACLE 06. DDL (CREATE)_ SUBQUERY 이용한 테이블 생성 (0) | 2022.11.23 |
ORACLE 06. DDL (CREATE)_ DEFAULT 기본값 (0) | 2022.11.22 |
ORACLE 06. DDL (CREATE)_ 제약조건(CONSTRAINTS) (0) | 2022.11.22 |