전체 방문자
오늘
어제
21종
종이의 코딩 공부방
21종
  • 분류 전체보기 (174)
    • JAVA (64)
    • Springboot (46)
      • 블로그만들기 (45)
    • Database (60)
      • Oracle (60)
    • 프로젝트 3 (CELOVER) (0)
    • 개발서버 구축 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
21종

종이의 코딩 공부방

Database/Oracle

[Oracle] DML(1) - INSERT

2023. 7. 30. 18:10

DQL (QUERY 데이터 질의 언어) : SELECT
    
DML (MANIPULATION 데이터 조작 언어) : [SELECT], INSERT, UPDATE, DELETE
DDL (DEFINITON 데이터 정의 언어 ) : CREATE, ALTER, DROP
DCL (CONTROL 데이터 제어 언어 ) : GRANT, REVOKE, [COMMIT, ROLLBACK]
    
TCL (TRANSACTION 트랜잭션 제어 언어) : COMIT, ROLLBACK

< DML : DATA MANIPULATION LANGUAGE >
데이터 조작 언어
    
테이블에 값을 삽입(INSERT) 하거나, 수정(UPDATE) 하거나, 삭제(DELETE) 하는 구문


1. INSERT
테이블에 새로운 행을 추가하는 구문

[표현식]
1) INSERT INTO 테이블명 VALUES(값1, 값2, ..);

테이블에 모든 컬럼에 대한 값을 직접 제시해서 한 행 INSERT 하고자 할 때 사용
컬럼 순번을 지켜서 VALUES에 값을 나열해야됨!

부족하게 값을 제시했을 경우 => not enough values 오류!
값을 더 많이 제시했을 경우 => too many values 오류!
INSERT INTO EMPLOYEE
VALUES (900, '차은우', '900101-1234567', 'cha_00@kh.or.kr', '01011112222',
        'D1', 'J7', 'S3', 4000000, 0.2, 200, SYSDATE, NULL, DEFAULT);

SELECT * FROM EMPLOYEE
WHERE EMP_NAME = '차은우';

 

 

[표현식]
2) INSERT INTO 테이블명 (컬럼명, 컬럼명, 컬럼명...) VALUES (값1, 값2, 값3 ...)
테이블에 내가 선택한 컬럼에 대한 값만 INSERT 할 때 사용
그래도 한 행 단위로 추가되기 때문에 선택이 안된 컬럼은 기본적으로는 NULL이 들어감!
=> NOT NULL 제약조건이 걸려있는 컬럼은 반드시 선택해서 직접 값 제시해야함!!

단, DEFAULT 값이 있는 경우는 NULL이 아닌 DEFAULT 값이 들어간다!!
INSERT INTO EMPLOYEE(EMP_ID, EMP_NAME, EMP_NO, JOB_CODE, SAL_LEVEL, HIRE_DATE)
VALUES (901, '주지훈', '880202-1111111', 'J1', 'S2', SYSDATE);

 

 

[표현식]
3) INSERT INTO 테이블명 (서브쿼리);
VALUES로 값 직접 명시하는거 대신에 서브쿼리 조회된 결과값을 통째로 INSERT 가능!

2. INSERT ALL

여러가지 테이블에 값을 한번에 넣어줄때 사용

[표현식]
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';

 

 

* 조건을 사용해서 각 테이블에 INSERT 가능? ㅇㅇ 가능

[표현식]
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;
    'Database/Oracle' 카테고리의 다른 글
    • [Oracle] DML(2) - UPDATE
    • [Oracle] 테이블 복사하기
    • [Oracle] SUBQUERY를 이용한 테이블 생성
    • [Oracle] DEFAULT 옵션
    21종
    21종
    코딩 공부한 것 정리하려고 만든 블로그

    티스토리툴바