본문 바로가기

Database/Oracle

제약 조건 설정

제약 조건 : 무결성을 보장하기 위해 테이블을 구성하고 있는 컬럼들에 부가하는 것

 

○ NOT NULL - 값이 있어야 함 // 컬럼 레벨만 추천

○ UNIQUE - 중복허용, null 허용

 PRIMARY KEY   

○ FOREIGN KEY - 외래키는 PK와 UK만을 참조한다

○ CHEKC - 사용자가 조건을 설정

 

제약조건 지침

 

○ 제약조건 이름을 지정하지 않으면 Sys_cn 형식 이름으로 자동 지정

○ 제약조건 생성시기는 테이블이 생성될 때 혹은 테이블이 생성된 후 이다. [주로 생성될 때]

○ 데이터 딕셔너리에서 제약조건 확인 가능.

 

create table xxx

{ x number(1) constraint [제약조건이름] [제약조건], // 컬럼 레벨

 y number(1) not null, // constraint 생략, 제약조건명을 자동지정

constraint [제약조건이름] [제약조건유형] [컬럼명] // 테이블 레벨

}

 

FOREIGN KEY 는 참조 대상을 REFERENCES로 지정해야함

ex: CONSTRAINT emp_dept_fk foreign key (department_id) // emp 테이블의 dept_id

REFERENCES departments(department_id), // dept 테이블의 dept_id

 

FOREIGN KEY뒤에 붙는 수식어

ON DELETE CASECADE : 부모 테이블의 행이 삭제되는 경우, 자식 테이블의 종속 행 삭제

ON DELETE SET NULL: 종속 외래 키 값을 널로 변환 함.

 

 

CHECK 조건

 

constraint emp_salary min 

CHECK (salary > 0),  // salary의 범위나 최소값 등.

 

not null 제약조건은 컬럼이 앞에 오므로, modify 명령어로 선언한다.

 

 

 

drop table dept cascade; 를 하면 이를 참조하는 fk 테이블이 같이 지워진다.

 

drop table dept cascade constraints; 를 하면 fk 제약조건만 사라진다.

 

 

 

disable constraint 는 제약조건을 사용안함 설정한다

enable constraint 는 제약조건을  사용함 설정을 하나, 제약조건에 위배되지 않아야 한다.

test
a number(5) pk
b number(5) nn


test1
c number(5) pk
d number(5) uk

 


e number(5) fk -> test a 참조  // 이부분은 alter문을 통해 제약조건을 추가하였다.

* alter문에서 제약조건을 추가할 때 괄호를 열고 닫지 않는다.

 

최근 sql문장에 대해 save [파일.sql] 를 통해 스크립트로 저장을 할 수 있다.

이는 기본적으로 

C:\oraclexe\app\oracle\product\11.2.0\server\bin 해당경로에 저장이 된다.

@[파일명].sql 을 통해서 스크립트를 불러올 수 있다.

 

다음과 같이 여러개의 문장을 한꺼번에 실행할 수도 있으며, 다수의 쿼리를 처리하고

확인하기에 보다 편한 방법을 제공한다.

 

 

같은 문장을 실행하게 되면 에러가 나는데 이것을 막기 위해

drop 명령어를 머리에 추가해 제약조건만을 삭제하도록 한다.

'Database > Oracle' 카테고리의 다른 글

시퀀스  (0) 2021.01.06
뷰(view)  (0) 2021.01.06
데이터 정의어 [DDL] 의 활용  (0) 2021.01.05
데이터 조작어 [DML] 와 트랜잭션  (0) 2021.01.05
Select 문 -3 (join)  (0) 2020.12.31