Database

Supabase is built on top of Postgres, an extremely scalable Relational Database.

Features

Table View

You don't have to be a database expert to start using Supabase. Our table view makes Postgres as easy to use as a spreadsheet.

Table View.

Relationships

Dig into the relationships within your data.

Clone tables

You can duplicate your tables, just like you would inside a spreadsheet.

The SQL Editor

Supabase comes with a SQL Editor. You can also save your favorite queries to run later!

Additional features

  • Supabase extends Postgres with realtime functionality using our Realtime Server.
  • Every project is a full Postgres database, with postgres level access.
  • Managed backups - Supabase handles all your database backups.
  • Data imports - import directly from a CSV or excel spreadsheet.

Extensions

Enable and disable extensions

To expand the functionality of your Postgres database, you can use extensions. You can enable Postgres extensions with the click of a button within the Supabase dashboard.

Full list of extensions

Supabase is pre-configured with over 50 extensions. You can also install your own SQL extensions directly into the database through our SQL editor.

address_standardizer

Used to parse an address into constituent elements. Generally used to support geocoding address normalization step.

address_standardizer-3

Used to parse an address into constituent elements. Generally used to support geocoding address normalization step.

address_standardizer_data_us

Address Standardizer US dataset example

address_standardizer_data_us-3

Address Standardizer US dataset example

adminpack

Administrative functions for PostgreSQL

amcheck

Functions for verifying relation integrity

autoinc

Functions for autoincrementing fields

bloom

Bloom access method - signature file based index

btree_gin

Support for indexing common datatypes in GIN

btree_gist

Support for indexing common datatypes in GiST

citext

Data type for case-insensitive character strings

cube

Data type for multidimensional cubes

dblink

Connect to other PostgreSQL databases from within a database

dict_int

Text search dictionary template for integers

dict_xsyn

Text search dictionary template for extended synonym processing

earthdistance

Calculate great-circle distances on the surface of the Earth

file_fdw

Foreign-data wrapper for flat file access

fuzzystrmatch

Determine similarities and distance between strings

hstore

Data type for storing sets of (key, value) pairs

hstore_plpython3u

Transform between hstore and plpython3u

http

HTTP client for PostgreSQL, allows web page retrieval inside the database.

insert_username

Functions for tracking who changed a table

intagg

Integer aggregator and enumerator (obsolete)

intarray

Functions, operators, and index support for 1-D arrays of integers

isn

Data types for international product numbering standards

jsonb_plpython3u

Transform between jsonb and plpython3u

lo

Large Object maintenance

ltree

Data type for hierarchical tree-like structures

ltree_plpython3u

Transform between ltree and plpython3u

moddatetime

Functions for tracking last modification time

pageinspect

Inspect the contents of database pages at a low level

pg_buffercache

Examine the shared buffer cache

pg_cron

Job scheduler for PostgreSQL

pg_freespacemap

Examine the free space map (FSM)

pg_prewarm

Prewarm relation data

pg_stat_statements

Track execution statistics of all SQL statements executed

pg_trgm

Text similarity measurement and index searching based on trigrams

pg_visibility

Examine the visibility map (VM) and page-level visibility info

pgaudit

Provides auditing functionality

pgcrypto

Cryptographic functions

pgjwt

JSON Web Token API for Postgresql

pgrowlocks

Show row-level locking information

pgstattuple

Show tuple-level statistics

pgtap

Unit testing for PostgreSQL

plcoffee

PL/CoffeeScript (v8) trusted procedural language

pljava

PL/Java procedural language (https://tada.github.io/pljava/)

plls

PL/LiveScript (v8) trusted procedural language

plpgsql

PL/pgSQL procedural language

plpgsql_check

Extended check for plpgsql functions

plpython3u

PL/Python3U untrusted procedural language

plv8

PL/JavaScript (v8) trusted procedural language

postgis

PostGIS geometry and geography spatial types and functions

postgis-3

PostGIS geometry and geography spatial types and functions

postgis_raster

PostGIS raster types and functions

postgis_raster-3

PostGIS raster types and functions

postgis_sfcgal

PostGIS SFCGAL functions

postgis_sfcgal-3

PostGIS SFCGAL functions

postgis_tiger_geocoder

PostGIS tiger geocoder and reverse geocoder

postgis_tiger_geocoder-3

PostGIS tiger geocoder and reverse geocoder

postgis_topology

PostGIS topology spatial types and functions

postgis_topology-3

PostGIS topology spatial types and functions

postgres_fdw

Foreign-data wrapper for remote PostgreSQL servers

refint

Functions for implementing referential integrity (obsolete)

seg

Data type for representing line segments or floating-point intervals

sslinfo

Information about SSL certificates

tablefunc

Functions that manipulate whole tables, including crosstab

tcn

Triggered change notifications

tsm_system_rows

TABLESAMPLE method which accepts number of rows as a limit

tsm_system_time

TABLESAMPLE method which accepts time in milliseconds as a limit

unaccent

Text search dictionary that removes accents

uuid-ossp

Generate universally unique identifiers (UUIDs)

xml2

XPath querying and XSLT

Tips

Realtime

Supabase provides a realtime engine on top of Postgres, so that you can listen to changes as they happen. Our realtime engine uses the built-in replication functionality of Postgres. You can manage the realtime system, simply by updating the supabase_realtime publication.

For example to enable realtime only for individual tables:

begin;
-- remove the realtime publication
drop publication if exists supabase_realtime;
-- re-create the publication but don't enable it for any tables
create publication supabase_realtime;
commit;
-- add a table to the publication
alter publication supabase_realtime add table products;
-- add other tables to the publication
alter publication supabase_realtime add table posts;

By default only "new" values are sent, but if you want to receive the old record (previous values) whenever you update or delete a record, you can update the replica identity of your tables, setting it to full:

alter table_name your_table
replica identity full;

Resetting your project password

When you create a new project in Supabase we ask for a password. You can use this password to connect directly to your Postgres database.

If you forget your password, you can reset it from the Dashboard SQL editor:

For example:

alter user postgres
with password 'new_password';

Read more in Database Configuration.

Changing the timezone of your server.

Your database is initialized with the UTC timezone. We recommend keeping it this way, as it is helpful for time calculations. If, however, you want to update the timezone, you can do so using any of the database timezones.

For example:

alter database postgres set timezone to 'America/New_York';

Read more in Database Configuration.

Next steps