2020040905 / Foreign key(외래키) 제약 조건

-- [6] 참조 무결성을 위한 Foreign key(외래키) 제약 조건

부모 키가 되기 위한 컬럼은 반드시 부모 테이블(dept06)의 기본키(primary key)나 유일키(unique key)로 설정되어 있어야 한다  --데이터베이스의 중복성을 피하기 위한 설정이다


create table dept06(

     deptno   number(2) constraint dept06_deptno_pk primary key,

     dname   varchar2(20),

     loc         varchar2(20)

);


insert into dept06 values(10, '회계부', '종로구');

insert into dept06 values(20, '연구소', '서대문구');

insert into dept06 values(30, '영업부', '영등포구');


select * from dept06;



========줄간격 맞추기 배우기 확인 필요=======


--CONSTRAINT [제약조건 명] FOREIGN KEY([컬럼명])

REFERENCES [참조할 테이블 이름]([참조할 컬럼])

참조할 컬럼과 같은 컬럼이 자식 테이블에 존재해야 합니다.(같은 이름을 쓸필요는없지만 관계를 알아보기 쉽게 같은 컬럼명을 사용합니다.) 그리고 위에서 말했다시피 자식테이블에 값을 먼저 넣을순 없습니다 참조되는 컬럼에 데이터가 있어야 값을 넣을수 있죠

create table emp06(

     empno     number(4) constraint emp06_empno_pk primary key,

     ename     varchar2(20) constraint emp06_ename_nn not null,

     job          varchar2(20),

     deptno     number(2) constraint emp06_deptno_fk

                                 references dept06(deptno)

);


insert into emp06 values(1234, '홍길동', '세일즈맨', 30); --성공

insert into emp06 values(1234, '홍길동', '세일즈맨', 40); --error 메세지 emp06_empno_pk 출력


-- [7] Check 제약 조건 설정


정의 : 저장 가능한 데이터 값의 범위나 조건을 지정하여 설정한 값만을 허용한다

- 입력 값이 조건에 맞지 않으면 DB 에서 받지 않는다. 즉 오류를 일으킵니다

- 입력 값의 범위를 지정 할 수 있다

- CHECK은 입력할수 있는 값의 범위를 설정해 주는것입니다


ALTER TABLE [테이블명] ADD CONSTRAINT [제약조건명] [제약조건](범위)


실습

1) 급여 컬럼을 생성하되 값은 500 ~ 5000 사이의 값만 저장 가능하다

2) 성별 저장 컬럼으로 gender를 정의하고 'M' / 'F' 둘 중 하나의 값만 저장 가능하다














댓글

Designed by JB FACTORY