Bird
Raised Fist0
Supabasecloud~10 mins

Data types and constraints in Supabase - Step-by-Step Execution

Choose your learning style10 modes available
Process Flow - Data types and constraints
Define Table
↓
Choose Column Name
↓
Select Data Type
↓
Add Constraints?
No→Finish Table
Yes↓
Specify Constraints
↓
Repeat for More Columns?
No→Finish Table
Yes↓
Choose Next Column Name
This flow shows how to create a table by defining columns with data types and optional constraints step-by-step.
Execution Sample
Supabase
CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  email VARCHAR(255) UNIQUE NOT NULL,
  age INT CHECK (age >= 18)
);
Creates a users table with id as primary key, email unique and required, and age with a minimum value constraint.
Process Table
StepActionColumnData TypeConstraintResult
1Define table 'users'---Table 'users' created (empty)
2Add columnidSERIALPRIMARY KEYColumn 'id' added with auto-increment and primary key
3Add columnemailVARCHAR(255)UNIQUE, NOT NULLColumn 'email' added with uniqueness and required
4Add columnageINTCHECK (age >= 18)Column 'age' added with minimum age constraint
5Finish table creation---Table 'users' ready with 3 columns and constraints
💡 All columns defined with data types and constraints; table creation complete.
Status Tracker
VariableStartAfter Step 2After Step 3After Step 4Final
Table 'users'emptyid column addedemail column addedage column addedcomplete with all columns and constraints
Key Moments - 3 Insights
Why do we need to specify data types for each column?
Data types define what kind of data can be stored, ensuring data is valid and operations work correctly. See execution_table steps 2-4 where each column has a data type.
What happens if we don't add constraints like NOT NULL or UNIQUE?
Without constraints, data can be missing or duplicated, which might cause errors or inconsistent data. Execution_table step 3 shows adding UNIQUE and NOT NULL to prevent this.
How does the CHECK constraint work for the age column?
CHECK enforces a rule on data values; here it ensures age is 18 or older. See execution_table step 4 where CHECK (age >= 18) is added.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what constraint is applied to the 'email' column at step 3?
AUNIQUE and NOT NULL
BPRIMARY KEY
CCHECK (age >= 18)
DNo constraint
💡 Hint
Check the 'Constraint' column in execution_table row for step 3.
At which step is the 'age' column added with a constraint?
AStep 3
BStep 4
CStep 2
DStep 5
💡 Hint
Look at the 'Column' and 'Constraint' columns in execution_table for when 'age' appears.
If we remove the PRIMARY KEY constraint from 'id', what would change in the execution table?
AStep 4 would remove CHECK from 'age'
BStep 3 would add PRIMARY KEY to 'email'
CStep 2 would show no constraint for 'id'
DNo change in execution table
💡 Hint
Focus on the 'Constraint' column for step 2 in execution_table.
Concept Snapshot
Data types define the kind of data a column holds (e.g., INT, VARCHAR).
Constraints enforce rules on data (e.g., PRIMARY KEY, UNIQUE, NOT NULL, CHECK).
Define columns with data types and add constraints to ensure data integrity.
Constraints prevent invalid or duplicate data.
Use CHECK for custom rules like minimum age.
All combined create a reliable database table.
Full Transcript
This lesson shows how to create a database table in Supabase by defining columns with specific data types and constraints. First, you define the table name. Then, for each column, you choose a name, select a data type like SERIAL or VARCHAR, and optionally add constraints such as PRIMARY KEY, UNIQUE, NOT NULL, or CHECK. These constraints help keep data valid and consistent. For example, the 'id' column is a primary key that auto-increments, 'email' must be unique and not empty, and 'age' must be at least 18. The execution table traces each step of adding columns and constraints until the table is complete. Understanding data types and constraints is key to building reliable databases.

Practice

(1/5)
1. What is the main purpose of data types in a Supabase database table?
easy
A. To specify what kind of data each column can store
B. To control user access to the database
C. To create visual reports from data
D. To backup the database automatically

Solution

  1. Step 1: Understand data types role

    Data types define the kind of data a column can hold, like numbers or text.
  2. Step 2: Differentiate from other features

    Access control, reports, and backups are unrelated to data types.
  3. Final Answer:

    To specify what kind of data each column can store -> Option A
  4. Quick Check:

    Data types = specify data kind [OK]
Hint: Data types tell what data fits in each column [OK]
Common Mistakes:
  • Confusing data types with user permissions
  • Thinking data types create reports
  • Assuming data types handle backups
2. Which of the following is the correct way to define a column with a NOT NULL constraint in Supabase SQL?
easy
A. username TEXT NOT NULL
B. username NOT NULL TEXT
C. NOT NULL username TEXT
D. TEXT username NOT NULL

