Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

개발 일기

SQL의 Constraint(제약조건)에 대해 알아보쟈! 본문

SQL

SQL의 Constraint(제약조건)에 대해 알아보쟈!

개발 일기 2021. 7. 19. 00:56

안녕하세요!!

 

오늘은 SQL의 DDL(데이터 정의어)와 연결되는 Constraint(제약조건)에 대해 정리해보겠습니다!

 

제약조건(Constraint)란??

 - Oracle 서버는 제약조건을 이용하여 적절치 않은 데이터가 저장되는 것을 방지

 

제약조건 특징

 - 테이블에 데이터가 저장, 갱신, 삭제 될 때마다 지정된 제약조건을 반드시 만족해야 하므로 데이터 무결성 강화

 - 다른 테이블이 참조되고 있는 테이블이 삭제되는 것을 방지

 

제약조건 사용 지침

 - 적절한 이름을 지정하여 제약조건을 사용한다, 지정하지 않으면 자동으로 SYS_Cn 형식으로 임의 저장 관리 어려움

 - 테이블 생성과 동시에 지정할 수 있고, 테이블 생성 후 추가 할 수도 있다.

 - 제약 조건은 테이블 수준 및 컬럼 수준, 2가지 방법으로 지정

 - 제약 조건은 USER_CONSTRAINTS 데이터 딕셔너리에서 검색 가능

 

* 제약조건 정의 방법

 1) 테이블 수준 지정 방법

  - 한 개 이상의 컬럼에 한 개의 제약 조건을 정의 할 수 있다.

  - NOT NULL 제약조건을 제외한 모든 제약조건 정의 가능하다.

  - 컬럼 정의와 별도로 지정한다.

 

 2) 컬럼 수준 지정 방법

  - 한 개의 컬럼에 한 개의 제약 조건만 정의 가능하다.

  - 모든 제약조건 정의 가능하다.

 

 

(데이터 무결성) 제약조건 종류

 - NOT NULL : 이 열은 null값을 포함하지 않음을 지정

 - UNIQUE KEY : 테이블의 모든 행에 대해 유일해야 하는 값을 가진 열 또는 열의 조합을 지정

 - PRIMARY KEY : 유일하게 테이블의 각 행을 식별

 - FOREIGN KEY : 열과 참조된 테이블의 열 사이의 외래키 관계를 적용하고 설정

 - CHECK : 참이어야 하는 조건을 지정

 


 

Constraint 예시

 

1. NOT NULL

name, hiredate column은 not null 설정 후 생성

 

-- error case

not null 에 null 삽입 시 에러 발생 

 


2. UNIQUE

id, email column을 unique 설정

 -- error case

1번 'xxx' 아이디 삽입 후 2번 'xxx' 아이디 삽입 시 에러 발생


3. PRIMARY KEY (unique + not null)

no calumn에 primary key 설정

 

 -- error case

no '1' 삽입 후 '1' 재 삽입 시 에러 발생

 

 -- error case

PRIMARY KEY는 NULL을 허용하지 않음

 

4. FOREIGN KEY

 - parent table = 부모 테이블, 참조되는 테이블

 - child table = 자식 테이블, 참조하는 테이블

 

 

-- parent table(dept2) 생성 후 데이터 삽입

 

 

-- child table(emp2) 생성 후 FK 설정

dept2 테이블의 deptno를 FK로 references

 

 

--childe table 데이터 삽입 시 FK 값 설정

 

 

emp2 테이블 데이터 조회 시 deptno 값(FK) 조회 확인

 

 

 

 

오늘은!! SQL의 제약조건에 대해서 공부해보았습니다.

 

감사합니다.

Comments