📖 Guide

Drizzle ORM — Complete Reference

Complete Drizzle ORM cheat sheet covering schema definition, queries, relations, joins, migrations, and TypeScript patterns.

83 commands across 9 categories

Schema Definition

CommandDescription
pgTable('name', { ... })
e.g. export const users = pgTable('users', { id: serial('id').primaryKey(), name: text('name') })
Define a PostgreSQL table schema
mysqlTable('name', { ... })
Define a MySQL table schema
sqliteTable('name', { ... })
Define a SQLite table schema
.primaryKey()
Mark a column as the primary key
.notNull()
Add NOT NULL constraint to a column
.default(value)
e.g. createdAt: timestamp('created_at').defaultNow()
Set a default value for a column
.unique()
Add a UNIQUE constraint to a column
.references(() => table.column)
e.g. userId: integer('user_id').references(() => users.id)
Define a foreign key reference
primaryKey({ columns: [t.a, t.b] })
Define a composite primary key
uniqueIndex('name').on(table.col)
Create a named unique index on a column

Column Types

CommandDescription
serial('name')
Auto-incrementing integer (PostgreSQL)
integer('name')
Integer column
text('name')
Variable-length text column
varchar('name', { length: 255 })
Variable-length string with max length
boolean('name')
Boolean true/false column
timestamp('name')
e.g. timestamp('created_at', { withTimezone: true }).defaultNow()
Timestamp column. Use .defaultNow() for auto-set
json('name')
JSON column — stores as text, no querying inside
jsonb('name')
JSONB column (PostgreSQL) — binary JSON, supports operators
decimal('name', { precision, scale })
e.g. decimal('price', { precision: 10, scale: 2 })
Exact decimal number
pgEnum('name', [...])
e.g. export const roleEnum = pgEnum('role', ['admin', 'user', 'guest'])
Define a PostgreSQL enum type

Relations

CommandDescription
relations(table, ({ one, many }) => ({...}))
Define relations for a table using the relations helper
one(targetTable, { fields, references })
e.g. author: one(users, { fields: [posts.authorId], references: [users.id] })
Define a one-to-one or many-to-one relation
many(targetTable)
e.g. posts: many(posts)
Define a one-to-many relation
relationName: 'name'
e.g. one(users, { fields: [posts.authorId], references: [users.id], relationName: 'author' })
Disambiguate multiple relations to the same table
db.query.table.findFirst({ with })
e.g. db.query.users.findFirst({ with: { posts: true } })
Eagerly load relations using the with clause
db.query.table.findMany({ with })
e.g. db.query.posts.findMany({ with: { author: true, comments: { with: { user: true } } } })
Load all records with relations

Queries (Select, Insert, Update, Delete)

CommandDescription
db.select().from(table)
e.g. const allUsers = await db.select().from(users)
Select all columns from a table
db.select({ id: table.id }).from(table)
Select specific columns
db.insert(table).values({...})
e.g. await db.insert(users).values({ name: 'Alice', email: 'alice@test.com' })
Insert a single row
db.insert(table).values([...]).returning()
Insert multiple rows and return inserted data
db.insert(table).values({...}).onConflictDoUpdate({...})
e.g. db.insert(users).values(data).onConflictDoUpdate({ target: users.email, set: { name: data.name } })
Upsert — insert or update on conflict
db.update(table).set({...}).where(condition)
e.g. await db.update(users).set({ name: 'Bob' }).where(eq(users.id, 1))
Update rows matching a condition
db.delete(table).where(condition)
e.g. await db.delete(users).where(eq(users.id, 1))
Delete rows matching a condition
.returning()
Return affected rows after insert/update/delete (PostgreSQL)
db.query.table.findFirst({...})
e.g. await db.query.users.findFirst({ where: eq(users.id, 1), with: { posts: true } })
Find first matching row using query API
db.query.table.findMany({...})
Find all matching rows with relations, ordering, limits

Filters & Operators

