[DB, SQL] 기본키, 고유키, 외래키

JUNHO YEOM·2022년 11월 9일
0

DB, SQL

목록 보기
10/21
post-thumbnail

Primary Key(기본키)

  • 중복되지 않는 고유 값만 허용한다.
  • NULL 값을 허용하지 않는다
  • 테이블당 하나의 기본키만 적용이 가능하다.
CREATE TABLE people (
first_name CHAR(2) PRIMARY KEY, # 기본키 설정 하는 방법
last_name CHAR(3),
nickname VARCHAR(10)
);
CREATE TABLE people (
  first_name CHAR(2),
  last_name CHAR(3),
  nickname VARCHAR(10),
  PRIMARY KEY (first_name) # 기본키 설정 하는 방법
);

두가지 방법중 한가지 선택하여 적용 가능


기본키 변경하기

기본키 설정 제거

ALTER TABLE people DROP PRIMARY KEY;

새로운 기본키 지정

ALTER TABLE people ADD PRIMARY KEY (last_name);

다중 기본키

여러개의 컬럼을 기본키로 지정하는 것
두개 이상의 컬럼의 조합이 겹치지 않으면 data 입력이 가능하다.

CREATE TABLE people (
  first_name CHAR(2),
  last_name CHAR(3),
  nickname VARCHAR(10),
  PRIMARY KEY (first_name, last_name)
);

UNIQUE(고유키)

중복 값이 제한되지만, NULL 값을 넣을 수 있다.

CREATE TABLE people (
  person_id INT AUTO_INCREMENT PRIMARY KEY,
  first_name CHAR(2) UNIQUE, # 고유키 생성
  last_name CHAR(3)
);
-- 고유키 넣는 방법 2
CREATE TABLE people (
  person_id INT AUTO_INCREMENT PRIMARY KEY,
  first_name CHAR(2),
  last_name CHAR(3),
  UNIQUE (first_name) # 고유키 생성
);

PRIMARY KEY와 마찬가지로 다중 고유키를 적용할 수 있다.


FOREIGN KEY (외래키)

외래키 추가하기

두개 이상의 테이블의 JOIN을 위해 사용함

ALTER TABLE _자식테이블명 # 자식 테이블이 먼저 설정된다
  ADD CONSTRAINT _제약명 
  FOREIGN KEY ( _자식테이블외래키 )
  REFERENCES 부모테이블명 ( _부모테이블기본키 ) # 부모 테이블이 나중에 설정
  # ON DELETE _삭제시제약 
  # ON UPDATE _수정시제약 

외래키 삭제하기

ALTER TABLE _자식테이블명 DROP FOREIGN KEY _자식테이블외래키

외래키 제약

제약설명비고
NO ACTION, RESTRICT자식 테이블에 해당 외래키가 있을 때 수정/삭제되지 않음
CASCADE자식 테이블의 해당 행도 수정/삭제
SET NULL자식 테이블의 외래키를 NULL로 지정자식 외래키가 NOT NULL일 시 설정 불가
SET DEFAULT자식 테이블의 외래키를 기본값으로 사용InnoDB 엔진에서 사용 불가

0개의 댓글