Answer Box: Schema vs Database in PostgreSQL
Quick Answer: In PostgreSQL, a database is an isolated container with separate connections, backups, and user access. A schema is a namespace within a database used to organize tables, views, and functions. You connect to a database. You organize with schemas. Databases provide full isolation; schemas enable cross-queries while keeping things tidy.
The confusion is real. You connect to a database but organize with schemas; it sounds backwards until you see the hierarchy.
Here's the rule: You connect to a DATABASE. You organize within a SCHEMA.
PostgreSQL Schema vs Database: Quick Comparison

| Aspect | Database | Schema |
|---|---|---|
| Hierarchy Level | Top-level container | Within a database |
| Isolation | Full isolation | Logical separation |
| Cross-Access | Cannot JOIN across databases | CAN JOIN across schemas |
| Backup Scope | Separate pg_dump per database | Single dump includes all schemas |
| Connection | Requires new connection | Same connection |
| Use Case | Different applications | Multi-tenant apps, logical grouping |
Per the official pg_dump documentation, pg_dump works per database, and pg_dump -n sales dumps a single schema. pg_basebackup copies the whole cluster. This matters when you're planning disaster recovery.
When to Use a Database vs Schema: Decision Framework
Answer these three questions:
- •Do you need to JOIN data across boundaries? → Use schemas (same database)
- •Do you need separate backup schedules or recovery points? → Use separate databases
- •Do you need strict user access isolation with zero overlap? → Use separate databases
Use Separate Databases When
You need full isolation. Different applications. Different backup cycles. Completely separate user pools.
Examples:
- •Production vs. staging environments
- •Separate client applications that should never interact
- •Different backup retention policies (keep HR data for 7 years, keep analytics for 30 days)
CREATE DATABASE app_production;
CREATE DATABASE app_staging;Each database gets its own Postgres connection string. No accidental cross-queries. When Heroku PostgreSQL provisions a database, they give you a separate isolated unit, not a schema within a shared database.
Use Schemas Within One Database When
You need logical grouping but want to query across boundaries. Multi-tenant SaaS apps. Shared analytics across teams.
Examples:
- •Multi-tenant app with one schema per customer
- •Organizing by function:
api,internal,archive - •Keeping test data separate from production data in the same environment
CREATE SCHEMA sales;
CREATE SCHEMA support;
CREATE SCHEMA archive;You can JOIN across schemas in the same query. You can't do that with separate databases.
For detailed setup instructions, see the PostgreSQL documentation on schemas.

One server, many databases?
QueryGlow finds the databases on a server and adds them in one step; browse the tables of the public schema and query any schema in SQL. Self-hosted, $79 once.
See the tourPractical Examples: Creating and Querying
Creating a Schema
CREATE SCHEMA sales;
-- Set search path so you don't need to qualify every table
SET search_path TO sales, public;
-- Now create tables in the sales schema
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
customer_id INT,
total DECIMAL(10,2)
);To see which schemas a database already has, here is how to list schemas in PostgreSQL.
Creating a Database
-- Must be run from a different database (e.g., postgres)
CREATE DATABASE analytics;
-- Connect to the new database
\c analytics
-- Now you're in a completely separate environment
CREATE TABLE reports (
id SERIAL PRIMARY KEY,
report_type VARCHAR(50)
);To check which databases already exist on the server, see how to list databases in PostgreSQL.
Querying Across Schemas
-- Join tables from different schemas in the same database
SELECT
o.id,
o.total,
c.name
FROM sales.orders o
JOIN support.customers c ON o.customer_id = c.id;This query works because both schemas live in the same database. Try to JOIN across databases? Postgres says no.
Managing many databases gets messy in command-line tools. In a web-based SQL client like QueryGlow you add every database on a server in one step and see them side by side in the sidebar; other schemas you query with schema.table in the editor.
Managing Schemas and Databases Efficiently
Command-line schema management means memorizing search paths, qualifying every table name, and switching connections manually.
Visual tools reduce that friction, especially for the separate-databases route.
In QueryGlow, Find databases on this server logs in once, lists the databases your user can open, and adds the ones you tick in one step. The sidebar can group them by host, and the header always shows which connection and database you are in. Paste a postgres:// connection URL instead of filling a form. One honest limit: the table list and autocomplete cover the public schema; tables in other schemas you query as schema.table in the Query Editor.

Try QueryGlow: Manage every database on your PostgreSQL server from any device: open a URL and you're in. Web-based, self-hosted on your infrastructure, $79 one-time payment. Find databases on this server adds them all in one step. Try the live demo (read-only, AI switched off, no signup).
Tags:

Built by an engineer. The app sends no telemetry.
Put your PostgreSQL knowledge to work
QueryGlow is web-based and self-hosted. Find the databases on a server, browse their tables and run SQL from any device. $79 once.
“Beautiful interface and very intuitive.”
Jean-Francois, Mildor Violon, verified customer “I was looking at DBeaver and yours looked a little easier for what I was looking for.”
Mike, verified customer
Stripe checkout. You'll need a GitHub account for the repo invite. No refunds, so try the read-only demo first.
$79 one-time. Self-hosted. No subscription.