[제로베이스]SQL_13. PRIMARY KEY, FOREIGN KEY

새봄·2024년 1월 23일
post-thumbnail

1. PRIMARY KEY

1) PRIMARY KEY(기본키)

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

2) PRIMARY KEY 생성 문법

CREATE TABLE tablename
(
	column1 datatype NOT NULL,
    column2 datatype NOT NULL,
    ...
    CONSTRANINT constraint_name
    	PRIMARY KEY (column1, column2, ...)
);

(1) 예제1_하나의 컬럼을 기본키로

CREATE TABLE person
(
	pid int NOT NULL,
    name varchar(16),
    age int,
    sex char,
    PRIMARY KEY (pid)
);

(2) 예제2_여러 개의 컬럼을 기본키로

CREATE TABLE animal
(
	name varchar(16) NOT NULL,
    type varchar(16) NOT NULL,
    age int,
    PRIMARY KEY (name, type)
);

3) PRIMARY KEY 삭제 문법

  • 하나의 컬럼이든 여러 개의 컬럼이 기본키로 설정된 경우이든 삭제 문법은 동일
ALTER TABLE tablename
DROP PRIMARY KEY;

4) PRIMARY KEY 생성 방법2_이미 지정된 테이블에 기본키 추가 설정할 경우

ALTER TABLE tablename
ADD PRIMARY KEY (column1, column2,...);

5) PRIMARY KEY 생성3_여러 개의 컬럼을 기본키로 지정하는 경우

  • CONSTRAINT 생략 가능
ALTER TABLE animal
ADD CONSTRAINT PK_animal PRIMARY KEY (name, type);

2. FOREIGN KEY (외래키)

1) FOREIGN KEY

  • 한 테이블을 다른 테이븕과 연결해주는 역할이며, 참조되는 테이블의 항목은 그 테이블의 기본키(혹은 단일 값)

2) FOREIGN KEY 생성문법

CREATE TABLE tablename
(
	column1 datatype NOT NULL,
    column2 datatype NOT NULL,
    column3 datatype,
    column4 datatype,
    ...
    CONSTRAINT constraint_name PRIMARY KEY (column1, column2, ...)
    CONSTRAINT constraint_name PRIMARY KEY (column3, column4, ...) REFERENCES REF_tablename(REF_column)
);    

3) FOREIGN KEY 생성 예제

(1) CREATE TABLE 에서 FOREIGN KEY를 지정하는 경우

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)
);

(2) CREATE TABLE 에서 FOREIGN KEY를 지정하는 경우, CONSTRAINT 생략 가능

CREATE TABLE job
(
	jid int not null,
    name varchar(16),
    pid int,
    PRIMARY KEY (jid),
    FOREIGN KEY (pid) REFERENCES person(pid)
);

3) CONSTRAINT 확인 문법

(1) 자동 생성된 CONSTRAINT를 확인하는 방법

SHOW CREATE TABLE tablename;

4) FOREIGN KEY 삭제 문법

ALTER TABLE tablename
DROP FOREIGN KEY FK_constraint;

5) FOREIGN KEY 생성 문법2

(1) TABLE이 생성된 이후에도 ALTER TABLE을 통해 FOREIGN KEY를 지정할 수 있다.

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

0개의 댓글