Notice
Recent Posts
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- jstl
- Spring
- 오라클
- 마이바티스
- 이클립스
- jsp 내부객체
- springboot
- 자바
- Oracle
- 제이쿼리
- 필터체인
- 알고리즘
- EL태그
- Eclipse
- 버튼
- 설정
- SESSION
- 자바스크립트
- MySQL
- jsp
- 스프링
- html
- jquery
- java
- 셋업
- 면접
- 깃허브 간단요약
- 폼태그
- 깃허브
- 설치
Archives
- Today
- Total
은은하게 코드 뿌시기
[DB] 뷰(view) /인라인뷰/ ROWNUM 본문
728x90
뷰?
: 가상테이블 (virtual table), 뷰, 하나 이상의 테이블을 조회하는 select문을 저장한 객체,
데이터를 따로 저장하지 않습니다.
편리성, 보안성(테이블의 열을 노출 하고싶지 않을 경우) 을 위해 사용합니다.
뷰 | 서브쿼리 | |||
SELECT * FROM VW_EMPSAL1000; |
|
뷰 생성하기
오라클 기준 뷰생성 구문
CREATE [OR REPLACE] [FORCE |NOFORCE] VIEW 뷰이름(열이름1, 열이름2, ...) AS (저장할 SELECT 문) [WITH CHECK OPTION [CONSTRAINT 제약조건]] [WITH READ ONLT [CONSTRAINT 제약조건]]; |
|
요소 | 설명 |
OR REPLACE | 같은 이름의 뷰가 이미 존재할경우 현재 생성할 뷰로 대체 하며 생성(선택) |
FORCE | 뷰가 저장할 SELECT문의 기반 테이블이 존재하지 않아도 강제로 생성(선택) |
NOFORCE | 뷰가 저장할 SELECT문의 기분 테이블이 존재할 경우에만 생성(기본값,선택) |
뷰이름 | 생성할 뷰이름 지정 |
열이름 | SELECT문에 명시된 이름대신 사용할 열이름 지정 (생략가능, 선택) |
저장할 SLECT문 | 생성할 뷰에 저장할 SLELECT문 지정(필수) |
WITH CHECK OPTION | 지정한 제약 조건을 만족하는 데이터에 한해 DML작업이 가능하도록 뷰 생성(선택) |
WITH READ ONLY | 뷰의 열람, 즉 SELECT만 가능하도록 뷰 생성(선택) |
오라클의 경우 뷰의 시스템 계정으로 접속한 후에 계정에 권한을 부여해 주어야 합니다.
SQL PLUS SYSTEM/oracle GRANT CREATE VIEW TO SCOTT; |
생성 구문 예제
뷰 생성하기
|
|
|||
뷰 확인하기
|
|
뷰 삭제하기
|
인라인뷰를 사용한 TOP-N SQL문 / ROWNUM
인라인뷰 : CREATE 문을 통해 객체로 만들어지는 뷰외에 SQL문에서 일회성으로 만들어서 사용하는 뷰를 인라인 뷰라고합니다.
ROWNUM : 의사열이라고하는 특수열입니다. 의사열은 데이터가 저장되는 실제테이블에 존재하지는 않지만 특정 목적을 위해 테이블에 저장되어 잇는 열처럼 사용 가능한 열
EMP 테이블을 SAL 열 기준으로 정렬하기 | |||||||
오라클 | |||||||
SELECT ROWNUM, E* FROM EMP E ORDER BY SAL DESC; |
|||||||
MYSQL | |||||||
![]() ![]() MY SQL의 경우 0 으로 설정하고 SELECT 했을경우 1부터 COUNT가 세져서 출력된다. SELECT 전에 초기값을 0 으로 주지않으면 변수형식으로 작용하여 다음 출력시에는 데이터가 쌓여 출력된다. ![]() 위와 같은 문제로 SET을 매번 0 으로 날려주는 방식 으로 처리하거나 FROM절이나 , WHERE절에 포함하여 초기화 하는 방법도있다. 그에 대한 예제는 다음과 같다.
|
728x90
'Database -Mysql,Oracle' 카테고리의 다른 글
[DB] 동의어(synonym)-ORACLE/MYSQL (0) | 2022.08.29 |
---|---|
[DB] 시퀀스(sequence) - ORACLE/MYSQL sequence 만들기 (0) | 2022.08.29 |
[DB] 인덱스 - Oracle/MYSQL (0) | 2022.08.24 |
[DB] 데이터사전(data dictionary) - oracle, mysql / information_schema (0) | 2022.08.23 |
MY SQL WORKBENCH DB에서 외래키 설정하기 (0) | 2022.08.22 |
Comments