데이터베이스 -12

김정현·2024년 5월 16일
0

데이터베이스

목록 보기
11/16

제약조건

제약 조건

CREATE TABLE 테이블명 (
	컬럼명 자료형 [제약조건],
    ...
);

제약 조건의 종류

1. 제약 조건이란?

1) 제약 조건은 테이블의 특정 열에 지정
2) 제약 조건을 지정한 열에 제약 조건에 부합하지 않는 데이터를 저장할 수 없습니다.
3) 제약 조건 지정 방식에 따라 기존 데이터의 수정이나 삭제 가능 여부도 영향을 받습니다.

2. 종류

1) NOT NULL : NULL을 허용하지 않음, 반드시 값을 입력해야 할때(필수 항목)
2) UNIQUE : 중복 X, NULL은 중복 허용
3) PRIMARY KEY : 기본키, 중복 X, NULL 허용 X
4) FOREIGN KEY : 다른 테이블의 기본키를 참조하는 키, 참조 무결성 제약조건
,부모 레코드에 자식 레코드가 있는 경우 부모 레코드 삭제 불가

참고)
JOIN시 외래키가 꼭 될 필요는 X, 공통적인 테이블 간의 값을 통해서만 조인

5) CHECK : 조건(비교 조건 ..)에 따른 데이터 입력 통제

3. 데이터 무결성

1) 데이터베이스에 저장되는 데이터의 정확성과 일관성을 보장한다는 의미

2) 종류
-도메인 무결성 제약조건 : 자료형 관련
-개체 무결성 제약조건 : 기본키와 관련 - 중복 X, NULL 허용 X
-참조 무결성 제약조건 : 외래키와 관련,

- 빈값을 허락하지 않는 NOT NULL

  1. 테이블을 생성하며 제약 조건 지정
    EX)아이디, 비밀번호, 회원명

  2. 제약 조건 확인
    1) USER_CONSTRAINTS 데이터 사전을 활용
    CONSTRAINT_TYPE
    C : 일반적인 제약조건, NOT NULL, CHECK
    P : Primary Key, 기본키
    R : Foreign Key, 외래키
    U : Unique

USER_IND_COLUMNS: 인덱스포함, 제약조건 적용 컬럼 정보
  1. 제약 조건 이름 직접 지정
컬럼명 자료형 CONSTRAINT 제약조건명 제약조건

테이블명_컬럼명_제약조건 종류
  1. 이미 생성한 테이블에 제약 조건 지정

1) NOT NULL 제약 조건의 추가는 ALTER 명령어와 MODIFY 키워드를 사용

ALTER TABLE 테이블명 MODIFY 컬럼명 [자료형][제약조건]

-컬럼명(필수)
-자료형, 제약조건은 적어도 1개 이상

2) TEL 열에 NOT NULL 제약 조건 추가하기
3) TEL 열 데이터 수정하기
4) NOT NULL 제약조건 추가하기

  1. 제약 조건 삭제
    -ALTER 명령어에 DROP CONSTRAINT 키워드를 사용하면 지정한 제약 조건을 삭제할 수 있습니다.
ALTER TABLE 테이블명 DROP CONSTRAINTS 제약조건명;

중복되지 않는 값 UNIQUE

  1. 요약
    1) 열에 저장할 데이터의 중복을 허용하지 않고자 할 때 사용
    2) NULL은 값이 존재하지 않음을 의미하기 때문에 중복 대상에서는 제외됩니다.
    3) UNIQUE 지정 방법은 NOT NULL 제약 조건과 동일합니다.

  2. 테이블을 생성하여 제약 조건 지정

  3. 제약 조건 확인

  4. 중복을 허락하지 않는 UNIQUE
    1) TABLE_UNIQUE 테이블에 데이터 중복하여 입력하기

  5. UNIQUE 제약 조건과 NULL 값

  6. 테이블 생성하며 제약 조건 이름 직접 지정

  7. 이미 생성한 테이블에 제약 조건 지정
    ALTER TABLE 테이블명 MODIFY 컬럼명 CONSTRAINT

  8. 제약 조건 삭제

유일하게 하나만 있는 값 PRIMARY KEY
1. 요약
1) UNIQUE와 NOT NULL 제약 조건의 특성을 모두 가지는 제약 조건(데이터 중복을 허용하지 않고 NULL도 허용하지 않습니다.)
2) NULL이 아닌 유일한 값을 가지므로 테이블의 각 행을 식별하는 데 활용
3) PRIMARY KEY 제약 조건은 테이블에 하나밖에 지정할 수 없습니다.
4) PRIMARY KEY로 지정하면 해당 열에는 자동으로 인덱스가 만들어집니다.

  1. 테이블을 생성하며 제약 조건 지정하기
    1) 테이블을 생성할 때 특정 열에 PRIMARY KEY 설정하기
    2) 생성한 PRIMARY KEY 확인하기
    3) 생성한 PRIMARY KEY를 통해 자동 생성된 INDEX 확인하기

  2. 테이블을 생성하며 제약 조건 이름 직접 지정하기

  3. PRIMARY KEY 제약 조건을 지정한 열 확인(중복 값을 입력했을 때)

  4. PRIMARY KEY 제약 조건을 지정한 열 확인(NULL 값을 입력했을 때)

  5. CREATE문에서 제약 조건을 지정하는 다른 방식

다른 테이블과 관계를 맺는 FOREIGN KEY
1. 요약
1) 서로 다른 테이블 간 관계를 정의하는 데 사용하는 제약 조건
2) 특정 테이블에서 PRIMARY KEY 제약 조건을 지정한 열을 다른 테이블의 특정 열에서 참조하겠다는 의미로 지정

  1. EMP 테이블과 DEPT 테이블의 제약 조건 살펴보기
  2. FOREIGN KEY 지정하기
CREATE TABLE 테이블명 {
	...
    컬럼명 자료형 CONSTRAINT 제약조건이름 REFERENCES 참조 테이블(참조할 컬럼)
}

CREATE TABLE 테이블명 {
	...
    컬럼명 자료형,
    CONSTRAINT 제약조건이름 FOREIGN KEY(현재 테이블의 컬럼명) REFERENCES 참조 테이블(참조할 컬럼)
}

ALTER TABLE 테이블명 ADD CONSTRAINT FOREIGN KEY(현재 테이블의 컬럼명)
	REFERENCES 참조 테이블(참조할 컬럼명)

참고)

ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건이름 PRIMARY KEY(컬럼명, ...);
  1. FOREIGN KEY로 참조 행 데이터 삭제하기
ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명;

ON DELETE

-NO ACTION : 기본값 -부모에 자식 레코드가 있으면 삭제 불가
-CASCADE : 부모를 삭제하면 자식도 함께 삭제
-SET NULL : 부모가 삭제되면 자식 레코드의 해당 항목을 NULL 교체

데이터 형태와 범위를 정하는 CHECK

  • 열에 저장할 수 있는 값의 범위 또는 패턴을 정의할 때 사용합니다.
  1. 테이블을 생성할 때 CHECK 제약 조건을 설정하기
AGE NUMBER(3) CONSTRAINT MEM_AGE_CK CHECK(AGE >= 14),
  1. CHECK 제약 조건 확인하기

기본값을 정하는 DEFAULT

  1. 테이블을 생성할 때 DEFAULT 제약 조건 설정하기
컬럼명 자료형 DEFAULT 기본값 -> 값이 없다면 기본값으로 대체해서 처리
  1. DEFAULT로 지정한 기본 값이 입력되는 INSERT문 확인하기

제약 조건 비활성화, 활성화

0개의 댓글