제약 조건
제약조건이란 데이터의 무결성을 지키기 위한 제한된 조건을 의미한다. MYSQL은 데이터의 무결성을 위해 5가지의 제약조건을 제공한다.
- PRIMARY KEY 제약 조건
- FOREIGN KEY 제약 조건
- UNIQUE 제약 조건
- CHECK 제약조건
- DEFAULT 정의
- NULL 값 허용
기본 키 제약 조건
테이블에 존재하는 많은 행의 데이터를 구분할 수 있는 식별자를 기본키(PRIMARY KEY)라고 부른다.
대부분의 테이블은 키본 키를 가지져야 하고 없어서 구성이 가능하지만 대부분 기본 키를 설정해 주어야 한다.
기본 키 제약 조건은 기본키는 테이블 별로 하나만 존재해야 하며 이는 해당 테이블의 각 레코드를 유일하게 식별한다. NULL 값을 허용하지 않으며 자동으로 UNIQUE 제약조건이 부여된다.
CREATE TABLE Users (
ID INT PRIMARY KEY,
Name VARCHAR(50)
);
외래 키 제약 조건
외래 키 제약 조건은 두 테이블 사이의 관계를 선언함으로써 데이터의 무결성을 보장해 주는 역할을 한다.
외래 키 관계를 설정하면 하나의 테이블이 다른 테이블에 의존하게 된다.
외래 키는 기본키 이거나 UNIUQUE 이여야 한다.
// 테이블 생성 시점에 추가
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
UserID INT,
FOREIGN KEY (UserID) REFERENCES Users(ID)
);
//ALTER TABLE 명령을 사용하여 추가
ALTER TABLE Orders
ADD FOREIGN KEY (UserID) REFERENCES Users(ID);
외래키 에는 ON DELETE 또는 ON UPDATE 옵션을 설정할 수 있다 이 옵션을 참조하는 테이블의 레코드가 삭제되거나 수정될 때 어떤 동작을 수행할지 지정한다.
CASCADE: 참조하는 테이블의 레코드가 삭제되거나 수정되면 해당하는 외래 키를 가진 레코드도 같이 삭제되거나 수정된다.
SET NULL: 참조하는 테이블의 레코드가 삭제되거나 수정되면 외래 키 값을 NULL로 설정된다.
NO ACTION: 아무런 동작을 하지 않는다. 만약 참조 무결성이 깨진다면, 에러를 반환한다.
RESTRICT: NO ACTION과 유사하지만, 검사 시점이 다르다.
UNIQUE 제약 조건
UNIQUE 제약 조건은 중복되지 않는 유일한 값을 입력해야 하는 조건이다. PRIMARY KEY 와 비슷하나 차이점으로 NULL 값을 허용한 다는 점이 있다.
CREATE TABLE Users (
ID INT PRIMARY KEY,
Email VARCHAR(50) UNIQUE
);
CHECK 제약 조건
CHECK 제약 조건은 입력되는 데이터를 점검하는 기능을 한다. 조건을 명시하여 그 조건에 맞는 데이터만 입력 가능
CREATE TABLE Users (
ID INT PRIMARY KEY,
Age INT CHECK (Age >= 18)
);
DEFAULT 정의
DEFAULT는 값을 입력하지 않았을떄, 자동으로 입력되는 기본 값을 정의하는 방법이다.
CREATE TABLE Users (
ID INT PRIMARY KEY,
Age INT DEFAULT 18
);
NULL 값 허용
NULL값을 허용하지 않으려면 NOT NULL을 사용하면 된다. NOT NULL 제약을 가진 열에는 NULL 값을 입력할 수 없고
기본키가 설정된 열에는 NULL 값이 있을 수 없으므로 생략하면 자동으로 NOT NULL로 인식된다.
NULL 값을 아무것도 없다는 의미로 공백이나(' ')이나 0과 같은 값과는 다르다.
CREATE TABLE Users (
ID INT NOT NULL,
Name VARCHAR(50) NOT NULL
);
'DB' 카테고리의 다른 글
인덱스(INDEX) (1) | 2023.10.05 |
---|---|
[DB] 뷰 (0) | 2023.09.27 |
SQL 프로그래밍 (0) | 2023.09.23 |
조인(JOIN) (0) | 2023.09.22 |
MYSQL 데이터 형식과 내장함수 (1) | 2023.09.21 |