Oracle Database 1Z0-071 cheat sheet for key facts, traps, service mappings, and final review.
On this page
Use this for last-mile review. 1Z0-071 rewards precision about row flow, NULL semantics, grouping behavior, and the exact point where SQL changes from row filtering to result shaping.
1Z0-071 answer sequence
Use this when the stem mixes row flow, NULL semantics, grouping, set operators, or alias rules.
flowchart TD
S["SQL stem"] --> F["Follow FROM/JOIN first"]
F --> W["Apply WHERE and null logic"]
W --> G["Apply GROUP BY and HAVING"]
G --> S2["Check SELECT, set operators, and ORDER BY"]
Read every SQL stem in this order
Identify the row source: tables, joins, inline views, and subqueries.
Apply row filters before aggregation.
Apply grouping and aggregate filters.
Apply the select list, aliases, expressions, and derived columns.
Apply set operators, ordering, and row limiting when present.
Fast lane picker
If the question is mainly about…
Start with…
Usual winning move
why the row set changed
query execution order
follow the rows before reading the columns
missing or extra rows
join shape and filter placement
check row multiplication and outer-join filtering
weird predicate behavior
NULL semantics
do not trust ordinary equality thinking
display or conversion surprise
function and datatype rules
check implicit conversion and format masks
totals or aggregates
grouping grain and HAVING
aggregate at the right level first
membership or existence
EXISTS, IN, or NOT EXISTS
pick the operator that matches the shape and null behavior
mixed result sets
set-operator rules
align column count, datatype compatibility, and duplicate handling
Query reading order
flowchart TD
From["FROM / JOIN"] --> Where["WHERE"]
Where --> Group["GROUP BY"]
Group --> Having["HAVING"]
Having --> Select["SELECT"]
Select --> SetOps["SET OPERATORS"]
SetOps --> Order["ORDER BY / FETCH"]
Fast rule: if you read SELECT first, you will often predict the wrong result set.
SELECT-list and alias traps
Trap
Better reading
using a select-list alias in WHERE
not available there because WHERE is evaluated earlier
assuming ORDER BY cannot see aliases
ORDER BY can usually use select-list aliases
mixing aggregate and nonaggregate columns
every nonaggregate selected expression must fit the grouping rule
relying on output formatting
distinguish displayed text from stored datatype behavior
Predicate and operator reminders
Topic
Fast rule
BETWEEN
inclusive on both ends
LIKE
pattern matching, not equality; % and _ matter
AND / OR
use parentheses when precedence changes meaning
DISTINCT
removes duplicate result rows after select-list expressions are formed
ORDER BY
final presentation step, not a row-source filter
NULL rules that break answers
Rule
Why it matters
NULL is not equal to anything, including another NULL
equality logic breaks
use IS NULL or IS NOT NULL
= NULL never does what beginners want
NOT IN can surprise you when the subquery contains NULL
NOT EXISTS is often safer
outer-join filters can erase preserved rows
a bad WHERE clause can quietly turn outer join logic into inner-join behavior
COUNT(col) ignores nulls
it is not the same as COUNT(*)
NULL traps
Trap
Better reading
col = NULL
use IS NULL
NOT IN with nullable values
prefer NOT EXISTS if nulls are possible
outer join plus right-table filter in WHERE
move the filter into the join condition or handle nulls deliberately
NVL / COALESCE is always harmless
replacement values can change datatype or comparison behavior
Conversion and function traps
Function lane
Exam reminder
character functions
know case conversion, substring, trim, length, and concatenation behavior
number functions
rounding, truncation, and modulus-style logic are precision traps
date functions
date arithmetic and format masks matter more than intuition
conversion functions
TO_CHAR, TO_DATE, and TO_NUMBER depend on masks and session assumptions
null functions
NVL, NVL2, NULLIF, and COALESCE solve different shapes
conditional expressions
CASE is often clearer than nested function tricks
Date and string reminders
Topic
Fast rule
date arithmetic
adding a number to a date shifts days
format model
controls conversion/display, not the underlying date concept
concatenation with null
Oracle string behavior can surprise candidates coming from other databases
case-sensitive string comparison
do not assume normalization unless the query does it
The join condition above preserves rows from a and only matches active b rows. Moving b.status = 'ACTIVE' into the WHERE clause usually changes the result set.
Join chooser
Requirement
Strongest first pattern
only matching rows
inner join
keep all rows from left side
left outer join
keep unmatched rows from both sides
full outer join
match every row to every row
cross join
compare rows in same table
self join
match by same-named columns with caution
natural join or USING, but read the column list carefully
Join traps
Trap
Better reading
filter preserved-side results in WHERE casually
check whether it converts the outer join outcome
join two one-to-many tables before aggregating
row multiplication may inflate totals
natural join is safer because it is shorter
it can join on more columns than you intended
USING and ON are interchangeable in every expression
column qualification and name visibility can differ
Aggregation and grouping
Concern
Better rule
row filter before aggregation
WHERE
group filter after aggregation
HAVING
wrong totals after join
check grain before grouping
count logic
know the difference between COUNT(*) and nullable expressions