Data engineers use SQL to build the pipelines and warehouses everyone else's dashboards depend on. This path moves past querying into schema design, performance, transactional safety, and the modeling decisions that make a warehouse reliable at scale.
Where an analyst mostly reads data, an engineer is responsible for how it's structured, how safely it's
written, and how fast it can be read back at scale. This path assumes you can already write a
SELECT — it's built around the decisions that come before and after the query: how the tables
are designed, how the writes stay consistent under concurrent load, how the pipeline keeps a warehouse
up to date, and how the schema is shaped for the queries analysts will eventually run against it.
Every pipeline starts with a schema. CREATE TABLE decisions — column types, nullability,
primary keys — made early are expensive to unwind later once a table has production data and downstream
consumers depending on its shape.
CREATE TABLE departments (
id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
location VARCHAR(100),
budget DECIMAL(12,2)
);
NOT NULL constraint decided at table-creation time prevents a whole category of bad data from ever landing.Foreign keys, uniqueness, and check constraints are the database enforcing your data model instead of trusting application code to get it right every time. Normalization decides how many tables a piece of information should live in — and knowing when to break those rules deliberately (denormalizing for a reporting table) is just as important as knowing the rules.
An index turns a full table scan into a targeted lookup — but only if it matches how the table is actually queried. Reading an execution plan is how you stop guessing and start proving whether a query is using an index or silently scanning every row.
CREATE INDEX idx_employees_department
ON employees (department_id);
EXPLAIN SELECT * FROM employees WHERE department_id = 1;
Pipelines write data concurrently, and things fail mid-write. Transactions and ACID guarantees are what keep a partially-failed load from leaving a table in a half-updated state. Isolation levels decide exactly what one transaction is allowed to see of another's in-progress work — a real trade-off between consistency and throughput.
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 500 WHERE id = 1;
UPDATE accounts SET balance = balance + 500 WHERE id = 2;
COMMIT;
Reloading an entire source table on every pipeline run doesn't scale. Incremental loading — pulling
only what changed since the last run — is what makes daily (or hourly) pipelines feasible, and
UPSERT logic is how you apply those changes without creating duplicates.
A warehouse isn't modeled like an application database. Fact tables (events, transactions) and dimension tables (customers, products) arranged in a star schema are what let analysts self-serve fast queries. Slowly Changing Dimensions handle the messier reality — attributes that change over time, like a customer's address or a product's category — without losing history.
Data engineering interviews and job descriptions now assume familiarity with how raw data moves through layered storage — the Medallion pattern (bronze/silver/gold) is the most common mental model, sitting on top of the broader warehouse-vs-lake-vs-lakehouse decision every modern data platform has to make.
Stored procedures let you encapsulate pipeline logic inside the database itself; triggers fire automatically on inserts or updates. Both are powerful and both are easy to overuse — knowing when in-database automation helps versus when it makes a pipeline harder to debug is a judgment call every engineer has to make.
CREATE TRIGGER trg_salary_audit
AFTER UPDATE ON employees
FOR EACH ROW
INSERT INTO salary_audit (employee_id, old_salary, new_salary)
VALUES (OLD.id, OLD.salary, NEW.salary);
Build something end-to-end using the schema design, loading, and modeling patterns from this path.
Data Engineer interviews lean on performance, transactions, and scenario-based pipeline questions — exactly what this path covered.
The interview.php question bank, filtered to the performance category.
Current, role-specific interview questions with worked answers.
Pipeline-shaped problems, the format most DE interviews actually use.
25 questions covering everything above. Score 80% or higher to earn your Data Engineer badge on your dashboard.
25 questions · pass at 80%+ to earn your Data Engineer badge on your dashboard. One-time payment, lifetime access.