고래씌
[Oracle] 7-1. DML(INSERT, UPDATE, DELETE) - INSERT 본문
1. DML (Data Manipulation Language)
: 데이터 조작 언어
- 테이블에 새로운 데이터를 삽입(INSERT)하거나 기존의 데이터를 수정(UPDATE)하거나 삭제(DELETE)하는 구문들
2. INSERT
: 테이블에 새로운 "행"을 추가하는 구문
[표현법]
* INSERT INTO [계열]
1) INSERT INTO [테이블명] VALUES(값1, 값2, 값3 ...);
=> 해당 테이블에 "모든"컬럼에 대해 추가하고자 하는 값을 내가 직접 제시해서
"한 행"을 INSERT하고자 할 때 쓰는 표현법
※ 주의사항 : 컬럼의 순서, 자료형, 개수를 맞춰서 VALUES 괄호 안에 나열해야함
▶ EMPLOYEE 테이블에 사원 정보 추가
=> 값 추가 된 것을 확인
2) INSERT INTO 테이블명(컬럼명1, 컬럼명2, 컬럼명3) VALUES(값1, 값2, 값3);
=> 해당 테이블에 "특정"컬럼만 선택해서 그 컬럼에 추가할 값만 제시하고자 할 때 사용
- 그래도 한행 단위로 데이터가 추가되기 때문에 선택이 안된 컬럼은 기본적으로 NULL 값이 들어간다.
- 단, DEFAULT 설정이 있는 경우 "기본값"이 들어간다.
- NOT NULL 제약조건이 걸려있는 컬럼은 반드시 선택해서 직접 값을 제시해야함.
(단, DEFAULT 옵션이 추가된 경우는 생략가능)
▶ EMPLOYEE 테이블에 사원 정보 추가
=> ENT_YN은 DEFAULT 설정이 되어 있어서 기본값 "N"이 들어감
3) INSERT INTO 테이블명 (서브쿼리);
=> VALUES()로 값을 직접 기입하는게 아니라 서브쿼리로 조회한 결과값을 통째로 INSERT 하는 구문
(여러행을 한번에 INSERT 할 수 있다)
① EMP_01 이라는 새 테이블 추가
② 전체 사원들의 사번, 이름, 부서명을 조회
③ 위 서브쿼리 결과를 INSERT
4) INSERT ALL 계열 - ①
- 두 개 이상의 테이블에 각각 INSERT 할 때 사용
조건 : 그때 사용되는 서브쿼리가 동일해야 한다.
[표현법]
INSERT ALL INTO 테이블명1 VALUES(컬럼명, 컬럼명,...) INTO 테이블명2 VALUES(컬럼명, 컬럼명,...) 서브쿼리; |
① 첫번째 테이블
: 급여가 300만원 이상인 사원들의 사번, 사원명, 직급명을 보관할 테이블
② 두번째 테이블
: 급여가 300만원 이상인 사원들의 사번, 사원명, 부서명을 보관할 테이블
③ 사번, 사원명, 직급명, 부서명 조회
④ INSERT ALL
=> 총 16개의 행 추가됨
4) INSERT ALL 계열 - ②
=> 조건에 맞는 값들만 넣겠다
INSERT ALL WHEN 조건1 THEN INTO 테이블명1 VALUES(컬럼명, 컬럼명,...) WHEN 조건2 THEN INTO 테이블명2 VALUES(컬럼명, 컬럼명,...) 서브쿼리 |
① 새로운 테스트용 테이블 생성
- 2010년도 기준으로 이전에 입사한 사원들의 사번, 사원명, 입사일, 급여
- 2010년도 이후에 입사한 사원정보를 저장할 테이블
② 조건을 사용해서 각 테이블에 값 추가(INSERT)
'Database > Oracle' 카테고리의 다른 글
[Oracle] 7-3. DML(INSERT, UPDATE, DELETE) - DELETE, TRUNCATE (2) | 2023.11.29 |
---|---|
[Oracle] 7-2. DML(INSERT, UPDATE, DELETE) - UPDATE (0) | 2023.11.29 |
[Oracle] 6-4. DDL(CREATE) - DDL계정 ④ (테이블 복사) (1) | 2023.11.29 |
[Oracle] 6-3. DDL(CREATE) - DDL 계정 ③ (DEFAULT) (0) | 2023.11.29 |
[Oracle] DB 실습문제 3(Option) (0) | 2023.11.29 |