반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- php
- 이안의평일코딩
- 리액트네이티브
- 자바스크립트 코딩테스트
- spring
- 코딩테스트
- typescript
- 스프링
- 국비IT
- 자바스크립트
- 평일코딩
- 정보처리기사정리
- 타입스크립트
- 자스코테
- CSS
- react
- 국비코딩
- ReactNative
- 정보처리기사
- 정보처리기사실기정리
- 정보처리기사실기
- 자바의정석
- javascript
- 오라클
- Oracle
- VUE
- 리액트
- Java의정석
- 정보처리기사실기요약
- 정보처리기사요약
Archives
- Today
- Total
이안의 평일코딩
Oracle 15일차 - 인라인뷰 본문
반응형
2020.08.25(화)
VIEW => 페이징 (인라인뷰)
VIEW, SUBQUERY
PL/SQL (Function, Procedure, Trigger)
INDEX
=> VIEW : 기존의 테이블에서 필요한 데이터를 모아서 관리
메모리에 저장되는 과정이 아니고 가상으로 저장
=> 가상 테이블 (보안이 좋다)
=> SQL문장을 단순화할 수 있다
종류)
= 단순뷰 : 한개의 테이블을 참조
= 복합뷰 : 여러개의 테이블 참조 (JOIN, SubQuery)
= 인라인뷰 (TOP-N)
FROM SELECT~
= ALTER를 사용할 수 없다
= 삭제 : DROP VIEW view명
= 저장, 수정이 가능 => View에서 수정이나 삭제가되는 것이 아니라
참조테이블에서 변경
= READ ONLY => DML을 사용할 수 없다
= SELECT만 사용해서 데이터만 볼 수 있게 만든다
형식)
CREATE [OR REPLACE] VIEW view명
AS SELECT~
=> CREATE (TABLE제작), PL/SQL (Function), VIEW
=> DML (INSERT, SELECT, DELETE, UPDATE) => 웹프로그램
CREATE VIEW dept_view AS SELECT * FROM dept;
SELECT * FROM dept_view;
INSERT INTO dept_view VALUES(50, '영업부', '서울');
SELECT * FROM dept;
DROP VIEW dept_view;
CREATE VIEW dept_view AS SELECT * FROM dept WITH READ ONLY;
--SELECT만 가능해짐 (INSERT, UPDATE, DELETE 불가능)
CREATE VIEW emp_dept_view AS SELECT empno, ename, job, hiredate, mgr, comm, sal, dname, loc FROM emp, dept WHERE emp.deptno=dept.deptno;
SELECT * FROM emp_dept_view;
DROP VIEW emp_dept_view;
CREATE OR REPLACE VIEW emp_dept_view AS SELECT empno, ename, job, dname, loc FROM emp, dept WHERE emp.deptno=dept.deptno;
INSERT INTO student VALUES(1, '홍길동', 80, 90, 75);
INSERT INTO student VALUES(2, '심청이', 82, 80, 77);
INSERT INTO student VALUES(3, '강감찬', 67, 89, 56);
INSERT INTO student VALUES(4, '을지문덕', 100, 80, 95);
INSERT INTO student VALUES(5, '이순신', 56, 89, 60);
COMMIT;
SELECT * FROM student;
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;
SELECT * FROM student_view;
rownum : 자동 지정번호 (오라클에서 지정하는 컬럼명)
SELECT empno, ename, rownum FROM emp;
SELECT empno, ename, rownum FROM emp WHERE rownum<=5;
-- 급여가 높은 사람 상위 5개만 출력(인라인 뷰, 테이블대신에 select가 들어감)
SELECT empno, ename, sal, rownum FROM (SELECT empno, ename, sal FROM emp ORDER BY sal DESC) WHERE rownum<=5;
-- 페이지 나누기
SELECT empno, ename, sal, rownum FROM (SELECT * FROM emp ORDER BY sal DESC) WHERE rownum BETWEEN 6 AND 10; --오류
SELECT empno, ename, sal, num FROM (SELECT empno, ename, sal, rownum as num FROM (SELECT empno, ename, sal FROM emp ORDER BY sal DESC)) WHERE num BETWEEN 6 AND 10;
반응형
'Back-end > Oracle' 카테고리의 다른 글
Oracle 17일차 - 답변형 게시판 (0) | 2020.08.27 |
---|---|
Oracle 16일차 - 지니뮤직, 멜론뮤직 출력 (0) | 2020.08.26 |
Oracle 11~13일차 - 테이블 / 영화사이트 제작 (0) | 2020.08.19 |
Oracle 10일차 - 제약조건(CONSTRAINT) (0) | 2020.08.18 |
Oracle 9일차 - DML(Data Manipulation Language) (0) | 2020.08.14 |
Comments