제약 조건
AUTO_INCREMENT : 컬럼의 값이 중복되지 않게 1씩 자동으로 증가하게 해줘 고유번호를 생성
CREATE TABLE 테이블이름
(
필드이름 필드타입 AUTO_INCREMENT,
// id bigint AUTO_INCREMENT,
...
);
NOT NULL : 해당 필드는 NULL 값을 저장할 수 없도록 함
CREATE TABLE 테이블이름
(
필드이름 필드타입 NOT NULL,
...
);
UNIQUE : 해당 필드는 서로 다른 값을 가져야만 함
CREATE TABLE 테이블이름
(
필드이름 필드타입 UNIQUE,
...
);
PRIMARY KEY : 해당 필드가 NOT NULL과 UNIQUE 제약 조건의 특징을 모두 가짐
CREATE TABLE 테이블이름
(
필드이름 필드타입 PRIMARY KEY,
...
);
PRIMARY KEY
PRIMARY KEY (= 기본 키)는 테이블 내에서 '유일하게 존재하는 값의 조합'을 설정해서 중복된 데이터가 테이블에 삽입되는 것을 방지하는 제약조건
기본 키를 사용하는 이유
1. 데이터의 중복을 방지하기 위해
만약 기본키를 설정하지 않고서 회원을 관리하는 테이블이 있을 때 기존에 있던 회원이 예전에 가입한 것을 잊고서 다시 회원가입을 하는데 최근에 번호 및 주소가 바뀌었다면? 우리는 둘 중에 어느 정보가 정확한 정보인지 판단하기 어렵게 되어 데이터의 무결성이 깨지게 된다.
2. 데이터를 매우 빠르게 찾을 수 있기 때문에
기본 키를 설정하면 DBMS는 인덱스를 만든다.
이 인덱스는 해당 데이터를 빨리 찾을 수 있게 도와주는 일종의 목차라고 생각하면 좋다.
만약 주민번호 컬럼에 기본 키가 설정 되어있지 않는다면 ?
우리는 주민번호가 절대 중복될 수 없다는 것을 알지만 DBMS는 그것을 모르기 때문에 주민번호가 중복될 수 있는 것을 가정하여 5000만 row를 전부 확인해야 한다.
이럴 때 주민번호에 기본 키 설정이 되어있으면 row를 전부 확인하지 않고 1개만 찾으면 바로 해당 데이터를 반환한다.
FOREIGN KEY : 하나의 테이블을 다른 테이블에 의존하게 만들며 데이터의 무결성을 보장함
- FK를 가지는 테이블이 참조하는 기준 테이블의 열은 반드시 PK, UNIQUE 제약조건이 설정되어 있어야함
CREATE TABLE 테이블이름
(
필드이름 필드타입,
...
FOREIGN KEY(필드이름)
REFERENCES 테이블이름(필드이름)
);
FOREIGN KEY
FOREIGN KEY (= 외래 키)는 두개의 테이블을 연결하는 다리 역할을 해주는 키
- 기본 키가 하나의 테이블에서 중복된 데이터가 삽입되는 것을 방지하는 역할을 해주는데 외래 키 역시 비슷한 문제를 방지하는 역할을 수행한다.
- 외래 키는 데이터가 새롭게 추가될 때 외래 키에 해당하는 값이 외래 키가 참조하는 테이블에 존재하는지를 확인한다.
CASCADE : FOREIGN KEY 로 연관된 데이터를 삭제,변경할 수 있음
CREATE TABLE 테이블이름
(
필드이름 필드타입,
...
FOREIGN KEY(필드이름)
REFERENCES 테이블이름(필드이름) ON DELETE CASCADE
//ON UPDATE CASCADE
);
'🗂️ Study > 📊 MySQL' 카테고리의 다른 글
부속질의 (subquery) (0) | 2024.07.05 |
---|---|
정규화(Normalization) (0) | 2024.05.29 |
JOIN (0) | 2024.05.21 |
SQL (0) | 2024.05.21 |
Database (0) | 2024.05.21 |