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

Чтение из таблиц и запись в таблицы являются привилегиями базы данных, управляемыми объявлениями, выполненными с помощью операторов 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 может следовать режим выборки для управления включением строк в выходной набор, когда они соответствуют всем другим условиям.


ALL

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


DISTINCT

Этот режим выборки подавляет вывод всех дубликатов строк в выходной набор. Например, таблица 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].


FIRST(m) SKIP(n)

Необязательные ключевые слова FIRST(m) и/или SKIP(n), если присутствуют, предшествуют всем другим спецификациям. Они задают режим выбора первых m строк в упорядоченном наборе и игнорирования первых n строк в упорядоченном наборе, соответственно. Не имеет смысла использовать эту конструкцию в неупорядоченном наборе[69]. Очевидно, нужно предложение ORDER BY для использования условия упорядочения, которое сделает осмысленным выбор кандидатов строк.

Эти два ключевых слова могут быть использованы вместе или индивидуально. Аргументы m и n должны быть целыми или выражениями, дающими целые числа. Круглые скобки вокруг значений тип требуются для выражений и не обязательны для простых целых аргументов.

Поскольку FIRST и SKIP выполняются над набором, полученным на основании остальной части спецификации, не следует ожидать, что они сделают выполнение запроса более быстрым. Преимущества в производительности получаются от сокращения сетевого трафика[70].

Следующий пример вернет пять строк, начиная со строки 101 упорядоченного набора:


SELECT FIRST 5 SKIP 100 MEMBER_ID, MEMBERSHIP_TYPE, JOIN_DATE

FROM MEMBERS

ORDER BY JOIN DATE;


! ! !

СОВЕТ. Для получения n строк с самыми большими значениями столбцов в соответствии с условиями упорядочения установите порядок сортировки DESC[ENDING].

. ! .


SELECT <список-столбцов>

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

* идентификатор столбца, который хранится в таблице, задан в просмотре или объявлен как выходной аргумент хранимой процедуры. При некоторых условиях идентификатор столбца должен содержать уточнение в виде имени или алиаса содержащей его таблицы;

* простое или сложное выражение, сопровождаемое идентификатором времени выполнения;

* константное значение, сопровождаемое идентификатором времени выполнения;

* контекстная переменная сервера, сопровождаемая идентификатором времени выполнения;

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

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

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

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

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

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

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

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

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