테이블의 각 row 를 유일성과 최소성을 만족시키면서 식별할 수 있는 후보키 중에 선택한 Main key
유일성과 최소성을 만족Candidate Key ?
관계형 데이터베이스에서 릴레이션(Relation)의 튜플을 유일하게 식별할 수 있는 속성 또는 속성의 집합 중, 다음 두 성질을 만족해야 함
유일성(uniqueness) : 릴레이션에 있는 모든 튜플에 대해 유일하게 식별되어야 한다.
최소성(minimality) : 유일성을 가진 키를 구성하는 속성(Attribute) 중 하나라도 제외하는 경우 유일성이 깨지는 것을 의미한다. 즉, 릴레이션의 모든 튜플을 유일하게 식별하는 데 꼭 필요한 속성들로만 구성되어야 한다.
릴레이션 : 테이블이라고 이해
CREATE TABLE 테이블이름
(
필드이름 필드타입 PRIMARY KEY,
...
)
CREATE TABLE 테이블이름
(
필드이름 필드타입,
...,
[CONSTRAINT 제약조건이름] PRIMARY KEY (필드이름)
)
-- 기본키 넣는 방법 1
CREATE TABLE people (
ID INT PRIMARY KEY,
className VARCHAR(5),
Name VARCHAR(10)
);
-- 기본키 넣는 방법 2
CREATE TABLE people (
ID INT,
className VARCHAR(5),
Name VARCHAR(10)
PRIMARY KEY (ID)
);
테이블에 새로운 필드를 추가할 때 해당 필드를 기본 키로 설정하는 방법
-- 추가
ALTER TABLE 테이블이름
ADD 필드이름 필드타입 PRIMARY KEY
ALTER TABLE 테이블이름
ADD [CONSTRAINT 제약조건이름] PRIMARY KEY (필드이름)
기존에 존재하는 필드를 기본 키로 설정하는 방법
ALTER TABLE 테이블이름
MODIFY COLUMN 필드이름 필드타입 PRIMARY KEY
ALTER TABLE 테이블이름
MODIFY COLUMN [CONSTRAINT 제약조건이름] PRIMARY KEY (필드이름)
해당 테이블 Primary key 제약 조건을 삭제
ALTER TABLE 테이블이름
DROP PRIMARY KEY
1. CREATE TABLE 테이블이름
(
필드명 필드타입 UNIQUE,
...
)
2. CREATE TABLE 테이블이름
(
필드이름 필드타입,
...,
[CONSTRAINT 제약조건이름] UNIQUE (필드이름)
)
CREATE TABLE people (
ID INT PRIMARY KEY,
className VARCHAR(5),
Name VARCHAR(10)
UNIQUE (ID)
);
기본키 설정을 하면 해당 필드는 NOT NULL과 UNIQUE 제약 조건의 특징을 모두 가진다.
ALTER TABLE _자식테이블이름
ADD CONSTRAINT _제약조건이름
FOREIGN KEY ( _자식테이블외래키 )
REFERENCES 부모테이블명 ( _부모테이블기본키 )
-- ON DELETE _삭제시제약
-- ON UPDATE _수정시제약
CREATE TABLE 테이블이름
(
필드이름 필드타입,
...,
[CONSTRAINT 제약조건이름]
FOREIGN KEY (필드이름)
REFERENCES 테이블이름 (필드이름)
)
ALTER TABLE 테이블이름
ADD [CONSTRAINT 제약조건이름]
FOREIGN KEY (필드이름)
REFERENCES 테이블이름 (필드이름)
ALTER TABLE _자식테이블명 DROP FOREIGN KEY _자식테이블외래키
FOREIGN KEY 제약 조건에 의해 참조되는 테이블의 데이터의 수정이나 삭제가 발생하면, 참조하고 있는 테이블의 데이터도 같이 영향을 받습니다. 이때 참조하고 있는 테이블의 동작은 다음 키워드를 사용하여 제약 조건에서 미리 설정을 할 수 있습니다.

CREATE TABLE Test2
(
ID INT,
ParentID INT,
FOREIGN KEY (ParentID)
REFERENCES Test1(ID) ON UPDATE CASCADE ON DELETE RESTRICT
);