Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ

Тут можно читать онлайн Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство БХВ-Петербург, год 2006. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ
  • Автор:
  • Жанр:
  • Издательство:
    БХВ-Петербург
  • Год:
    2006
  • Город:
    Санкт-Петербург
  • ISBN:
    5-94157-609-9
  • Рейтинг:
    4/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Хелен Борри - Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ краткое содержание

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - описание и краткое содержание, автор Хелен Борри, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Рассмотрены вопросы, необходимые разработчику для создания клиент-серверных приложений с использованием СУБД Firebird, явившейся развитием СУБД Borland Interbase 6. Содержится обзор концепций и моделей архитектуры клиент/сервер, а также практические рекомендации по работе с клиентскими библиотеками Firebird. Детально описаны особенности типов данных SQL, язык манипулирования данными (Data Manipulation Language, DML), а также синтаксис и операторы языка определения данных ( Data Definition Language, DDL). Большое внимание уделено описанию транзакций и приведены советы по их использованию при разработке приложений. Описано программирование на стороне клиента и сервера написание триггеров и хранимых процедур, создание и использование событий базы данных, обработка ошибок в коде на сервере и многое другое. Материал сопровождается многочисленными примерами, советами и практическими рекомендациями.

Для разработчиков баз данных

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - читать онлайн бесплатно полную версию (весь текст целиком)

Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ - читать книгу онлайн бесплатно, автор Хелен Борри
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Реентерабельные подзапросы

Запрос может использовать реентерабельный подзапрос для задания условия поиска в той же таблице. Использование алиасов таблиц является обязательным. В следующем примере оператор выполняет подзапрос для поиска в главной таблице даты самой последней транзакции для задания условия поиска главного запроса.

SELECT

AL.COL1,

A1.COL2,

A1. TRANSACTION_DATE

FROM ATABLE A1

WHERE AL.TRANSACTION_DATE = (SELECT MAX(A2.TRANSACTION_DATE) FROM ATABLE A2);

Добавление данных с использованием подзапроса с соединениями

В главе 20 мы рассматривали встроенный метод выборки для передачи данных в оператор INSERT, например,

INSERT INTO ATABLE (

COLUMN2, COLUMN3, COLUMN4)

SELECT BCOLUMN, CCOLUMN, DCOLUMN

FROM BTABLE WHERE

Этот метод не ограничен однопоточным запросом. Ваш входной подзапрос может быть соединенным. Эта возможность очень полезна, когда вам нужно экспортировать ненормализованные данные во внешнюю таблицу для использования в другом приложении, таком как электронная таблица, программа работы с базой данных или программа бухгалтерского учета. Например:

INSERT INTO EXTABLE (

TRANDATE, INVOICE_NUMBER, EXT_CUST_CODE, VALUE)

SELECT

INV. TRANSACTION_DATE,

INV. INVOICE_NUMBER,

CUS.EXT_CUS_CODE,

SUM (INVD. PRICE * INVD.NO_ITEMS)

FROM INVOICE INV

JOIN CUSTOMER CUS

ON INV.CUST_ID = CUS.CUST_ID

JOIN INVOICE_DETAIL INVD

ON INVD.INVOICE_ID = INV.INVOICE_ID

WHERE ...

GROUP BY . . .;

Оператор UNION

Оператор UNION может быть использован для объединения результатов двух или более операторов SELECT и создания единого набора только для чтения, состоящего из строк, полученных из разных таблиц или из разных наборов, запрошенных из той же таблицы. Множество запросов объединяются, каждое подмножество спецификаций связывается со следующим с помощью ключевого слова UNION. Данные должны быть выбраны так, а запрос сконструирован таким образом, чтобы все участвующие входные наборы были совместимы для объединения.

Наборы, совместимые для объединения

Для каждой операции SELECT, создающей входной поток для UNION, спецификация должна содержать список столбцов, одинаковый для всех других операций (количество и порядок столбцов) с соответствующими типами данных. Предположим, мы имеем следующие спецификации двух таблиц:

CREATE TABLE CURRENT_TITLES (

ID INTEGER NOT NULL,

TITLE VARCHAR(60) NOT NULL,

AUTHOR_LAST_NAME VARCHAR (40),

AUTHOR_FIRST_NAMES VARCHAR(60),

EDITION VARCHAR(10) ,

PUBLICATION_DATE DATE,

PUBLISHER_ID INTEGER,

ISBN VARCHAR(15) ,

LIST_PRICE DECIMAL(9,2));

/**/

CREATE TABLE PERIODICALS (

PID INTEGER NOT NULL,

PTITLE VARCHAR(60) NOT NULL,

EDITOR_LAST_NAME VARCHAR(40),

EDITOR_FIRST_NAMES VARCHAR (60),

ISSUE_NUMBER VARCHAR (10),

PUBLICATION_DATE DATE,

PUBLISHER_ID INTEGER,

LIST_PRICE DECIMAL (9, 2) ) ;

Эти таблицы совместимы для объединения, потому что мы можем создать запрос для получения наборов с соответствующей "геометрией":

SELECT ID,

TITLE,

AUTHOR_LAST_NAME,

AUTHOR_FIRST_NAMES,

EDITION VARCHAR (10),

LIST_PRICE

FROM CURRENT_TITLES

UNION SELECT

ID,

TITLE,

EDITOR_LAST_NAME,

EDITOR_FIRST_NAMES,

