[MySQL] 제약조건

thingzoo·2023년 6월 24일
0

MySQL

목록 보기
6/17
post-thumbnail

제약조건

  • 데이터의 무결성을 지키기 위해, 데이터를 입력받을 때 실행되는 검사 규칙을 의미
  • CREATE 문으로 테이블을 생성할 때나 ALTER 문으로 컬럼을 추가할 때도 설정

기본 사용법

  • 제약조건 확인
DESC 데이터베이스 명.테이블 명;
  • 테이블 생성 시, 제약조건 생성
CREATE TABLE 테이블명
(
	컬럼명 컬럼타입 [제약조건1 제약조건2 ...]
    ...
);
  • 테이블 생성 시, 제약조건 생성 & 이름 설정
CREATE TABLE 테이블명
(
	컬럼명 컬럼타입,
    ...
    CONSTRAINT 제약조건이름 제약조건 (컬럼명)
);
  • 테이블 수정 시, 제약조건 생성
ALTER TABLE 테이블명 
ADD 컬럼명 컬럼타입 제약조건;

ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건_이름 제약조건 (컬럼명);
  • 테이블 수정 시, 제약조건 변경
ALTER TABLE 테이블명 
MODIFY COLUMN 컬럼명 컬럼타입 제약조건;

ALTER TABLE 테이블명 
MODIFY CONSTRAINT 제약조건_이름 제약조건 (컬럼명);
  • 제약조건 삭제/비활성화/활성화
ALTER TABLE 테이블명 
{DROP|DISABLE|ENABLE} CONSTRAINT 제약조건_이름;

AUTO_INCREMENT

컬럼의 값이 중복되지 않게 1씩 자동으로 증가하게 해줘 고유번호를 생성해줌

CREATE TABLE 테이블명
(
	컬럼명 컬럼타입 AUTO_INCREMENT,
    ...
);

NOT NULL

해당 필드는 NULL 값을 저장할 수 없음

CREATE TABLE 테이블명
(
	컬럼명 컬럼타입 NOT NULL,
    ...
);

UNIQUE

해당 필드는 서로 다른 값을 가져야만 함

CREATE TABLE 테이블명
(
	컬럼명 컬럼타입 UNIQUE,
    ...
);

DEFAULT

데이터를 입력하지 않아도 지정한 값이 기본으로 입력됨

  • 테이블 생성 시
CREATE TABLE 테이블명
(
	컬럼명 컬럼타입 DEFAULT 기본값,
    ...
);

CHECK

개발자가 정의하는 특정 조건을 만족해야하는 컬럼에 대한 제약을 설정

  • 테이블 생성 시 CHECK 제약조건 생성
CREATE TABLE User
(
    ...
	Age INT,
	CHECK (Age >= 20)
);

// 2개이상의 컬럼에 적용하는 경우
CREATE TABLE User
(
    ...
	Age INT,
    Address VARCHAR(255),
	CONSTRAINTS CHK_Adult CHECK (Age >= 20 AND Address IS NOT NULL)
);
  • 테이블 수정 시 CHECK 제약조건 생성
ALTER TABLE User 
ADD CHECK (Age >= 20);

// 2개이상의 컬럼에 적용하는 경우
ALTER TABLE User 
ADD CONSTRAINTS CHK_Adult CHECK (Age >= 20 AND Address IS NOT NULL);
  • CHECK 제약조건 삭제
ALTER TABLE User 
DROP CHECK CHK_Adult;

PRIMARY KEY

해당 필드가 NOT NULL과 UNIQUE 제약 조건의 특징을 모두 가지게 됨

CREATE TABLE 테이블명
(
	컬럼명 컬럼타입 PRIMARY KEY,
    ...
);

💡 PRIMARY KEY 이해하기
PRIMARY KEY 즉, 기본 키는 테이블 내에서 '유일하게 존재하는 값의 조합'을 설정해서 중복된 데이터가 테이블에 삽입되는 것을 방지하는 제약조건
1️⃣ 데이터의 중복 방지
2️⃣ 데이터 탐색 빠름

FOREIGN KEY

하나의 테이블을 다른 테이블에 의존하게 만들며 데이터의 무결성을 보장

  • FK를 가지는 테이블이 참조하는 기준 테이블의 열은 반드시 PK, UNIQUE 제약조건이 설정되어 있어야 함
  • 참조 무결성 위배 상활 발생 시, 처리방법으로 옵션 지정 가능

CASCADE

참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블에서도 삭제/수정 수행

RESTRICTED

참조하는 테이블에 데이터가 남아있으면, 참조되는 테이블에서 삭제/수정 불가

NO ACTION

참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블에서는 변경되지 않음

SET NULL/DEFAULT

참조되는 테이블에서 데이터를 삭제하거나 수정하면, 참조하는 테이블에서는 NULL/기본값으로 변경됨

CREATE TABLE 테이블명
(
	컬럼명 컬럼타입,
    ...
    [CONSTRAINT 제약조건이름]
    FOREIGN KEY(컬럼명)
    REFERENCES 참조할_테이블명(참조할_컬럼명) ON {DELETE|UPDATE} {CASCADE|RESTRICT|NO ACTION|SET NULL|SET DEFAULT}
);

❗ FOREIGN KEY 이해하기
FOREIGN KEY 즉, 외래 키는 두개의 테이블을 연결하는 다리 역할을 해주는 키

profile
공부한 내용은 바로바로 기록하자!

0개의 댓글