Coding Planet

[RDBMS]FOREIGN KEY, 외래키 예시, CASCADE 본문

DB, SQL

[RDBMS]FOREIGN KEY, 외래키 예시, CASCADE

jhj.sharon 2023. 3. 15. 17:28
반응형

FOREIGN KEY

 

1. 외래키(FK)에 대한 이해

  • 두 테이블의 데이터 간 연결을 설정하고 강제 적용하여 외래 키 테이블에 저장될 수 있는 데이터를 제어하는데 사용되는 열이다. 외래 키 참조에서는 한 테이블의 기본키 값을 가지고 있는 열을 다른 테이블의 열이 참조할 때 두 테이블 간 연결이 생성된다.
  • 자식테이블:emp_tbl. 부모테이블:dept_tbl()
  • 부모테이블인 dept_tbl의 deptno를 받아 사용하는 자식테이블 emp_tbl. -> 부서번호가 emp_tbl의 외래키

 

2. 형식

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

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

[ON DELETE CASCADE | ON DELETE SET NULL];

 

 

3. 외래키의 옵션

 

1) ON DELETE CASCADE

- 참조되는 부모 테이블에 대한 DELETE를 허용.

- 참조되는 부모 테이블 값이 삭제되면 연쇄적으로 자식 테이블 값 역시 삭제된다는 의미

- 일반적으로 이 옵션이 많이 쓰이는데 이 옵션을 사용하지 않으면 엮여있는 모든 자식 테이블의 값을 먼저 다 지워줘야하기 때문이다.

- DROP TABLE 테이블명 CASCADE CONSTRAINTS: 외래키로 물린 하위 테이블까지 모두 삭제한다.

 

2) ON DELETE SET NULL

- 참조되는 부모 테이블 행에 대한 DELETE를 허용

- 부모 테이블의 값이 삭제되면 해당 참조하는 자식 테이블의 값들이 NULL로 설정되는 옵션

 

 

 

 

 

 ✨예제: FOREGIN KEY 활용하기

 

1. 기본키를 갖는 TESTFK3 이름의 테이블을 생성(부모테이블)

 

 

 

 

2. 외래키를 갖는 TESTFK4 이름의 테이블을 생성(자식테이블) : ON DELETE SET NULL

-외래키로 사용할 컬럼 이름: PK_COLUMN1

 

 

 

 

 

3.TESTFK3, TESTFK4 테이블에 데이터 입력

 

 

1)TESTFK3

2) TESTFK4

 

 

4. 부모테이블에서 데이터 제거하기

 

1)TESTFK3

2) TESTFK4

 

5. 자식테이블 삭제하고 ON DELETE CASCADE 조건으로 다시 생성

- 부모 테이블도 마찬가지로 삭제하고 인서트를 다시 시행하여 원래 상태로 세팅

 

 

 

 

6. ON DELETE CASCADE 조건에서 부모테이블의 MENU1 삭제할 경우

 

- ON DELETE SET NULL 조건에서는 부모테이블의 데이터가 삭제되더라도 외래키가 NULL로 표시되며 기존 데이터가 유지되었다.

- 반면, ON DELETE CASCADE 조건에서는 부모데이블의 데이터가 삭제된 경우 해당 외래키의 자식테이블 데이터도 연쇄적으로 삭제되었다.

 

 

1)TESTFK3

 

 

2) TESTFK4

 

 

 

 

 

 


 

 

 

 

반응형
Comments