ISSUE_NUMBER,

LIST_PRICE

FROM PERIODICALS;

UNION, содержащий SELECT * FROM таблица, не будет работать, поскольку структуры таблиц различны - вторая таблица не содержит колонки ISBN.

Использование столбцов времени выполнения в объединениях

Идентификаторы столбцов выходного набора данных задаются в первой спецификации SELECT. Если вы хотите использовать альтернативные имена столбцов, алиасы столбцов могут быть использованы в выходном списке первой спецификации SELECT. Дополнительно, если необходимо, поля, полученные из констант или переменных, могут быть включены в предложение SELECT каждого объединяемого потока. Следующий запрос содержит наиболее удобный список публикаций из наших двух таблиц:

SELECT

ID,

TITLE as PUBLICATION,

'BOOK ' AS PUBLICATION_TYPE,

CAST (AUTHOR_LAST_NAME || ' ' || AUTHOR_FIRST_NAMES AS VARCHAR (50) )

AS AUTHOR_EDITOR,

EDITION AS EDITION_OR_ISSUE,

PUBLICATION_DATE DATE,

PUBLISHER_ID,

CAST(ISBN AS VARCHAR(14)) AS ISBN,

LIST_PRICE

FROM CURRENT_TITLES

WHERE ...

UNION SELECT

ID,

TITLE,

'PERIODICAL',

EDITOR_LAST_NAME || ' , ' || EDITOR_FIRST_NAMES AS AUTHOR_EDITOR,

CAST (AUTHOR_LAST_NAME || ', ' || AUTHOR_FIRST_NAMES AS VARCHAR(50)),

ISSUE_NUMBER,

PUBLICATION_DATE,

PUBLISHER_ID, 'Not applicable',

LIST_PRICE

FROM PERIODICALS

WHERE ...

ORDER BY 2;

Условия поиска и упорядочивания

Обратите внимание в предыдущем примере, что условия поиска возможны в каждой объединяемой спецификации SELECT. Они являются обычными выражениями поиска, которые должны соответствовать объединяемому набору, управляемому текущим выражением SELECT. Не существует способа коррелировать условия поиска в пределах поднаборов.

Допустимо только одно предложение упорядочения, оно должно следовать после всех поднаборов. Синтаксис ORDER BY номер (т. е. упорядочение по номеру столбца) требуется для упорядочения объединяемых наборов.

Реентерабельные запросы UNION

Возможно обращение к реентерабельной технике для создания объединяющего запроса, который извлекает несколько поднаборов из одной таблицы. Алиасы таблиц требуются в предложениях FROM, но ссылки на колонки не обязательно должны быть полностью специфицированы. Возвращаясь к нашей таблице CURRENT_TITLES, предположим, что мы хотим получить список заголовков книг в зависимости от цены. Реентерабельный запрос должен выглядеть приблизительно следующим образом:

SELECT

ID,

TITLE,

CAST ('UNDER $20' AS VARCHAR(IO)) AS RANGE,

CAST (AUTHOR_LAST_NAME || ', ' || AUTHOR_FIRST_NAMES AS VARCHAR (50) )

AS AUTHOR,

EDITION,

LIST_PRICE

FROM CURRENT_TITLES CT1

WHERE LIST_PRICE < 20.00

UNION SELECT

ID,

TITLE,

CAST ('UNDER $40' AS VARCHAR(IO),

CAST (AUTHOR_LAST_NAME || ', ' || AUTHOR_FIRST_NAMES AS VARCHAR(50) ) ,

EDITION,

LIST_PRICE

FROM CURRENT_IITLES CT2

WHERE LIST_PRICE >= 20.00 AND LIST_PRICE < 40.00

UNION SELECT

ID,

TITLE,

CAST ('$40 PLUS' AS VARCHAR(IO) ) ,

CAST (AUTHOR_LAST_NAME || ', ' || AUTHOR_FIRST_NAMES AS VARCHAR(50) ) ,

EDITION,

LIST_PRICE

FROM CURRENT_TITLES CT3

WHERE LIST PRICE >= 40.00;

UNION ALL

Если в процессе создания объединенного набора были сформированы дублированные строки, то поведение по умолчанию - исключение из набора дублированных строк. Для включения дубликатов используйте UNION ALL вместо UNION.

Темы оптимизации: планы запросов и оптимизатор

В этом разделе рассматривается подсистема оптимизатора Firebird и те стратегии, применяемые им для создания планов запроса, которые будут использованы сервером для операторов SELECT и подзапросов во время выполнения. Мы вкратце рассмотрим синтаксис плана запроса, а также некоторые способы передачи ваших собственных планов серверу.

Планы и оптимизатор запросов Firebird

Для выполнения оператора SELECT или условия поиска сервер Firebird преобразует оператор в набор внутренних алгоритмов, называемых оптимизированным запросом. Каждый раз, когда оператор подготавливается для выполнения, оптимизатор вычисляет план поиска.

План

План запроса создает некий вид дорожной карты, которая сообщает серверу наименее дорогостоящую дорогу для требуемого процесса поиска, сортировки и поиска соответствия запрашиваемому результату. Чем более эффективный план сконструирует оптимизатор, тем быстрее оператор начнет возвращать результаты.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Хелен Борри читать все книги автора по порядку

Хелен Борри - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ отзывы


Отзывы читателей о книге Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ, автор: Хелен Борри. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x