728x90
FOREIGN KEY
- 제약 조건을 설정한 필드는 외래 키라고 부르며, 한 테이블을 다른 테이블과 연결해주는 역할
- 외래 키가 설정된 테이블에 레코드를 입력하면, 기준이 되는 테이블의 내용을 참조해서 레코드가 입력
- 하나의 테이블이 다른 테이블에 의존
- FOREIGN KEY 제약 조건을 설정할 때 참조되는 테이블의 필드는 반드시 UNIQUE나 PRIMARY KEY 제약 조건이 설정
- 외래키 값은 NULL이거나 부모 테이블의 기본키 값과 동일
1. 외래키 설정
- CREATE 문으로 설정
CREATE TABLE 테이블이름
(
필드이름 필드타입,
...,
FOREIGN KEY (필드이름) REFERENCES 부모테이블이름 (필드이름)
);
- ALTER 문으로 설정
ALTER TABLE 테이블이름 ADD FOREIGN KEY (필드이름)
EFERENCES 테이블이름 (필드이름);
2. 외래키 삭제
ALTER TABLE [Table_Name]
DROP CONSTRAINT [CONSTRAINT_NAME];
ALTER TABLE [Table_Name]
DROP FOREIGN KEY [CONSTRAINT_NAME];
3. 외래키 옵션
- 외래키에 의해 참조되는 테이블에서 데이터의 수정이나 삭제가 발생하면, 참조하고 있는 테이블의 데이터도 영향
- ON DELETE, ON UPDATE 키워드를 이용하여 설정
CASCADE | 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블에서도 삭제와 수정이 같이 이루어집니다. |
SET NULL | 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블의 데이터는 NULL로 변경됩니다. |
NO ACTION | 참조되는 테이블에서 데이터를 삭제하거나 수정해도, 참조하는 테이블의 데이터는 변경되지 않습니다. |
SET DEFAULT | 참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블의 데이터는 필드의 기본값으로 설정됩니다. |
RESTRICT | 참조하는 테이블에 데이터가 남아 있으면, 참조되는 테이블의 데이터를 삭제하거나 수정할 수 없습니다. |
CREATE TABLE 테이블이름
(
필드이름 필드타입,
...,
FOREIGN KEY (필드이름) REFERENCES 부모테이블이름 (필드이름) ON DELETE CASCADE
);
728x90
반응형
'TIL - 프로그래밍 > SQL' 카테고리의 다른 글
[MySQL] WHILE문 (1) | 2024.09.16 |
---|---|
[MySQL] FIND_IN_SET : 콤마로 구분된 문자열 검색 (0) | 2024.08.28 |
MySQL 뷰(View) 기본 (생성, 대체, 수정, 삭제) (1) | 2024.07.23 |
MySQL 곱셈 구하기 (0) | 2024.07.02 |
MySQL 공백/문자 제거 - TRIM() (0) | 2024.07.02 |
댓글