Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Название:Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2006
- Город:Санкт-Петербург
- ISBN:5-94157-609-9
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ краткое содержание
Рассмотрены вопросы, необходимые разработчику для создания клиент-серверных приложений с использованием СУБД Firebird, явившейся развитием СУБД Borland Interbase 6. Содержится обзор концепций и моделей архитектуры клиент/сервер, а также практические рекомендации по работе с клиентскими библиотеками Firebird. Детально описаны особенности типов данных SQL, язык манипулирования данными (Data Manipulation Language, DML), а также синтаксис и операторы языка определения данных ( Data Definition Language, DDL). Большое внимание уделено описанию транзакций и приведены советы по их использованию при разработке приложений. Описано программирование на стороне клиента и сервера написание триггеров и хранимых процедур, создание и использование событий базы данных, обработка ошибок в коде на сервере и многое другое. Материал сопровождается многочисленными примерами, советами и практическими рекомендациями.
Для разработчиков баз данных
Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
В следующем наборе условий поиска проверяемое утверждение содержит два условия. Ключевое слово AND связывает два предиката, приводя к тому, что окончательное утверждение будет истинным, если оба предиката будут истинными:
SELECT * FROM EMPLOYEE
WHERE (
(HIRE_DATE > CURRENT_DATE - 366)
AND (SALARY BETWEEN 25000.00 AND 39999.99));
Строки, для которых одно утверждение истинно, а другое ложно, будут отбрасываться.
Первый предикат (HIRE_DATE > CURRENT_DATE - 366) использует выражение, состоящее из переменной и операции вычисления значения, которое будет сравниваться со значением столбца. В этом случае утверждение использует оператор- утверждение будет истинным, если значение столбца будет больше, чем значение, полученное из выражения.
Второй предикат использует другой оператор. Ключевое слово BETWEEN задает проверку "больше или равно значению в левой части и меньше или равно значению в правой части".
Круглые скобки здесь не являются обязательными, хотя для многих сложных выражений скобки должны быть использованы для задания приоритета вычислений выражений и предикатов. В ситуациях, когда проверяются серии предикатов, использование для них скобок является хотя и необязательным, но весьма полезным для документирования и отладки.
Решение, что является истинным
На рис. 21.1 показаны возможные результаты вычисления двух предикатов из предыдущего примера.
В нашем примере вначале проверяется (HIRE_DATE > CORRENT_DATE - 366), потому что это самый левый предикат. Если бы у него были вложенные предикаты, то сначала проверялись бы они. Ни для одного из предикатов нет проверки на NULL, но мы включили сюда тот случай, когда встречается пустое ("неизвестное") значение в проверяемых данных, что приведет к результату "ложь", поскольку проверка не может вернуть истину. Должна быть доказана истинность предикатов, чтобы они считались истинными.
Если NULL встречается в HIRE DATE, то проверка немедленно прекращается и возвращает ложь [72] Это "ускоренное" вычисление логических значений, которое реализовано в Firebird 1.5 и выше. Firebird l.Ojc использует полное логическое вычисление. Для тех, кто любит изобретательные загадочные выражения, старый метод может быть восстановлен при использовании параметра конфигурации FullBooleanEvaluation.
. Связка AND означает: два предиката, соединенные операцией AND, не могут давать результат истина, если один из них является ложным, следовательно, нет необходимости выполнять проверку второго предиката.
Если проверяемые данные не являются NULL, ТО следующей является проверка, верно ли, что значение больше указанной константы. Если нет, проверка прекращается. Другими словами, NULL и ложь имеют один и тот же эффект, поскольку оба не являются истиной.

Рис. 21.1. Вычисление истинности
Если первый предикат истинный, похожий процесс вычисления выполняется для второго предиката. Только когда будет выполнено все это, процесс вычисления утверждения завершается.
Символы, используемые в выражениях
Табл. 21.1 описывает символы, которые могут появляться в выражениях SQL.
Таблица 21.1. Элементы выражений SQL
Элемент |
Описание |
Имя столбца |
Идентификаторы столбцов из указанных таблиц, представляющих поле, используемое в вычислении, или сравнении, или в качестве условия поиска. На любой столбец базы данных может быть ссылка в выражении за исключением столбцов типа массива. (Исключение: любой столбец, являющийся массивом, может проверяться на is [NOT] NULL) |
Элементы массива |
На элементы массива может быть ссылка в выражении |
Имена столбцов только для вывода |
Во время выполнения идентификаторы задают вычисляемые столбцы или алиасы столбцов базы данных |
Ключевое слово AS |
Используется (необязательно) как маркер для имени только для выходного столбца списка столбцов в SELECT |
Арифметические операторы |
Символы +, -, * и / используются для вычисления значений |
Логические операторы |
Зарезервированные слова NOT, AND и OR используются в простых условиях поиска или при комбинировании простых условий поиска для создания сложных предикатов |
Операторы сравнения |
<, >, <=, >=, = и <> используются для сравнения утверждений |
Другие операторы сравнения |
LIKE, STARTING WITH, CONTAINING, BETWEEN, и IS [NOT] NULL |
Операторы существования |
Предикаторы, используемые для проверки существования значения в наборе, IN может быть использован с наборами констант или со скалярными подзапросами, EXISTS, SINGULAR, ALL, ANY и SOME могут быть использованы только с подзапросами |
Оператор конкатенации |
Пара из вертикальных черт (||) используется для соединения символьных строк. Обратите внимание, что символы + и & не являются символами конкатенации в стандарте SQL |
Константы |
Числа или заключенные в апострофы строковые литералы, такие как 507 или 'Tokyo', которые могут быть включены в вычисления или сравнения в качестве полей времени выполнения |
Литералы даты |
Выражения, подобные строковым литералам, заключенным в апострофы, которые могут быть интерпретированы как значения даты, времени или даты-времени в операциях EXTRACT, SELECT, INSERT и UPDATE. Литералами даты могут быть предварительно определенные литералы ('TODAY', 'NOW' 'YESTERDAY', 'TOMORROW') или подходящие строки даты и времени, как описано в главе 10. В диалекте 3 литералы даты обычно требуют преобразования (CAST) в допустимый тип даты/времени при использовании в выражениях EXTRACT и SELECT |
Внутренние контекстные переменные |
Получаемые с сервера переменные, которые возвращают зависимые от контекста значения, такие как серверное время или идентификатор текущей транзакции |
Подзапросы |
Внутренние операторы SELECT, которые возвращают единственное (скалярное) значение для вывода или для сравнения в предикате |
Локальные переменные |
Именованные хранимые процедуры, триггеры или (в ESQL) переменные приложений, содержащие значения, которые могут изменяться в процессе выполнения |
Идентификаторы функций |
Идентификаторы внутренних или внешних функций в функциональных выражениях |
CAST(значение AS тип-данных) |
Функциональные выражения, явно преобразующие значение одного типа данных в другой тип данных |
Условные выражения |
Функции, объявляющие два или более взаимоисключающих условия для одного столбца, начинающиеся с ключевого слова CASE, COALESCE или NULLIF |
Круглые скобки |
Интервал:
Закладка: