dev.syw

select와 다양한 필터, 정렬, 제한, 관계 조인으로 데이터를 조회하는 방법을 배운다.

데이터 조회

데이터를 저장했다면 이제 원하는 형태로 꺼내올 차례입니다. Supabase 클라이언트는 SQL의 표현력을 살린 체이닝 API를 제공합니다. 이 강의에서는 select, 필터, 정렬, 개수 제한, 그리고 관계 조인 조회를 다룹니다.

학습 목표

  • select로 원하는 컬럼만 조회한다.
  • eq, gt, lt, like 등 필터를 조합한다.
  • orderlimit으로 정렬하고 개수를 제한한다.
  • 관계가 있는 테이블을 조인 조회한다.

기본 조회

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();

💡 TIPsingle()은 결과가 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로 결합됩니다.
  • orderlimit으로 정렬·제한하고, single()로 단일 객체를 받습니다.
  • 외래 키 관계는 중첩 select로 한 번에 조인 조회할 수 있습니다.

연습문제

  1. posts 테이블에서 titlecreated_at 컬럼만 조회하는 코드는?
  2. published가 true이고 views가 100을 초과하는 게시글만 가져오려면?
  3. id가 5인 게시글 한 건을 객체로 받으려면 어떤 메서드를 붙이는가?
  4. 게시글과 작성자(profiles)의 username을 함께 조회하려면?

힌트 — 필터 체이닝과 중첩 select 문법을 활용하세요.

💡 연습문제 풀이

불러오는 중…

함께 보면 좋은 자료

댓글 0

Supabase” 강좌에 대한 댓글입니다.

댓글을 작성하려면 로그인이 필요합니다.