개발일지/SQL

[Oracle] 테이블 설정 / 테이블 밖에서 PK, FK 설정

연습용365 2021. 11. 19. 06:54
--급여테이블
--년월(6), 직원코드, 급여, 보너스 
--직원명 부서코드 등 이미 다른 테이블에 존재하는 경우 조인해서 가지고 오면 된다.

CREATE TABLE SALARY
(
    SALDATE CHAR(6) NOT NULL, --여기에 바로 PK 설정하면 안 됨 따로 빼서 해야 됨
    EMPNO CHAR(4) NOT NULL, --PK, FK
    SAL NUMBER(10),
    COMM NUMBER(10)
);

COMMENT ON TABLE SALARY IS '급여정보';
COMMENT ON COLUMN SALARY.SALDATE IS '급여년월';
COMMENT ON COLUMN SALARY.EMPNO IS '사원번호';
COMMENT ON COLUMN SALARY.SAL IS '급여';
COMMENT ON COLUMN SALARY.COMM IS '보너스';

ALTER TABLE SALARY ADD CONSTRAINT SALARY_PK PRIMARY KEY(SALDATE, EMPNO);
--여러개의 프라이머리키 지정을 할 때 오류가 뜨기 때문에 밖에서 지정을 해준다.

ALTER TABLE SALARY ADD CONSTRAINT SALARY_EMPNO_FK FOREIGN KEY(EMPNO)
REFERENCES EMP(EMPNO);
--REFERENCES 참조

 

 

 

코멘트 작성법

COMMENT ON TABLE SALARY IS '급여정보';

 

 

 

기본키에 복수 칼럼 설정하기

ALTER TABLE SALARY ADD CONSTRAINT SALARY_PK PRIMARY KEY(SALDATE, EMPNO);

 

 

[Oracle] 기본키 2개 이상 지정 (기본키 복수 칼럼 지정)

테이블 생성시 기본키 2개를 설정하려고 하면 오류가 발생한다. create table 테이블명( 컬럼1 number primary key, 컬럼2 number primary key );​ 기본키는 복수가 되는데 왜? 라는 의문을 가질수 있지만 기본

practice365.xyz

이 글 참고

 

 

외래키 작성

 

 

테이블 생성시

   CREATE TABLE [테이블명] (
       [컬럼명] [데이터형식] FOREIGN KEY REFERENCES [테이블명] ([컬럼명])
   )

 

 

 

테이블 작성 뒤 설정

ALTER TABLE [테이블명] ADD CONSTRAINT [FOREIGN KEY명] FOREIGN KEY ([컬럼명]) 
	REFERENCES [테이블명] ([컬럼명])

 

삭제

ALTER TABLE [테이블명] DROP CONSTRAINT [FOREIGN KEY명]

 

예시

ALTER TABLE SALARY ADD CONSTRAINT SALARY_EMPNO_FK FOREIGN KEY(EMPNO)
REFERENCES EMP(EMPNO);
--REFERENCES 참조