ROWID pseudo column & DUAL table

ROWID lets you pinpoint a row's exact physical storage address on the hard drive, while the DUAL table serves as a built-in scratching pad to run immediate SQL queries without a real table.

10 min read · 13 cards · 3 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

The Ghost Columns and Invisible Tables

When you query a database table like SELECT name, roll_no FROM students;, you expect to read structural elements that you explicitly created yourself. But behind the scenes, Oracle keeps secret tracking variables attached to every row, and provides a magic single-row structural table that exists purely to answer quick mathematical calculations or system checkups. If you want to know the exact physical slot on the hard drive chip where a row is saved, or if you simply want to test a built-in string function without connecting it to actual student data, how do you do it? This is where the ROWID pseudo-column and the DUAL table come to your rescue.

Theory

The GPS Latitude Coordinate vs. The Empty Scratchpad Paper

Think of ROWID like a permanent GPS coordinate stamp (Latitude, Longitude, and Floor Number) engraved onto a physical house. Even if two people sharing the exact same name move into identical-looking houses, their geographic GPS codes will remain completely different. On the other hand, think of the DUAL table like a blank scratchpad sticky note on your study desk. If you want to multiply 45 by 12 or check today's date, you don't need to open a massive ledger book or create a new student directory; you just scribble the math onto that small single-square sticky note, read the quick answer, and move on!

Theory

The Physical Address Blueprint: ROWID

In Oracle SQL, a Pseudo-column behaves exactly like a regular table column when you query it, but its data is not actually stored inside your table's custom column definitions. ROWID is the fastest possible way to access a row because it contains the exact binary address of the tuple on the storage media. It is represented as an 18-character base-64 string divided into four precise structural parts.

Theory

Anatomy of an Extended ROWID

An extended ROWID looks like a sequence of letters such as OOOOOOFFFBBBBBBRRR. Let us break down what each segment reveals to the database engine:

At a glance

Table 1: Architectural structure break down of Oracle Extended ROWID strings.

ROWID Segment CharactersComponent RepresentedPhysical Storage Function
Chars 1 - 6 (OOOOOO)Data Object NumberIdentifies the specific database segment/table structure id.
Chars 7 - 9 (FFF)Relative Datafile NumberPoints to the exact physical operating system file on the storage drive.
Chars 10 - 15 (BBBBBB)Data Block NumberPinpoints the precise memory allocation block holding the row data.
Chars 16 - 18 (RRR)Row Slot NumberIdentifies the exact directory index slot location inside that specific block.

Theory

The Universal Scratchpad: The DUAL Table

The DUAL table is a special, one-row, one-column dummy table automatically created by Oracle alongside the data dictionary. It belongs to the schema user SYS but is accessible globally by all database users under public privilege. It contains exactly one column named DUMMY defined as a VARCHAR2(1), and holds a single row with the value 'X'. Because it has exactly one row, any function or equation you call against it evaluates exactly once, making it ideal for testing expressions.

Practical

Executing Lookups and Testing Functions

-- Step 1: Query the physical location coordinate of your data
SELECT rowid, student_name FROM student_profile;

-- Step 2: Use DUAL to run a quick mathematical computation
SELECT (45 * 2) + 10 FROM DUAL;

-- Step 3: Fetch the current system date and time stamp using DUAL
SELECT SYSDATE FROM DUAL;

-- Step 4: Test a string function conversion on a dummy literal
SELECT LOWER('EXAM SUCCESS') FROM DUAL;

Copy and open Oracle FreeSQL
Oracle FreeSQL is a free online editor for Oracle SQL. The code is copied first: paste it there and run it.

Think first

The Single-Row Evaluation Rule

What would happen if you ran the query 'SELECT SYSDATE FROM student_profile;' on a table containing 500 student rows, instead of running 'SELECT SYSDATE FROM DUAL;'?

Show the answer

The query will execute successfully, but it will print out the exact same system date 500 separate times! Why? Because SQL statements always return one output line for every row that exists in the target table. This is exactly why the DUAL table was designed with only 1 row: it guarantees you get back exactly one clean result line without loading database buffers with unnecessary repeated text lines.

Quiz

What happens to the ROWID value of a specific row record if you execute an UPDATE statement that alters a student's name value?

  1. The ROWID changes instantly because the row contents are rewritten to a new memory segment.
  2. The ROWID remains completely unchanged because the physical location of the row on the storage disk block stays the same.
  3. The row is assigned a temporary null value until a COMMIT is triggered.
  4. The system completely drops the row slot and creates a new database object id.
Show the answer

The ROWID remains completely unchanged because the physical location of the row on the storage disk block stays the same.

ROWID identifies the physical storage location of a row on the disk. Changing data values inside columns (like modifying a name string) does not change where the row physically sits on disk. Therefore, the ROWID remains completely fixed and constant.

Quiz

Which of the following descriptions accurately defines the structural components of Oracle's internal DUAL table?

  1. It contains 2 columns and 2 rows, designed to double-check calculation parameters.
  2. It contains 0 columns and 1 row, serving as a placeholder container for administrative tasks.
  3. It contains exactly 1 column named DUMMY and exactly 1 row with the value 'X'.
  4. It is a temporary view that vanishes as soon as your session closes down.
Show the answer

It contains exactly 1 column named DUMMY and exactly 1 row with the value 'X'.

The DUAL table is statically structured as a real table with one column (DUMMY) and exactly one row holding the value character 'X'. This structural configuration ensures that any scalar function or expression evaluated against it returns a single unique row output line.

Watch out

The Classic Trap: The Delete Duplicate Confusion

A very popular and tricky question in university interviews is: 'How do you delete identical duplicate rows from a table if they share the exact same values across all columns?' You cannot filter them using names or roll numbers since they match completely! The solution is to use ROWID. Even if two rows look identical to a human, their ROWID strings are guaranteed to be different because they live in different physical slots. You can write a query like: DELETE FROM students A WHERE A.rowid > (SELECT MIN(B.rowid) FROM students B WHERE A.roll_no = B.roll_no); to safely wipe out duplicates!

Theory

Connecting to Semester 3 Performance Optimization

Understanding ROWID gives you a huge head start for your advanced Semester 3 database performance modules. When you create an explicit Database Index, Oracle builds a fast lookup tree that maps search keys directly to their corresponding ROWID values. This lets the storage engine jump straight to the exact disk location instantly, skipping slow full-table storage scans.

Summary

Key takeaways

  • ROWID is an internal Oracle pseudo-column that exposes the exact physical address of a row on disk storage.
  • An extended ROWID is a base-64 encoded string containing the Object ID, Relative Datafile number, Block ID, and Row Slot.
  • The DUAL table is a built-in single-row, single-column table used as a quick scratchpad for testing expressions.
  • Querying functions against DUAL ensures that values (like SYSDATE or math logic) are evaluated exactly once.
  • ROWIDs remain stable throughout structural modifications, unless the row is physically deleted or re-located.
  • Memory Hook: ROWID is your row's physical storage address stamp, and DUAL is your safe, single-row scratching pad!

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from Advanced SQL

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati

ROWID pseudo column & DUAL table · Concepts of Relational Database Management Systems · Gri-Learn