Основы работы с ORACLE для начинающих
Если в таблице много записей, то порой достаточно выбрать первый десяток.
В других СУБД для этого изначально были специальные конструкции в языке SQL. В Oracle всё это появилось гораздо позже.
Есть несколько популярных способов. Каждый имеет плюсы и минусы, ну и от версии зависит.
Первый способ. С помощью конструкции "SELECT FROM SELECT"
Делаем два запроса: сначала сортируем, затем выбираем нужное количество.
SELECT user_id
, first_n
FROM (SELECT user_id
, first_n
FROM customers
ORDER BY user_id)
WHERE ROWNUM < 11;
|
USER_ID FIRST_N ----------- ---------- 1 Андрей 2 Иван 3 Николай 4 Андрей 5 Алексей 6 Тимофей 7 Юрий 8 Юрий 9 Александр 10 Игорь 10 rows selected. |
Конструкции SELECT-FROM-SELECT в Oracle 7 не было и приходилось изгалятся ещё круче. Но эти коды уже канули в прошлое.
Второй сопособ. "Классика".
SELECT *
FROM (
SELECT user_id
, row_number() over (order by user_id) rn
FROM customers
)
WHERE rn < 11;
|
С виду похож на первый способ, но на самом деле более универсальный. Позволяет получить не только первую десятку, но и вторую, третью и т.д
Просто надо переписать последюю строку в как-то так: WHERE 0 < rn and rn < 21
Третий способ. "Новомодный". Работает в Oracle 12c.
SELECT user_id
, first_n
FROM customers
ORDER BY user_id
FETCH FIRST 10 ROWS ONLY;
|
Здесь всё за счёт конструкции FETCH FIRST ROWS. Oracle потребовалось дойти до 12-ой версии, чтобы эту конструкцию ввести в язык.
Если нужно перенести объекты схемы из одной базы в другую, то проще всего это сделать с помощью технологии Oracle Data Pump. Прежде чем вникать в детали работы с Data Pump, давайте уточним: у нас есть физические резервные копии и логические дампы.
Чтобы после сбоя в системе (например, отказа жесткого диска) восстановить базу нужно иметь под рукой резервную копию. (Нет резервной копии — прощай работа )) Чем свежее копия, тем лучше. Более того: резервная копия базы должна быть полной и непротиворечивой.
Долго не мог понять, почему люди не любят пользоваться SQL*Plus. Оказывается: интерфейс убогий и бестолковый. Словом, не графический – мышкой ткнуть не куда (значит интуитивно не понятный). Мда.... ..редко встретишь кодера, умеющего мышкой воять SELECT’ы.