MySQL

15. MySQL 제약 조건

drizzle0925 2021. 3. 15. 10:22
728x90

MySQL 제약 조건

SQL 제약 조건은 테이블 데이터에 대한 규칙을 지정하는 데 사용된다.

제약 조건은 테이블에 들어갈 수 있는 데이터 유형을 제한하는데 사용된다.

이렇게 하면 테이블의 정확성과 신뢰성이 보장된다. 제약 조건과 데이터 작업 사이에 위반이 있으면 작업이 중단된다.

제약 조건은 열 또는 테이블 단위로 지정할 수 있다. 열로 지정하면 열에만 적용되고 테이블에 지정하면 테이블에 적용된다.

 

SQL에서 일반적으로 사용되는 제약 조건은 다음과 같다.

NOT NULL 열의 NULL 값을 가질 수 없도록 한다.
UNIQUE 열의 모든 값이 다른지 확인
PRIMARY KEY 테이블의 각 행을 고유하게 식별한다.
FOREIGN KEY 외래키, 다른 테이블과 연결해주는 역할을 한다.
CHECK 열의 값이 특정 조건을 충족하는지 확인
DEFAULT 값이 지정되지 않은 경우 열의 기본값을 설정
CREATE INDEX 데이터베이스에서 데이터를 매우 빠르게 생성하고 검색하는 데 사용

컬럼에 제약조건 부여

제약 조건은 CREATE TABLE 문으로 테이블을 만들 때 또는 ALTER TABLE문으로 테이블을 수정할 때 지정해 줄 수 있다.

 

Syntax

CREATE TABLE 테이블이름 (
    컬럼1 데이터타입 제약조건,
    컬럼2 데이터타입 제약조건,
    컬럼3 데이터타입 제약조건,
    ....
);

 

Example

CREATE TABLE fruit(
	id int PRIMARY KEY NOT NULL AUTO_INCREMENT,
    name varchar(50) NOT NULL,
    weigth int(11),
    price int(11) NOT NULL,
    amount int NOT NULL DEFAULT 0
);

 

생성된 테이블 구조를 확인

제약조건이 적용된 것을 확인할 수 있다.


NOT NULL

기본적으로 열은 NULL 값을 보유할 수 있다.

NOT NULL은 NULL 값을 허용할지 허용하지 않을지 판단하는 조건이다.

NOT NULL로 설정하면 항상 필드값을 넣어야 돼서 필드 값에 추가할 값이 없으면 레코드를 추가, 수정이 불가능하다.


UNIQUE

UNIQUE은 열의 모든 값을 다르게 한다.

UNIQUE 및 PRIMARY KEY 제약 조건은 모든 열 또는 열 집합의 고유성을 보장한다.

PRIMARY KEY 제약은 자동으로 UNIQUE 제약 조건을 가진다.

UNIQUE는 많은 컬럼에 부여할 수 있지만 PRIMARY KEY는 테이블 당 하나의 컬럼에 부여할 수 있다.


PRIMARY KEY

PRIMARY KEY는 유일하게 테이블의 각 레코드를 식별한다.

기본 키는 UNIQUE 값을 포함하며 NULL 값을 포함할 수 없다.

기본 키는 하나의 테이블에 하나만 존재한다.

기본 키는 단일 또는 다중 열로 구성될 수 있다.


FOREIGN KEY

FOREIGN KEY는 한 테이블을 다른 테이블과 연결해주는 역할을 한다.

외래 키는 다른 테이블의 기본키(PRIMARY KEY)를 참조한다.

외래 키가 있는 테이블을 자식테이블, 기본 키가 있는 테이블을 부모 테이블이라고 한다.


CHECK

CHECK는 필드에 입력하는 값의 범위를 제한하는 데 사용된다.

CHECK로 열에 대한 제약 조건을 정의하면 이 열에 대해 특정 값만 허용된다.

다른 열의 값을 기반으로 특정 열의 값을 제한하는 것도 가능하다.

 

Example

CREATE TABLE fruit2(
	id int PRIMARY KEY NOT NULL AUTO_INCREMENT,
    name varchar(50) NOT NULL,
    weigth int(11),
    price int(11) NOT NULL,
    amount int NOT NULL DEFAULT 0,
    CHECK (amount <= 2000)
);

DEFAULT

DEFAULT 제약 조건은 컬럼에 대한 기본 값을 설정하는 데 사용된다.

다른 값을 지정않으면 DEFAULT로 지정한 값을 자동으로 들어간다.


INDEX

테이블의 인덱스를 만드는 데 사용된다.

인덱스는 데이터베이스에서 다른 것보다 더 빠르게 데이터를 검색하는 데 사용된다.

사용자는 인덱스를 볼 수 업으며 검색 속도를 높이기 위해 사용된다.

 

인덱스가 있는 테이블을 업데이트하는 것은 인덱스가 없는 테이블을 업데이트하는 것보다 더 많은 시간이 소요된다. (인덱스도 같이 업데이트돼야 하기 때문) 자주 검색되는 열에 한해서 인덱스를 작성하도록 하자.

 

Syntax

CREATE INDEX 인덱스이름
ON 테이블이름 (컬럼1, 컬럼2, ...);
728x90

'MySQL' 카테고리의 다른 글

17. MySQL 데이터 조회하기  (0) 2021.03.16
16. MySQL 데이터 입력하기  (0) 2021.03.16
14. MySQL 테이블 변경  (0) 2021.03.14
13. MySQL 테이블 삭제  (0) 2021.03.14
12. MySQL 테이블 구조조회  (0) 2021.03.14