Что такое rowID и rowNum (ROWID против ROWNUM)

Я хотел бы знать разницу между rowID а также rowNUM

И как увидеть оба из них в нашей таблице.

когда я выполню это:

SELECT * FROM emp WHERE rownum=1

Он возвращает один запрос, но когда я делаю то же самое для rowid, он говорит

несовместимые типы данных: ожидаемый ROWID получил NUMBER

И даже в некоторых таблицах rownum возвращает null . Почему так?

Пожалуйста, уточните это: rowid vs rownum?(Демонстрационный запрос)

Спасибо

РЕДАКТИРОВАТЬ: Требуется использовать псевдоним для отображения ROWID а также ROWNUM(как они псевдоколонка), как:

SELECT rownum r1, rowid r2 FROM emp

3 ответа

Решение

Оба, rownum и rowed, являются псевдостолбцами.

RowId

Для каждой строки в базе данных псевдостолбец ROWID возвращает адрес строки.

Пример запроса будет:

SELECT ROWID, last_name  
   FROM employees
   WHERE department_id = 20;

Больше информации о rowid здесь: https://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns008.htm

RowNum

Для каждой строки, возвращаемой запросом, псевдостолбец ROWNUM возвращает число, указывающее порядок, в котором Oracle выбирает строку из таблицы или набора соединенных строк. Первый выбранный ряд имеет ROWNUM, равный 1, второй - 2 и т. Д.

Вы можете ограничить количество результатов с помощью rownum следующим образом:

SELECT * FROM employees WHERE ROWNUM < 10;

Больше информации о rownum здесь: https://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns009.htm

разница

Фактическая разница между rowid а также rownum является то, что rowid является постоянным уникальным идентификатором для этой строки. Тем не менее, rownum является временным. Если вы измените свой запрос, число rownum будет ссылаться на другую строку, а rowid - нет.

Таким образом, ROWNUM является последовательным числом, которое применимо только для конкретного оператора SQL. В отличие от ROWID, который является уникальным идентификатором для строки.

Rownum (числовой) = сгенерированный порядковый номер вашего выхода.
Rowid (шестнадцатеричный) = генерируется автоматически во время вставки строки.

SELECT rowid,rownum fROM EMP


ROWID ROWNUM                 
----- ---------------------- 
AAAR4AAAFAAGzg7AAA, 1                      
AAAR4AAAFAAGzg7AAB, 2                      
AAAR4AAAFAAGzg7AAC, 3                      
AAAR4AAAFAAGzg7AAD, 4                      
AAAR4AAAFAAGzg7AAE, 5      
  1. Rowid дает адрес строк или записей. Rownum дает количество записей
  2. Rowid постоянно хранится в базе данных. Rownum не хранится в базе данных постоянно
  3. Rowid назначается автоматически при каждом добавлении в таблицу. Rownum - это динамическое значение, которое автоматически извлекается вместе с выводом оператора select.
  4. Это только для демонстрации.

Идентификатор строки показывает уникальный identification для рядаrownum показывает уникальный ряд чисел по умолчанию.

select * from emp
where rownum<=5;   (it will execute correctly and gives output first 5 rows in your table )

select * from emp
where rowid<=5;  (wrong because rowid helpful to identify the unique value)
Другие вопросы по тегам