티스토리 뷰

반응형

 

✅ Prisma Client로 DB 쿼리 날리기 – CRUD 실전 예제 (PostgreSQL + TypeScript)

"SQL 없이 타입 안전하게! Prisma로 DB와 대화하는 가장 쉬운 방법"


이전 글에서는 Prisma Client를 설치하고 연결하는 법까지 배웠습니다.
이제는 실제로 PostgreSQL 데이터베이스를 쿼리하는 다양한 방법을 실습해봅니다.


🧱 기본 모델 정의

model Post {
  id        Int      @id @default(autoincrement())
  title     String
  content   String?
  published Boolean  @default(false)
  createdAt DateTime @default(now())
}

⚙️ Prisma Client 준비

// lib/prisma.ts
import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()
export default prisma

📌 1. 데이터 생성 (Create)

const newPost = await prisma.post.create({
  data: {
    title: 'Prisma 블로그 작성 중',
    content: '내용은 정말 유용합니다!',
    published: true,
  },
})

console.log('📝 생성된 포스트:', newPost)

📌 2. 전체 데이터 조회 (Read - findMany)

const allPosts = await prisma.post.findMany()
console.log('📚 전체 포스트:', allPosts)

📌 3. 조건 기반 조회 (Read - where 조건)

const publishedPosts = await prisma.post.findMany({
  where: {
    published: true,
  },
})

📌 4. 특정 필드 조회 (Select)

const titlesOnly = await prisma.post.findMany({
  select: {
    title: true,
    createdAt: true,
  },
})

📌 5. 정렬 및 페이징 (orderBy, skip, take)

const latestPosts = await prisma.post.findMany({
  orderBy: {
    createdAt: 'desc',
  },
  skip: 0,
  take: 5,
})

📌 6. 데이터 수정 (Update)

반응형
const updatedPost = await prisma.post.update({
  where: { id: 1 },
  data: { title: '제목이 수정되었습니다!' },
})

📌 7. 데이터 삭제 (Delete)

await prisma.post.delete({
  where: { id: 1 },
})

📌 8. 고급 쿼리 – 다중 조건 & 연산자

const filteredPosts = await prisma.post.findMany({
  where: {
    published: true,
    title: {
      contains: 'Prisma',
    },
  },
})

📌 9. count, distinct, aggregate

const total = await prisma.post.count()
console.log('총 포스트 수:', total)
const distinctTitles = await prisma.post.findMany({
  distinct: ['title'],
})
const stats = await prisma.post.aggregate({
  _count: true,
  _max: { createdAt: true },
})

📌 10. 트랜잭션 (여러 쿼리 묶어서 실행)

const [post1, post2] = await prisma.$transaction([
  prisma.post.create({ data: { title: '첫글', published: true } }),
  prisma.post.create({ data: { title: '둘째글', published: false } }),
])

✅ 실전에서 자주 쓰는 패턴

목적 코드

특정 조건만 가져오기 findMany({ where: { ... } })
최신순 5개 orderBy + take
일부 필드만 선택 select: { ... }
다중 생성 createMany()
다중 조건 검색 AND, OR 지원

🏁 실행 예시

npx ts-node src/query-example.ts

 

Prisma 쿼리,PrismaClient,PostgreSQL ORM,TypeScript DB 쿼리,Prisma CRUD 예제,Prisma 조건 검색,Prisma 정렬 페이징,Prisma count aggregate,Prisma 트랜잭션,Prisma Client 사용법

 

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함
반응형