ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 제약조건 생성시 옵션
    SQL 2020. 2. 10. 10:53

    ● PIRMARY KEY 제약조건

    - PRIMARY KEY 제약 조건 생성시 오라클 DBMS는 해당 컬럼으로 UNIQUE INDEX를 자동으로 생성

     

      INDEX : 해당컬럼으로 미리 정렬을 해놓은 객체

     

      정렬이 되어 있기 때문에 찾고자 하는 값이 존재하는지 빠르게 알 수 있다.

     

      만약, 인덱스가 없다면 새로운 데이터를 입력할 때 중복된 값을 찾기 위해서

     

      최악의 경우 테이블의 모든 데이터를 찾아야 한다.

     

      하지만 인덱스가 있으면 이미 정렬이 되어있기 때문에 해당 값의 존재 유무를 빠르게 알 수 있다.

     

      더 정확히 말하면 UNIQUE 제약조건에 의해 인덱스가 생성된다.

     

    ● FOREIGN KEY 제약조건

    - 참조하는 테이블에 값이 있는지를 확인해야 한다.


      그래서, 참조하는 컬럼에 인덱스가 있어야지만 FOREING KEY 제약을 생성할 수 있다.

     

     

     

       ○ FOREIGN KEY 생성시 옵션

        - FOREIGN KEY (참조 무결성) : 참조하려는 테이블의 컬럼에 존재하는 값만 입력될 수 있도록 제한


           EX) emp 테이블에 새로운 데이터를 입력시 deptno 컬럼에는 dept 테이블에 존재하는

     

                부서번호만 입력 될 수 있다.

     

        ○ FOREIGN KEY가 생성됨에 따라 데이터를 삭제할 때 유의점

     

         - 어떤 테이블에서 참조하고 있는 데이터를 바로 삭제할 수 없음


            EX) emp.detpno ==> dept.deptno 컬럼을 참조하고 있을 때


            dept.detpno의 데이터를 삭제할 수 없음

          ->  DELETE 옵션

                   1. ON DELETE CASCADE : 부모가 삭제될 경우(dept_test) 참조하는 자식 데이터도 같이

                      삭제한다(emp_test)


                       * 위험해서 잘 안씀

     


                   2. ON DELETE SET NULL : 부모가 삭제될 경우(dept_test) 참조하는

     

                      자식 데이터의 컬럼을 null로 설정

     

     

         ● CHECK 제약조건

      

          - 컬럼에 들어가는 값의 종류를 제한할 때 사용

     

             EX) 급여 컬럼을 숫자로 관리시 급여엔 음수가 들어 갈 수 없음

     

                   일반적인 경우 급여값은 > 0

                   

                    CHECK 제약을 사용할 경우 급여값이 0보다 큰 값이 들어가는지 검사 가능

     

                    혹은 emp 테이블의 job 칼럼에 들어가는 값을 다음 4가지로 제한가능

     

                      'SALESMAN', 'PRESIDENT', 'ANALYST', 'MANAGER'

     

     

          - 테이블 생성시 컬럼 기술과 함께 CHECK 제약생성

     

              * emp_test 테이블의 sal 컬럼이 0보다 크다는 CHECK 제약 조건 생성 쿼리

      

     

    'SQL' 카테고리의 다른 글

    테이블 변경  (0) 2020.02.10
    CTAS (Create Table AS)  (0) 2020.02.10
    제약조건  (0) 2020.02.07
    데이터 타입.  (0) 2020.02.07
    데이터 타입  (0) 2020.02.07

    댓글

Designed by Tistory.