Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Название:Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2006
- Город:Санкт-Петербург
- ISBN:5-94157-609-9
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ краткое содержание
Рассмотрены вопросы, необходимые разработчику для создания клиент-серверных приложений с использованием СУБД Firebird, явившейся развитием СУБД Borland Interbase 6. Содержится обзор концепций и моделей архитектуры клиент/сервер, а также практические рекомендации по работе с клиентскими библиотеками Firebird. Детально описаны особенности типов данных SQL, язык манипулирования данными (Data Manipulation Language, DML), а также синтаксис и операторы языка определения данных ( Data Definition Language, DDL). Большое внимание уделено описанию транзакций и приведены советы по их использованию при разработке приложений. Описано программирование на стороне клиента и сервера написание триггеров и хранимых процедур, создание и использование событий базы данных, обработка ошибок в коде на сервере и многое другое. Материал сопровождается многочисленными примерами, советами и практическими рекомендациями.
Для разработчиков баз данных
Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
* Для использования курсора динамическое приложение должно предварительно объявить его в функции isc_dsqi_set_cursor_name [67] Программисты прямого API и разработчики компонентов интерфейса могут получить больше информации из InterBase API Guide (APIGuide.pdf) в документации по InterBase 6.0, опубликованной Borland.
. Только некоторые компоненты реализуют такой интерфейс, большинство других - нет.
* Язык PSQL предоставляет синтаксис для работы с именованными и неименованными курсорами локально внутри хранимой процедуры или триггера. Подробную информацию см. в главе 29.
! ! !
ПРИМЕЧАНИЕ. За исключением техник работы с курсорами в PSQL сами курсоры выходят за пределы темы настоящей книги. Подробную информацию см. в главе 30.
. ! .
Вложенные наборы
Вложенные наборы формируются с использованием синтаксиса специального вида выражений SQL, называемых подзапросами. Этот вид выражений принимает форму вложенного оператора SELECT, который может быть включен в список спецификаций столбцов главного запроса для получения одного значения строки, или в предложение WHERE как часть условия поиска. Допустимый синтаксис SELECT изменяется в зависимости от контекста, в котором используется подзапрос.
В следующем простом примере запрос к таблице TABLEA использует вложенный подзапрос для включения в выходной набор на время выполнения столбца с именем DESCRIPTION, наследующего значение из столбца COLA таблицы TABLEB:
SELECT COL1, COL2, COL3,
(SELECT COLA FROM TABLEB WHERE COLX='Espagnol')
AS DESCRIPTION
FROM TABLEA
WHERE ... ;
Обратите внимание на использование ключевого слова AS для присваивания имени (DESCRIPTION) наследуемому столбцу. Это делать необязательно, но рекомендуется для ясности кода.
Очень часто включенный запрос является коррелированным с главным запросом. Коррелированный запрос - это запрос, чье предложение WHERE связано с одним или более значениями выходного списка внешнего запроса или с другими значениями таблиц из внешнего запроса. Коррелированный подзапрос похож по своему действию на INNER JOIN и иногда может быть использован для повышения производительности вместо JOIN.
Темы подзапросов подробно обсуждаются в следующих двух главах, особенно в главе 22.
Привилегии
Чтение из таблиц и запись в таблицы являются привилегиями базы данных, управляемыми объявлениями, выполненными с помощью операторов GRANT и REVOKE (см. главу 35).
Оператор SELECT
Оператор SELECT является для клиентов фундаментальным методом поиска наборов данных в базе данных. Он имеет следующую основную форму:
SELECT
[FIRST (m)] [SKIP (n)] [[ALL] | DISTINCT]
<���список-столбцов> [, [имя-столбца] | выражение | константа ]
AS имя-алиаса]
FROM <���таблица-или-процедура-или-просмотр>
[{[[INNER] | [{LEFT | RIGHT | FULL} [OUTER]] JOIN}]
<���таблица-или-процедура-или-просмотр>
ON <���условия-соединения> [{JOIN...}]
[WHERE <���условия-поиска>]
[GROUP BY <���список-группируемых-столбцов>]
[HAVING <���предикат-группирования>]
[UNION <���выражение-выбора> [ALL]]
[PLAN <���выражение-плана>]
[ORDER BY <���список-столбцов>]
[FOR UPDATE [OF столбец1 [, столбец2...]] [WITH LOCK]]
Предложения в операторе SELECT
В следующих подразделах мы предварительно рассмотрим каждое доступное в операторе SELECT предложение. Большинство предложений является необязательным, при этом важно их использование в правильном порядке.
За ключевым словом SELECT может следовать режим выборки для управления включением строк в выходной набор, когда они соответствуют всем другим условиям.
Это значение по умолчанию режима выборки для выходного списка и обычно опускается. Оно возвращает все строки, соответствующие условиям в спецификации.
Этот режим выборки подавляет вывод всех дубликатов строк в выходной набор. Например, таблица EMPLOYEE_PROJECT хранит пересекающиеся записи для каждой комбинации служащего (EMP_NO) и проекта (PROJ_ID), поддерживая отношение многие-ко- многим. Конкатенация EMP NO + PROJ_ID образует первичный ключ. Оператор
SELECT DISTINCT EMP_NO, PROJ_ID FROM EMPLOYEE_PROJECT;
вернет 28 строк - т. е. все строки, это является тем же самым, что и SELECT [ALL], потому что каждое появление (EMP_NO + PROJ_ID) является по своей природе уникальным, отличным от других.
Операторы
SELECT DISTINCT EMP_NO FROM EMPLOYEE_PROJECT;
и
SELECT DISTINCT PROJ_ID FROM EMPLOYEE_PROJECT;
вернут, соответственно, 22 и 5 строк.
Вычисление отличий применяется ко всем выходным столбцам, что делает оператор DISTINCT полезным в некоторых запросах, которые используют соединения для получения ненормализованного набора. Тщательно тестируйте этот режим для проверки, что он создает тот результат, который вы ожидаете [68] Поскольку выходной набор DISTINCT предполагает существование дубликатов, чтобы обеспечить уникальность потока поиска для индивидуального изменения, нельзя полагаться на его поля. Некоторые средства разработки явно трактуют выходные наборы, полученные от запросов DISTINCT как неизменяемые.
.
Необязательные ключевые слова FIRST(m) и/или SKIP(n), если присутствуют, предшествуют всем другим спецификациям. Они задают режим выбора первых m строк в упорядоченном наборе и игнорирования первых n строк в упорядоченном наборе, соответственно. Не имеет смысла использовать эту конструкцию в неупорядоченном наборе [69] В InterBase 6.5 и выше вместо FIRST используется ключевое слово ROWS, следующее за ORDER BY. Этот же синтаксис может быть использован и в Firebird 2.0. Подробнее о синтаксисе ROWS см. В документации по InterBase 7.x - Прим. науч. ред.
. Очевидно, нужно предложение ORDER BY для использования условия упорядочения, которое сделает осмысленным выбор кандидатов строк.
Эти два ключевых слова могут быть использованы вместе или индивидуально. Аргументы m и n должны быть целыми или выражениями, дающими целые числа. Круглые скобки вокруг значений тип требуются для выражений и не обязательны для простых целых аргументов.
Поскольку FIRST и SKIP выполняются над набором, полученным на основании остальной части спецификации, не следует ожидать, что они сделают выполнение запроса более быстрым. Преимущества в производительности получаются от сокращения сетевого трафика [70] FIRST и SKIP всего лишь ограничивают количество записей, выдаваемых клиенту. Запрос вне зависимости от наличия или отсутствия FIRST и SKIP всегда будет выполнен целиком. - Прим. науч. ред.
.
Следующий пример вернет пять строк, начиная со строки 101 упорядоченного набора:
SELECT FIRST 5 SKIP 100 MEMBER_ID, MEMBERSHIP_TYPE, JOIN_DATE
FROM MEMBERS
ORDER BY JOIN DATE;
! ! !
СОВЕТ. Для получения n строк с самыми большими значениями столбцов в соответствии с условиями упорядочения установите порядок сортировки DESC[ENDING].
Читать дальшеИнтервал:
Закладка: