
- •Информационное обеспечение систем управления Построение запросов при работе с базой данных (Учебное пособие)
- •Тестовая база данных
- •Выборка данных. Команда select
- •Синтаксис оператора select
- •Простые варианты поиска данных
- •Упорядочение результата запроса. Предложение order by
- •Использование ключевого слова distinct
- •Предложение where
- •Синтаксис предложения where
- •Использование операторов сравнения
- •Использование варианта between
- •Проверка на присутствие в списке значений (вариант in)
- •Проверка на пустое значение
- •Поиск в строковых столбцах
- •Вариант like
- •Использование логических операций в условиях поиска
- •Порядок выполнения логических операций
- •Преобразование данных при выборке
- •Обобщение Данных с помощью Агрегатных Функций
- •Использование distinct с count
- •Предложение group by
- •Предложение having
- •Соединение таблиц
- •Внутренние соединения (связывание по равенству)
- •Внешние соединения
- •Левое внешнее соединение
- •Правое внешнее соединение
- •Полное внешнее соединение
- •Более сложные примеры соединений
- •Рефлексивное соединение, или самосоединение
- •Использование подзапросов в операторах sql
- •Выбор одного
- •Использование в подзапросе агрегатных функций
- •Связанные подзапросы
- •Использование оператора exists
- •Использование варианта in с подзапросами
- •Использование not exists
- •Объединение запросов
- •Команда union
- •Добавление данных. Команда insert
- •Добавление отдельной строки
- •Добавление группы строк
- •Обновление уже имеющихся данных. Команда update
- •Удаление данных из таблиц. Команда delete
- •Генераторы и их использование
- •Создание генераторов
- •Использование генераторов
- •Увеличение значения генератора
- •Получение значения генератора в приложение
- •Триггер
Порядок выполнения логических операций
Сам порядок выполнения логических операций на самом деле очень прост:
1. Выполняются действия в скобках.
2. Арифметические операции умножения и деления.
3. Арифметические операции сложения и вычитания.
4. Отрицание (NOT).
5. Конъюнкция (AND).
6. Дизъюнкция (OR).
Операции с одинаковым приоритетом выполняются слева направо.
Преобразование данных при выборке
В ряде случаев при выборке данных из базы с ними необходимо произвести некоторые преобразования. Функция CAST обеспечивает преобразование данных к явно указанному типу:
CAST (<val> AS <datatype>), где <val> - преобразуемое выражение, <datatype> - явно указываемый тип данных.
Вообще функция достаточно полезна везде, где используемые данные должны быть строго определенного типа. При преобразовании необходимо, конечно, помнить, что, во-первых, не все преобразования возможны в принципе и, во-вторых, при преобразованиях возможна потеря или искажение информации.
В некоторых случаях преобразование типов является обязательным, например при использовании объединения запросов – UNION (смотри соответствующий раздел).
Обобщение Данных с помощью Агрегатных Функций
Запросы могут производить обобщенное групповое значение полей точно также как и значение одного поля. Это делает с помощью агрегатых функций. Агрегатные функции производят одиночное значение для всей группы таблицы. Имеется список этих функций:
Функция |
Выполняемые действия |
AVG |
Возвращает среднее значение данных числовых столбцов |
COUNT |
Подсчитывает количество строк, удовлетворяющих заданному условию |
MIN |
Находит минимальное значение столбца в группе строк |
MAX |
Находит максимальное значение столбца в группе строк |
SUM |
Суммирует числовые значения |
Агрегатные функции используются подобно именам полей в предложении SELECT запроса, но с одним исключением, они берут имена поля как аргументы. Только числовые поля могут использоваться с SUM и AVG. COUNT, MAX, и MIN, могут использоваться и числовые или символьные поля. Когда они используются с символьными полями, MAX и MIN будут транслировать их в эквивалент ASCII, который должен сообщать, что MIN будет означать первое, а MAX последнее значение в алфавитном порядке. Выполним, например, следующий оператор, который отыскивает человека с "максимальной" фамилией, т. е. с фамилией, являющейся последней в упорядоченном по алфавиту списке фамилий:xxiv
SELECT MAX( PR_NAME) AS "Фамилия" FROM PERSON
Мы получим фамилию "Янышева"
Аналогичным образом работает и функция MIN, в смысле с точностью до наоборот. Можете это также проверить.
Применим MIN к числовому полю, найдем минимальный тариф на билеты:xxv
SELECT MIN(TR_COST) FROM TARIFF
Получим минимальную стоимость билета.
В результате использования агрегатных функций возвращается одиночное значение, независимо от того сколько строк находится в таблице. Из-за этого, агрегатные функции и поля не могут выбираться одновременно, пока предложение GROUP BY (описанное далее) не будет использовано.