[제로베이스][SQL] Key

한결·2024년 1월 30일
post-thumbnail

Primary Key (기본 키)

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

생성 문법

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

하나의 칼럼을 기본키로 설정하는 경우

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


여러개의 칼럼을 기본키로 설정하는 경우

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


삭제 문법

ALTER TABLE tablename
DROP PRIMARY KEY;

하나의 칼럼을 기본키로 설정하는 경우

ALTER TABLE person
DROP PRIMARY KEY;


여러개의 칼럼이 기본키로 설정된 경우

ALTER TABLE ANIMAL
DROP PRIMARY KEY;


변경 문법

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

하나의 칼럼을 기본키로 지정하는 경우

alter table person
add primary key (pid);


여러개의 칼럼을 기본키로 지정하는 경우

alter table animal
add constraint PK_animal primary key (name, type);

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
    FOREIGN KEY (column3, column4, ...) REFERENCES REF_tablename(REF_column)
);

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


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


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

SHOW CREATE TABLE tablename;

show create table job;


삭제 문법

ALTER TABLE tablename
DROP FOREIGN KEY FK_constraint;

alter table orders
drop foreign key FK_person;


생성 문법 2

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

ALTER TABLE tablename
ADD FOREIGN KEY (column) REFERENCES REF_tablename(REF_column);
alter table orders
add foreign key (pid) references person(pid);


profile
낭만젊음사랑

0개의 댓글