개요
테이블의 제약조건은 데이터의 무결성을 지키기 위해 제한하는 조건
간단한 예로 운영 사이트의 회원 ID가 중복되면 혼란이 일어나는데, 이런 것이 바로 데이터의 결함이고 이런 결함이 없는 것을 데이터의 무결성이라고 표현함
제약조건 종류
1. PRIMARY KEY (기본키)
2. FOREIGN KEY (외래키)
3. UNIQUE KEY (고유키)
4. CHECK 제약조건
5. DEFAULT 정의
6. NULL 허용
1. PRIMARY KEY (기본키)
데이터를 구분하는 식별자
기본키에 입력되는 값은 중복될 수 없으며, NULL 값이 입력될 수 없다.
테이블 당 기본키는 1개만 가질 수 있다.
테이블의 특성을 가장 잘 반영하는 열을 선택하여 지정한다.
CREATE TABLE '테이블명'
( id CHAR(8) NOT NULL,
name CHAR(8) NOT NULL,
phone_number TINYINT UNSIGNED NULL,
PRIMARY KEY (id) -- 테이블 생성시에 제일 마지막에 PRIMARY KEY(열_이름)을 입력하면 해당 열이 기본키가 됨
);
CREATE TABLE '테이블명'
( id CHAR(8) NOT NULL,
name CHAR(8) NOT NULL,
phone_number TINYINT UNSIGNED NULL
);
-- 테이블을 바꾸는 ALTER TABLE 문으로 기본키 설정
ALTER TABLE member
ADD CONSTRAINT
PRIMARY KEY (id);
2. FOREIGN KEY (외래키)
두 테이블 사이의 관계를 연결해주는 제약조건
대표적으로 기본키-외래키 관계로 기본키가 있는 테이블을 기준 테이블, 외래키가 있는 테이블을 참조 테이블이라고 함.
CREATE TABLE '테이블명_1'
( id CHAR(8) NOT NULL,
name CHAR(8) NOT NULL,
phone_number TINYINT UNSIGNED NULL,
PRIMARY KEY (id) -- 테이블 생성시에 제일 마지막에 PRIMARY KEY(열_이름)을 입력하면 해당 열이 기본키가 됨
);
CREATE TABLE '테이블명_2'
( id CHAR(8) NOT NULL,
RX CHAR(8) NOT NULL,
phone_number TINYINT UNSIGNED NULL,
FOREIGN KEY (id) REFERENCES 테이블명_1(id)
);
-- FOREIGN KEY (열_이름) REFERENCES 기준_테이블(열_이름)
CREATE TABLE '테이블명_2'
( id CHAR(8) NOT NULL,
RX CHAR(8) NOT NULL,
phone_number TINYINT UNSIGNED NULL,
FOREIGN KEY (id) REFERENCES 테이블명_1(id)
);
ALTER TABLE '테이블명_2'
ADD CONSTRAINT
FOREIGN KEY (id) REFERENCES 테이블명_1(id)
ON UPDATE CASCADE; -- 기준 테이블의 데이터가 '수정'되면 참조 테이블의 데이터도 자동으로 '수정'
ON DELETE CASCADE; --기준 테이블의 데이터가 '삭제'되면 참조 테이블의 데이터도 자동으로 '삭제'
3. UNIQUE KEY (고유키)
중복되지 않는 유일한 값을 입력하는 조건
기본키와 차이점은 NULL 값을 허용한다는 것, 테이블에 고유키를 여러 열에 지정해도 된다는 것이다.
CREATE TABLE '테이블명_1'
( id CHAR(8) NOT NULL,
name CHAR(8) NOT NULL,
phone_number TINYINT UNSIGNED NULL,
email CHAR (30) NULL UNIQUE -- 중복은 허용되지 않지만 NULL은 허용한다.
);
4. CHECK 제약조건
입력되는 데이터를 점검, 해당 데이터에 들어갈 숫자의 범위나 문자를 지정하여 조건을 추가한다.
CREATE TABLE '테이블명_1'
( id CHAR(8) NOT NULL,
name CHAR(8) NOT NULL,
region TINYINT UNSIGNED NULL CHECK (phone_number IN('02','031','041'))
-- region 에는 무조건 02,031,041중에 하나만 입력되게 설정
);
5. DEFAULT 정의
기본값 정의는 값을 입력하지 않았을 때 자동으로 입력될 값을 미리 지정해 놓는 조건이다.
CREATE TABLE '테이블명_1'
( id CHAR(8) NOT NULL,
name CHAR(8) NOT NULL,
region TINYINT UNSIGNED NULL DEFAULT '02'
-- region에 아무 데이터가 없을 경우 02를 기본값으로 주어 자동으로 02가 입력됨
);
6. NULL 허용
NULL은 빈값을 허용, NOT NULL은 빈 값을 허용하지 않는다.
CREATE TABLE '테이블명_1'
( id CHAR(8) NOT NULL,
name CHAR(8) NOT NULL,
region TINYINT UNSIGNED NULL
);
'SQL (RDBMS)' 카테고리의 다른 글
SQL 데이터형식 정리 (0) | 2023.04.15 |
---|---|
INSERT, DELETE, UPDATE 문 (0) | 2023.04.09 |
ORDER BY, GROUP BY (0) | 2022.12.05 |
혼공SQL) SELECT문 실습 (0) | 2022.12.05 |
데이터베이스(DataBase)/DBMS/SQL 개념 (0) | 2022.11.29 |