Читаем Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ полностью

Таблица является набором, чья полная спецификация может быть получена из системных таблиц сервером базы данных, когда к таблице происходит обращение из запроса, полученного от клиента. Сервер Firebird выполняет свои собственные внутренние запросы к системным таблицам для получения метаданных, необходимых для выполнения клиентских запросов.

<p>Выходные наборы</p>

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

! ! !

ПРИМЕЧАНИЕ. Выражение "неупорядоченные строки" означает следующее. Строки таблицы хранятся без каких-либо атрибутов, и порядок неупорядоченных наборов может непредсказуемо меняться от одного запроса к другому.

. ! .

Например, следующий запрос создаст выходной набор из трех столбцов из таблицы TABLEA, содержащий каждую строку, которая соответствует условиям, указанным в предложении WHERE. Строки будут отсортированными, следовательно, строка с наименьшим значением в COL1 появится первой:

SELECT COL1, COL2, COL3 FROM TABLEA

WHERE COL3 = 'Mozart'

ORDER BY COL1;

Если не будет задано предложение WHERE, ТО набор будет содержать все строки из таблицы TABLEA, а не только те, в которых столбец COL3 будет иметь значение 'Mozart'.

Если нужны все столбцы из таблицы TABLEA, то вместо списка имен столбцов в операторе можно указать символ звездочки (*), например, оператор

SELECT * FROM TABLEA;

определяет выходной набор, состоящий из всех столбцов и всех строк таблицы TABLEA.

<p>Кардинальное число и положение</p>

Одним из терминов, который иногда можно встретить в отношении наборов, включая таблицы- является кардинальное число (cardinality, "мощность множества"). Оно описывает количество строк в наборе, который может быть таблицей или выходным набором. Реже можно встретить кардинальное число строки или кардинальное число значения ключа, что означает позицию строки в упорядоченном выходном наборе.

Термин, используемый для номера столбца в наборе, - положение (degree). Кроме того, вы можете встретить фразу типа положение столбца, означающую позицию столбца в порядке столбцов в наборе слева направо.

<p>Входные наборы</p>

Как часть SELECT ... FROM В запросе на поиск задает набор для вывода или для операции курсора, точно так же и другие операторы DML (INSERT, UPDATE и DELETE) задают входные наборы, идентифицируя данные, над которыми выполняется операция.

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

Следующий пример определяет входной набор, состоящий из трех столбцов таблицы TABLEB. Константы в предложении VALUES о будут проверяться на присутствие трех значений и на наличие у них корректных типов данных:

INSERT INTO TABLEB(COLA, COLB, COLC)

VALUES(99, 'Christmas 2004', '2004-12-25');

Оператор INSERT имеет альтернативный синтаксис, в котором предложение VALUES о заменяется на выборку набора из одной или более других таблиц, реальных или виртуальных. Операторы INSERT подробно обсуждаются в разд. "Оператор INSERT".

Оператор UPDATE определяет свой входной набор, задавая одну таблицу и список из одного или более столбцов вместе с их значениями в предложении SET. Он идентифицирует строки, принимающие участие в операции, в предложении WHERE:

UPDATE TABLEB

SET COLB ='Labor Thanksgiving Day (Japan)',

COLC = '2002-23-11'

WHERE . . .

Операторы UPDATE подробно обсуждаются в разд. "Оператор UPDATE".

Запрос DELETE не может задавать столбцы в своем входном наборе - этот набор всегда определяется неявно * (все столбцы). Он идентифицирует строки, принимающие участие в операции, в предложении WHERE. Например, следующий запрос удалит все строки, где COLC (типа данных DATE) является датой, раньше 13 декабря 1999 г.:

DELETE FROM TABLEB

WHERE COLC < '1999-12-13';

Операторы DELETE подробно обсуждаются в разд. "Оператор DELETE".

<p>Выходные наборы в качестве входных наборов</p>Сгруппированные или агрегатные запросы

SQL имеет важную возможность использовать входной набор, сформированный из выходного набора, сгенерированного в том же самом запросе SELECT - предложение GROUP BY. Вместо того чтобы выходной набор из списка столбцов передавать клиенту, этот список передается на следующую стадию обработки запроса, где предложение GROUP BY приводит к объединению данных в одну или более вложенных групп. Обычно в каждой части подводится некоторый итог с помощью выражений, которые группируют (агрегируют) числовые значения на одном или более уровнях.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных