[SQL] FOREIGN KEY

Aiden·2024년 2월 8일
0

SQL

목록 보기
16/21
post-thumbnail

사용목적

FOREIGN KEY (외래키)는 다른 TABLE과 현재 TABLE을 연결하기 위해 설정합니다.

추가내용

  • PRIMARY KEY와 마찬가지로 FOREIGN KEY도 여러 COLUMN을 지정할 수 있습니다.
  • 하나의 TABLE에 모든 정보를 담기 어렵다면 다른 TABLE을 제작하고 이를 FOREIGN KEY로 연결해서 하나의 TABLE처럼 이용할 수 있습니다.

문법

FOREIGN KEY 생성 (FOREIGN KEY, CONSTRAINT, REFERENCE)

FOREIGN KEY는 보통 TABLE 생성 시 지정합니다.

REF_TABLE은 연결할 다른 TABLE이며, REF_COLUMN은 연결할 TABLE 내 COLUMN입니다.
(보통은 PRIMARY KEY를 입력합니다.)

CREATE TABLE tablename
(
	column1 datatype NOT NULL,
    column2 datatype,
    ...
    CONSTRAINT constraint_name #이 부분은 생략 가능합니다.
     PRIMARY KEY (column1, column2,...)
    CONSTRAINT constraint_name #이 부분은 생략 가능합니다.
     FOREIGN KEY (column1, column2,...) REFERENCES ref_table(ref_column)
);

FOREIGN KEY 삭제 (FOREIGN KEY, DROP)

FOREIGN KEY는 삭제 시 CONSTRAINT_NAME을 입력합니다.

ALTER TABLE tablename
DROP FOREIGN KEY constraint_name;

CONTRAINT_NAME 확인 (SHOW)

FOREIGN KEY 생성 시 CONSTRAINT를 생략하는 경우 자동 생성됩니다.
삭제 시 CONSTRAINT_NAME 정보가 필요합니다.

SHOW CREATE TABLE tablename;

FOREIGN KEY 추가 (FOREIGN KEY, ADD)

이미 FOREIGN KEY 없이 생성된 TABLE에도 추가 가능합니다.

ALTER TABLE tablename
ADD FOREIGN KEY(column1, column2,...) REFERENCES ref_table(ref_column);

예시

가정)

  • TABLE NAME : testTABLE
  • COLUMN 1 NAME : ID (int, NOT NULL)
  • COLUMN 2 NAME : NAME (varchar(32))
  • REF_TABLE NAME : exampleTABLE
  • REF_COLUMN NAME : NICKNAME

FOREIGN KEY 생성 (FOREIGN KEY, CONSTRAINT, REFERENCE)

CREATE TABLE testTABLE
(
	ID int NOT NULL,
    NAME varchar(32),
    ...
    CONSTRAINT p.ID #이 부분은 생략 가능합니다.
     PRIMARY KEY (ID)
    CONSTRAINT f.NAME #이 부분은 생략 가능합니다.
     FOREIGN KEY (NAME) REFERENCES exampleTABLE(NICKNAME)
);

FOREIGN KEY 삭제 (FOREIGN KEY, DROP)

FOREIGN KEY는 삭제 시 CONSTRAINT_NAME을 입력합니다.

ALTER TABLE testTABLE
DROP FOREIGN KEY f.NAME;

CONTRAINT_NAME 확인 (SHOW)

FOREIGN KEY 생성 시 CONSTRAINT를 생략하는 경우 자동 생성됩니다.
삭제 시 CONSTRAINT_NAME 정보가 필요합니다.

SHOW CREATE TABLE testTABLE;

FOREIGN KEY 추가 (FOREIGN KEY, ADD)

이미 FOREIGN KEY 없이 생성된 TABLE에도 추가 가능합니다.

ALTER TABLE testTABLE
ADD FOREIGN KEY(ID) REFERENCES exampleTABLE(NO);
profile
aiden

0개의 댓글