SELECT
Select в InterBase
SELECT возвращает данные из таблицы, вида или сохраненной процедуры. Различные инструкции SELECT выполняют следующие действия:
- Возвращают одиночную стоку или часть строки из таблицы.
- Непосредственно возвращают список строк или список частичных строк из таблицы.
- Возвращают связанные строки, или частичные строки из join двух или более таблиц.
- Возвращают все строки, или частичные строки из union двух или более таблиц.
Любая инструкция SELECT содержит два обязательных предложения (SELECT, FROM) и возможно другие предложения (WHERE, GROUP BY, HAVING, UNION, PLAN, ORDER BY). Предложения SELECT и FROM обязательны и для sigleton, и для multi-row SELECT; все другие предложения перечисленные ниже факультативны. Следующая таблица объясняет назначение каждого предложения:
Предложение | Назначение |
SELECT | Список столбцов, которые возвращаются. |
FROM | Определяет таблицы, в которых ищутся значения. |
WHERE | Определенное условие поиска, которое используется, чтобы выбрать необходимые стоки из множества всех строк. Предложение WHERE может содержать инструкцию SELECT, которая упоминается, как подзапрос |
GROUP BY | Группирует возвращенные строки, основываясь на общих значениях столбцов. Используется совместно с HAVING. |
HAVING | Restricts rows generated by GROUP BY to a subset of those rows. |
UNION | Комбинирует результаты двух или более инструкций SELECT, создавая одиночную динамическую таблицу, исключая повторяющиеся строки. |
ORDER BY | Определяет порядок сортировки строк возвращенных SELECT, по умолчанию в возрастающем порядке (ASC), или в убывающем порядке (DESC). |
PLAN | Определяет план запроса, который будет использоваться оптимизатором запроса вместо обычного выбора. |
SELECT [DISTINCT | ALL] {* | <val> [, <val>...]}
FROM <tableref> [, <tableref>...]
[WHERE <search_condition>]
[GROUP BY col [COLLATE collation] [, col [COLLATE collation]...]
[HAVING <search_condition>]
[UNION <select_expr>]
[PLAN <plan_expr>]
[ORDER BY <order_list>]
<val> = {col [<array_dim>] | <constant> | <expr> | <function> | NULL | USER | RDB$DB_KEY}
<array_dim> = [ x:y [, x:y...] ]
Обратите внимание: Внешние скобки (выделены жирным) должны быть присутствовать при ссылке на массив.
<constant> = num | "string" | charsetname "string"
<expr> = Допустимое выражение SQL, результат которого одиночное значение.
<function> = {
COUNT (* | [ALL] <val> | DISTINCT <val>)
| SUM ([ALL] <val> | DISTINCT <val>)
| AVG ([ALL] <val> | DISTINCT <val>)
| MAX ([ALL] <val> | DISTINCT <val>)
| MIN ([ALL] <val> | DISTINCT <val>)
| CAST (<val> AS <datatype>)
| UPPER (<val>)
| GEN_ID (generator, <val>)
}
<tableref> = <joined_table> | table | view | procedure[(<val> [, <val>...])] [alias]
<joined_table> = <tableref> <join_type> JOIN <tableref>ON <search_condition> | (<joined_table>)
<join-type> = {[INNER] | {LEFT | RIGHT | FULL } [OUTER]} JOIN
<search_condition> = {<val> <operator>
{<val> | (<select_one>)}
| <val> [NOT] BETWEEN <val> AND <val>
| <val> [NOT] LIKE <val> [ESCAPE <val>]
| <val> [NOT] IN (<val> [, <val>...] | <select_list>)
| <val> IS [NOT] NULL
| <val> {[NOT] {= | < | >} | >= | <=}
{ALL | SOME | ANY} (<select_list>)
| EXISTS (<select_expr>)
| SINGULAR (<select_expr>)
| <val> [NOT] CONTAINING <val>
| <val> [NOT] STARTING [WITH] <val>
| (<search_condition>)
| NOT <search_condition>
| <search_condition> OR <search_condition>
| <search_condition> AND <search_condition>}
<operator> = {= | < | > | <= | >= |!< |!> | <> |!=}
<select_one> = SELECT on a single column that returns exactly one row.
<select_list> = SELECT on a single column that returns zero or more rows.
<select_expr> = SELECT on a list of values that returns zero or more rows.
<plan_expr> =
[JOIN | [SORT] MERGE] (<plan_item> | <plan_expr> [, <plan_item> | <plan_expr>...])
<plan_item> = {table | alias} NATURAL | INDEX (<index> [, <index>...]) | ORDER <index>
<order_list> ={col | int} [COLLATE collation] [ASC[ENDING] | DESC[ENDING]] [, <order_list>]
Аргумент | Описание |
SELECT [DISTINCT | ALL] | Определяет данные, для поиска. DISTINCT удаляет повторяющиеся значения из возвращенных данных. ALL, параметр по умолчанию, возвращает все данные. |
{* | <val> [, <val>...]} | * - возвращает все столбцы из определенной таблицы. <val> [, <val>...] - возвращает определенный список столбцов и значений. |
FROM <tableref> [, <tableref>...] | Список таблиц, видов и сохраненных процедур, из которых возвращаются данные. Список может включать JOIN, объединения могут быть вложенными. |
table | Имя существующей таблицы в базе данных. |
view | имя существующего вида в базе данных. |
procedure | Имя существующей сохраненной процедуры, которая функционирует, как инструкция SELECT. |
alias | Псевдоним - краткое, альтернативное имя для таблицы или вида. After declaration in tabdef, alias can stand in for subsequent references to a table or view. |
<joined_table> | Ссылка таблицы состоящая из JOIN. |
<join_type> | Тип выполнения объединения. По умолчанию INNER. |
WHERE <search_cond> | Определяет условия, которые ограничивают подмножество возвращаемых строк из всех доступных строк. |
GROUP BY <col>[, <col>...] | Разделяет результаты запроса в группы содержащие все строки с одинаковыми значениями, основанными на списке столбцов. |
COLLATE collation | Определяет порядок сопоставления для данных возвращаемых запросом. |
HAVING <search_cond> | Используется совместно с GROUP BY. Определяет условия, которые ограничивают группировку возвращаемых строк. |
UNION | Комбинирует две или более таблиц, которые имеют полностью, либо частично одинаковую структуру. |
PLAN <plan_expr> | Определяет план доступа для оптимизатора InterBase, который используется в течении поиска. |
<plan_item> | определяет таблицу и индексный метод для плана. |
ORDER BY <order_list> | Определяет порядок в котором строки возвращены. |