Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Binaryseop

[SQL] 제약 조건(Constraint) 본문

SQL

[SQL] 제약 조건(Constraint)

Binaryseop 2021. 10. 19. 02:40

1. 제약 조건

제약 조건은 테이블의 데이터에 대한 규칙을 지정하고 테이블에 입력되는 데이터 유형을 제한하는 데 사용됩니다.

 

이렇게 하면 테이블에 있는 데이터의 정확성과 신뢰성이 보장됩니다.

 

이러한 제약 조건은 CREATE 문으로 테이블을 생성할 때나 ALTER 문으로 컬럼을 추가 및 수정할 때 설정할 수 있습니다.

 

NOT NULL 컬럼이 NULL 값을 가질 수 없도록 합니다.
UNIQUE 컬럼의 모든 값들이 서로 다른값을 갖도록 보장합니다.
PRIMARY KEY 기본키 제약조건입니다(UNIQUE, NOT NULL 조건)
FOREIGN KEY 외래키 제약조건입니다.
CHECK 입력값이 특정 조건을 맞족하는지 확인합니다(MySQL에서는 동작하지 않습니다)
DEFAULT 컬럼값이 입력되지 않은 경우 기본값을 설정합니다.

2. 제약조건 사용방법

1) NOT NULL

NOT NULL 제약조건은 열이 NULL 값을 허용하지 않도록 합니다.

 

· CREATE TABLE에서 NOT NULL

CREATE TABLE table_name (
    column1 datatype NOT NULL,
    column2 datatype NOT NULL,
    column3 datatype,
   ....
);

 

· ALTER TABLE에서 NOT NULL

ALTER TABLE table_name
MODIFY column datatype NOT NULL;

 

2) UNIQUE

UNIQUE 제약 조건은 열의 모든 값이 서로 다른지 확인하여 열 집합의 고유성을 보장합니다.

 

한 테이블에서 하나 이상의 UNIQUE 제약 조건을 가질 수 있습니다.

 

· CREATE TABLE에서 UNIQUE

CREATE TABLE table_name (
    column1 datatype NOT NULL,
    column2 datatype NOT NULL,
    column3 datatype,
   ....
   UNIQUE(column1)
);

 

· ALTER TABLE에서 UNIQUE

ALTER TABLE table_name
ADD UNIQUE(column);

 

3) PRIMARY KEY

PRIMARY KEY 제약 조건은 열의 모든 값이 서로 다른지 확인하여 열 집합의 고유성을 보장합니다.

 

테이블당 하나의 PRIMARY KEY 제약 조건만 갖을 수 있습니다.

 

· CREATE TABLE에서 PRIMARY KEY

CREATE TABLE table_name (
    column1 datatype NOT NULL,
    column2 datatype NOT NULL,
    column3 datatype,
   ....
   PRIMARY KEY(column1)
);

 

· ALTER TABLE에서 PRIMARY KEY

ALTER TABLE table_name
ADD PRIMARY KEY(column);

 

4) FOREIGN KEY

FOREIGN KEY는 다른 테이블의 PRIMARY KEY를 참조하는 한 테이블의 필드(모음)입니다.

 

FOREGIN KEY가 있는 테이블을 자식 테이블이라 하고 PRIMARY KEY가 있는 테이블을 부모 또는 참조 테이블이라고 부릅니다.

 

FOREGIN KEY를 사용하려면 참조 테이블에 해당 레코드 값이 반드시 존재해야 합니다.

 

FOREGIN KEY 제약 조건을 사용함으로써 부모 테이블에 포함된 값 중 하나가 입력돼야 하므로 잘못된 데이터가 입력되는 것을 방지할 수 있습니다.

 

· orders 테이블

order_id customer_id order_date
1035 1 2021-10-14
1036 2 2021-10-15

 

· customer 테이블

customer_id name address phone
1 김호준 경기도 파주시 010-0000-0002
2 이성민 서울특별시 송파구 010-0000-0101
3 남건우 강원도 춘천시 010-0000-0301

 

orders 테이블의 customer_id 열은 customer 테이블의 customer_id 열을 참조합니다.

 

customer 테이블의 customer_id 열은 primary key이므로 orders 테이블의 customer_id는 foreign key가 됩니다.

 

따라서 customer 테이블은 부모 또는 참조 테이블이 되고 orders 테이블은 자식 테이블이 됩니다.

 

· CREATE TABLE에서 PRIMARY KEY

CREATE TABLE orders (
    order_id INT,
    customer_id INT,
    order_datte DATE,
    PRIMARY KEY(order_id)
    FOREIGN KEY(customer_id) REFERENCES customer(customer_id)
);

 

· ALTER TABLE에서 PRIMARY KEY

ALTER TABLE Orders
ADD FOREIGN KEY(customer_id) REFERENCES customer(customer_id);

 

5) DEFAULT

DEFAULT 제약 조건은 열의 기본값을 설정하는데 사용됩니다.

 

다른 값을 지정하지 않으면 기본값으로 설정된 값이 레코드에 추가됩니다.

 

· CREATE TABLE에서 DEFAULT

CREATE TABLE reservation (
    ID INT,
    NAME VARCHAR(30) DEFAULT 'anonymous'
   ...
);

 

· ALTER TABLE에서 DEFAULT

ALTER TABLE reservation
ALTER name SET DEFAULT 'anonymous';

 

'SQL' 카테고리의 다른 글

[HackerRank] Weather Observation Station 7  (0) 2024.02.25
[HackerRank] Weather Observation Station 6  (0) 2024.02.25
[SQL] 스키마(SCHEMA) 수정 및 삭제  (0) 2021.10.26
[SQL] SQL 개념과 종류  (0) 2021.10.06
[SQL] DBMS와 RDBMS 개념 설명  (0) 2021.10.05