Книга: Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
Выражения
Выражения
Хранение данных в простом, наиболее абстрактном виде - вот что делают базы данных. Язык поиска - в случае Firebird это обычно SQL - вместе с ядром сервера базы данных предоставляют целый арсенал готовых формул, в которые во время выполнения можно подставлять фактические данные для преобразования фрагментов абстрактных данных в информацию, имеющую смысл для человека.
Для простого примера возьмем таблицу MEMBERSHIP, которая имеет столбцы FIRST_NAME, LAST_NAME и DATE_OF_BIRTH. Для получения списка, содержащего полное имя и дату рождения, мы можем использовать оператор, содержащий выражения для преобразования хранимых данных:
SELECT
FIRST_NAME ||' '|| LAST_NAME AS FULL_NAME,
EXTRACT (MONTH FROM DATE_OF_BIRTH) ||'/'|| EXTRACT (DAY FROM DATE_0F_BIRTH)
AS BIRTHDAY
FROM MEMBERSHIP
WHERE FIRST_NAME IS NOT NULL AND LAST_NAME IS NOT NULL
ORDER BY 2;
Во время отправления запроса на сервер мы не знаем, какие значения хранятся в базе данных. Однако мы знаем, на что они должны быть похожи (семантика их значений и типы данных), для нас этого достаточно, чтобы сконструировать выражения для поиска списка в том виде, который будет для нас иметь смысл.
В этом одном операторе мы используем три вида выражений SQL.
* Для первого поля FULL NAME используется оператор конкатенации (в SQL два символа вертикальной черты 11) для создания выражения, которое объединяет два поля базы данных, разделенные пробелами в одно.
* Для второго поля BIRTHDAY используется функция для выделения сначала месяца, а затем дня месяца из поля даты. В том же выражении опять используется оператор конкатенации для объединения вместе выделенных чисел в качестве даты рождения. День отделяется от месяца наклонной чертой.
* В качестве условия поиска предложение WHERE использует другой вид выражения- логический предикат - для проверки подходящих строк в таблице. Строки, которые не удовлетворяют этой проверке, не помещаются в выходной набор.
В этом примере выражения были использованы:
* для преобразования найденных данных в выходные столбцы;
* для задания условий поиска в предложении WHERE оператора SELECT. Тот же подход может быть использован для условий поиска операторов UPDATE и DELETE.
Другие контексты, где могут использоваться выражения:
* для задания условий проверки данных в ограничениях CHECK;
* для определения вычисляемых (COMPUTED BY) столбцов в операторах CREATE TABLE и ALTER TABLE;
* для преобразования или создания входных данных в процессе их сохранения в таблице при использовании операторов INSERT или UPDATE;
* для упорядочения или группирования выходных наборов;
* при установке во время выполнения условий определения вывода;
* в условиях потока управления в модулях PSQL.
- Индексы по выражениям
- Выражения в значениях по умолчанию для доменов
- Выражения в EXCEPTION
- 6. Выражения реляционной алгебры
- 3.13.7. Рекурсия в регулярных выражениях
- 6. Лекция: Обработка текстов. Регулярные выражения. Unicode.
- Применение лямбда-выражения в качестве задачи
- 4.2.2. Возвращаясь к строкам и регулярным выражениям
- Выражения с двумя цифрами
- 2.11 Условные выражения
- ГЛАВА 21. Выражения и предикаты.
- 12.8. Регулярные выражения