CH 14. Primary key, Foreign key

이진호·2024년 10월 7일

Primary Key (기본키) 란?

  • 테이블을 식별하는 역할
  • 다른 데이터와 중복되지 않는 고유값이어야 함
  • NULL 값을 포함할 수 없음
  • 테이블 당 1개의 기본키를 가짐

Primary Key 생성하기

1개의 column을 기본키로 설정할 경우
Create Table 시 Primary Key (데이터명) 으로 지정해주면 됩니다.

여러 개의 column을 기본키로 설정할 경우

주의 사항

여러 개를 설정한다고 해서 기본키가 여러 개인 것은 XXX !
여러 컬럼으로 하나의 기본키를 이루는 것입니다.

Primary Key 삭제하기

1개의 column이 기본키로 설정된 경우

여러 개의 column이 기본키로 설정된 경우

Primary Key 추가하기

1개의 column을 기본키로 추가할 경우

여러 개의 column을 기본키로 추가할 경우

Foreign Key (외래키) 란?

  • 한 테이블을 다른 테이블과 연결해주는 역할
  • 참조되는 테이블의 기본키(혹은 단일값)와 연결됨

Foreign Key 생성하기

Create table 시 지정할 수 있으며, constraint는 생략 가능합니다.

CREATE TABLE orders
(
	oid int not null,
    order_no varchar(16),
    pid int,
    PRIMARY KEY (oid),
    CONSTRAINT FK_person FOREIGN KEY (pid) REFERENCES person(pid)
);
//person 테이블의 pid를 참조하는 외래키로 pid를 지정함
//CONSTRAINT 생략 시...
//FOREIGN KEY (pid) REFERENCES person(pid) 로 작성 가능

desc 사용 시, 외래키는 하단과 같이 표시됩니다.

주의 사항

Foreign Key(외래키)는 Primary Key와 다르게 여러 개 존재 가능합니다.
따라서, CONSTRAINT를 생략하면 외래키의 이름이 자동 생성됩니다.
이때, 키의 이름을 알아야 DROP 등을 할 수 있기 때문에, 이름을 확인하는 방법도 알 필요가 있습니다.

Constraint 확인하기

SHOW CREATE TABLE 테이블명;

아래 사진 빨간 박스처럼 자동 생성된 이름을 확인할 수 있습니다.

Foreign Key 삭제하기

ALTER TABLE 테이블명
DROP FOREIGN KEY Constraint명;

실제로 코드를 실행하고 desc를 해보면, MUL 속성이 아직 남아있는 것을 확인할 수 있습니다.
다만 이는 외래키의 기능을 하는 것은 아닙니다.
show create table을 통해 자세히 확인해보면, 원래는 "FOREIGN KEY"라고 표시되던 게 "KEY"라고만 변경되어 있습니다.
즉, 외래키가 잘 삭제되어 레퍼런스 관계가 깨진 상태인 것을 알 수 있습니다.

Foreign Key 추가하기

ALTER TABLE 테이블명
ADD FOREIGN KEY (컬럼명) REFERENCES 참조할테이블명(참조할컬럼명);

🔵 흥미로웠던 점 :
외래키를 통해 여러 테이블을 관계 짓는 것이 흥미로웠다. 예를 들어, Order 테이블에서 Customer 테이블의 손님번호(id)를 외래키로 참조하면, Order 테이블의 각 주문은 특정 고객과 연결될 것이다. 이런 식으로 키들을 잘 활용하면 테이블 간 관계를 설정하는 데에 큰 도움이 될 듯 하다.

🔵 다음 학습 계획 :
집계 함수에 대해 학습할 예정입니다.

0개의 댓글