Solution

  1. Step 1: Recall SQL column definition order

    The correct order is: column name, data type, then constraints.
  2. Step 2: Match the syntax

    username TEXT NOT NULL follows this order: username TEXT NOT NULL.
  3. Final Answer:

    username TEXT NOT NULL -> Option A
  4. Quick Check:

    Column name + type + constraint = correct syntax [OK]
Hint: Column name first, then type, then constraints [OK]
Common Mistakes:
  • Placing NOT NULL before the column name
  • Swapping data type and constraint order
  • Using incorrect keyword order
3. Given the table definition:
CREATE TABLE users (id SERIAL PRIMARY KEY, email TEXT UNIQUE NOT NULL, age INT);

What happens if you try to insert two rows with the same email?
medium
A. The second insert overwrites the first row
B. Both rows are inserted successfully
C. The second insert fails due to UNIQUE constraint violation
D. The database ignores the UNIQUE constraint

Solution

  1. Step 1: Understand UNIQUE constraint effect

    The UNIQUE constraint prevents duplicate values in the email column.
  2. Step 2: Predict insert behavior

    Inserting a duplicate email causes the second insert to fail with an error.
  3. Final Answer:

    The second insert fails due to UNIQUE constraint violation -> Option C
  4. Quick Check:

    UNIQUE prevents duplicates = second insert fails [OK]
Hint: UNIQUE means no duplicate values allowed [OK]
Common Mistakes:
  • Assuming duplicates are allowed
  • Thinking second insert overwrites first
  • Ignoring constraint errors
4. You wrote this table definition:
CREATE TABLE products (id INT PRIMARY KEY, name TEXT NOT NULL, price TEXT);

What is the main issue with this definition?
medium
A. The id column cannot be INT
B. The price column should not be TEXT for numeric values
C. The name column cannot have NOT NULL constraint
D. PRIMARY KEY cannot be on id column

Solution

  1. Step 1: Check data type appropriateness

    Price should be a numeric type (like INT or NUMERIC), not TEXT, to store numbers properly.
  2. Step 2: Validate other columns

    id as INT with PRIMARY KEY and name as TEXT NOT NULL are valid.
  3. Final Answer:

    The price column should not be TEXT for numeric values -> Option B
  4. Quick Check:

    Price needs numeric type, not text [OK]
Hint: Use numeric types for numbers, not TEXT [OK]
Common Mistakes:
  • Using TEXT for numeric columns
  • Thinking PRIMARY KEY can't be INT
  • Believing NOT NULL is invalid on text
5. You want to create a table to store user profiles with these rules:
- Each user has a unique ID
- Email must be unique and not empty
- Age must be a positive integer or NULL if unknown

Which table definition correctly applies data types and constraints?
hard
A.
CREATE TABLE profiles (user_id UUID PRIMARY KEY, email TEXT UNIQUE NOT NULL, age INT CHECK (age > 0) OR age IS NULL);
B.
CREATE TABLE profiles (user_id INT, email TEXT NOT NULL, age INT NOT NULL CHECK (age >= 0));
C.
CREATE TABLE profiles (user_id UUID PRIMARY KEY, email TEXT UNIQUE NOT NULL, age INT CHECK (age > 0) NOT NULL);
D.
CREATE TABLE profiles (user_id UUID PRIMARY KEY, email TEXT UNIQUE NOT NULL, age INT CHECK (age > 0));

Solution

  1. Step 1: Check unique ID and email constraints

    CREATE TABLE profiles (user_id UUID PRIMARY KEY, email TEXT UNIQUE NOT NULL, age INT CHECK (age > 0));
    uses UUID PRIMARY KEY for unique ID and email TEXT UNIQUE NOT NULL, which is correct.
  2. Step 2: Validate age constraint

    CREATE TABLE profiles (user_id UUID PRIMARY KEY, email TEXT UNIQUE NOT NULL, age INT CHECK (age > 0));
    uses CHECK (age > 0) allowing NULL by default, which fits the requirement.
  3. Step 3: Review other options

    CREATE TABLE profiles (user_id INT, email TEXT NOT NULL, age INT NOT NULL CHECK (age >= 0));
    lacks PRIMARY KEY and UNIQUE on email, makes age NOT NULL; C adds NOT NULL to age preventing NULL values; D has syntax error in CHECK constraint.
  4. Final Answer:

    CREATE TABLE profiles (user_id UUID PRIMARY KEY, email TEXT UNIQUE NOT NULL, age INT CHECK (age > 0)); -> Option D
  5. Quick Check:

    UUID PK, UNIQUE email, age > 0 or NULL = correct [OK]
Hint: Use CHECK for age and UNIQUE + NOT NULL for email [OK]
Common Mistakes:
  • Forgetting PRIMARY KEY on user_id
  • Making age NOT NULL when it can be NULL
  • Writing invalid CHECK constraints
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard