객체 조회
SELECT * FROM 객체명;
INDEX 인덱스
데이터 검색 성능의 향상을 위해 테이블 컬럼에 사용하는 객체
테이블 컬럼을 여러 가지 분석을 통해 선정하여 설정 가능
직접 특정 테이블의 컬럼에 지정할 수도 있지만, 컬럼이 PRIMARY KEY 또는 UNIQUE KEY일 경우 자동 생성
-- 인덱스 생성
CREATE INDEX 인덱스명
ON 테이블명(컬럼명1 [ASC|DESC],
컬럼명2 [ASC|DESC],
...);
-- 인덱스 삭제
DROP INDEX 인덱스명;
VIEW 뷰
가상 테이블(virtual table)
하나 이상의 테이블을 조회하는 SELECT문을 저장한 객체
뷰를 SELECT문의 FROM절에 사용하면 특정 테이블을 조회하는 것과 같은 효과
-- 뷰 생성
CREATE (OR REPLACE) VIEW 뷰이름
AS
SELECT 컬럼명
FROM 테이블명
WHERE 조건;
-- 뷰 삭제
DROP VIEW 뷰이름;
* OR REPLACE(같은 이름의 뷰가 이미 존재할 경우 현재 생성할 뷰로 대체하여 생성) 생략 가능
사용 목적
편리성: 자주 활용하는 SELECT문을 뷰로 저장한 후 활용하여 SQL문의 복잡도를 완화하고 메인 쿼리에 집중할 수 있음
보안성: 가공을 거친 데이터만 SELECT하는 뷰 열람 권한을 제공하여 불필요한 데이터 노출을 막을 수 있음
권한 부여
SCOTT 계정은 뷰 생성 권한이 없으므로 SYSTEM 계정에 접속한 후 권한 부여
CMD창 관리자 권한 오픈 후,
C:\>SQLPLUS SYSTEM/123456(비밀번호)
SQL> GRANT CREATE VIEW TO SCOTT;
인라인 뷰(inline view)
CREATE문을 통해 객체로 만들어지는 뷰 외에 SQL문에서 일회성으로 만들어서 사용하는 뷰
ROWNUM
의사 컬럼(pseudo column)이라고 하는 특수 컬럼
데이터가 저장되는 실제 테이블에 존재하지는 않지만 특정 목적을 위해 테이블에 저장되어 있는 컬럼처럼 사용 가능
ROWNUM 컬럼 데이터 번호는 테이블에 저장된 행이 조회된 순서대로 매겨진 일련번호
-- 인라인 뷰로 TOP-N 조회하기(서브쿼리 사용)
SELECT *
FROM (
SELECT 컬럼명
FROM 테이블명
WHERE 조건
ORDER BY 정렬) 별칭명
WHERE ROWNUM <= N
-- 인라인 뷰로 TOP-N 조회하기(WITH절 사용)
WITH 별칭명 AS (
SELECT 컬럼명
FROM 테이블명
WHERE 조건
ORDER BY 정렬)
SELECT ROWNUM, 별칭명.*
FROM 별칭명
WHERE ROWNUM <= N;
SEQUENCE 시퀀스
특정 규칙에 맞는 연속 숫자를 생성하는 객체
-- 시퀀스 생성
CREATE SEQUENCE 시퀀스명
INCREMENT BY 증가값(기본값: 1)
START WITH 시작값(기본값: 1)
[MAXVALUE 최댓값|NOMAXVALUE]
[MINVALUE 최솟값|NOMINVALUE]
[CYCLE|NOCYCLE]
[CACHE 캐시값|NOCACHE]
MAXVALUE | MAXVALUE: 시작값 이상, MINVALUE 초과인 값 NOMAXVALUE(기본값): 증가 1, 감소 -1028 |
MINVALUE | MINVALUE: 시작값보다 이하, MAXVALUE 미만인 값 NOMINVALUE(기본값): 증가 1027, 감소 -1 |
CYCLE | CYCLE: 최댓값에 도달하면 최솟값부터 다시 시작 NOCYCLE: 최댓값에 도달하면 시퀀스 생성 중지 |
CACHE | CACHE: 메모리에 시퀀스 값을 미리 할당 NOCACHE: 메모리에 시컨스 값 할당하지 않음 |
-- 시퀀스 사용
시퀀스명.CURRVAL: 마지막으로 생성한 번호 반환
시퀀스명.NEXTVAL: 다음 번호 생성
--마지막으로 생성된 시퀀스 확인
SELECT 시퀀스명.CURRVAL FROM DUAL;
-- 시퀀스 수정
ALTER SEQUENCE 시퀀스명
INCREMENT BY 증가값(기본값: 1)
START WITH 시작값(기본값: 1)
[MAXVALUE 최댓값|NOMAXVALUE]
[MINVALUE 최솟값|NOMINVALUE];
-- 시퀀스 삭제
DROP SEQUENCE 시퀀스명;
SYNONYM 동의어
테이블, 뷰, 시퀀스 등 객체 이름 대신 사용 가능한 다른 이름을 부여하는 객체
이름이 너무 길어 사용이 불편할 때 좀 더 간단하고 짧은 이름을 하나 더 만들어 주기 위해 사용
-- 동의어 생성
CREATE (PUBLIC) SYNONYM 동의어명
FOR 객체명;
-- 뷰 삭제
DROP SYNONYM 동의어명;
권한 부여
SCOTT 계정은 동의어 생성 권한이 없으므로 SYSTEM 계정에 접속한 후 권한 부여
CMD창 관리자 권한 오픈 후,
C:\>SQLPLUS SYSTEM/123456(비밀번호)
SQL> GRANT CREATE SYNONYM TO SCOTT;
SQL> GRANT CREATE PUBLIC SYNONYM TO SCOTT;
'ORACLE SQL' 카테고리의 다른 글
조건문 & 반복문 (0) | 2021.03.04 |
---|---|
PL/SQL & 변수 (0) | 2021.03.04 |
제약조건 (0) | 2021.03.03 |
ORACLE 사용자 관리 (0) | 2021.03.02 |
트랜잭션 (0) | 2021.03.02 |