1️⃣ 제약 조건 (Constraints)
제약 조건은 데이터의 무결성을 유지하기 위해 사용됨
즉, 잘못된 데이터가 들어오지 않도록 제한을 거는 역할을 함
| 제약 조건 | 설명 |
|---|
| PRIMARY KEY | 고유하고 NULl 불가. 테이블의 식별자 |
| UNIQUE | 중복 금지 (NULL 허용) |
| NOT NULL | NULL 허용 안됨 |
| DEFAULT | 값이 없을 때 자동으로 채울 기본값 |
| CHECK | 특정 조건을 만족해야 삽입 가능 |
| FOREIGN KEY | 다른 테이블의 기본 키와 연결 (관계 설정) |
✨ member 테이블 생성
create table member (
id SERIAL primary key,
name varchar(50) not null,
email varchar(100) unique,
address varchar(100),
age integer check (age >= 0),
created_at timestamp default now()
);
- NOT NULL: name 필드는 필수 값
- UNIQUE: email 은 중복 불가능
- CHECK: 나이는 0 이상만 가능
- DEFAULT NOT(): 가입 시간은 현재 시간으로 자동 설정
2️⃣ 다양한 자료형
| 자료형 | 설명 | 예시 |
|---|
| INTEGER, SERIAL | 정수 | 1, 2, 3 |
| VARCHAR(n), TEXT | 문자열 | '홍길동' |
| BOOLEAN | 참 / 거짓 | TRUE / FALSE |
| DATE, TIMESTAMP | 날짜 / 시간 | '2025-04-13' |
| NUMERIC(p, s) | 고정 소수점 | 99.99 |
| ENUM | 제한된 값 | ('MALE', 'FEMALE') |
| JSON, JSONB | JSON 객체 저장 | {"Key": "value"} |
✨ 회원 삽입
insert into member (name, email, address, age)
values ('홍길동', 'gildong@test.com', '서울', '1');
| PK | name | email | address | age |
|---|
| 1 | 홍길동 | gildong@test.com | 서울 | 1 |
✨ BOOLEAN
alter table member add column is_active boolean default true;
update member set is_active = false where id = 1;
✨ ENUM 타입 정의
create type gender as enum ('MALE', 'FEMALE');
alter table member add column gender gender;
update member set gender = 'MALE' where id = 1;