오라클 DB(sql)_기초 18 (제약조건)

데이터베이스 2021. 5. 1. 20:00

<무결성 보장 방법>

  1. 응용 프로그램의 코드내부에서 규정을 지어서
  2. Column 무결성-데이터 타입과 구조에따른 데이터 입력
  3. 제약조건 무결성 -key의 형태로 설치해서 조건에 맞는것만 입력
  4. View객체 보장

제약조건

  • 종속된 테이블의 삭제를 방지함.
  • Not null : 반드시 값이 있어야 한다 / Unique: 중복을 허용하지 않음. / PK: Nn + UK
    FK : PK, UK column
    참조 / CHECK: 조건(salary>100같은) 것만 저장하겠다.
  • 제약조건에 이름을 지정하지 않으면 시스템이 SYS_Cn(001,002)형식의 이름을 생성하지만  추후 설정을 편하게 하기위해 이름을 반드시 설정해 주는 것이 좋음.
  • 조건 생성: Create Table 명령어에 포함 / Alter table add 명령어로 추가
  • 데이터 딕셔너리에 정보가 저장됨.

***** 제약조건 선언부: Constraint 제약조건 이름// 제약조건 유형// (column_name) (규칙: 테이블 _컬럼명_제약조건 약어)
****** PK, FK, UK, CK 경우 테이블과 컬럼레벨 모두에서 선언 가능함.(99.99% 테이블레벨에서만)
******
not Null 경우 오직 컬럼레벨에서만 선언 가능함.

 

  • 제약조건 선언 레벨
    :
    테이블레벨 선언 - 컬럼을 선언하고 제약조건을 마지막절에 포함 시켜서 수행하는
    : 컬럼레벨 - 컬럼 옆에다가 바로 제약조건을 서술하는
  •  
  • 위에서 constraint 제약조건 이름을 빼고 써도 . 이름은 sys_count 형식으로 자동으로 네이밍됨.
  • 현업에서는 not null 조건을 걸때만 제약조건 이름을 쓰지 않음. 대부분 sys_cn 형태는 not null 제약조건으로 보면 되고, 이름이 있는 경우 나머지 4(PK, UK, FK, CK).
     
  • FK(Foreign key) ; 참조할 부분(테이블과 컬럼명) REFERENCE 절로 적어줌.
     

 

 

  • CHECK 제약조건: 제약조건 뒤에 행이 만족시켜야 하는 조건문을 넣어줌.
     
  • 제약조건 추가 구문
    : Alter table add constraint
    사용-테이블레벨에서의 제약조건 설정법 유사
    : ADD  명령어로는 pk, ck, uk, fk 4가지만 추가 가능
    : not null 경우는 modify 명령어로 넣어줌
    ( modify coumn constraint 제약조건이름 not nul )
     
  • 제약조건 삭제 (Drop Constraint)
    : Primary key
    삭제의 경우 FK 의해 참조되어있는 경우가 많아 Cascade 명령어를 사용하여
    삭제하도록
    .
     
  • Disable constraint
    >>
    제약조건이 비활성화 . Enable 활성화가 가능함
    >> Disable 시긴후 제약조건에 맞지 않는 데이터가 입될 경우 Enable시킬 없음.
     
  • User_constraint 테이블을 조회 >> 모든 제약조건의 정의 이름을
  • User_Constraint_column 뷰를 통해 >> 제약조건 이름과 연관된 열을

 

admin