PostgreSQL - SELECT 옵션 + 조건문

Yuno·2025년 4월 13일

🚀 초기 DB 세팅

✨ member 테이블 생성

create table member (
  id SERIAL primary key,             -- 자동 증가하는 식별 
  name varchar(50) not null,         -- 이름 (필수)
  email varchar(100) unique,         -- 이메일 (중복 불가)
  address varchar(100),              -- 주소 (중복 가능)
  created_at timestamp default now() -- 생성 시간 (기본값: 현재 시간)
);

✨ member 테이블 데이터 삽입

insert into member (name, email, address)
values
  ('홍길동', 'gildong@test.com', '서울'),
  ('김철수', 'kimcs@test.com', '서울'),
  ('이영희', 'lee@test.com', null),
  ('홍길동', 'hong@test.com', null);

현재 member 테이블

PKnameemailaddress
1홍길동gildong@test.com서울
2김철수kimcs@test.com서울
3이영희lee@test.comnull
4홍길동hong@test.comnull

1️⃣ WHERE 조건문

✨ 특정 조건에 맞는 데이터만 조회

select * from member where address = '서울';
select * from member where name = '홍길동';

2️⃣ 여러 조건 (AND / OR)

# 이름은 '홍길동' 이고, 주소가 입력되지 않은 회원 찾기
select * from member
where name = '홍길동' and address is null;

# 이름이 '홍길동' 이거나, 주소가 비어있는 회원 모두 찾기
select * from member
where name = '홍길동' or address is null;

# 이름이 '홍길동' 이고, 주소가 서울 인 회원 찾기
select * from member
where name = '홍길동' and address like '서울';

✨ LIKE & ILIKE (부분 문자열 검색)

PostgreSQL 은 대소문자 구분이 엄격한 편임

문법설명
LIKE대소문자 구분
ILIKE대소문자 구분 없음
-- 이메일에 T 가 들어가는 회원 조회
select * from member where email like '%T%';

-- 이메일에 T 또는 t 가 들어가는 회원 조회 (대소문자 무시)
select * from member where email ilike '%T%';

3️⃣ ORDER BY (정렬)

-- 이름을 기준으로 오름차순 정렬
select * from member order by name asc;

-- 생성일 기준으로 최신순 정렬(역정렬)
select * from member order by created_at desc;

4️⃣ LIMIT & OFFSET (페이징)

-- 가장 최근 등록된 2명 최신순 조회
select * from member
order by created_at desc
limit 2;

-- 2번째 부터 2명 조회 (OFFSET 은 시작 위치)
select * from member
order by created_at desc
limit 2 offset 1;

5️⃣ NULL 값 처리

-- 주소가 없는(null) 사용자 조회
select * from member where address is null;

-- 주소가 존재하는 사용자만 조회
select * from member where address is not null;
profile
Hello World

0개의 댓글