[ oracle ] 테이블 생성 및 제약 조건( constraint ) > Oracle

본문 바로가기
사이트 내 전체검색

Oracle

[ oracle ] 테이블 생성 및 제약 조건( constraint )

작성자 웹지기
작성일 20-12-11 17:21 | 조회 3,131 | 댓글 0

본문

무결성을 보장하기 위한 제약조건을 거는 것.

제약 조건은 테이블 레벨로 규칙을 적용

제약 조건은 종속된 테이블의 삭제를 방지

제약조건은 컬럼에 제약을 건다.

제약조건에 이름을 지정하지 않으면 Oracle server 사 sys_Cn 형식의 이름을 생성

(이름을 지정하자)

제약조건 생성시기

 - 테이블이 생성될 때, 

 - 테이블이 생성된 후

 

제약 조건과 설명 

 - NOT NULL ( 반드시 값이 있어야 한다. NULL값을 지정하지 못하도록.. )

 - UNIQUE ( 중복을 허용하지 않겠다, NULL 허용 )

 - PRIMARY KEY ( 반드시 값이 있어야 하고 NULL 허용안됨 )

 - FOREIGN KEY ( 참조키, 외래키 - PRIMARY KEY와 UNIQUE 로 지정된 것만 가능 )

 - CHECK ( 조건을 줘서 조건에 맞는 데이터만 처리 하겠다 )

 

제약 조건 사용 방법

 (CONSTRAINT 제약조건이름 제약조건유형(부여할컬럼명))

 

마지막에 선언하는 방법 - 테이블레벨

 - CREATE TABLE test

   ( 

    a number(3),

    b number(3), 

    CONSTRAINT test_a_pk PRIMARY KEY(a),

    CONSTRAINT test_b_un UNIQUE(b)

   );


 컬럼에 직접 선언하는 방법 - 컬럼레벨

 - CREATE TABLE test

   ( 

    a number(3) CONSTRAINT test_a_pk PRIMARY KEY,

    b number(3)

   );

 

NOT NULL은 무조건 컬럼뒤에 붙인다.

 - CREATE TABLE test

   ( 

    a number(3) CONSTRAINT test_a_pk PRIMARY KEY(a) NOT NULL,

    b number(3)

   );

 

 - CREATE TABLE test

   ( 

    a number(3) NOT NULL,

    b number(3) NOT NULL,

    CONSTRAINT test_a_pk PRIMARY KEY(a)

   );

 

FOREIGN KEY 제약 조건

 (참조할 테이블의 조건도 같이 적어줘야 한다.)

  - CREATE TABLE test

   ( 

    a number(3) NOT NULL,

    b number(3) NOT NULL,

    CONSTRAINT test_a_fk FOREIGN KEY (a) REFERENCES departments(department_id)

   );

 

테이블 생성 후 제약조건 넣는 방법

 - ALERT TABLE 테이블명

   ADD 제약조건 ;

 

제약조건 삭제

 - 제약조건의 이름을 가지고 삭제

   ALTER TABLE employees

   DROP CONSTAINT mep_manager_fk ;

 

 - CASCADE 전체삭제

   ALTER TABLE departments

   DROP PRIMARY KEY CASCADE ;  

 

 - CASCADE CONSTRAINT 는 FK 삭제

   ALTER TABLE test1

   DROP (pk) CASCADE CONSTRAINT ;

 

FOREIGN KEY 제약 조건

 - FOREIGN KEY : 테이블 제약조건 레벨로 자식 테이블의 열을 정의합니다.

 - REFERENCES : 부모 테이블 및 부모 테이블에서의 해당 열을 식별합니다.

 - ON DELETE CASCADE : 부모 테이블의 행이 삭제되는 경우 자식 테이블의 종속 행을 삭제합니다.

 - ON DELETE SET NULL : 종속 외래 키 값을 널로 변환 합니다.


0 0

댓글목록 0

등록된 댓글이 없습니다.

Oracle 목록

Total 42
게시물 검색

회원로그인

접속자집계

오늘
30,919
어제
24,727
최대
61,067
전체
18,028,246

그누보드5
Copyright © www.funyphp.com. All rights reserved.