데이터 베이스에서 사용자의 의도한 데이터 값과 저장된 값은 일치 해야 한다.

정확한 데이터 값을 유지 하기 위해서 개체 무결성,참조무결성,도메인 무결성을 유지해야 한다.

제약조건 확인

select * from ALL_CONSTRAINTS
  where TABLE_NAME='emp';

제약조건 (Constraint)

기본키(PRIMARY KEY) 제약 조건

UNIQUE + NOT NULL 을 만족해야 한다.

테이블에 하나만 지정 할 수 있다.

PRIMARY KEY에는 ( UNIQUE(유일성) ,NOT NULL) 포함되어 있다.

형식

deptno NUMBER(5) CONSTRAINT id_pk PRIMARY KEY,
deptno NUMBER(5) PRIMARY KEY ,
--제약조건
  --테이블 생성
  CREATE TABLE DEPT2(
    DEPNO NUMBER(10) CONSTRAINT DEPT2_DEPTNO_PK PRIMARY KEY ,
      --약식 PRIMARY KEY
    DNAME VARCHAR2(14),
    LOC  VARCHAR2(10)
  );
  
  --제약 조건 확인 
 select * from ALL_CONSTRAINTS
  where TABLE_NAME='DEPT3';
  
  --약식
    CREATE TABLE DEPT3(
    DEPNO NUMBER(10)  PRIMARY KEY ,
    DNAME VARCHAR2(14),
    LOC  VARCHAR2(10)
  );
  --약식으로 만들면 이름은 시스템에서 임의로 짓는다.

테이블 생성 후에 제약 조건 추가 하기

ALTER TABLE [테이블 명] ADD CONSTRAINT [제약조건 이름] PRIMARY KEY(컬럼 명);

--테이블 생성 후에 제약 조건 추가 할 수 도 있다.
  
   CREATE TABLE DEPT4(
    DEPNO NUMBER(10) ,
    DNAME VARCHAR2(14),
    LOC  VARCHAR2(10)
  );
  
  --제약 조건 추가
  ALTER TABLE DEPT4 ADD CONSTRAINT DEPT4_DEPTNO_PK PRIMARY KEY(DEPNO);

테이블 생성 후 에 제약조건 수정하기

ALTER TABLE DEPT4MODIFY (deptno CONSTRAINT dept_nn NOT NULL);

테이블 생성 후에 무결성 제약조건 삭제하기

--테이블 생성 후에 제약 조건 추가 할 수 도 있다.
  
   CREATE TABLE DEPT4(
    DEPNO NUMBER(10) ,
    DNAME VARCHAR2(14),
    LOC  VARCHAR2(10)
  );
  
  --제약 조건 추가
  ALTER TABLE DEPT4 ADD CONSTRAINT DEPT4_DEPTNO_PK PRIMARY KEY(DEPNO);
  
  --제약 조건 삭제
  ALTER TABLE DEPT4 DROP CONSTRAINT DEPT4_DEPTNO_PK;
  
   --제약 조건 확인 
 select * from ALL_CONSTRAINTS
  where TABLE_NAME='DEPT4';

테이블 생성 후에 무결성 제약조건 비활성화

ALTER TABLE department DISABLE CONSTRAINT  deptno_pk

ALTER TABLE department ENABLE CONSTRAINT ptno_pk

외래 키(FORIEGNKEY) 제약 조건

KakaoTalk_20220516_131617879.jpg

용어 정리

자식 테이블:다른 테이블의 값을 참조하는 테이블이다.

부모 테이블:다른 테이블의 값에 의해 참조 되는 테이블이다.

외래키 ( foreign key): 부모 테이블의 값을 참조하는 자식 테이블 키 이다.

참조키(reference key):자식 테이블이 참조하는 부모 테이블의 참조하는 컬럼이다.

 자식 키를 생성 하면  부모 테이블의 참조 열의 값을 반드시 참조해야 한다.

  참조 되는 열은 유일한 기본키여야 한다.

선언 형식

ALTER TABLE [테이블 명] ADD CONSTRAINT [제약조건 이름] FOREIGN KEY(컬럼 명) REFERENCES [부모테이블 명](PK 컬럼 명) 

 ALTER TABLE emp ADD CONSTRAINT  emp_FK FOREIGN KEY(컬럼 명) REFERENCES emp.emp_id