1Z0-071 — Oracle Database SQL Exam Blueprint
Practical exam blueprint for Oracle Database SQL (1Z0-071) readiness: SQL queries, joins, functions, subqueries, DML, DDL, and final-review checks.
How to Use This Exam Blueprint
Use this independent Exam Blueprint as a readiness map for the Oracle Database SQL (1Z0-071) exam. It is not a replacement for Oracle documentation or hands-on SQL practice. Work through each area until you can read a SQL question, predict the result, identify syntax errors, and choose the best statement without guessing.
For each topic, ask:
- Can I explain what the statement does before running it?
- Can I predict the returned rows, column names, sort order, and null behavior?
- Can I identify why an option is invalid SQL?
- Can I choose between similar constructs such as
WHEREvs.HAVING,INvs.EXISTS,UNIONvs.UNION ALL, orDELETEvs.TRUNCATE? - Can I handle Oracle-specific SQL behavior around dates, character functions, conversion functions, aliases, and nulls?
Topic-area readiness table
| Readiness area | What to review | You are ready when you can… |
|---|---|---|
| Relational database concepts | Tables, rows, columns, primary keys, foreign keys, entity relationships, normalization basics, data integrity | Identify table relationships, recognize key constraints, and explain why joins are needed |
Basic SELECT statements | SELECT, FROM, expressions, aliases, concatenation, literal values, DISTINCT | Predict output column names, duplicate handling, and expression results |
| Filtering rows | WHERE, comparison operators, BETWEEN, IN, LIKE, IS NULL, logical operators | Build and debug predicates, especially with NULL, operator precedence, and pattern matching |
| Sorting and row presentation | ORDER BY, aliases, column positions, expressions, ascending/descending order, null sort behavior | Determine final output order and know when aliases are usable |
| Single-row functions | Character, numeric, date, and general functions | Apply functions to each row and predict data type and value returned |
| Conversion functions | TO_CHAR, TO_DATE, TO_NUMBER, format models, implicit vs. explicit conversion | Avoid conversion traps and choose explicit conversion when needed |
| Conditional expressions | CASE, DECODE, NVL, NVL2, NULLIF, COALESCE | Select the correct expression for null handling or conditional output |
| Aggregate reporting | COUNT, SUM, AVG, MIN, MAX, GROUP BY, HAVING | Know row-level vs. group-level logic and avoid invalid aggregate queries |
| Joins | Inner joins, outer joins, self joins, Cartesian products, ON, USING, NATURAL JOIN | Choose the correct join type and predict unmatched-row behavior |
| Subqueries | Single-row, multiple-row, correlated, nested subqueries, scalar subqueries | Match subquery return shape to operators such as =, IN, ANY, ALL, and EXISTS |
| Set operators | UNION, UNION ALL, INTERSECT, MINUS | Combine result sets correctly and predict duplicate elimination and column naming |
| DML | INSERT, UPDATE, DELETE, MERGE where applicable, default values, subquery-based DML | Modify data safely and understand which rows are affected |
| Transactions | COMMIT, ROLLBACK, savepoints, statement failure vs. transaction state | Explain when changes become permanent and how rollback scope works |
| DDL and table management | CREATE TABLE, ALTER TABLE, DROP TABLE, constraints, defaults, data types | Create and modify table structures with correct constraint behavior |
| Schema objects and access paths | Indexes, sequences, synonyms, views where included in your study scope | Recognize purpose, basic syntax, and exam-level usage scenarios |
| Oracle SQL syntax judgment | Clause order, alias visibility, data type compatibility, invalid combinations | Eliminate wrong answers quickly by spotting syntax and semantic errors |
Core SQL statement checklist
Basic query structure
Make sure you can write and troubleshoot this pattern without hesitation:
SELECT DISTINCT
column_name AS alias_name,
expression
FROM table_name
WHERE row_filter
ORDER BY alias_name DESC;
Check yourself:
- I know the required clauses and optional clauses in a basic
SELECT. - I can distinguish a column alias from a table alias.
- I know when double quotes make an alias case-sensitive or allow spaces.
- I can identify when
DISTINCTapplies to the full selected row, not just one column. - I can predict the result of arithmetic expressions involving
NULL. - I know that string literals use single quotes.
- I can recognize invalid attempts to use a
SELECTalias in theWHEREclause. - I can use
ORDER BYwith a column name, alias, expression, or position when valid.
Filtering and logical conditions
| Predicate type | Example | Readiness check |
|---|---|---|
| Equality and inequality | department_id = 10 | Know how character, number, and date comparisons work |
| Range | salary BETWEEN 5000 AND 9000 | Remember that BETWEEN is inclusive |
| List | department_id IN (10, 20, 30) | Know when IN is equivalent to multiple OR conditions |
| Pattern | last_name LIKE 'S%' | Use % for any length and _ for one character |
| Null check | commission_pct IS NULL | Never use = NULL or <> NULL |
| Negation | NOT IN, NOT LIKE, IS NOT NULL | Watch for unexpected behavior with nulls |
| Compound logic | A AND B OR C | Apply operator precedence or add parentheses |
Can you do this?
- Predict which rows pass a filter with mixed
ANDandOR. - Rewrite a confusing condition using parentheses.
- Identify why
WHERE bonus = NULLreturns no rows. - Escape or reason through wildcard characters in
LIKEscenarios. - Determine whether
NOT BETWEENandNOT INare appropriate. - Explain why
NOT INcan be dangerous when the list or subquery containsNULL.
Functions and expression readiness
Character functions
| Function area | Examples to know | What to practice |
|---|---|---|
| Case conversion | UPPER, LOWER, INITCAP | Case-insensitive comparisons and formatted output |
| Character manipulation | CONCAT, SUBSTR, LENGTH, INSTR | Position counting, substring length, and search results |
| Padding and trimming | LPAD, RPAD, TRIM, LTRIM, RTRIM | Output length and removal behavior |
| Replacement | REPLACE | Predict changed strings and unchanged strings |
Practice prompt:
SELECT employee_id,
UPPER(last_name) AS name_key,
SUBSTR(last_name, 1, 3) AS prefix,
LENGTH(last_name) AS name_length
FROM employees;
You should be able to answer:
- What data type does each expression return?
- Is the function applied once per row or once per result set?
- What happens if the input value is
NULL? - Which functions are useful in
WHEREfilters? - How can applying a function to a column affect index usage conceptually?
Numeric functions
Review:
-
ROUND -
TRUNC -
MOD - Sign and precision effects
- Difference between rounding and truncating
- Behavior with negative numbers where covered by your practice materials
Can you predict the output?
SELECT ROUND(45.926, 2),
TRUNC(45.926, 2),
MOD(10, 3)
FROM dual;
Date functions and date arithmetic
Oracle SQL date questions often test small details. Be ready to work with:
| Concept | Review focus |
|---|---|
| Current date/time functions | Know which function returns database/session date or timestamp in your study scope |
| Date arithmetic | Adding days, subtracting dates, fractional days |
| Month logic | ADD_MONTHS, MONTHS_BETWEEN, LAST_DAY, NEXT_DAY |
| Date rounding/truncation | ROUND(date), TRUNC(date) |
| Extraction and formatting | EXTRACT, TO_CHAR date format models where applicable |
| Time zones | Basic awareness if covered by your course or practice set |
Can you do this?
- Add 7 days to a date.
- Find the number of days between two dates.
- Format a date as a character string with
TO_CHAR. - Convert a character string to a date with
TO_DATE. - Recognize when implicit date conversion is risky.
- Predict whether a date comparison includes a time component.
Example:
SELECT employee_id,
hire_date,
ADD_MONTHS(hire_date, 6) AS review_date,
LAST_DAY(hire_date) AS hire_month_end
FROM employees;
Conversion and null-handling functions
| Function | Main use | Exam trap |
|---|---|---|
TO_CHAR | Convert date/number to character | Format model affects output, not stored value |
TO_DATE | Convert character to date | Format model must match input meaning |
TO_NUMBER | Convert character to number | Invalid numeric text causes errors |
NVL | Substitute value when expression is null | Replacement should be compatible with expression type |
NVL2 | Return one value if not null, another if null | Easy to reverse the second and third arguments |
NULLIF | Return null when two expressions are equal | Useful for avoiding certain comparisons |
COALESCE | Return first non-null expression | Data type compatibility matters |
CASE | Conditional logic | Order matters; first matching condition wins |
DECODE | Oracle conditional comparison | Compare syntax carefully; easier to misread than CASE |
Checklist:
- I can choose
NVLvs.COALESCE. - I can write both simple and searched
CASEexpressions. - I can identify type mismatch problems in null-handling expressions.
- I can explain why explicit conversion is safer than relying on implicit conversion.
- I can predict output when all expressions are null.
Example:
SELECT employee_id,
salary,
commission_pct,
CASE
WHEN commission_pct IS NULL THEN 'No commission'
WHEN commission_pct > 0 THEN 'Commissioned'
ELSE 'Check'
END AS commission_status
FROM employees;
Aggregation and grouping checklist
Aggregate functions
Know the difference between row-level expressions and group-level results.
| Function | Includes nulls? | Key readiness point |
|---|---|---|
COUNT(*) | Yes, counts rows | Counts every row in the group |
COUNT(column) | No | Counts non-null values in that column |
SUM(column) | No | Ignores nulls |
AVG(column) | No | Average of non-null values |
MIN(column) / MAX(column) | No | Works with comparable data types |
Can you do this?
- Explain why
COUNT(*)andCOUNT(commission_pct)can return different values. - Identify every non-aggregated column that must appear in
GROUP BY. - Use
WHEREto filter rows before grouping. - Use
HAVINGto filter groups after grouping. - Predict results for groups containing only null values.
- Recognize invalid use of aggregate functions in
WHERE.
Grouping decision table
| Need | Use | Not |
|---|---|---|
| Filter individual rows before aggregation | WHERE | HAVING |
| Filter aggregate result groups | HAVING | WHERE |
| Display one result per group | GROUP BY | Plain SELECT with mixed columns |
| Count all rows | COUNT(*) | COUNT(nullable_column) |
| Count known values only | COUNT(column) | COUNT(*) |
Example:
SELECT department_id,
COUNT(*) AS employee_count,
AVG salary_avg
FROM employees
GROUP BY department_id
HAVING COUNT(*) > 5;
Readiness check:
- Can you spot the syntax issue in the example?
- Can you correct the aggregate expression?
- Can you explain whether
department_idmay be null and how that affects grouping? - Can you move conditions between
WHEREandHAVINGonly when logically valid?
Corrected pattern:
SELECT department_id,
COUNT(*) AS employee_count,
AVG(salary) AS salary_avg
FROM employees
GROUP BY department_id
HAVING COUNT(*) > 5;
Join readiness
Join types to master
| Join type | What it returns | Common trap |
|---|---|---|
| Inner join | Matching rows from both tables | Missing join condition creates unintended combinations |
| Left outer join | All rows from left table plus matching right rows | Filtering right-table columns in WHERE can remove outer-joined rows |
| Right outer join | All rows from right table plus matching left rows | Same filtering issue as left join |
| Full outer join | All matched and unmatched rows from both sides | Nulls appear for missing side |
| Self join | Rows in a table joined to other rows in same table | Requires clear table aliases |
| Cross join | Cartesian product | Usually unintended unless explicitly required |
| Natural join | Joins columns with same names | Can be risky because matching columns are implicit |
Join with USING | Joins same-named columns listed in USING | Column qualification rules differ for the USING column |
Core pattern:
SELECT e.employee_id,
e.last_name,
d.department_name
FROM employees e
JOIN departments d
ON e.department_id = d.department_id;
Outer join pattern:
SELECT d.department_name,
e.employee_id
FROM departments d
LEFT OUTER JOIN employees e
ON d.department_id = e.department_id;
Can you do this?
- Choose inner vs. outer join based on whether unmatched rows must be preserved.
- Identify the driving table in a left or right outer join.
- Explain why join predicates belong in
ON. - Explain when row filters belong in
WHERE. - Use aliases consistently in multi-table queries.
- Recognize a Cartesian product.
- Write a self join for employee-manager style data.
- Predict nulls introduced by an outer join.
Outer join filter trap
Be ready for questions like this:
SELECT d.department_name,
e.employee_id
FROM departments d
LEFT OUTER JOIN employees e
ON d.department_id = e.department_id
WHERE e.salary > 5000;
Ask:
- Does the
WHEREclause eliminate rows wheree.salaryis null? - Does this still preserve departments with no employees?
- Should the salary condition be part of the join condition instead?
- What result is the question asking for: all departments, or only departments with qualifying employees?
Subquery checklist
Subquery types
| Subquery type | Returns | Typical operators |
|---|---|---|
| Single-row | One row, one value | =, >, <, >=, <=, <> |
| Multiple-row | Multiple values in one column | IN, ANY, ALL |
| Multiple-column | Multiple columns | Tuple-style comparisons where valid |
| Scalar | One value | Can appear where a single expression is allowed |
| Correlated | Depends on outer query row | Often used with EXISTS |
| Nested | Subquery inside another subquery | Read from inside out carefully |
Single-row example:
SELECT employee_id, last_name, salary
FROM employees
WHERE salary > (
SELECT AVG(salary)
FROM employees
);
Multiple-row example:
SELECT employee_id, last_name, department_id
FROM employees
WHERE department_id IN (
SELECT department_id
FROM departments
WHERE location_id = 1700
);
Correlated example:
SELECT d.department_id, d.department_name
FROM departments d
WHERE EXISTS (
SELECT 1
FROM employees e
WHERE e.department_id = d.department_id
);
Can you do this?
- Match subquery result cardinality to the correct operator.
- Identify when a single-row subquery returns too many rows.
- Choose
INwhen comparing against a list of values. - Choose
EXISTSwhen testing whether related rows exist. - Explain how a correlated subquery is evaluated conceptually.
- Avoid
NOT INsurprises when the subquery can returnNULL. - Use subqueries in
WHERE,HAVING,FROM, orSELECTwhen valid. - Distinguish a subquery from a join solution.
Subquery decision prompts
| Scenario | Likely construct |
|---|---|
| Find employees earning more than the company average | Single-row subquery with AVG |
| Find departments that have at least one employee | EXISTS or inner join |
| Find departments with no employees | NOT EXISTS or outer join with null filter |
| Find employees in departments located in a given city | IN subquery or join |
| Compare salary to all salaries in another department | ALL |
| Compare salary to at least one salary in another department | ANY or SOME where supported |
Set operator readiness
Set operator comparison
| Operator | Duplicate handling | Readiness point |
|---|---|---|
UNION | Removes duplicates | Sort/distinct work may affect output expectations |
UNION ALL | Keeps duplicates | Usually easiest to predict row counts |
INTERSECT | Returns common rows | Rows must match across selected columns |
MINUS | Returns rows from first query not in second | Query order matters |
Rules to review:
- Each query must return the same number of columns.
- Corresponding columns must be compatible by data type.
- Final column names usually come from the first query.
-
ORDER BYbelongs at the end of the combined query. - Duplicates are evaluated across the full row, not one column.
- Parentheses may be needed to make intended order clear in complex combinations.
Example:
SELECT employee_id, email
FROM employees
WHERE department_id = 10
UNION
SELECT employee_id, email
FROM employees
WHERE department_id = 20
ORDER BY employee_id;
Can you do this?
- Predict whether duplicates remain.
- Identify invalid set operations caused by mismatched column counts.
- Explain why
UNION ALLcan return more rows thanUNION. - Determine which query controls displayed column aliases.
- Choose
MINUSfor “in A but not in B” scenarios.
DML, transactions, and data changes
DML statement readiness
| Statement | Purpose | What to verify |
|---|---|---|
INSERT | Add rows | Column list, value order, defaults, nullability, data types |
INSERT ... SELECT | Add rows from a query | Selected columns match target columns |
UPDATE | Modify rows | WHERE clause scope and subquery behavior |
DELETE | Remove rows | WHERE clause scope and referential constraints |
MERGE | Insert/update based on match logic where included | Match condition and affected action |
TRUNCATE | Remove all rows as a DDL-style operation | Transaction and trigger behavior at exam level, if covered |
Example:
UPDATE employees
SET salary = salary * 1.10
WHERE department_id = 60;
Ask before choosing an answer:
- Which rows are affected?
- What happens if the
WHEREclause is omitted? - Are constraints checked?
- Are data types compatible?
- Is the statement DML or DDL?
- Can the change be rolled back in the scenario given?
Transaction control checklist
Review:
-
COMMITmakes current transaction changes permanent. -
ROLLBACKundoes uncommitted transaction changes. -
SAVEPOINTmarks a point to roll back to. - Some statements may implicitly end a transaction depending on statement type and Oracle behavior.
- Statement failure is not always the same as full transaction rollback.
- Locks and read consistency may appear conceptually, even if not deeply tested.
Core patterns:
SAVEPOINT before_raise;
UPDATE employees
SET salary = salary * 1.05
WHERE department_id = 80;
ROLLBACK TO before_raise;
Can you do this?
- Determine whether data remains changed after
ROLLBACK. - Determine whether a
COMMITprevents later rollback of earlier changes. - Identify DML vs. DDL transaction implications.
- Explain why transaction order matters in multi-statement scenarios.
DDL and table management checklist
Table creation and data types
Be ready to read and write statements like:
CREATE TABLE project_assignments (
assignment_id NUMBER,
employee_id NUMBER NOT NULL,
project_code VARCHAR2(30),
start_date DATE DEFAULT SYSDATE,
status VARCHAR2(20),
CONSTRAINT project_assignments_pk PRIMARY KEY (assignment_id)
);
Review:
- Common Oracle data types in exam-level SQL: character, numeric, date/time-related types.
- Difference between
CHARandVARCHAR2at a practical level. - Column defaults.
-
NOT NULLconstraints. - Naming constraints.
- Creating a table from a query where included in your study scope.
- Effects of
DROP,ALTER,RENAME, andTRUNCATEat exam level.
Constraint readiness
| Constraint | Purpose | Common exam cue |
|---|---|---|
PRIMARY KEY | Uniquely identifies each row and disallows nulls | One primary key per table, can be composite |
FOREIGN KEY | Enforces relationship to parent key | Insert/update/delete may fail due to referential integrity |
UNIQUE | Prevents duplicate non-null key values | Different from primary key because null behavior matters |
NOT NULL | Requires a value | Column-level constraint |
CHECK | Restricts allowed values | Expression must evaluate within allowed rule |
DEFAULT | Supplies value when omitted | Does not override explicit provided value |
Can you do this?
- Add a primary key to an existing table.
- Add a foreign key referencing another table.
- Identify why an insert violates a constraint.
- Determine whether a column can accept
NULL. - Explain difference between a constraint and an index at a high level.
- Recognize valid column-level vs. table-level constraint syntax.
Example:
ALTER TABLE project_assignments
ADD CONSTRAINT project_assignments_emp_fk
FOREIGN KEY (employee_id)
REFERENCES employees(employee_id);
Schema object checks
Depending on the exact preparation materials you are using for Oracle Database SQL (1Z0-071), be ready for exam-level questions involving supporting schema objects.
| Object | What to know | Readiness prompt |
|---|---|---|
| Index | Helps locate rows and may support constraints | Can you identify why an index might be created? |
| Sequence | Generates numeric values | Can you use NEXTVAL and CURRVAL correctly where covered? |
| View | Stored query presented as a table-like object | Can you distinguish base table data from view definition? |
| Synonym | Alternate name for an object | Can you identify why a synonym is useful? |
Sequence example:
INSERT INTO project_assignments (assignment_id, employee_id, project_code)
VALUES (project_assignment_seq.NEXTVAL, 101, 'SQL-UPGRADE');
Checklist:
- I can recognize basic
CREATE INDEXsyntax. - I know that indexes are not selected directly in ordinary queries.
- I can use a sequence-generated value in an
INSERT. - I understand that a view stores a query definition, not necessarily a separate copy of rows.
- I can identify when a synonym is used to simplify object references.
Oracle SQL syntax and clause-order checks
Clause-order readiness
Know the normal written order:
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
For set operators, the final ORDER BY appears after the combined query.
Can you do this?
- Put clauses in valid written order.
- Identify clauses that cannot appear together in a proposed way.
- Spot missing commas between selected expressions.
- Spot missing parentheses around function arguments.
- Identify invalid alias references.
- Confirm whether a function is single-row or aggregate.
- Check data type compatibility in expressions and comparisons.
Alias visibility
| Location | Can usually use select-list alias? | Readiness note |
|---|---|---|
SELECT same list | No, not for another expression in same list | Use original expression or nesting |
WHERE | No | Filter before select alias is available |
GROUP BY | Be careful; use expression if required | Practice Oracle-specific behavior from your materials |
HAVING | Be careful; use aggregate/expression directly | Avoid relying on alias unless clearly valid |
ORDER BY | Yes | Common exam use case |
Scenario and decision-point checks
Choose the right construct
| If the question asks you to… | Think first about… |
|---|---|
| Return only matching rows from two tables | Inner join |
| Return all rows from one table even without matches | Outer join |
| Find rows in one result but not another | MINUS or NOT EXISTS |
| Remove duplicate rows across two queries | UNION |
| Preserve duplicate rows across two queries | UNION ALL |
| Filter rows before calculating group totals | WHERE |
| Filter groups after calculating totals | HAVING |
| Replace null display values | NVL or COALESCE |
| Apply multi-branch conditional logic | CASE |
| Compare a value to a list from a subquery | IN, ANY, or ALL |
| Test whether related rows exist | EXISTS |
| Permanently save transaction changes | COMMIT |
| Undo uncommitted changes | ROLLBACK |
Common exam-style cues
Use these prompts when reading a question stem:
- “All departments, including departments with no employees” means outer join.
- “Employees who do not belong to any listed department” may involve null-aware logic.
- “More than the average” usually signals an aggregate subquery.
- “At least one” often maps to
EXISTS,IN, orANY. - “Every” or “all values” may map to
ALL. - “Remove duplicate rows” points to
DISTINCTorUNION. - “Keep duplicate rows” points to
UNION ALL. - “After grouping” points to
HAVING. - “Format the date as text” points to
TO_CHAR. - “Convert the text into a date” points to
TO_DATE. - “Generate a new numeric key” may point to a sequence.
- “Undo only part of the transaction” points to a savepoint.
Common weak areas and traps
| Weak area | Why candidates miss it | How to fix it |
|---|---|---|
| Null comparisons | NULL is not equal to anything, including another NULL | Drill IS NULL, IS NOT NULL, NVL, COALESCE, and NOT IN cases |
WHERE vs. HAVING | Both filter, but at different stages | Label each condition as row-level or group-level |
| Outer join filters | A WHERE condition can cancel preserved rows | Decide whether the condition belongs in ON or WHERE |
| Aggregate query validity | Non-aggregated selected columns require grouping | Check every selected expression |
| Single-row subquery errors | Subquery returns more than one row for = | Match operator to subquery shape |
| Implicit conversion | Looks convenient but can fail or behave unexpectedly | Prefer explicit TO_DATE, TO_CHAR, TO_NUMBER |
| Date formatting | Format model changes display, not stored date | Separate storage, comparison, and presentation |
| Set operator column rules | Queries look similar but columns do not align | Count columns and compare data types by position |
| Alias use | Alias works in some clauses but not others | Memorize alias visibility rules |
COUNT(*) vs. COUNT(column) | Nulls affect only the column version | Practice small sample tables |
NATURAL JOIN | Implicit matching columns may surprise you | Prefer explicit joins when reasoning |
Missing WHERE in DML | All rows are affected | Always identify the target row set first |
| DDL vs. DML | Transaction behavior differs | Classify the statement before answering |
| Constraint timing | Inserts/updates may fail due to parent-child rules | Trace parent and child rows |
Hands-on practice checklist
Use a small practice schema and make sure you can complete these tasks from memory.
Querying tasks
- Select specific columns with readable aliases.
- Concatenate character values with literals.
- Remove duplicate rows with
DISTINCT. - Filter rows using
IN,BETWEEN,LIKE, and null checks. - Sort by alias and by multiple columns.
- Use character functions in both
SELECTandWHERE. - Use numeric functions and predict rounding/truncation.
- Use date functions and perform date arithmetic.
- Convert dates and numbers to formatted character output.
- Write simple and searched
CASEexpressions.
Join tasks
- Join two tables with
ON. - Join three tables with clear aliases.
- Write a left outer join that preserves unmatched parent rows.
- Write a self join.
- Identify and correct an accidental Cartesian product.
- Compare
ON,USING, andNATURAL JOINbehavior.
Aggregation tasks
- Count all rows and count non-null values.
- Group rows by one column.
- Group rows by multiple columns.
- Filter rows before grouping.
- Filter groups after aggregation.
- Use a subquery with an aggregate result.
Subquery and set-operator tasks
- Write a single-row subquery.
- Write a multiple-row subquery using
IN. - Write a correlated subquery using
EXISTS. - Rewrite a subquery as a join when appropriate.
- Combine results with
UNION. - Preserve duplicates with
UNION ALL. - Return rows in one query but not another with
MINUS.
DML and DDL tasks
- Insert a row with all columns listed.
- Insert rows using a subquery.
- Update only selected rows.
- Delete only selected rows.
- Use
COMMIT,ROLLBACK, andSAVEPOINT. - Create a table with primary key and foreign key constraints.
- Add, modify, or drop a column where valid.
- Add constraints with
ALTER TABLE. - Recognize basic index, sequence, view, or synonym usage if included in your review.
Final-week checklist
Seven-day review priorities
| Timeframe | Focus | What “done” means |
|---|---|---|
| 7 days out | Rebuild the topic map | You know your weakest 3 areas and have a plan |
| 6 days out | Functions and conversions | You can predict function outputs without running SQL |
| 5 days out | Joins and subqueries | You can choose the correct construct from a scenario |
| 4 days out | Aggregation and set operators | You can identify invalid grouping and set syntax |
| 3 days out | DML, transactions, DDL | You can classify statements and predict effects |
| 2 days out | Mixed timed practice | You review every miss and label the cause |
| 1 day out | Light review | You focus on traps, not new material |
Final review “must know” list
- Clause order for
SELECTstatements. - Difference between
WHEREandHAVING. - Difference between
COUNT(*)andCOUNT(column). - How nulls affect comparisons and expressions.
- How outer joins preserve unmatched rows.
- How subquery result shape controls valid operators.
- How
UNION,UNION ALL,INTERSECT, andMINUSdiffer. - How explicit conversion functions work.
- How
CASE,NVL,COALESCE, and related expressions handle nulls. - How
COMMIT,ROLLBACK, and savepoints affect changes. - Basic DDL syntax for tables and constraints.
- Common reasons SQL statements are invalid.
Readiness scorecard
Use this quick self-assessment before scheduling or taking a full practice exam.
| Area | Not ready | Almost ready | Ready |
|---|---|---|---|
Basic SELECT, filtering, sorting | I still miss syntax basics | I can write queries but miss edge cases | I can predict output and errors |
| Functions and conversions | I confuse function purpose | I know most functions but miss null/date cases | I can solve function-heavy questions reliably |
| Aggregation | I mix row and group logic | I know basics but miss invalid queries | I can validate GROUP BY and HAVING quickly |
| Joins | I guess join type | I can write joins but miss outer join filters | I can predict matched and unmatched rows |
| Subqueries | I mismatch operators | I know common patterns | I can choose and debug subquery forms |
| Set operators | I confuse duplicate behavior | I know operators but miss column rules | I can predict row handling and syntax |
| DML and transactions | I forget commit/rollback effects | I know basics but miss savepoint scenarios | I can trace multi-statement outcomes |
| DDL and constraints | I know terms only | I can read syntax but not all effects | I can create and troubleshoot table rules |
Practical next step
Pick one weak area from the scorecard and do a focused practice block before attempting another mixed set. For Oracle Database SQL (1Z0-071), the best improvement usually comes from writing SQL, predicting the result, then checking exactly why each wrong answer is wrong: syntax, data type, null behavior, join logic, grouping logic, or transaction effect.