- 테이블의 각 레코드 식별
- 중복되지 않은 고유값
- NULL값을 가질 수 없음
- 테이블 당 하나의 기본키를 가짐
1. 테이블을 생성하면서 기본키 지정
CREATE TABLE tablename
(
column1 datatype NOT NULL,
column2 datatype NOT NULL,
...
CONSTRAINT constraint_name -- 생략 가능
PRIMARY KEY (column1, column2, ...)
);
2. 이미 만들어져있는 테이블에 추가
ALTER TABLE tablename
ADD (CONSTRAINT "constraint_name") PRIMARY KEY (column1, column2, ...);
-- CONSTRAINT를 통해 이름 지정 가능 (생략하면 pk이름 자동 생성)
ALTER TABLE tablename
DROP PRIMARY KEY;
- 한 테이블을 다른 테이블과 연결해주는 역할
- 참조되는 테이블의 항목은 그 테이블의 기본키 (or 단일값)
- 여러 개 가질 수 있음
1. 테이블을 생성하면서 외래키 지정
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)
);
2. 이미 만들어져있는 테이블에 추가
ALTER TABLE tablename
ADD FOREIGN KEY (column) REFERENCES REF_tablename(REF_column);
ALTER TABLE tablename
DROP FOREIGN KEY FK_constraint;
✅ 자동 생성된 CONSTRAINT 확인 방법
-- CONSTRAINT생략하면 이름 자동 생성 SHOW CREATE TABLE tablename;
CREATE TABLE study
(
study_id int not null,
study_date date,
study_time time,
patient_id int,
primary key (study_id),
constraint FK_study foreign key (patient_id) references person (pid)
);
ALTER TABLE study DROP PRIMARY KEY;
ALTER TABLE study DROP FOREIGN KEY FK_study;
ALTER TABLE study ADD FOREIGN KEY (patient_id) REFERENCES person (pid);
ALTER TABLE study ADD PRIMARY KEY (study_id);