오늘은 SQL에서 자주 사용하는 데이터베이스 객체인 VIEW, SEQUENCE, INDEX와 함께, 데이터 제어 언어(DCL)까지 정리했습니다. 실무에서 자주 사용되는 객체들을 손에 익히는 시간!
👁 VIEW (가상 테이블)
✔ 정의
SELECT문의 결과를 저장하는 논리적 가상 테이블
실제 데이터를 저장하지 않고 참조만 함
✔ 목적
복잡한 쿼리를 단순화
보안성 향상 (민감 데이터 차단)
✔ 생성 문법
sql
복사
편집
CREATE [OR REPLACE][FORCE | NOFORCE] VIEW 뷰이름 [컬럼 별칭]
AS SELECT문
[WITH CHECK OPTION][WITH READ ONLY];
WITH READ ONLY: DML 차단
WITH CHECK OPTION: 지정 컬럼 외 수정 금지
✔ 주의사항
ALTER 불가
대부분 조회 전용
DML 가능하나 컬럼 누락 시 NULL 입력될 수 있음
🔢 SEQUENCE (순차 번호 생성기)
✔ 정의
PK 같은 고유번호를 자동 생성
NEXTVAL, CURRVAL 사용
✔ 생성 문법
sql
복사
편집
CREATE SEQUENCE 시퀀스명
START WITH 1
INCREMENT BY 1
MAXVALUE 10000
CYCLE
CACHE 20;
NEXTVAL: 다음 번호
CURRVAL: 현재 번호 (NEXTVAL 호출 후 사용 가능)
✔ 변경 문법 (START WITH 제외 가능)
sql
복사
편집
ALTER SEQUENCE 시퀀스명 INCREMENT BY 5;
🧭 INDEX (색인)
✔ 정의
SELECT 성능 향상을 위한 객체
PK, FK, UNIQUE 제약 시 자동 생성됨
✔ 생성 문법
sql
복사
편집
CREATE [UNIQUE] INDEX 인덱스명
ON 테이블명 (컬럼명[, 컬럼명]);
✔ 장단점
장점 단점
조회 속도 향상 INSERT/UPDATE 성능 저하
시스템 부하 감소 추가 공간 필요
✔ 삭제 문법
sql
복사
편집
DROP INDEX 인덱스명;
🔐 DCL (Data Control Language)
✔ 정의
사용자 권한 관리 (GRANT / REVOKE)
🔑 권한 종류
📌 시스템 권한 (DB 전반)
권한 설명
CREATE SESSION DB 접속 허용
CREATE TABLE 테이블 생성 가능
CREATE VIEW 뷰 생성 가능
CREATE SEQUENCE 시퀀스 생성 가능
📌 객체 권한 (특정 객체 대상)
권한 설명
SELECT, INSERT, UPDATE, DELETE 테이블 DML
REFERENCES 외래 키 허용
ALTER 구조 수정
EXECUTE 프로시저 실행
👤 사용자 계정 생성 & 권한 부여
sql
복사
편집
ALTER SESSION SET "_ORACLE_SCRIPT" = TRUE;
CREATE USER kh IDENTIFIED BY kh1234;
GRANT CREATE SESSION TO kh;
GRANT CREATE TABLE TO kh;
ALTER USER kh DEFAULT TABLESPACE SYSTEM QUOTA UNLIMITED ON SYSTEM;
GRANT CONNECT, RESOURCE TO kh;
🔧 객체 권한 부여 및 회수
sql
복사
편집
-- 부여
GRANT SELECT, INSERT ON EMPLOYEE TO kh;
-- 회수
REVOKE INSERT ON EMPLOYEE FROM kh;
🧰 기타 팁
ROWID: 각 행의 물리적 주소 (조회 최적화에 사용)
PL/SQL: 오라클의 절차적 SQL 확장 언어
권한은 보안과 직결되므로 신중한 관리 필수
✅ 오늘의 핵심 요약
개념 역할
VIEW 복잡한 SELECT 결과를 저장한 가상 테이블
SEQUENCE 자동 증가 번호 생성기
INDEX SELECT 성능 최적화
DCL 권한 제어 (GRANT / REVOKE)