개발공부/혼자공부하는 SQL

[SQL] 테이블 제약조건(기본키, 외래키, 고유키)

코푸딩 2023. 3. 11. 13:39
728x90

제약조건이란

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

데이터의 무결성이란 데이터에 결함이 없도록, 다시 말해 설계자의 의도한 데이터의 조건을 갖추도록 만드는 것이다.

 

대표적인 제약조건

  1. 기본키(PRIMARY KEY)
  2. 외래키(FOREIGN KEY)
  3. 고유키(UNIQUE)
  4. 체크(CHECK)
  5. 디폴트(DEFAULT) 정의
  6. NULL 값 허용

 

기본키 

테이블의 행 데이터들을 구분할 수 있는 식별자를 기본키라고 한다.

기본키 설정을 안해도 테이블 생성이 가능하지만 기본키 역할을 위해 기본키 설정을 하는 것이 좋다.

기본키는 식별자 역할을 하기 위해 아래의 특징이 있다.

1. 중복 허용 불가

2. NULL 값 입력 불가

3. 테이블 당 1개만 지정 가능

 

 

 

외래키

기본키가 있는 테이블을 기준 테이블이라 하고 외래키가 있는 테이블을 참조 테이블이라고 한다.

외래키는 두 테이블 사이의 관계를 연결해주고, 그 데이터의 무결성을 보장해주는 역할을 한다.

 

외래키의 특징

외래키는 기준 테이블에 연결된 컬럼에 존재하는 데이터만 입력이 가능하다.

또한, 참조 테이블에 특정 데이터가 존재할 떄 기준 테이블에서 그 데이터를 수정하거나 삭제할 수 없도록 막아주는 기능을 한다.

만약 수정, 삭제가 필요할 경우 ON UPDATE CASCADE, ON DELETE CASCADE를 사용해 참조 테이블의 데이터도 함께 수정하거나 삭제하도록 설정할 수 있다.

외래키는 연결된 테이블의 기본키 또는 고유키와 연결해주어야한다.

 

-- CASCADE 설정을 해주면 기준 테이블의 수정, 삭제에 따라 참조 테이블에도 적용된다.
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)
   ON UPDATE CASCADE
   ON DELETE CASCADE;
);

 

 

 

고유키

중복되지 않는 유일한 값을 의미한다. 기본키와 다른 점은 NULL값을 허용한다는 점이다.

NULL값을 갖는 데이터가 여러 개 존재할 수 있다.

 

 

 

 

체크

입력되는 데이터를 점검하는 기능이다.

예를 들어, 100 이상의 값만 허용하거나, 특정 데이터 리스트 안에 있는 값만 가능하도록 제한을 둘 수 있다.

 

-- height는 100 이상의 값만 가능하고, phone1은 02, 031, 032, 054, 055, 061 중에 하나의 데이터만 가능하다
CREATE TABLE member 
( mem_id  CHAR(8) NOT NULL PRIMARY KEY, 
  mem_name    VARCHAR(10) NOT NULL, 
  height      TINYINT UNSIGNED NULL CHECK (height >= 100),
  phone1      CHAR(3)  NULL CHECK  (phone1 IN ('02', '031', '032', '054', '055', '061' ))
);

 

 

 

 

기본값 정의

값을 입력하지 않았을 때 자동으로 입력될 값을 미리 지정해 놓는 방법이다.

예를 들어, height를 입력하지 않으면 100이 기본으로 입력되도록 설정할 수 있다.

 

CREATE TABLE member 
( mem_id  CHAR(8) NOT NULL PRIMARY KEY, 
  mem_name    VARCHAR(10) NOT NULL, 
  height      TINYINT UNSIGNED NULL DEFAULT 100,
  phone1      CHAR(3)  NULL
);
728x90