select와 다양한 필터, 정렬, 제한, 관계 조인으로 데이터를 조회하는 방법을 배운다.
데이터 조회
데이터를 저장했다면 이제 원하는 형태로 꺼내올 차례입니다. Supabase 클라이언트는 SQL의 표현력을 살린 체이닝 API를 제공합니다. 이 강의에서는 select, 필터, 정렬, 개수 제한, 그리고 관계 조인 조회를 다룹니다.
학습 목표
select로 원하는 컬럼만 조회한다.eq,gt,lt,like등 필터를 조합한다.order와limit으로 정렬하고 개수를 제한한다.- 관계가 있는 테이블을 조인 조회한다.
기본 조회
from으로 테이블을 지정하고 select로 컬럼을 고릅니다. 모든 컬럼은 *로 가져옵니다.
const { data, error } = await supabase
.from('posts')
.select('*');
특정 컬럼만 필요하면 쉼표로 나열합니다.
const { data } = await supabase
.from('posts')
.select('id, title, created_at');
응답은 항상 { data, error } 형태이므로 error를 먼저 확인하는 습관이 중요합니다.
필터링
조건은 메서드 체이닝으로 추가합니다.
| 메서드 | 의미 | 예 |
|---|---|---|
eq | 같음 | eq('published', true) |
neq | 다름 | neq('id', 1) |
gt / gte | 초과 / 이상 | gt('views', 100) |
lt / lte | 미만 / 이하 | lt('price', 5000) |
like | 패턴 매칭 | like('title', '%리액트%') |
const { data } = await supabase
.from('posts')
.select('*')
.eq('published', true)
.gt('views', 100)
.like('title', '%Supabase%');
여러 필터를 이어 붙이면 AND 조건으로 결합됩니다.
정렬과 제한
order로 정렬하고 limit으로 개수를 제한합니다.
const { data } = await supabase
.from('posts')
.select('*')
.order('created_at', { ascending: false })
.limit(10);
range(0, 9)를 쓰면 페이지네이션처럼 특정 구간만 가져올 수 있습니다.
단일 행 조회
결과가 하나라고 확신할 때는 single()을 붙여 배열이 아닌 객체를 받습니다.
const { data, error } = await supabase
.from('posts')
.select('*')
.eq('id', 1)
.single();
💡 TIP —
single()은 결과가 0개거나 2개 이상이면 에러를 반환합니다. 행이 없을 수도 있다면maybeSingle()을 사용해null을 안전하게 받으세요.
관계 조인 조회
외래 키로 연결된 테이블은 중첩 select로 함께 가져옵니다. 03강의 posts.author_id → profiles.id 관계를 예로 들면 다음과 같습니다.
const { data } = await supabase
.from('posts')
.select(`
id,
title,
profiles ( username, bio )
`);
profiles가 각 게시글에 중첩 객체로 포함됩니다. 별도의 조인 SQL을 작성하지 않아도 관계를 자동으로 따라갑니다.
요약
- 모든 조회는
from().select()로 시작하며{ data, error }를 반환합니다. eq,gt,lt,like등 필터를 체이닝하면 AND로 결합됩니다.order와limit으로 정렬·제한하고,single()로 단일 객체를 받습니다.- 외래 키 관계는 중첩 select로 한 번에 조인 조회할 수 있습니다.
연습문제
posts테이블에서title과created_at컬럼만 조회하는 코드는?published가 true이고views가 100을 초과하는 게시글만 가져오려면?id가 5인 게시글 한 건을 객체로 받으려면 어떤 메서드를 붙이는가?- 게시글과 작성자(
profiles)의username을 함께 조회하려면?
힌트 — 필터 체이닝과 중첩 select 문법을 활용하세요.
💡 연습문제 풀이
불러오는 중…
댓글 0
“Supabase” 강좌에 대한 댓글입니다.