This is a simple example of creating a table in Postgres.
Postgres uses SQL language to manage data.
Examples
This creates a users table with an auto-incrementing id, a name, and a unique email.
Supabase
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL
);
This fetches all data for the user with the specified email.
Supabase
SELECT * FROM users WHERE email = 'user@example.com';
Sample Program
This example creates a tasks table, adds one task, and then retrieves all tasks.
Supabase
CREATE TABLE tasks (
id SERIAL PRIMARY KEY,
title TEXT NOT NULL,
completed BOOLEAN DEFAULT FALSE
);
INSERT INTO tasks (title) VALUES ('Learn Supabase');
SELECT * FROM tasks;
OutputSuccess
Important Notes
Postgres supports many data types like text, numbers, dates, and JSON.
Supabase uses Postgres to provide real-time data updates and easy API access.
Postgres is open-source, so it has a large community and many tools.
Summary
Postgres is the database behind Supabase because it is reliable and powerful.
It supports complex data and scales well for apps of all sizes.
Supabase builds on Postgres to offer easy-to-use backend services.
Practice
(1/5)
1. Why does Supabase use Postgres as its database?
easy
A. Because Postgres is a cloud provider
B. Because Postgres is the only database available
C. Because Postgres is a frontend framework
D. Because Postgres is reliable and supports complex data
Solution
Step 1: Understand Supabase's database choice
Supabase uses Postgres because it is a reliable and powerful database system.
Step 2: Recognize Postgres features
Postgres supports complex data types and scales well, making it suitable for many app sizes.
Final Answer:
Because Postgres is reliable and supports complex data -> Option D
Quick Check:
Postgres reliability = reason for Supabase choice [OK]
Hint: Remember Supabase builds on a strong, reliable database [OK]
Common Mistakes:
Thinking Postgres is a frontend tool
Assuming Postgres is the only database option
Confusing Postgres with cloud providers
2. Which of the following is the correct way to connect to a Postgres database in Supabase?
easy
A. supabase.connect('postgres://user:pass@host/db')
B. supabase.connect('http://user:pass@host/db')
C. supabase.connect('ftp://user:pass@host/db')
D. supabase.connect('file://user:pass@host/db')
Solution
Step 1: Identify the correct protocol for Postgres connection
Postgres uses the 'postgres://' protocol in connection strings.
Step 2: Match the protocol with Supabase connection syntax
Supabase connects to Postgres using 'supabase.connect' with a 'postgres://' URL.
Final Answer:
supabase.connect('postgres://user:pass@host/db') -> Option A
Quick Check:
Postgres connection string starts with 'postgres://' [OK]
Hint: Look for 'postgres://' in connection strings [OK]
Common Mistakes:
Using HTTP or FTP protocols for database connection
Confusing file paths with URLs
Missing the correct protocol prefix
3. Given this SQL query run on Supabase's Postgres database: SELECT COUNT(*) FROM users WHERE active = true; What does this query return?
medium
A. The total number of users in the database
B. A list of all user names
C. The number of active users
D. The number of inactive users
Solution
Step 1: Analyze the SQL query condition
The query counts rows in 'users' where 'active' is true, filtering only active users.
Step 2: Understand the COUNT(*) function
COUNT(*) returns the number of rows matching the condition, here active users only.
Final Answer:
The number of active users -> Option C
Quick Check:
COUNT with WHERE active=true counts active users [OK]
Hint: COUNT(*) with WHERE filters counts matching rows [OK]
Common Mistakes:
Thinking it counts all users regardless of status
Confusing COUNT(*) with SELECT *
Assuming it returns user details instead of a number
4. You wrote this SQL query in Supabase but it returns an error: SELECT * FROM users WHERE active = 'true'; What is the likely cause?
medium
A. Using quotes around true causes a type mismatch error
B. Missing a semicolon at the end
C. Table 'users' does not exist
D. Using SELECT * is not allowed in Supabase
Solution
Step 1: Check the data type of 'active' column
'active' is a boolean, so it expects true/false without quotes.
Step 2: Understand why quotes cause error
Quotes make 'true' a string, causing a type mismatch error in Postgres.
Final Answer:
Using quotes around true causes a type mismatch error -> Option A
Quick Check:
Boolean values must not be quoted in SQL [OK]
Hint: Boolean values in SQL are unquoted true/false [OK]
Common Mistakes:
Assuming quotes are needed for booleans
Thinking missing semicolon causes error
Believing SELECT * is disallowed
5. Supabase uses Postgres to handle real-time updates. Which Postgres feature allows Supabase to efficiently notify clients about data changes?
hard
A. Postgres full table scans
B. Postgres LISTEN/NOTIFY system
C. Postgres static backups
D. Postgres manual indexing
Solution
Step 1: Identify Postgres feature for notifications
Postgres provides LISTEN/NOTIFY to send messages about data changes in real-time.
Step 2: Understand Supabase real-time updates
Supabase uses LISTEN/NOTIFY to push updates to clients efficiently without polling.
Final Answer:
Postgres LISTEN/NOTIFY system -> Option B
Quick Check:
Real-time updates use LISTEN/NOTIFY in Postgres [OK]
Hint: Real-time in Postgres uses LISTEN/NOTIFY [OK]
Common Mistakes:
Confusing backups with real-time features
Thinking full table scans notify clients
Assuming manual indexing triggers updates
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.