쌓고 쌓다

[SQL] 기본 키(Primary Key), 외래 키(Foreign Key) 설정 본문

프로그래밍/SQL

[SQL] 기본 키(Primary Key), 외래 키(Foreign Key) 설정

승민아 2022. 7. 17. 01:08
  • 기본 키(primary key)와 외래 키 또한 제약 조건이다.
  • 중복되지 않는 열의 데이터를 위해 고유 키(Unique) 조건 설정.
  • 실수로 말도 안 되는 값의 입력을 방지하기 위해 체크(Check) 조건 설정.
  • 당연한 값을 입력할때 사용하는 기본값(Default) 조건 설정.
  • 반드시 값을 입력해야하는 NOT NULL 조건 설정.

 

제약조건은 데이터의 무결성을 지키기 위해 제한하는 것이다.

 

기본 키 제약조건

데이터를 구분할 수 있는 식별자를 기본키라고 부름.(학번, 사번, 아이디)

기본키는 중복될 수 없으며 NULL을 허용하지 않는다.

기본키는 테이블 당 1개만 지정이 가능하며 한 개의 열에 지정해야 함.

 

CREATE TABLE에서 기본 키 설정

 

방법(1) - PRIMARY KEY 예약어

CREATE TABLE member
(
    mem_id CHAR(8) NOT NULL PRIMARY KEY,
    mem_name VARCHAR(10) NOT NULL,
    height TINYINT UNSIGNED NULL
);

 

DESCRIBE member;

 

방법(2) - 제일 마지막 행에 PRIMARY KEY(mem_id)를 추가

CREATE TABLE member
(
    mem_id CHAR(8) NOT NULL,
    mem_name VARCHAR(10) NOT NULL,
    height TINYINT UNSIGNED NULL,
    PRIMARY KEY (mem_id)
);

 

방법(3)

키의 이름을 PK_member_id와 같이 짓는다면, 이름만으로 PK가 member_id에 지정됨을 한눈에 알 수 있다.

CREATE TABLE member
(
    mem_id CHAR(8) NOT NULL,
    mem_name VARCHAR(10) NOT NULL,
    height TINYINT UNSIGNED NULL,
    CONSTRAINT PRIMARY KEY PK_member_mem_id (mem_id)
);

 

ALTER TABLE에서 설정하는 기본 키

CREATE TABLE member
(
    mem_id CHAR(8) NOT NULL,
    mem_name VARCHAR(10) NOT NULL,
    height TINYINT UNSIGNED NULL
);

ALTER TABLE member
    ADD CONSTRAINT
    PRIMARY KEY (mem_id);

 

외래 키 제약조건

외래 키 제약 조건은 두 테이블 사이의 관계를 연결해주고, 데이터의 무결성을 보장해준다.

(예로, 구매 테이블에 기록이 있으나 구매한 사람이 누구인지 모르는 일은 절대 발생하지 않음.)

외래 키가 설정된 열은 꼭 다른 테이블의 기본 키와 연결된다.

기본 키가 있는 테이블을 "기준 테이블"이라고 부르고, 외래 키가 있는 구매 테이블을 "참조 테이블"이라고

부른다.

참조 테이블이 참조하는 기준 테이블의 열은 반드시 기본 키나 고유 키로 설정되어 있어야 함.

 

CREATE TABLE에서 설정하는 외래 키

CREATE TABLE 끝에 FOREIGN KEY 키워드를 설정하자.

CREATE TABLE member
(
    mem_id CHAR(8) NOT NULL PRIMARY KEY,
    mem_name VARCHAR(10) NOT NULL,
    height TINYINT UNSIGNED NULL
);

CREATE TABLE buy
(
    num INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
    mem_id CHAR(8) NOT NULL,
    prod_name CHAR(6) NOT NULL,
    FOREIGN KEY(mem_id) REFERENCES member(mem_id)
);

구매 테이블(buy)의 열(mem_id)이 참조하는 기준 테이블(member)의 열(mem_id)은 기본 키로 설정되어 있다.

만약, 기준 테이블의 열이 Primary Key 또는 Unique가 아니라면 외래 키 관계는 설정되지 않는다.

 

외래 키 형식 : FOREIGN KEY(열_이름) REFERENCES 기준_테이블(열_이름)

 

+ 꼭 참조 테이블(buy)의 아이디 열 이름이 mem_id와 같이 기준 테이블의 mem_id와 같을 필요는 없다.

 

 

 

ALTER TABLE에서 설정하는 외래 키

CREATE TABLE buy
(
    num INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
    mem_id CHAR(8) NOT NULL,
    prod_name CHAR(6) NOT NULL
);

ALTER TABLE buy
    ADD CONSTRAINT
    FOREIGN KEY(mem_id)
    REFERENCES member(mem_id);

 

모든 내용은 '혼자 공부하는 SQL' 도서를 기반으로 학습 후 정리한 내용입니다. 

Comments