AdvancedJOINs (INNER, LEFT, RIGHT, FULL)

NATURAL JOIN vs explicit JOIN (know the difference)

The query

SQL
-- NATURAL JOIN (auto-matches same-named columns) — AVOID in production:
SELECT * FROM employees NATURAL JOIN departments;

-- EXPLICIT (always use this instead):
SELECT e.*, d.dept_name
FROM employees e
JOIN departments d ON e.dept_id = d.dept_id;
Tested against PostgreSQL 16

Note

NATURAL JOIN is fragile — breaks if schema changes add new same-name columns. Always use explicit JOINs.

Tables referenced