CommandDescription
eq(column, value)
e.g. where: eq(users.id, 1)
Equal to
ne(column, value)
Not equal to
gt(column, value)
Greater than
gte(column, value)
Greater than or equal to
lt(column, value)
Less than
lte(column, value)
Less than or equal to
like(column, pattern)
e.g. like(users.name, '%alice%')
SQL LIKE pattern match
ilike(column, pattern)
Case-insensitive LIKE (PostgreSQL)
inArray(column, values)
e.g. inArray(users.role, ['admin', 'moderator'])
IN clause — match any value in array
isNull(column) / isNotNull(column)
Check for NULL values
and(...conditions)
e.g. and(eq(users.role, 'admin'), gt(users.age, 18))
Combine conditions with AND
or(...conditions)
Combine conditions with OR
not(condition)
Negate a condition
between(column, min, max)
BETWEEN operator for range queries
sql`...`
e.g. where: sql`lower(name) = 'alice'`
Raw SQL expression for custom filters

Joins

CommandDescription
.innerJoin(table, condition)
e.g. db.select().from(posts).innerJoin(users, eq(posts.authorId, users.id))
Inner join — only matching rows from both tables
.leftJoin(table, condition)
Left join — all rows from left table, matching from right
.rightJoin(table, condition)
Right join — all rows from right table, matching from left
.fullJoin(table, condition)
Full outer join — all rows from both tables
Select with join aliases
e.g. db.select({ postTitle: posts.title, authorName: users.name }).from(posts).leftJoin(users, eq(posts.authorId, users.id))
Access joined columns via table references
.groupBy(column)
e.g. db.select({ role: users.role, count: count() }).from(users).groupBy(users.role)
Group results by column(s)
.having(condition)
Filter groups after GROUP BY
.orderBy(asc(col) | desc(col))
e.g. .orderBy(desc(users.createdAt))
Sort results
.limit(n).offset(m)
e.g. .limit(10).offset(20) // page 3
Paginate results

Migrations

CommandDescription
npx drizzle-kit generate
Generate SQL migration files from schema changes
npx drizzle-kit push
Push schema directly to database without migration files (dev only)
npx drizzle-kit migrate
Run pending migrations against the database
npx drizzle-kit studio
Open Drizzle Studio — browser-based database GUI
npx drizzle-kit introspect
Generate schema TypeScript from an existing database
npx drizzle-kit drop
Drop a specific migration file
npx drizzle-kit check
Check for schema conflicts and inconsistencies
migrate(db, { migrationsFolder })
e.g. import { migrate } from 'drizzle-orm/postgres-js/migrator'
Run migrations programmatically

Indexes

CommandDescription
index('name').on(table.column)
Create a basic index on a column
uniqueIndex('name').on(table.column)
Create a unique index
index('name').on(table.col1, table.col2)
Create a composite index on multiple columns
index('name').using('gin')
e.g. index('search_idx').using('gin').on(table.searchVector)
Specify index type (PostgreSQL: btree, hash, gin, gist)
pgTable with indexes callback
e.g. pgTable('users', {...}, (t) => [index('email_idx').on(t.email)])
Define indexes inline in table definition
.where(sql'...')
e.g. index('active_idx').on(table.email).where(sql'active = true')
Create a partial/filtered index

Common Patterns

CommandDescription
drizzle(client)
e.g. import { drizzle } from 'drizzle-orm/postgres-js'; const db = drizzle(sql);
Initialize Drizzle with your database client
drizzle(client, { schema })
e.g. const db = drizzle(sql, { schema: { users, posts } })
Initialize with schema for relational queries
db.transaction(async (tx) => {...})
e.g. await db.transaction(async (tx) => { await tx.insert(...); await tx.update(...); })
Execute queries in a transaction
sql operator for raw SQL
e.g. sql'NOW()' or sql'COALESCE(name, 'unknown')'
Use the sql tagged template for raw expressions
.prepare('name')
Create a prepared statement for repeated queries
count() / sum() / avg() / min() / max()
e.g. db.select({ total: count() }).from(users)
Aggregate functions
alias(table, 'name')
e.g. const parent = alias(categories, 'parent')
Create a table alias for self-joins
Type inference: InferSelectModel<typeof table>
e.g. type User = InferSelectModel<typeof users>
Get TypeScript type from schema
InferInsertModel<typeof table>
e.g. type NewUser = InferInsertModel<typeof users>
Get insert type (optional fields for defaults)

More Guides

