Last Updated: November 21, 2025
Schema Definition
// schema.prisma
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
posts Post[]
createdAt DateTime @default(now())
}
model Post {
id Int @id @default(autoincrement())
title String
content String?
published Boolean @default(false)
author User @relation(fields: [authorId], references: [id])
authorId Int
}
CRUD Operations
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
// Create
const user = await prisma.user.create({
data: {
email: 'john@example.com',
name: 'John Doe'
}
})
// Read
const users = await prisma.user.findMany()
const user = await prisma.user.findUnique({
where: { id: 1 }
})
// Update
const updated = await prisma.user.update({
where: { id: 1 },
data: { name: 'Jane Doe' }
})
// Delete
await prisma.user.delete({
where: { id: 1 }
})
Queries with Relations
// Include related data
const userWithPosts = await prisma.user.findUnique({
where: { id: 1 },
include: { posts: true }
})
// Select specific fields
const users = await prisma.user.findMany({
select: {
name: true,
email: true,
posts: {
select: { title: true }
}
}
})
// Filtering
const users = await prisma.user.findMany({
where: {
email: { contains: '@example.com' },
posts: { some: { published: true } }
}
})
// Sorting and pagination
const users = await prisma.user.findMany({
orderBy: { createdAt: 'desc' },
take: 10,
skip: 20
})
CLI Commands
npx prisma init
Initialize Prisma
npx prisma generate
Generate Prisma Client
npx prisma migrate dev
Create and apply migration
npx prisma db push
Push schema without migration
npx prisma studio
Open Prisma Studio GUI
💡 Pro Tip:
Run prisma generate after every schema change to update the client!