서브쿼리
- 메인쿼리안에 서브쿼리를 괄호로 감싸서 사용한다.
- 서브쿼리는 단일 행 또는 복수 행 비교 연산자와 함께 사용 가능하다.
- 서브쿼리에서는 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
데이터 무결성을 위한 제약 조건
'Database & Bigdata > Oracle' 카테고리의 다른 글
[1/29] 강의정리 (JDBC, DBConnection, Java, Oracle, Mybatis) (0) | 2021.01.29 |
---|---|
[Oracle] 1/27 강의 정리 (오라클 함수, NVL, DECODE, CASE, JOIN) (0) | 2021.01.27 |
[Oracle] 1/26 강의 정리 (TAB, IS NULL, ROUND, 오라클 함수) (0) | 2021.01.26 |
[Oracle] Mac에서 Docker로 Oracle 사용 시 Scott 계정 생성하기 (3) | 2021.01.26 |
댓글