🌿
Git Commands
Complete Git command reference — from basics to advanced workflows. Searchable, with examples.
📝
Vim Commands
Complete Vim/Vi command reference — modes, motions, editing, search, and advanced features.
🐳
Docker Commands
Complete Docker & Docker Compose command reference — containers, images, volumes, networks, and orchestration.
🔤
Regex Reference
Complete regular expression reference — syntax, patterns, quantifiers, groups, lookaheads, and common recipes.
🐧
Linux Commands
Complete Linux/Bash command reference — file management, text processing, networking, system admin, and shell scripting.
☸️
Kubernetes Commands
Complete Kubernetes & kubectl command reference — pods, deployments, services, configmaps, and cluster management.
🐍
Python Reference
Complete Python reference — syntax, data structures, string methods, file I/O, comprehensions, and common patterns.
🗃️
SQL Reference
Complete SQL reference — queries, joins, aggregation, subqueries, indexes, and database management.
🌐
Nginx Reference
Complete Nginx configuration reference — server blocks, locations, proxying, SSL, load balancing, and caching.
🔐
SSH Commands
Complete SSH reference — connections, key management, tunneling, config, SCP/SFTP, and security hardening.
👷
Jenkins Reference
Complete Jenkins reference — pipeline syntax, Jenkinsfile, plugins, CLI, agents, and CI/CD patterns.
📨
HTTP Headers Reference
Complete HTTP headers reference — request headers, response headers, caching, security, CORS, and content negotiation. Searchable, with examples.
🐘
PostgreSQL Reference
Comprehensive PostgreSQL reference — from connection basics to advanced features like JSONB, full-text search, window functions, and performance tuning.
Async Patterns Reference
Multi-language async/concurrency patterns — JavaScript, Python, Go, Rust, Java, and universal concurrency patterns.
📡
Protobuf & gRPC Reference
Comprehensive reference for Protocol Buffers (proto3) and gRPC — message definitions, services, streaming, and common patterns.
📚
JS Array Methods
Complete JavaScript Array methods reference — creating, searching, transforming, sorting, iterating, and common patterns. Searchable, with examples.
🌊
Tailwind CSS Reference
Complete Tailwind CSS reference — layout, spacing, typography, colors, responsive design, states, and common patterns. Searchable, with examples.
GraphQL Reference
Complete GraphQL reference — schema definition, types, queries, mutations, directives, fragments, and common patterns. Searchable, with examples.
💻
VS Code Shortcuts
Complete VS Code keyboard shortcuts — editing, navigation, search, multi-cursor, terminal, debug, and more. Searchable, with Cmd/Ctrl notation.
🔲
CSS Grid Reference
Complete CSS Grid reference — container properties, item placement, grid functions, and common layout patterns. Searchable, with examples.
📦
CSS Flexbox Reference
Complete CSS Flexbox reference — container properties, item properties, and common layout patterns. Searchable, with examples.
⚛️
React Hooks Reference
Complete React Hooks reference — useState, useEffect, useContext, custom hooks, and common patterns. Searchable, with examples.
🔷
TypeScript Reference
Complete TypeScript reference — types, interfaces, generics, utility types, and advanced patterns. Searchable, with examples.
☁️
AWS CLI Reference
Complete AWS CLI reference — EC2, S3, IAM, Lambda, ECS, RDS, CloudFormation, and common operations.
🐹
Go Reference
Complete Go (Golang) reference — syntax, types, functions, concurrency, error handling, and common patterns.
💠
PowerShell Reference
Complete PowerShell reference — cmdlets, pipelines, scripting, file operations, remote management, and Active Directory.
💾
Redis Commands
Complete Redis command reference — strings, hashes, lists, sets, sorted sets, pub/sub, transactions, and server management.
🏗️
Terraform Commands
Complete Terraform reference — init, plan, apply, state management, modules, workspaces, and HCL syntax.
⚙️
Ansible Commands
Complete Ansible reference — playbooks, modules, inventory, roles, vault, and ad-hoc commands.
🪶
Apache
Complete Apache HTTP Server cheat sheet — virtual hosts, modules, rewrite rules, and SSL.
🔤
ASCII Table
Complete ASCII character reference with decimal, hexadecimal, and character values.
🔧
Awk
Powerful text processing language for pattern scanning, data extraction, and report generation.
💻
Bash
Complete Bash reference — variables, strings, arrays, conditionals, loops, functions, file tests, I/O redirection, process management, and more.
⚙️
C
Complete C programming cheat sheet covering syntax, pointers, memory management, and standard library.
🔐
Chmod
Linux file permission commands and patterns for chmod.
🔧
Chrome DevTools
Essential Chrome DevTools shortcuts, commands, and workflows for web developers.
🔷
C++
Complete C++ cheat sheet covering STL containers, OOP, templates, smart pointers, and modern C++ features.
Cron
Cron scheduling reference covering syntax, field values, crontab management, and common schedule patterns.
🎨
CSS
Complete CSS reference — selectors, box model, positioning, typography, animations, media queries, custom properties, and more.
🌐
Curl
Curl command-line reference for HTTP requests, authentication, file transfers, debugging, and common API patterns.
🎯
Dart
Dart language cheat sheet covering syntax, types, OOP, null safety, and async patterns.
🐳
Docker Compose
Docker Compose reference covering CLI commands, service configuration, networking, volumes, and more.
Emmet
Quick reference for Emmet abbreviations for lightning-fast HTML and CSS coding.
🔍
Find
Search for files and directories in a directory hierarchy with powerful filtering options.
🔥
Firebase
Firebase reference covering Authentication, Firestore, Realtime Database, Cloud Functions, and Hosting.
🤖
GitHub Actions
Complete GitHub Actions cheat sheet — workflows, triggers, jobs, and CI/CD patterns.
🔎
Grep
Search text using patterns. Filter lines from files, command output, or streams with regular expressions.
📄
HTML
Complete HTML reference — document structure, text content, forms, media, semantic elements, accessibility, and more.
📡
HTTP Status Codes
Complete reference of all standard HTTP response status codes with descriptions and use cases.
Java
Complete Java reference — data types, strings, collections, OOP, interfaces, exceptions, file I/O, streams, lambdas, and more.
🟨
JavaScript
Complete JavaScript reference — variables, types, operators, strings, arrays, objects, functions, async, DOM, ES6+, and more.
💲
jQuery
Quick reference for jQuery selectors, DOM manipulation, events, AJAX, and more.
🔺
Laravel
Laravel PHP framework cheat sheet for routing, Eloquent, Blade, Artisan, and more.
📐
LaTeX
Quick reference for LaTeX document structure, math mode, formatting, and common packages.
📝
Markdown
Complete Markdown syntax reference for headings, formatting, links, tables, code blocks, and extensions.
🍃
MongoDB
MongoDB reference covering CRUD operations, aggregation, indexes, and administration.
🐬
MySQL
Complete MySQL cheat sheet covering queries, joins, indexes, transactions, and administration.
Next.js
Next.js App Router reference covering routing, data fetching, server components, and deployment.
🟩
Node.js
Comprehensive Node.js runtime reference covering modules, file system, HTTP, streams, and more.
📦
npm
Complete npm cheat sheet — package management, scripts, publishing, and configuration.
🔢
NumPy
Essential NumPy commands for array manipulation and numerical computing in Python.
🐼
Pandas
Pandas cheat sheet for data manipulation, analysis, and transformation in Python.
🐘
PHP
Complete PHP cheat sheet covering syntax, OOP, arrays, PDO, and modern PHP 8.x features.
🔄
PM2
Production process manager for Node.js applications with built-in load balancer, monitoring, and zero-downtime reloads.
💎
Prisma
Complete Prisma ORM cheat sheet — schema, queries, migrations, and CLI.
🦀
Rust
Comprehensive Rust language cheat sheet covering ownership, traits, pattern matching, concurrency, and more.
💅
Sass
Complete Sass/SCSS cheat sheet covering variables, mixins, functions, nesting, and modern module system.
📺
Screen
GNU Screen terminal multiplexer for persistent sessions, window management, and remote work.
✂️
Sed
Stream editor for filtering and transforming text, line by line.
Supabase
Complete Supabase cheat sheet — auth, database, realtime, storage, and edge functions.
🖥️
Tmux
Terminal multiplexer for managing multiple sessions, windows, and panes from a single terminal.
📦
TOML
Quick reference for TOML configuration file syntax, types, tables, and common patterns.
Vercel CLI
Complete Vercel CLI reference for deployment, project management, domains, environment variables, and configuration.
Vite
Next-generation frontend build tool with instant HMR, native ES modules, and optimized production builds via Rollup.
📦
Webpack
Module bundler for JavaScript applications — loaders, plugins, code splitting, optimization, and dev server.
🎯
XPath
Quick reference for XPath expressions, axes, predicates, and functions for XML/HTML querying.
📋
YAML
YAML syntax reference covering scalars, collections, anchors, multi-line strings, and common patterns.

📖 Free, searchable command reference. Bookmark this page for quick access.