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

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


Выходные наборы

Общее использование оператора запроса, начинающегося с ключевого слова 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.

Кардинальное число и положение

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

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


Входные наборы

Как часть 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".

Выходные наборы в качестве входных наборов


Сгруппированные или агрегатные запросы

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

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

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

Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript
Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript

Данная книга посвящена программированию игр с помощью ActionScript. Здесь вы найдете подробные указания, необходимые для создания самых разных игр – аркад, головоломок, загадок и даже игровых автоматов. В тексте приведены исходные коды программ и детальные, доступно изложенные инструкции. Базовые принципы программирования ActionScript рассматриваются на примере игр, однако вы без труда сможете применить полученные знания и для разработки неигровых проектов, таких как Web-дизайн и реклама. Рекомендации Гэри Розенцвейга помогут вам не только придумывать занимательные игры и размещать их на Web-сайте, но и оптимизировать скорость их работы, а также защищать свои творения от несанкционированного копирования. Представленный в книге код несложно изменить для использования в других программах.Книга предназначена для широкого круга читателей – создателей анимационных роликов, художников-оформителей, программистов и разработчиков Web-сайтов. Издание может также выступать в качестве практического пособия по изучению ActionScript.

Гэри Розенцвейг

Программирование, программы, базы данных / Программирование / Книги по IT
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ
Эффективное использование C++. 55 верных способов улучшить структуру и код ваших программ

Эта книга представляет собой перевод третьего издания американского бестселлера Effective C++ и является руководством по грамотному использованию языка C++. Она поможет сделать ваши программы более понятными, простыми в сопровождении и эффективными. Помимо материала, описывающего общую стратегию проектирования, книга включает в себя главы по программированию с применением шаблонов и по управлению ресурсами, а также множество советов, которые позволят усовершенствовать ваши программы и сделать работу более интересной и творческой. Книга также включает новый материал по принципам обработки исключений, паттернам проектирования и библиотечным средствам.Издание ориентировано на программистов, знакомых с основами C++ и имеющих навыки его практического применения.

Скотт Майерс , Скотт Мейерс

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