더 자세하게 제약조건에 대해 알아보기
● 기본 키(Primary Key) 제약 조건 :
- 테이블에 있는 데이터를 고유하게 구분할 수 있는 정보를 나타내기 위해 사용
- 기본 키 설정하지 않은 테이블을 생성할 때 날 수 있는 Error ▼
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key
- 어떤 식으로 SQL을 작성하는가? ▼
CREATE TABLE Users
(
userId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(255)
);
- AUTO_INCREMENT : 데이터를 삽입할 때 데이터를 입력하지 않더라도
고유한 값 유지하도록 해주는 속성
● NULL 제약 조건 :
- 특정 칼럼에서 NULL 값을 허용, 허용 하지 않도록 설정하는 조건
- NULL = 값이 없음
- 테이블에서 컬럼 생성할 때 추가 조건을 작성하지 않았을 때,
헤딩 컬럼은 NULL 값을 허용한 상태
- NULL 값을 허용하면 필수적으로 입력되어야하는 데이터 누락 위험이 있음
- 특정 컬럼에서 NULL 값을 허용하지 않아야될 때 → NOT NULL
- 어떤 상황에서 사용하는가? ▼
CREATE TABLE Users
(
userId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(255) NOT NULL
);
● 고유 (Unique) 제약 조건 :
- 특정 컬럼에서 중복된 값이 허용되지 않도록 설정하는 조건
- 예) 이메일, 아이디 등
- 어떤 식으로 사용할까? ▼
CREATE TABLE Users
(
userId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(255) NOT NULL UNIQUE
);
- 만약, INSERT를 사용하여 UNIQUE 처리 된 값에 값을 넣어려고 하면?
INSERT INTO Users (name) VALUES ('김철수');
→ Error! ▼▼▼
Error: ER_DUP_ENTRY: Duplicate entry '김철수' for key 'Users.name'
- 기본 키(Primary Key)를 설정한 컬럼은 고유 제약 조건(Unique)이 자동으로 적용
● 외래 키(Foreign Key) 제약 조건 :
- 테이블간의 연관 관계(Relation Ship)를 표현할 때 사용
- 대표적인 3가지 형태 예시 설명 :
1:1 - 1명의 사용자(User)는 1개의 사용자 정보(UserInfo)를 가질 수 있다
1:N - 1명의 사용자(User)는 여러개의 주문(Order)을 할 수 있다.
N:M - 여러명의 학생(Student)은 여러개의 학원(Academy)을 등록할 수 있다.
- 사용 방법 ▼
CREATE TABLE 테이블명
FOREIGN KEY (컬럼명) REFERENCES 참조_테이블명 (참조_컬럼명)
ON DELETE [연계 참조 제약 조건]
ON UPDATE [연계 참조 제약 조건]
);
- 기본적으로, 외래 키(Foregin key) 제약 조건은 CREATE TABLE 문을 사용하여
테이블을 생성함과 동시에 정의
- 어떤 식으로 사용할까? ▼
CREATE TABLE Garden
(
gardenId INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
address VARCHAR(255) NOT NULL
);
CREATE TABLE GardenPlants
(
gardenPlantsId INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
gardenId INT(11) NOT NULL,
name VARCHAR(255) NOT NULL,
FOREIGN KEY (gardenId) REFERENCES Garden (gardenId)
);
- 외래 키(Foregin Key)를 사용하여 특정 GardenPlants 테이블 행이 어떤 Gardend에 속하는지 알 수 있다
'Programming Language' 카테고리의 다른 글
[DB] 트랜잭션 Transaction (0) | 2024.12.12 |
---|---|
[SQL] WITH 절 (1) | 2024.12.05 |
[SQL] 4-1. SQL과 제약 조건 (0) | 2024.11.25 |
[SQL] 3. DDL, DML, DCL, TCL (0) | 2024.11.22 |
2. SQL 추가 기능 - Window Function (2) | 2024.10.18 |