외래 키 제약조건
- 외래 키 제약조건은 두 테이블 사이의 관계를 연결해주고, 그 결과 데이터의 무결성을 보장해주는 역할을 한다.
- 외래 키가 설정된 열은 꼭 다른 테이블의 기본 키와 연결된다.
- 기본 키가 있는 테이블을
기준 테이블, 외래 키가 있는 테이블을 참조 테이블이라고 부른다.
- 참조 테이블이 참조하는 기준 테이블의 열은 반드시 기본 키(Primary Key) 또는 고유 키(Unique)로 설정되어 있어야 한다.
외래 키 제약조건 설정하기 - 1. CREATE TABLE
FOREIGN KEY (열_이름) REFERENCES 기준_테이블(열_이름)
DROP TABLE IF EXISTS buy, member;
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) -- 외래 키 지정
);
외래 키 제약조건 설정하기 - 2. ALTER TABLE
ALTER TABLE 참조_테이블 ADD CONSTRAINT FOREIGN KEY(열_이름) REFERENCES 기준_테이블(열_이름)
DROP TABLE IF EXISTS buy, member;
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
);
ALTER TABLE buy
ADD CONSTRAINT
FOREIGN KEY(mem_id)
REFERENCES member(mem_id);
기준 테이블의 열 이름이 변경/삭제될 때 참조 테이블의 열 이름이 자동으로 변경되도록 하기
ON UPDATE CASCADE
ON DELETE CASCADE
DROP TABLE IF EXISTS buy, member;
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
);
ALTER TABLE buy
ADD CONSTRAINT
FOREIGN KEY(mem_id)
REFERENCES member(mem_id)
ON UPDATE CASCADE
ON DELETE CASCADE;