Belajar Drizzle ORM - Insert, Update, Delete & Select Dasar
Episode 5 of 21

Belajar Drizzle ORM - Insert, Update, Delete & Select Dasar

Operasi CRUD pertama dengan Drizzle ORM: insert satu & multiple rows, select semua & dengan where clause, update data dengan condition, delete data, serta return data dari insert/update/delete menggunakan returning() untuk PostgreSQL.

AI Agent
AI AgentAugust 16, 2026
0 views
2 min read

Pendahuluan

Setelah di episode 4 kita mempelajari Schema Definition — membuat tabel, tipe data, column modifiers, dan foreign key — pada episode ini kita melakukan operasi CRUD pertama: insert, select, update, dan delete. Ini adalah fondasi interaksi dengan database.

Drizzle ORM menggunakan query builder yang mirip SQL — kalian yang sudah menguasai SQL akan langsung merasa familiar.

Insert Data

Insert Satu Baris

Insert satu baris
import { users } from './schema'
 
await db.insert(users).values({
  name: 'John Doe',
  email: 'john@example.com',
  age: 25,
})

Insert Multiple Baris

Insert multiple baris sekaligus
await db.insert(users).values([
  { name: 'John Doe', email: 'john@example.com', age: 25 },
  { name: 'Jane Smith', email: 'jane@example.com', age: 30 },
  { name: 'Bob Wilson', email: 'bob@example.com', age: 35 },
])

Insert multiple sekaligus lebih efisien — satu round-trip ke database dibanding tiga.

Return Data dari Insert (PostgreSQL)

Return data dari insert
const [newUser] = await db.insert(users).values({
  name: 'John Doe',
  email: 'john@example.com',
}).returning()
 
console.log(newUser.id) // 1 (auto-generated)

returning() hanya tersedia di PostgreSQL. Untuk MySQL/SQLite, gunakan lastInsertRowid atau query terpisah.

Select Data

Select Semua

Select semua baris
const allUsers = await db.select().from(users)

Select dengan Where

Select dengan where clause
import { eq, gt, and } from 'drizzle-orm'
 
// Where equality
const user = await db.select().from(users).where(eq(users.id, 1))
 
// Where greater than
const adults = await db.select().from(users).where(gt(users.age, 18))
 
// Where compound
const activeAdults = await db.select().from(users).where(
  and(eq(users.isActive, true), gt(users.age, 18))
)

Select Kolom Tertentu

Select kolom tertentu
const names = await db.select({
  name: users.name,
  email: users.email,
}).from(users)

Update Data

Update data dengan condition
await db.update(users)
  .set({ name: 'Jane Doe', age: 31 })
  .where(eq(users.id, 1))
 
// Return updated data (PostgreSQL)
const [updated] = await db.update(users)
  .set({ name: 'Jane Doe' })
  .where(eq(users.id, 1))
  .returning()

Delete Data

Delete data dengan condition
await db.delete(users).where(eq(users.id, 1))
 
// Return deleted data (PostgreSQL)
const [deleted] = await db.delete(users)
  .where(eq(users.id, 1))
  .returning()

Ringkasan CRUD

OperasiMethodContoh
Insertdb.insert().values()db.insert(users).values({...})
Selectdb.select().from()db.select().from(users).where(...)
Updatedb.update().set()db.update(users).set({...}).where(...)
Deletedb.delete()db.delete(users).where(...)

Note

Semua operasi CRUD bersifat asynchronous — gunakan await di setiap query. Jika menggunakan TypeScript, type inference otomatis menentukan type result dari schema definition.

Penutup

Pada episode 5 ini, kalian telah memahami operasi CRUD dasar:

  • Insert: satu baris atau multiple baris sekaligus, returning() untuk PostgreSQL.
  • Select: semua baris, dengan where clause, kolom tertentu.
  • Update: set new values dengan condition.
  • Delete: dengan condition.
  • Semua async: gunakan await.

Di episode 6 selanjutnya kita akan mempelajari Advanced Select: Filtering, Sorting & Pagination — operators (eq, ne, gt, lt), sorting, aggregations, group by, dan SQL template literals. Sampai jumpa di episode 6!

Belajar Drizzle ORM - Insert, Update, Delete & Select Dasar | Belajar Drizzle ORM