본문 바로가기
Database & Bigdata/Oracle

[Oracle] 1/28 강의 정리 (서브쿼리, 딕셔너리, merge, 트랜잭션)

by jionee 2021. 1. 28.
SMALL

 

서브쿼리

- 메인쿼리안에 서브쿼리를 괄호로 감싸서 사용한다.

- 서브쿼리는 단일 행 또는 복수 행 비교 연산자와 함께 사용 가능하다.

- 서브쿼리에서는 ORDER BY 를 사용하지 못한다.

 

-- 1번
SELECT ENAME, DEPTNO
FROM EMP 
WHERE DEPTNO = (SELECT DEPTNO FROM EMP WHERE ENAME = 'SCOTT');

-- 2번
SELECT *
FROM EMP
WHERE JOB= (SELECT JOB FROM EMP WHERE ENAME = 'SCOTT');

 

 

--3번
SELECT ENAME, SAL
FROM EMP
WHERE SAL >= (SELECT SAL FROM EMP WHERE ENAME = 'SCOTT');


--4번
SELECT ENAME DEPTNO
FROM EMP 
WHERE DEPTNO = (SELECT DEPTNO FROM DEPT WHERE LOC = 'DALLAS');

 

 

 

다중행 서브쿼리

서브쿼리에서 반환되는 결과가 하나 이상의 행일 때 사용하는 서브쿼리

다중행 서브쿼리는 반드시 다중 행 연산자와 함께 사용해야 함

 

IN 예제)

-- 7번
SELECT EMPNO, ENAME, SAL, DEPTNO
FROM EMP
WHERE SAL IN (SELECT MAX(SAL) FROM EMP GROUP BY DEPTNO);


--8번
SELECT DEPTNO, DNAME, LOC
FROM DEPT
WHERE DEPTNO IN (SELECT DEPTNO FROM EMP WHERE JOB ='MANAGER');

 

ALL 예제)

--9번
SELECT ENAME, SAL
FROM EMP
WHERE SAL> ALL (SELECT SAL FROM EMP WHERE JOB = 'SALES');

 

 

 

 

 

CREATE TABLE

CREATE TABLE table_name
(column_name, data_type expr, ...);

 

AS 예제 )

테이블의 구조를 복사

 

 

 

 

SET UNUSED

 

 

 

TRUNCATE

기존에 사용하던 테이블의 모든 로우를 제거하기 위한 명령어

TRUNCATE table_name

 

 

RENAME

 

RENAME old_name TO new_name

 

 

 

 

데이터 딕셔너리

- 데이터베이스 자원을 효율적으로 관리하기 위한 다양한 정보를 저장하는 시스템 테이블을 데이터 딕셔너리라고 함

- 사용자가 테이블을 생성하거나 사용자를 변경하는 등의 작업을 할 때 데이터베이스 서버에 의해 자동으로 갱신되는 테이블

(사용자가 직접 삭제 수정 못함)

- 시스템이 직접 관리하기 때문에  암호같은 기호만 보여지고 내용을 알 수 없음 

 

 

데이터 딕셔너리 뷰

- 사용자가 이해할 수 있는 데이터를 산출한 뷰

 

 

INSERT

테이블에 새로운 데이터를 입력하기 위해 사용

INSERT INTO table_name
( column_name,...)
VALUES (column_value,...);

 

UNION ALL로 INSERT)

INSERT INTO SAM01
(EMPNO, ENAME, JOB, SAL)
SELECT 1000,'APPLE','POLICE',10000
from dual
union all
SELECT 1010,'BANANA','NURSE',15000
from dual
union all
SELECT 1020,'ORANGE','DOCTOR',25000
from dual;

 

 

 

MERGE

같은 구조의 두개의 테이블을 하나의 테이블로 합치는 기능

수행하는 테이블에 기존에 존재하는 행이 있다면 새로운 값으로 갱신됨 

존재하지 않으면 새로운 행으로 추가 

 

 

 

 

트랜잭션

- 데이터 처리의 한 단위

- ALL OR Nothing 방식으로 처리

- 여러 개의 명령어 집합이 정상적으로 처리되면 정상 종료 되도록 하고, 하나라도 잘못되면 전체를 취소

- 데이터의 일관성을 유지하면서 안정적으로 데이터를 복구시키기 위해 사용

 

트랜잭션 제어 명령어

COMMIT SAVEPOINT ROLLBACK

 

 

 

데이터 무결성을 위한 제약 조건

댓글