Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Работа с Oracle / 2 - Простые запросы Oracle.docx
Скачиваний:
6
Добавлен:
28.06.2021
Размер:
758.03 Кб
Скачать

17

Выполнение простых запросов в oracle с помощью языка запросов данных dql

Язык запросов данных DQL включает одну команду – SELECT. Она используется для получения данных из базы (без их изменения), чтобы они могли быть обработаны приложением или отображены в удобной форме. Результирующий набор записейвозвращается ввиде таблицы.

Общая форма оператора SELECT:

SELECT [ DISTINCT ] столбцы FROM таблицы

[ WHERE условия ]

[ GROUP BY группа [ HAVING групповые_условия ] ]

[ ORDER BY имя_поля ]

  1. Базовый запрос select

Содержит две части:

  • SELECT [DISTINCT] – разделенные запятыми поля, которые должны быть возвращены в списке результатов. Если необходимо выбрать все поля в таблице или представлении вместо имен может быть поставлена звездочка (*). Ключевое слово distinct позволяет исключить дубликаты в результатах;

  • FROM – таблицы или представления, из которых выбираются данные. Вместо настоящего имени таблицы или представления может использоваться синоним (псевдоним для таблицы или представления).

Для ввода запроса используйте окно Worksheet.

Вывод всех полей и всех строк таблицы Orders по нажатию кнопки Run Statement (Ctrl+Enter):

Вывод неповторяющихся значений поля u_status таблицы Users:

Список столбцов в select используют, если нужно изменить порядок следования столбцов в результирующей таблице или выбрать часть столбцов:

Oracle предлагает функции, которые возвращают системные данные, не находящиеся в таблице или представлении. Например, текущую дату можно получить с помощью запроса SELECT и функции current_date. В Oracle существует необычная особенность – таблица-пустышка DUAL, которая используется, если ни одна из колонок в запросе SELECT не находится в реальной таблице или представлении:

В такой форме оператор SELECT можно использовать в качестве калькулятора,как показано на рисунке:

  1. Псевдонимы полей

Можно указывать в запросе псевдоним поля. Псевдоним не сохраняется после выполнения SQL-запроса, и не может использоваться в большинстве других частей запроса. Псевдоним поля пишется за именем поля в списке SELECT после ключевого слова AS:

Можно пропустить слово AS, оставляя пробел между именем и псевдонимом поля – обработчик SQL знает, что это не имя следующего поля, т. к. для разделения имен полей используются запятые:

Присвоение псевдонима – это переименование столбца, распространяющееся только на данный список результатов.

  1. Сортировка результатов (order by)

Возвращаемые значения часто должны быть упорядочены. Последовательность результатов можно указать в запросе. Это делается в секции ORDER BY со списком из одного или более полей, которые будут использоваться для упорядочения строк по возрастанию или убыванию значений этих полей.

Отметим следующее:

  • по умолчанию принят порядок по возрастанию, но после имени поля может быть добавлено ключевое слово ASC (по возрастанию) или DESC (по убыванию);

  • поля, указанные в ORDER BY, не обязательно должны быть включены в список результатов запроса (однако это лучше сделать);

  • обработчик SQL-запросов в СУБД сам решает, как упорядочить поля. Сортировка задействует много системных ресурсов, поэтому большинство СУБД использует индексы и обращается к алгоритму сортировки в крайнем случае;

  • после ORDER BY можно использовать псевдонимы, но в этом случае индексы использовать невозможно (они ссылаются на имена полей, а не на псевдонимы). Обработчик SQL-запросов будет иметь большую гибкость, если после ORDER by будут использованы только имена полей;

  • с точки зрения инженерной психологии лучше всего расположить поля, по которым производится сортировка, первыми в результатах запроса и в том же порядке в списке ORDER BY:

  • вместо имен полей могут быть перечислены позиции полей в результатах. Например, ORDER BY 1, 2 упорядочит результаты по возрастанию по первым двум полям в списке результатов. Этот номер не имеет отношения к позиции столбца в исходной таблице или представлении. Этот вариант обычно не применяется, т. к. как тот, кто модифицирует запрос позднее, может переставить поля в запросе и не заметить, что этим он изменяет порядок сортировки результатов;