[ZB] SQL 03

SeriesWorld·2023년 12월 3일

ZB20-SQL

목록 보기
3/5
post-thumbnail

Primay Key(기본 키)

  • 테이블의 각 레코드를 식별
  • 중복되지 않은 고유값을 포함
  • NULL값을 포함할 수 없음 (NOT NULL 옵션을 주지 않아도 자동으로 NOT NULL이 된다)
  • 테이블 당 하나의 기본 키(Primary Key)를 가짐

PK 설정

CREATE TABLE tablename
(
	column1 datatype not null,
    column2 datatype not null,
    ...,
    CONSTRAINT constraint_name   # 생략가능
    	PRIMARY KEY (column1, column2, ...)
);
  • primary key에 컬럼이 두 개 이상 들어가는 것은 PK가 두 개라는 뜻이 아니라, 컬럼 두 개가 하나의 PK라는 뜻이다.
    (두 개 이상의 컬럼이 PK로 설정되는 경우, 한 컬럼에서의 중복은 가능하다.)
  • PK가 한 개인 경우 다음과 같은 방법으로 설정할 수도 있다.
CREATE TABLE tablename
(
	column1 datatype not null PRIMARY KEY,
    column2 datatype not null,
    ...,
    CONSTRAINT constraint_name   # 생략가능
);

이미 생성된 Table에 PK 설정(추가)

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

PK 삭제

ALTER TABLE tablename
DROP PRIMARY KEY;

Foreign Key(외래 키)

  • 한 테이블을 다른 테이블과 연결해주는 역할
  • 참조되는 테이블의 항복은 그 테이블의 기본 키(혹은 단일값)
  • DESC에서 MUL로 표시

FK 설정

CREATE TABLE tablename
(
	column1 datatype not null,
    column2 datatype not null,
    ...,
    CONSTRAINT constraint_name   # 생략가능
	    PRIMARY KEY (column1, column2, ...),
    CONSTRAINT constraint_name
    	FOREIGN KEY (column3, column4, ...) REFERENCES REF_tablename(REF_column),
        FOREIGN KEY (column5, column6, ...) REFERENCES REF_tablename2(REF2_column)
);
  • PK와 마찬가지로 CONSTRAINT는 생략 가능하다.
    차이점은, PK는 생략시 CONSTARINT가 없는 반명 FK는 생성된다.

이미 생성된 Table에 FK 설정(추가)

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

FK 삭제

  • FK는 PK와 다르게 여러 개일 수 있으므로, DROP하려면 정확한 이름을 정해야 삭제할 수 있다.
  • FK 이름(constraint)은 SHOW CREATE TABLE tablename;을 통해 확인할 수 있다.

TMI
FK가 설정되면 Reference가 되는 Table의 Column을 Drop할 수 없다. (Table도 drop되지 않는다.)

0개의 댓글