데이터 베이스에서 사용자의 의도한 데이터 값과 저장된 값은 일치 해야 한다.
정확한 데이터 값을 유지 하기 위해서 개체 무결성,참조무결성,도메인 무결성을 유지해야 한다.
select * from ALL_CONSTRAINTS
where TABLE_NAME='emp';
기본키(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

용어 정리
자식 테이블:다른 테이블의 값을 참조하는 테이블이다.
부모 테이블:다른 테이블의 값에 의해 참조 되는 테이블이다.
외래키 ( 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