
- •Выполнение простых запросов в oracle с помощью языка запросов данных dql
- •Базовый запрос select
- •Псевдонимы полей
- •Сортировка результатов (order by)
- •Фильтрация строк (where)
- •Операторы сравнения
- •Объединительные операторы
- •Оператор in
- •Оператор exists
- •Арифметические операторы
- •Основные функции sql
- •Символьные функции
- •Математические функции
- •Функции преобразования
- •Агрегирующие функции и группировка строк
- •Выражение group by
Выполнение простых запросов в oracle с помощью языка запросов данных dql
Язык запросов данных DQL включает одну команду – SELECT. Она используется для получения данных из базы (без их изменения), чтобы они могли быть обработаны приложением или отображены в удобной форме. Результирующий набор записейвозвращается ввиде таблицы.
Общая форма оператора SELECT:
SELECT [ DISTINCT ] столбцы FROM таблицы
[ WHERE условия ]
[ GROUP BY группа [ HAVING групповые_условия ] ]
[ ORDER BY имя_поля ]
Базовый запрос select
Содержит две части:
SELECT [DISTINCT] – разделенные запятыми поля, которые должны быть возвращены в списке результатов. Если необходимо выбрать все поля в таблице или представлении вместо имен может быть поставлена звездочка (*). Ключевое слово distinct позволяет исключить дубликаты в результатах;
FROM – таблицы или представления, из которых выбираются данные. Вместо настоящего имени таблицы или представления может использоваться синоним (псевдоним для таблицы или представления).
Для ввода запроса используйте окно Worksheet.
Вывод всех полей и всех строк таблицы Orders по нажатию кнопки Run Statement (Ctrl+Enter):
Вывод неповторяющихся значений поля u_status таблицы Users:
Список столбцов в select используют, если нужно изменить порядок следования столбцов в результирующей таблице или выбрать часть столбцов:
Oracle предлагает функции, которые возвращают системные данные, не находящиеся в таблице или представлении. Например, текущую дату можно получить с помощью запроса SELECT и функции current_date. В Oracle существует необычная особенность – таблица-пустышка DUAL, которая используется, если ни одна из колонок в запросе SELECT не находится в реальной таблице или представлении:
В такой форме оператор SELECT можно использовать в качестве калькулятора,как показано на рисунке:
Псевдонимы полей
Можно указывать в запросе псевдоним поля. Псевдоним не сохраняется после выполнения SQL-запроса, и не может использоваться в большинстве других частей запроса. Псевдоним поля пишется за именем поля в списке SELECT после ключевого слова AS:
Можно пропустить слово AS, оставляя пробел между именем и псевдонимом поля – обработчик SQL знает, что это не имя следующего поля, т. к. для разделения имен полей используются запятые:
Присвоение псевдонима – это переименование столбца, распространяющееся только на данный список результатов.
Сортировка результатов (order by)
Возвращаемые значения часто должны быть упорядочены. Последовательность результатов можно указать в запросе. Это делается в секции ORDER BY со списком из одного или более полей, которые будут использоваться для упорядочения строк по возрастанию или убыванию значений этих полей.
Отметим следующее:
по умолчанию принят порядок по возрастанию, но после имени поля может быть добавлено ключевое слово ASC (по возрастанию) или DESC (по убыванию);
поля, указанные в ORDER BY, не обязательно должны быть включены в список результатов запроса (однако это лучше сделать);
обработчик SQL-запросов в СУБД сам решает, как упорядочить поля. Сортировка задействует много системных ресурсов, поэтому большинство СУБД использует индексы и обращается к алгоритму сортировки в крайнем случае;
после ORDER BY можно использовать псевдонимы, но в этом случае индексы использовать невозможно (они ссылаются на имена полей, а не на псевдонимы). Обработчик SQL-запросов будет иметь большую гибкость, если после ORDER by будут использованы только имена полей;
с точки зрения инженерной психологии лучше всего расположить поля, по которым производится сортировка, первыми в результатах запроса и в том же порядке в списке ORDER BY:
вместо имен полей могут быть перечислены позиции полей в результатах. Например, ORDER BY 1, 2 упорядочит результаты по возрастанию по первым двум полям в списке результатов. Этот номер не имеет отношения к позиции столбца в исходной таблице или представлении. Этот вариант обычно не применяется, т. к. как тот, кто модифицирует запрос позднее, может переставить поля в запросе и не заметить, что этим он изменяет порядок сортировки результатов;