728x90
DML : DATA MANIPULATION LANGUAGE
데이터 조작 언어
테이블에 새로운 데이터를 삽입(INSERT) 하거나, 기존의 데이터를 수정(UPDATE) 하거나, 삭제(DELETE) 하는 구문
INSERT
테이블에 행을 추가하는 구문
1.
INSERT INTO 테이블명 VALUES (값, 값, 값, ... );
=> 해당 테이블 모든 컬럼에 추가하고자 하는 값을 직접 제시해서 INSERT 하고자 할 때 사용
=> 주의할 점: 컬럼 순번을 지켜서 VALUES 괄호 안에 나열 해야함
INSERT INTO EMPLOYEE
VALUES (900, '홍길동', '001122-1234567', 'hgd1122@mail.com', '01012341234'
, D1', 'J7', 'S4', 3000000, 0.1, NULL, SYSDATE, NULL, DEFAULT);
-- 1 행 이(가) 삽입되었습니다.
728x90
2.
INSERT INTO 테이블(컬럼명1, 컬럼명2, 컬럼명3, ... )
VALUES (값1, 값2, 값3, ... );
=> 해당 테이블에 특정 컬럼만 선택해서 그 컬럼에 추가할 값만 제기하고자 할 때 사용
한 행 단위로 추가되기 때문에 선택이 안된 컬럼은 기본적으로 NULL 값이 들어감
( 기본값 DEFAULT이 지정되어있으리 경우 기본값이 들어감)
3. INSERT INTO SELECT
INSERT INTO 테이블명 (서브쿼리);
=> VALUES로 값을 기입하는 것 대신 서브쿼리로 조회한 결과값을 INSERT 하는 구문
(한번에 여러 행을 INSERT 할 수 있다)
-- 전체 사원들의 사번, 이름, 부서명을 조회한 결과
SELECT EMP_ID, EMP_NAME, DEPT_TITLE
FROM EMPLOYEE, DEPARTMENT
WHERE DEPT_CODE = DEPT_ID(+); --20개 행
INSERT INTO EMP_01
(SELECT EMP_ID, EMP_NAME, DEPT_TITLE
FROM EMPLOYEE, DEPARTMENT
WHERE DEPT_CODE = DEPT_ID(+) ); -- 20개 행 이(가) 삽입되었습니다.
4. INSERT ALL
두 개 이상의 테이블에 각각 INSERT 할 때 사용
그때 사용되는 서브쿼리가 동일한 경우
INSERT ALL
INTO 테이블명1 VALUES (컬럼명, 컬럼명, ... )
INTO 테이블명2 VALUES (컬럼명, 컬럼명, ... )
서브쿼리;
INSERT ALL
INTO EMP_JOB VALUES (EMP_ID, EMP_NAME, JOB_NAME) -- 9개의 행 추가
INTO EMP_DEPT VALUES (EMP_ID, EMP_NAME, DEPT_TITLE) -- 9개의 행 추가
SELECT EMP_ID, EMP_NAME, DEPT_TITLE, JOB_NAME
FROM EMPLOYEE E
JOIN JOB J ON (E.JOB_CODE = J.JOB_CODE)
LEFT JOIN DEPARTMENT D ON (E.DEPT_CODE = D.DEPT_ID)
WHERE SALARY >= 3000000;
-- 18개 행이(가) 삽입되었습니다.
5. INSERT ALL 조건
INSERT ALL
WHEN 조건1 THEN
INTO 테이블명1 VALUES (컬럼명, 컬럼명, ... )
WHEN 조건2 THEN
INTO 테이블명2 VALUES (컬럼명, 컬럼명, ... )
서브쿼리 ;
INSERT ALL
WHEN HIRE_DATE < '2010/01/01' THEN
INTO EMP_OLD VALUES (EMP_ID, EMP_NAME, HIRE_DATE, SALARY) -- 9개 행
WHEN HIRE_DATE >= '2010/01/01' THEN
INTO EMP_NEW VALUES (EMP_ID, EMP_NAME, HIRE_DATE, SALARY) -- 10개 행
SELECT EMP_ID, EMP_NAME, HIRE_DATE, SALARY
FROM EMPLOYEE; -- 19개 행이(가) 삽입되었습니다.
728x90
'Programming > SQL' 카테고리의 다른 글
[Oracle] DML(3) - DELETE ( vs TRUNCATE 비교) (0) | 2024.03.08 |
---|---|
[Oracle] DML(2) - UPDATE / UPDATE에 서브쿼리 쓰기 (0) | 2024.03.08 |
[Oracle] SUBQUERY를 이용한 테이블 생성 / 테이블 생성 후 제약조건 추가하기 (ALTER TABLE) (2) | 2024.03.08 |
[Oracle] 제약조건(CONSTRAINT) - FOREIGN KEY(외래키) / ON DELETE SET NULL / ON DELETE CASCADE /ON DELETE RESTRICTED (1) | 2024.02.23 |
[Oracle] 제약조건(CONSTRAINTS) - CHECK/PRIMARY KEY(기본키) (0) | 2024.02.23 |