MySQL 정리(기본키와 고유키, 그리고 외래키)

 


MySQL 정리!

1. 기본키

- Primary Key

- 중복되지 않는 고유값만 허용

- NULL 값 허용하지 않음


💌 기본키 넣는 방법 1.

CREATE TABLE people(

     first_name char(2) PRIMARY KEY,

    last_name char(3),

    nickname varchar (10)

)

💌  기본키 넣는 방법 2.

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


💌 다중 기본키

CREATE TABLE people(

    first_name char(2),

    last_name char(3),

    nickname varchar(10),

    PRIMARY KEY(first_name, last_name)

);

: first name 과 last name 조합이 겹치지 않게!!

first name 이 같더라도 last name 이 다른 행이 존재 가능!

last name 이 같더라도 first name이 다른 행이 존재 가능!


2. 고유키

- 중복 제한, NULL 값 가능

💌 고유키 넣는 방법

1. 

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)

);

3. 다중 고유키 가능

CREATE TABLE people(

    person_id int AUTO_INCREMENT PRIMARY KEY,

    first_name char(2),

    last_name char(3),

    UNIQUE(first_name, last_name)

);


3. 외래키

- 외래키 추가하기

ALTHER TABLE 자식테이블명

    ADD CONSTRAINT 제약명

        FOREIGN KEY(자식테이블 외래키)

    REFERENCES 부모테이블명(부모테이블 기본 키)

* ON DELETE 삭제시 제약

* ON UPDATE 수정시 제약


- 외래키 삭제하기

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

* 외래키는 NULL 값이거나 부모테이블의 기본 키값과 같아야함!!


- 외래키 제약

* NO ACTION, RESTRICT : 자식 테이블에 해당 외래키가 있을 때 수정/ 삭제되지 않음

* CASCADE : 자식 테이블의 해당 행도 수정 / 삭제

* SET NULL : 자식 테이블의 외래키를 NULL 로... (자식 외래키가 NOT NULL 일 때 설정 불가)

* SET DEFAULT : 자식 테이블의 외래키를 기본값으로...(InnoDB엔진에서 사용 불가)


댓글