안녕하세요.
오늘은 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;
반응형
'Programming > SQL' 카테고리의 다른 글
[MySQL] 테이블 목록 조회하기 (Show, information_schema) (0) | 2022.11.15 |
---|---|
[MySQL] 행과 열 바꾸기 (Transpose) (2) | 2022.11.12 |
[SQL] 기본키 Primary Key (0) | 2022.10.30 |
[MySQL] auto_increment 자동증가 설정 (0) | 2022.10.26 |
SQL 조건문 (CASE WHEN, DECODE) (0) | 2022.07.17 |
댓글