안녕하세요~!
데이터베이스에서 주키, 외부키, 고유키, not null 등 여러 테이블 제약조건 정리하였으니 참고하시기 바랍니다~!
1> 제약조건
- 테이블 단위에서 데이터의 무결성 보장하는 규칙
- 데이터, 테이블 수정 작업의 경우 잘못된 트랜젝션 수행을 방지하는 역할
- 테이블 간 제약조건이 있어서 종속성이 있는 경우 테이블 삭제 방지
2> PK (Primary Key)
- 주 식별자키로 테이블의 모든 데이터를 식별하는 컬럼
- 중복 불가, NULL 불가
- 함수적 종속 관계
2-1> PK 주키 (=주식별자키) 생성
- 테이블 레벨 정의
CREATE TABLE TEST_TABLE (
…
CONSTRAINT 제약조건 PRIMARY KEY (컬럼)
);
- 컬럼 레벨 정의
CREATE TABLE 테이블명 (
컬럼 데이터타입 CONSTRAINT 제약조건 PRIMARY KEY,
…..
);
- 테이블 생성 시 단 한 개의 PK 설정
- 중복이나 NULL 불가
- 고유 인덱스 자동 생성
- PK 지정 가능한 컬림이 여러 개 있을 경우, 많이 사용되고 간단한 컬럼 선택
3> FK (Foreign Key)
- 외부 식별자키로 테이블 간의 관계 의미
- 두 테이블 간의 종속이 필요한 관계이면 그 접점이 되는 컬럼을 FK로 지정하여 서로 참조할 수 있도록 관계를 맺어준다.
- 테이블 간 잘못된 매핑을 방지하는 역할
3-1> FK 외부키 (=참조키) 생성
- 테이블 레벨 정의
CREATE TABLE 테이블명 (
…
CONSTRAINT 제약조건 FOREIGN KEY (컬럼)
REFERENCE 참조테이블 (참조컬럼) [ON DELETE CASCADE]
);
- 컬럼 레벨 정의
CREATE TABLE 테이블명 (
컬럼명 데이터타입 CONSTRAINT 제약조건 FOREIGN KEY
REFERENCE 참조테이블 (참조컬럼) [ON DELETE CASCADE],
…
);
- 테이블 생성 시 FK 생성
- FK 선언한 테이블이 하위 테이블
- 참조하는 테이블은 부모(상위) 테이블
- 상위 테이블, 참조할 컬럼이 존재 필요
- 참조가 되면 해당 상위 테이블과 데이터 삭제나 변경 불가
- ON DELETE CASCADE : 참조되는 상위 테이블 행에 대한 DELETE 허용 (상위, 하위 같이 삭제)
- 참조하는 컬럼 데이터 타입 (자료형) 일치
- 참조되는 컬럼은 PK, UK만 가능
4> UK (Unique Key)
CREATE TABLE 테이블명 (
…
CONSTRAINT 제약조건 UNIQUE (컬럼)
);
CREATE TABLE 테이블명 (
컬럼 데이터타입 CONSTRAINT 제약조건 UNIQUE,
….
);
- 고유키
- 중복된 값을 허용하지 않고, 여러 개 NULL 값은 허용
- 고유 인덱스 자동 생성
5> NOT NULL 설정
CREATE TABLE 테이블명 (
컬럼 데이터타입 CONSTRAINT 제약조건 NOT NULL,
….
);
- 테이블 레벨 정의 불가 (컬럼 정의 시 끝에 NOT NULL 조건 추가)
- 지정된 컬럼은 NULL 값 입력 불가 (INSERT 할 때 필수 값이다.)
- 가능한 모든 컬럼에 NULL 허용하지 않게 NOT NULL 조건을 추가하는 것이 좋다.
6> Check 설정
CREATE TABLE 테이블명 (
….
CONSTRAINT 제약조건 CHECK (조건)
);
CREATE TABLE 테이블명 (
컬럼 데이터타입 CONSTRAINT 제약조건 CHECK (조건),
…
);
- 행에 입력될 데이터의 조건을 정의
- 조건은 WHERE 절 기술하는 조건 형식과 동일
- 해당 컬럼에 대해서 데이터가 insert 될 때 조건과 틀리게 insert 되면 ORA-02290 체크 제약조건 오류가 발생됩니다.
ex : CONSTRAINT test_ch_num CHECK (LENGTH(num) = 10);
-> 테이블 생성 시 위와 같이 num 컬럼에 대해 길이가 10이라는 조건을 걸어주면, 실제 데이터 INSERT 시 해당 num 컬럼이 10이 아닐경우 insert 오류가 발생됩니다.
7> 제약조건 추가 / 삭제
- 제약 조건 추가 (NOT NULL 조건은 MODIFY 명령어로 추가)
ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건 제약조건타입
- NOT NULL 조건 추가
ALTER TABLE 테이블명
MODIFY 컬럼 CONSTRAINT 제약조건 NOT NULL;
- 제약조건 삭제 (CASCADE : PK, UK가 삭제되면, 참조된 FK 삭제)
ALTER TABLE 테이블명
DROP PRIMARY KEY | UNIQUE (컬럼) | CONSTRAINT 제약조건 [CASCADE]
아래 데이터베이스 관련 내용 참고하시기 바랍니다!!
[IT/Data] - [Database] 데이터베이스 테이블 생성 & 테이블 데이터타입 개념
[IT/Data] - SQL 쿼리 기본함수 정리 및 예시 (UPPER, CONCAT, INITCAP, SUBSTR)
[IT/Data] - 데이터베이스 INDEX 개념과 INDEX 사용방법 알아보자. – by.SC
[IT/Data] - 데이터베이스 TRIGGER 개념, TRIGGER 사용방법 알아보자. – by.SC
[IT/Data] - [SQL 기초] ORACLE JOIN 동작 원리
이상으로 감사합니다.~!!!
'IT ▶ > Database' 카테고리의 다른 글
[Database] 데이터베이스 테이블 컬럼 추가, 삭제, 변경 방법 (0) | 2020.03.09 |
---|---|
데이터베이스 비등가 조인, 등가 조인 (JOIN) / 트랜잭션 (Transaction) 개념 (0) | 2020.03.07 |
[Database] 데이터베이스 테이블 생성 & 테이블 데이터타입 개념 (0) | 2020.03.06 |
데이터베이스 SQL 기본함수 정리 (숫자, 날짜 함수) (0) | 2020.03.02 |
[PL/SQL 기초] PL/SQL 이란? - 변수, 상수, %TYPE, 커서 (0) | 2020.02.19 |