Что такое 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
- Rowid дает адрес строк или записей. Rownum дает количество записей
- Rowid постоянно хранится в базе данных. Rownum не хранится в базе данных постоянно
- Rowid назначается автоматически при каждом добавлении в таблицу. Rownum - это динамическое значение, которое автоматически извлекается вместе с выводом оператора select.
- Это только для демонстрации.
Идентификатор строки показывает уникальный 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)