제약 조건
- 이상한 (결함이 있는) Data가 입력되는 것을 방지 : 무결성 원칙
- 무결성 원칙을 위반하면 에러 발생시킴
1. 제약 조건 조회
- SELECT * FROM USER_CONSTRAINTS;
- SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME = '테이블명';
2. 제약 조건 종류
1) NULL : NULL값 허용, Default
2) Not Null : NULL값 허용하지 않음
3) Unique : 같은 값을 허용하지 않음 (중복 불가), NULL 입력 가능 ( NULL도 중복 불가 )
4) Primary Key : NOT NULL + Unique
5) Default : 값을 넣지 않으면 기본값 적용
6) Check : 조건에 맞는 값만 허용 (WHERE절의 조건식과 같은 형식)
7) Foreign Key
- 다른 테이블을 참조
- 다른 테이블과 관계(Relation) 처리시 사용
- 참조되는 테이블 : 부모테이블
- 참조하는 테이블 : 자식테이블
- 부모테이블의 컬럼은 기본키 (Primary Key or Unique) 로 지정된 컬럼이어야 함
- 부모테이블의 테이블을 삭제하려면 자식테이블에서 참조하는 row가 없어야만 삭제 가능
설명1. 제약조건을 사용하는 이유
부서가 없는 사원이 있는가?
어떤 사원이든 부서는 꼭 있어야 한다.
사원의 정보에서 DEPARTMENT_ID가 없으면 안된다.
근데 사원의 정보에다 없는 DEPARTMENT_ID의 값을 넣으면 될까? 당연히 안된다.
그래서 만약에 어떤 테이블에 값이 꼭 있어야 한다던가,
어떤 컬럼의 값이 어떤 조건에 따라 정해져야 할 경우에 제약조건이 꼭 필요하다.
설명2. 제약조건 보는 방법
SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME = 'EMPLOYEES';
CONSTRAINT_NAME 컬럼을 보면 _ 의 맨 앞은 테이블명, 그리고 다음은 컬럼명, 다음은 제약조건 명이다.
NN은 NOT NULL, UK는 Unique, PK 는 Primary Key 등등 이런식으로 표시해 놓았다.
그리고 SEARCH_CONDITION 에서는 조건들이 나와있다.
설명3. Foreign Key
EMPLOYEES 테이블에 신규 데이터가 들어오면 DEPARTMENT_ID에 데이터들 넣어야 된다.
그러면 DEPARTMENTS테이블의 DEPARTMENT_ID 컬럼을 참조한다는 소리이다.
만약에 없는 값을 넣으면 안되기 때문에,
참조를 통해서 무조건 DEPARTMENTS 테이블에 있는 값만을 넣을 수 있게 만들어준다.
'웹개발 풀스택 과정 > Database(Oracle)' 카테고리의 다른 글
23일차(2022.01.24) _ JDBC - 테이블 간의 관계를 Java에서 표현하는 방식 (0) | 2022.01.24 |
---|---|
23일차(2022.01.24) _ Join 기본 (0) | 2022.01.24 |
22일차(2022.01.21) _ SubQuery - 테이블 간의 연결 (0) | 2022.01.21 |
22일차(2022.01.21) _ 명령어 DML - SELECT문 GROUP BY, HAVING절 (0) | 2022.01.21 |
22일차(2022.01.21) _ Function 기본 - 그룹함수, 단일함수 기본 (0) | 2022.01.21 |