180312 Oracle 무결성 제약 조건 & 가상 테이블 View - RYUDONGJIN/Memo_wiki GitHub Wiki

무결성 제약조건

  • 테이블에 부적절한 자료가 입력되는 것을 방지하기 위해서 테이블을 생성할 때 각 컬럼에 대해서 정의하는 여러가지 규칙
  • NOT NULL : NULL을 허용하지 않는다
  • UNIQUE : 중복된 값을 허용하지 않는다. 항상 유일한 값
  • PRIMARY KEY : NULL을 허용하지 않고 중복된 값을 허용하지 않는다. NOT NULL + UNIQUE
  • FOREIGN KEY : 참조되는 테이블의 칼럼의 값이 존재하면 허용
  • CHECK : 저장 가능한 테이터 값의 범위나 조건을 지정하여 설정한 값만을 허용.
- 제약조건 살피기
SELECT  * FROM user_cons_columns;
CREATE TABLE emp01 (
empno number(4) UNIQUE,
ename varchar2(10) NOT NULL,
job varchar2(9),
deptno number(2)
);

참조 무결성을 위한 FOREIGN KEY 제약조건

  • 참조 무결성은 테이블 사이의 관계에서 발생하는 개념.
  • 자식테이블에 참조의 무결성을 위해 특정 컬럼에 외래 키를 설정하였다면 새로 데이터를 추가할 때마다 부모 테이블에 부모키로 설정된 컬럼을 살핀다.
  • 부모키로 설정된 컬럼에 존재하는 값만 추가하고 존재하지 않는 값이라면 추가하지 않는다.

CHECK 제약 조건

  • 입력되는 값을 체크하여 설정된 값 이외의 값이 들어오면 오류 메세지와 함께 명령이 수행되지 못하게 하는 것
  • 조건으로 데이터의 값의 범위나 특정 패턴의 숫자나 문자값을 설정할 수 있음

DEFAULT 제약조건

  • 아무런 값을 입력하지 않았을 때 디폴트 제약의 값이 입력된다.

뷰의 개념

  • 물리적인 테이블을 근거한 논리적인 가상 테이블
  • 기본 테이블에서 파생된 객체로서 기본 테이블에 대한 하나의 쿼리문
  • 사용자에게 주어진 뷰를 통해서 기본 테이블을 제한적으로 사용
  • 뷰는 이미 존재하고 있는 테이블에 제한적으로 접근하도록 한다
  • 뷰를 생성하기 위해서는 실질적으로 데이터를 저장하고 있는 물리적인 테이블이 존재해야 하는데 이 테이블을 기본 테이블이라고 함.

CREATE OR REPLACE VIEW

  • 뷰를 만들때 CREATE OR REPLACE VIEW 대신 그냥 CREATE VIEW 를 만들면 구조를 바꾸기 위해 기존 VIEW 를 삭제하고 다시 만들어야한다. CREATE OR REPLACE VIEW는 새로운 뷰를 만들 수 있을 뿐 아니라 기존에 뷰가 존재하더라고 삭제하지 않고 새로운 구조의 뷰로 변경 가능
CREATE VIEW emp_view30
AS
SELECT empno, ename, deptno
FROM emp_copy
WHERE deptno=30;

SELECT * FROM emp_view30;

FORCE

  • 기존 테이블의 존재 여부에 상관없이 뷰를 생성

WITH CHECK OPTION

  • 해당 뷰를 통해서 볼 수 있는 범위 내에서만 UPDATE 또는 INSERT 가 가능

WITH READ ONLY

  • 해당 뷰를 통해서는 SELECT만 가능하며 UPDATE/INSERT/DELETE 금지
  • 만약 이것을 생략한다면 뷰를 사용하여 추가, 수정, 삭제가 모두 가능