본문 바로가기
Programming/SQL

[SQL] 외래키 Foreign Key

by 코딩하는 금융인 2022. 11. 11.

안녕하세요.

오늘은 SQL DDL(데이터 정의 언어)부문에서 기초지식인 외래키(Foreign Key)에 대해서 공부해보겠습니다.

 

 

 SQL 외래키 Foreign Key

▣ 외래키 (Foreign Key)란?

두 테이블의 데이터 간 연결을 설정하고 강제 적용하여 외래 키 테이블에 저장될 수 있는 데이터를 제어하는 데 사용되는 열.

- 한 테이블의 기본 키 값을 가지고 있는 열을 다른 테이블의 열이 참조할 때 두 테이블 간에 연결을 만들어주는 다리 역할을 함.

- 보통은 두 개의 데이터베이스 테이블을 잇고자 기본 키와 함께 사용됨.

- 다른 테이블의 데이터를 참조할 때 없는 값을 참조할 수 없도록 제약을 주는 것으로,  참조될 테이블이 먼저 만들어지고 값이 입력되어야 함.

- 참조될 열의 값은 참조될 테이블에서 PRIMARY KEY*로 설정되어 있어야 함.

 

* 이전에 Primary key에 대해 쓴 글이 있으니 아래를 참고하시길 바랍니다.

2022.10.30 - [Programming/SQL] - [SQL] 기본키 Primary Key

 

▣ SQL별 외래키 (Foreign Key) 설정 방법 (테이블 생성)

구분 외래키 설정 방법
MySQL 마지막 부분에 FOREIGN KEY (해당 컬럼) REFERENCES 참조 테이블 (참조 컬럼)
Oracle 해당 컬럼 + REFERENCES 참조 테이블 (참조 컬럼)
SQL Server

- 여러 컬럼을 외래키로 설정 시엔 여러 컬럼에 입력하면 됨.

 

: SQL별 외래키 설정 예시

--MySQL
CREATE TABLE Test1 (
    ID INT,
    StudentID INT,
    PRIMARY KEY (ID)
);

CREATE TABLE Test2
   (ID2 INT,
    ParentID INT,
    FOREIGN KEY (ParentID) REFERENCES Test1(ID)
);

--SQL Server, Oracle
CREATE TABLE Test2
(   ID INT,
    StudentID INT,
    PRIMARY KEY (ID)
);

CREATE TABLE Test2
(   ID2 INT,
    ParentID INT REFERENCES Test1(ID)
);

 

▣ SQL별 외래키 (Foreign Key) 설정 방법 (테이블 변경)

구분 외래키 설정 바꾸기 방법
Oracle ALTER TABLE 테이블명
ADD (CONSTRAINT 제약조건이름) FOREIGN KEY (해당 컬럼) REFERENCES 참조 테이블 (참조 컬럼);
MySQL ALTER TABLE 테이블명
ADD FOREIGN KEY (해당 컬럼) REFERENCES 참조 테이블 (참조 컬럼);

SQL Server

- 주의할 점은 외래키가 설정되면, 자식 테이블 안의 값이 부모 테이블 안에 언제나 존재해야 함.

 

: SQL 외래키 변경 예시

--Foreign key 설정
ALTER TABLE Example ADD CONSTRAINT CustomerID
FOREIGN KEY (ID) REFERENCES Customer (ID);

--Foreign key 해제
ALTER TABLE Example
DROP FOREIGN KEY CustomerID;
반응형

댓글