[SQL] PRIMARY KEY, FOREIGN KEY

MJ·2024년 2월 8일

SQL

목록 보기
13/23

PRIMARY KEY

  • 테이블의 각 레코드를 식별
  • 중복되지 않은 고유값을 포함
  • NULL 값 포함할 수 없음
  • 테이블 당 하나의 기본키를 가짐 - 여러 칼럼을 하나의 기본키로 지정 가능

PRIMARY KEY 생성

  1. 테이블 생성 시에 기본키 설정

CREATE TABLE tablename
(
col1 datatype not null,
col2 datatype not null,
col3 datatype not null

CONSTRAINT constraint_name
PRIMARY KEY (col1, col2)
);
CONSTRAINT는 생략가능

  1. 이미 존재하는 테이블에 기본키 설정

ALTER TABLE tablename
ADD CONSTRAINT constraint_name PRIMARY KEY (col1, col2);
CONSTRAINT는 생략가능

PRIMARY KEY 삭제

ALTER TABLE tablename
DROP PRIMARY KEY ;


FOREIGN KEY

  • 한 테이블을 다른 테이블과 연결해주는 역할
  • 참조되는 테이블의 항목은 그 테이블의 기본키 (혹은 단일값)
  • FOREIGN KEY 를 기준으로 참조 테이블을 JOIN

FOREIGN KEY 생성

  1. 테이블 생성 시에 외래키 설정

CREATE TABLE tablename
(
col1 datatype not null,
col2 datatype not null,
col3 datatype not null,
col4 datatype not null

CONSTRAINT constraint_name
PRIMARY KEY (col1, col2),
CONSTRAINT constraint_name
FOREIGN KEY (col3, col4) REFERENCES REF_tablename(REF_column)
);

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)
);
  1. 이미 존재하는 테이블에 외래키 설정

ALTER TABLE tablename
ADD FOREIGN KEY (col1) REFERENCES REF_tablename(REF_column);

FOREIGN KEY 삭제

ALTER TABLE tablename
DROP FOREIGN KEY FK_constraint;

쿼리가 잘 실행되어도 "desc tablename;" 했을 때 외래키가 남아있을 수 있는데
"show create table tablename;" 으로 확인하면 KEY 속성만 남아있다는 것을 알 수 있음 (레퍼런스 관계는 깨져있음)


CONSTRAINT 확인

SHOW CREATE TABLE tablename

0개의 댓글