제약조건
제약 조건(Constraint)은 테이블에 저장할 데이터에 제약하는 특수한 규칙을 뜻한다.
제약 조건을 설정한 열에는 조건에 맞지 않는 데이터를 저장할 수 없습니다. 이 제약 조건은 데이터 베이스 데이터의 정확성을 유지하기 위한 목적으로 사용하며 앞서 살펴본 데이터 정의어(DDL, Data Definition Language)로 설정할 수 있다.
오라클에서 사용하는 제약 조건은 테이블의 특정 열에 지정한다. 제약 조건 지정 방식에 따라 기존 데이터의 수정이나 삭제 가능 여부도 영향을 받는다. 예를 들어 로그인에 사용할 아이디나 이메일 주소를 중복되지 않도록 설정할 수 있다. 또는 회원 가입할 때 이름, 생년월일 등의 데이터는 필수 입력 항목으로 두어 빈값(Null)을 허용하지 않도록 지정할 수 있다.
- 제약 조건의 종류
- NOT NULL : 지정한 열에 NULL을 허용하지 않습니다. NULL을 제외한 데이터의 중복은 허용된다.
- UNIQUE : 지정한 열이 유일한 값을 가져야한다. 즉 중복될 수 없습니다. PRIMARY KEY는 테이블에 하나만 지정 가능하다.
- FOREIGN KEY : 다른 테이블의 열을 참조하여 존재하는 값만 입력할 수 있다.
- CHECK : 설정한 조건식을 만족하는 데이터만 입력 가능
데이터 무결성 [ Data Integrity ]
데이터에 저장되는 데이터의 정확성과 일관성을 보장한다는 의미이며 이를 위해 항상 유지해야하는 기본 규칙을 가지고 있습니다. 제약 조건은 이러한 데이터 무결성을 지키기 위한 안정장치로서 중요한 역할을 한다. 그리고 테이블 데이터의 삽입, 수정, 삭제 등 모든 과정에서 지켜야합니다.
- 영역 무결성 [ Domain Intergrity, 도메인 무결성 ]
: 열에 저장되는 값의 적정 여부를 확인, 자료형, 적절한 형식의 데이터, NULL 여부 같은 정해 놓은 범위를 만족하는 데이터
- 개체 무결성 [ Entity Intergrity ]
: 테이블 상 기본 키는 반드시 값을 가지고 있어야 하며, NULL이 될 수 없고, 중복이 될 수 없다.
- 참조 무결성 [ Referential Intergrity ]
: 참조 테이블의 외래키 값은 참조 테이블의 기본키로서 존재해야 하며 NULL이 가능
빈 값을 허락하지 않는 NOT NULL
테이블을 생성하며 제약 조건 지정
- NOT NULL은 특정 열에 데이터의 중복 여부와는 상관없이 NULL의 저장을 허용하지 않는 제약조건이다.
- 반드시 열에 값이 존재해야만 하는 경우에 지정합니다.
제약 조건 확인
- OWNER : 제약 조건 소유 계정
- CONSTRAINT_NAME : 제약 조건 이름
- CONSTRAINT_TYPE : 제약 조건 종류
+ C : CHECK, NOT NULL
+ U : UNIQUE
+ P : PRIMARY KEY
+ R : FOREIGN KEY
- TABLE_NAME : 제약 조건을 지정한 테이블 이름
제약 조건 이름 직접 지정
TEL 열에 NOT NULL 제약 조건 추가하기
생성한 테이블에 제약 조건 이름 직접 지정해서 추가하기
생성한 제약 조건 이름 변경하기
- RENAME CONSTRAINT
중복되지 않는 값 : UNIQUE
UNIQUE 제약 조건은 열에 저장할 데이터의 중복을 허용하지 않고자 할 때 사용합니다.
NULL 값이 존재하지 않음을 의미하기 때문에 중복 대상에서는 제외됩니다.
즉 UNIQUE제약조건을 지정한 열에 NULL은 여러 개 존재할 수 있습니다.
UNIQUE 지정 방법은 NOT NULL 제약 조건과 동일합니다.
UNIQUE 삽입
생성된 UNIQUE 확인하기
유일하게 하나만 존재하는 값 : PRIMARY KEY
- PRIMARY KEY 제약 조건은 UNIQUE와 NOT NULL 제약 조건의 특성을 모두 가지는 제약 조건이다.
- 즉 데이터 중복을 허용하지 않고 NULL도 허용하지 않습니다.
- NULL이 아닌 유일한 값을 가지므로 주민등록번호나 EMP테이블의 사원 번호같이 테이블의 각 행을 식별하는 데 활용 된다.
- PRIMARY KEY 제역 조건은 테이블에 하나 밖에 지정할 수 없습니다. 그리고 특정 열을 PRIMARY KEY로 지정하면 해당 열에는 자동으로 인덱스가 만들어진다.
위는 PRIMARY KEY 생성 방법이다.
다른 테이블과 관계를 맺는 FOREIGN KEY
- 외래키, 외부키로도 부르는 FOREIGN KEY는 서로 다른 테이블 간 관계를 정의하는 데 사용하는 제약 조건입니다.
특정 테이블에서 PRIMARY KEY 제약 조건을 지정한 열을 다른 테이블의 특정 열에서 참조하겠다는 의미로 지정 가능
CONSTRAINT_TYPE열 값이 R일 경우 외래키를 의미하며, R_CONSTRAINT_NAME의 PK_DEPT는 DEPT테이블의 PRIMARY KEY, 즉 DEPT 테이블의 DEPTNO 열을 참조합니다.
데이터 형태와 범위를 정하는 CHECK
- CHECK 제약 조건은 열에 저장할 수 있는 값의 범위 또는 패턴을 정의할 때 사용한다.
- 예를 들어 시간을 저장할 열 데이터는 0에서 23까지의 숫자만 허용한다. CHECK 제약 조건 역시 다른 제약 조건과 마 찬가지로 지정할 수 있다.
LENGTH(LOGIN_PWD)>3 : LOGIN_PWD 열 길이가 3이상 인 데이터만 저장 가능하다는 뜻이다. 즉 비밀번호는 3글자 이상만 저장할 수 있도록 제한을 둔 것이다.
기본값을 정하는 DEFAULT
제약조건과는 별개로 특정 열에 저장할 겂이 지정되지 않았을 경우에 기본값을 지정할 수 있다.
※ 제약 조건 비활성화, 활성화
비활성화
ALTER TABLE [테이블 명] DISABLE [NOVALIDATE / VALIDATE ] CONSTRAINT [제약 조건 명];
활성화
ALTER TABLE [테이블 명] ENABLE [NOVALIDATE / VALIDATE ] CONSTRAINT [제약 조건 명];
'Programming > Database' 카테고리의 다른 글
[Database] DML(Data Manipulation Language) (0) | 2023.12.01 |
---|---|
Oracle Database 설치 및 동작 확인 (0) | 2023.11.30 |
데이터베이스8 : 인덱스와 시퀀스 (0) | 2020.06.10 |
데이터베이스7 (0) | 2020.06.05 |
데이터베이스 6 (0) | 2020.06.03 |