-
Notifications
You must be signed in to change notification settings - Fork 0
Oracle_09장_VIEW(뷰)
haenyilee edited this page Sep 25, 2020
·
1 revision
- 단순 뷰(Simple View)
- 복합 뷰(Complex View)
- Inline View(인라인 뷰)
- View 조회 및 삭제하기
- Materialized View(MVIEW) - 구체화된 뷰
- 보여만 주는 상태
- 테이블을 새롭게 생성하는 것이 아니라 기존의 테이블에서 필요한 데이터를 모아서 관리하는 것
- 필수 요건 : 테이블
- 메모리에 저장되는 과정이 아니고 가상으로 저장된다.
- 가상으로 저장되기 때문에 보안이 좋다. (해킹불가)
- SQL문장을 단순화시킬 수 있다는 장점이 있다.
- ALTER를 사용할 수 없다.
- 삭제를 할 때는 반드시
DROP VIEW view명칭
을 사용해야한다. - 저장이나 수정이 가능한데 View에서 수정이나 삭제가 되는 것이 아니라 참조테이블에서 변경된다.
- READ ONLY이기 때문에 DML 사용이 불가하다.
- SELECT만 사용해서 테이블만 볼 수 있게 만든다.
- 같은 이름의 View는 사용할 수 없다.
CREATE [OR REPLACE] VIEW view명칭
AS SELECT ~
- AS 밑의 문장이 가상데이터에 저장되는 것이 View임
- 한 개의 테이블을 참조하는 것
- 여러개의 테이블을 참조하는 것
- JOIN 이나 SubQuery가 들어가면 복합뷰임
- FROM SELECT~ 로 시작하는 뷰들
CREATE VIEW dept_view
AS
SELECT * FROM dept;
INSERT INTO dept_view VALUES(50,'영업부','서울');
- View에 데이터 추가하면 참조하고 있는 테이블에 데이터가 추가되는 것이기 때문에 주의해야함
- READ ONLY옵션을 추가하면 데이터 수정/추가 불가하다.
CREATE VIEW dept_view
AS
SELECT * FROM dept WITH READ ONLY;
INSERT INTO dept_view VALUES(50,'영업부','서울');
*
ERROR at line 1:
ORA-42399: cannot perform a DML operation on a read-only view
CREATE VIEW emp_dept_view
AS
SELECT empno,ename,job,hiredate,sal,dname,loc
FROM emp,dept
WHERE emp.deptno=dept.deptno;
- ALTER는 사용 불가함
-
OR REPLACE
를 사용하면DROP TABLE
과정이 불필요해짐 - 주로 칼럼 추가할 때 주로 사용됨
CREATE OR REPLACE VIEW emp_dept_view
AS
SELECT empno,ename,job,hiredate,comm,sal,dname,loc
FROM emp,dept
WHERE emp.deptno=dept.deptno;
- 학생 Table 생성
CREATE TABLE student(
hakbun NUMBER,
name VARCHAR2(34) CONSTRAINT st_name_nn NOT NULL,
kor NUMBER(3),
eng NUMBER(3),
math NUMBER(3),
CONSTRAINT st_hakbun_pk PRIMARY KEY(hakbun)
);
- 데이터 넣기
INSERT INTO student VALUES(1,'홍길동',80,90,75);
INSERT INTO student VALUES(2,'심청쓰',60,40,88);
INSERT INTO student VALUES(3,'이도령',75,95,85);
INSERT INTO student VALUES(4,'을지문덕',45,55,65);
INSERT INTO student VALUES(5,'이순신',100,80,95);
- 원본 테이블에 없는 컬럼 추가해서 View 생성하기
CREATE OR REPLACE VIEW student_view(hakbun,name,kor,eng,math,total,avg,rank)
AS
SELECT hakbun,name,kor,eng,math,kor+eng+math,ROUND((kor+eng+math)/3.0,2),
RANK() OVER(ORDER BY (kor+eng+math) DESC)
FROM student;
- rownum : 자동지정번호 (오라클에서 지정하는 컬럼명)
- 중간에 수정이나 추가되면 자동으로 1번부터 다시 매겨짐
SELECT empno,ename,rownum
FROM emp;
SELECT empno,ename,rownum
FROM emp
WHERE rownum<=5;
- 비교연산자 활용하기
SELECT ename,sal,rownum
FROM (SELECT empno,ename,sal FROM emp ORDER BY sal DESC)
WHERE rownum<=5;
- BETWEEN 연산자 활용하기
SELECT ename,sal,rownum
FROM (SELECT empno,ename,sal FROM emp ORDER BY sal DESC)
WHERE rownum BETWEEN 1 AND 5;
- 오류
-- 오류 : **중간을 자를 순 없음**
SELECT ename,sal,rownum
FROM (SELECT empno,ename,sal FROM emp ORDER BY sal DESC)
WHERE rownum BETWEEN 6 AND 8;
- 정상
SELECT empno,ename,sal,num
FROM (SELECT empno,ename,sal,rownum as num /* as num : Ailas num */
FROM (SELECT empno,ename,sal
FROM emp ORDER BY sal DESC))
WHERE num BETWEEN 6 AND 10;
0장 공부를 시작하기 전에 미리 알아두세요
- 미리 알아야 할 몇 가지 중요한 개념
- 오라클 데이터베이스 서버에 접속하기
1장 SELECT 명령을 이용하여 데이터를 조회합니다
- 모든 컬럼 조회하기
- 원하는 컬럼만 조회하기
- SELECT 명령에 표현식을 사용하여 출력하기
- 컬럼 별칭 사용하여 출력하기
- DISTINCT 명령어로 중복된 값을 제거하고 출력하기
- 연결 연산자로 컬럼을 붙여서 출력하기
- 원하는 조건만 골라내기 - WHERE 절 사용
- SQL에서 기본 산술 연산자 사용하기
- 다양한 연산자를 활용하는 방법
- 정렬하여 출력하기 - ORDER BY 절 사용하기
- 집합 연산자
2장 SQL 단일행 함수를 배웁니다
- 문자 함수
- 숫자 관련 함수들
- 날짜 관련 함수들
- 형 변환 함수
- 일반 함수
- 정규식(Regular Expression) 함수로 다양한 조건 조회하기
- 11g에서 추가된 정규식 함수
3장 SQL 복수행 함수(그룹 함수)를 배웁니다
- GROUP 함수의 종류
- GROUP BY 절을 사용해 특정 조건으로 세부적인 그룹화하기
- HAVING 절을 사용해 그룹핑한 조건으로 검색하기
- 반드시 알아야 하는 다양한 분석 함수들
4장 JOIN을 배웁니다
- Cartesian Product(카티션 곱)
- EQUI Join(등가 조인)
- Non-Equi Join(비등가 조인)
- OUTER Join(아우터 조인)
- SELF Join
- CREATE - 새로 생성하라
- ALTER 명령
- TRUNCATE 명령
- DROP 명령
- DELETE, TRUNCATE, DROP 명령어의 차이점 비교
- 11g에서 추가된 기능 소개
- Data Dictionary(데이터 딕셔너리)
- INSERT(새로운 데이터 입력하기)
- UPDATE(데이터 변경하기)
- DELETE
- MERGE
- UPDATE 조인
- TRANSACTION 관리하기
- 제약 조건의 종류
- 제약 조건 사용하기
- 제약 조건 관리하기
- 인덱스(INDEX)란 무엇일까요?
- 인덱스의 생성 원리
- 인덱스 구조와 작동 원리(B-TREE 인덱스 기준입니다)
- 인덱스의 종류
- 인덱스의 주의사항
- 인덱스 관리 방법
- Invisible Index(인비저블 인덱스) -11g New Feature
9장 VIEW(뷰)를 배웁니다
- 단순 뷰(Simple View)
- 복합 뷰(Complex View)
- Inline View(인라인 뷰)
- View 조회 및 삭제하기
- Materialized View(MVIEW) - 구체화된 뷰
- Sub Query가 무엇일까요?
- Sub Query의 종류
- Scalar Sub Query(스칼라 서브 쿼리)
- SEQUENCE(시퀀스)
- SYNONYM(시노님 - 동의어)
- 계층형 쿼리의 문법
- 계층형 쿼리의 기본 구조
- 계층 구조에서 일부분만 계층화하기
- CONNECT_BY_ISLEAF( ) 함수
- CONNECT_BY_ROOT 함수
- User와 Schema(스키마)에 대해서 알아봅니다
- PROFILE(프로파일) 생성 및 관리하기
- PRIVILEGE(권한) 관리에 대해 배웁니다
- Role(롤) 관리하기
- DEFAULT value로 sequence의 next value 지정 가능
- Invisible Column 사용 가능
- 순위 뽑을 때 Top-N 기능 사용 가능
- IDENTITY Column 지원
- Null 값을 위한 DEFAULT 값 지정 가능
- 그 외 주요 New Features
- PL/SQL이란
- PL/SQL의 런타임 구조
- PL/SQL 기본 구조
- PL/SQL BLOCK 기본 구성
- PL/SQL 블록 작성 시 기본 규칙과 권장사항
- PL/SQL 문 내에서의 SQL 문장 사용하기
- PL/SQL에서의 렉시칼
- PL/SQL에서의 블록 구문 작성 지침
- 중첩된 PL/SQL 블록 작성하기
- PL/SQL에서의 연산자 사용하기
- PL/SQL에서 변수의 의미와 사용법
- PL/SQL 제어문 사용법
- PL/SQL Cursor(커서)
- ORACLE EXCEPTION(예외 처리)
- ORACLE SUBPROGRAM