Tier 1 · Foundations

FROM and Table References in SQL

By Owen Middleton · Updated September 2026 · Examples run on PostgreSQL 17

What does the FROM clause do in SQL?

FROM is how you tell SQL which table to read from.

Without it, SELECT has nothing to work with. You can write arithmetic with just SELECT — quick calculations, labeled values — but the moment you need real data from the database, you need FROM to point SQL at the right place.

Think of a database like a filing cabinet where each drawer is a table. customers, products, orders — each one holds a different set of rows. FROM is you opening a specific drawer and telling SQL: start here. Every row in that drawer becomes available. SELECT then picks which columns to return.

How do you write a SELECT with FROM?

You'll use this pattern constantly as an analyst. A manager asks for a customer list. A stakeholder wants the product catalog. An ops person needs to see all recent orders. Every one of those starts the same way:

SELECT name, email
FROM customers

SQL reads the customers table and returns every row with two columns: name and email. Nothing else, regardless of how many other columns exist in the table.

Different table, completely different data:

SELECT id, name, price
FROM products

Change customers to products and you're in a different drawer entirely. The query structure is identical; the data is completely different.

What does SELECT * do in SQL?

When you're exploring a table for the first time, SELECT * returns every column at once. It's the fastest way to see what a table actually contains before you decide what you need.

What happens if you SELECT a column that does not exist?

One rule matters here: every column you name in SELECT has to exist in the table FROM points to. SQL checks this before running the query. Ask for a column that isn't there and you get an error immediately — not a blank result, not a null, an error.

Check your understanding

You write SELECT phone FROM products, but the products table has no phone column. What happens?

Practice FROM Clause in SQL

Practice · easy ecommerce · Brightlane

Brightlane's merchandising team is building a master price list ahead of the Q4 catalog refresh.

Write a query to return every product's ID, name, and price.

Assumptions:

  • The products table contains every item in Brightlane's catalog.
  • Each product has an id, a name, and a price recorded.

Output:

  • One row per product, with columns id, name, and price.
Schema · ecommerce5 tables? = nullable
categories
idinteger
nametext
parent_id?integer
products
idinteger
nametext
category_id?integer
pricenumeric
stock_qtyinteger
attributes?jsonb
order_items
idinteger
order_id?integer
product_id?integer
quantityinteger
unit_pricenumeric
customers
idinteger
nametext
emailtext
city?text
countrytext
created_attimestamptz
is_activeboolean
orders
idinteger
customer_id?integer
ordered_attimestamptz
statustext
total_amountnumeric

Run previews · Check grades

Write a query, then run it to see results here.

Worked solution

The full breakdown walks through the shape, each clause, why this approach beats the alternatives, and the trap to avoid.

See the full worked solution

9 FROM Clause practice problems

Start learning to practice all 9 FROM Clause problems, with instant grading and mastery tracking.

Common questions about FROM Clause

What happens if you select a column that is not in the table?

The query stops with column does not exist. PostgreSQL resolves every name in the SELECT list against the table FROM points at before it reads a single row, so a typo costs you an error rather than a blank column you might not notice.

Can a query run without a FROM clause?

Yes. A SELECT with no FROM evaluates its expressions and returns one row, which is how you check a calculation before pointing it at real data. You need FROM the moment you want values that live in a table.

How do you see every column in a table?

Select an asterisk instead of naming columns and PostgreSQL returns all of them. It is the fastest way to find out what a table actually holds before you decide which columns you need, which makes it an exploration tool rather than something to leave in a finished query.

What happens if the table name is wrong?

The query stops with relation does not exist, naming the table it could not find. PostgreSQL resolves table names before anything runs, so a misspelling gives you an error instead of an empty result you might mistake for a real answer.

How you actually get good at SQL

Reading explains SQL. Writing it, over and over with instant feedback, is what makes you fluent.

That's the whole SQLMaxx loop: 600+ real problems, instant AI feedback, mastery you can actually see, and spaced review that won't let you forget.

A stack of SQL practice problem cards, the top card showing an employees table.
615 problems · 66 concepts

Real problems. Not toy examples.

615 hand-built problems spanning all 66 concepts, from basic SELECTs to window functions, built on real schemas and real business questions, the kind you'll actually get asked on the job. Enough reps to make SQL automatic.

A retro computer showing a SQL query marked correct with a green checkmark.
Instant AI feedback

Write a query. Know if it's right in one second.

No copying an answer and hoping it clicked. The AI grader checks your real query against real data, catches exactly what's wrong, and explains the fix in plain English, like a senior analyst reading over your shoulder on every problem.

A circular mastery progress dial filling from blue to green, the SQLMaxx diamond at its center.
Mastery tracking

Stop guessing whether you actually know it.

SQLMaxx tracks every concept and shows you what you've mastered and what's still shaky. Your skills fill in one concept at a time, so 'I think I get joins' becomes something you can prove.

A SQL query editor circled by a blue return arrow with a clock, scheduled to come back for review.
Spaced review

Learn it once. Keep it for good.

Most of what you learn this week fades by next week. So when a concept comes due for review, SQLMaxx hands you a fresh problem to solve from a blank editor, not a flashcard to re-read. A research-backed spaced-repetition algorithm (FSRS) times each return for right before you'd forget, so your SQL is still there months later, when the interview or the job actually needs it.