Both rownum and rowed are pseudo columns.
Rowid
For each row in the database, the ROWID pseudo-column returns the address of the row.
An example request would be:
SELECT ROWID, last_name FROM employees WHERE department_id = 20;
More information about rowid here: https://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns008.htm
Rownum
For each row returned by the query, the ROWNUM pseudo-column returns a number indicating the order in which Oracle selects a row from a table or a set of joined rows. The first row selected has ROWNUM equal to 1, the second has 2, etc.
You can limit the number of results using rownum as follows:
SELECT * FROM employees WHERE ROWNUM < 10;
More information about rownum here: https://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns009.htm
difference
The actual difference between rowid and rownum is that the ROWID is a constant unique identifier for this row. However, rownum is temporary. If you change your query, rownum will refer to another row, and rowid will not.
Therefore, ROWNUM is a sequential number that is applicable only to a particular SQL statement. Unlike ROWID, which is a unique identifier for a string.
source share