Оглавление  | Назад  | Вперед

Справочник по инструкциям и функциям InterBase SQL

SELECT

Описание
Синтаксис
Примеры
Смотри так же

Описание

SELECT возвращает данные из таблицы, вида или сохраненной процедуры. Различныные инструкции SELECT выполняют слдующие действия:

Любая инструкция 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 Определяет порядок сопоставления для данных возвращаемых запросом.
HIVING <search_cond> Используется совместно с GRUP BY. Определяет условия, которые ограничивают группировку возвращаемых строк.
UNION Комбинирует две или более таблиц, которые имеют полностью, либо частично одинаковую структуру.
PLAN <plan_expr> Определяет план доступа для оптимизатора InterBase, который используется в течении поиска.
<plan_item> определяет таблицу и индексный метод для плана.
ORDER BY <order_list> Определяет порядок в котором строки возвращены.

К началу страницы...

Примеры

Следующая инструкция выбирает столбцы из таблицы:

SELECT JOB_GRADE, JOB_CODE, JOB_COUNTRY, MAX_SALARY FROM PROJECT;

Следующая инструкция использует шаблон *, что бы выбрать все столбцы и строки из таблицы:

SELECT * FROM COUNTRIES;

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

SELECT COUNT (*) FROM COUNTRY
  WHERE POPULATION > 5000000;

Следующая инструкция устанавливает псевдоним таблицы в предложении SELECT и использует его для идентификации столбцов в предложении WHERE:

SELECT C.CITY FROM CITIES C
  WHERE C.POPULATION < 1000000;

Следующая инструкция выбирает два столбца и сортирует возвращенные строки по второму столбцу:

SELECT CITY, STATE FROM CITIES
  ORDER BY STATE;

Следующая инструкция выполняет левое объединение:

SELECT CITY, STATE_NAME FROM CITIES C
  LEFT JOIN STATES S ON S.STATE = C.STATE
  WHERE C.CITY STARTING WITH "San";

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

SELECT * FROM CITIES ORDER BY CITY
  PLAN (CITIES ORDER CITIES_1);

Следующая инструкция определяет план оптимизации запроса основывающийся на тройном объединении с двумя индексированными равенствами столбцов:

SELECT * FROM CITIES C, STATES S, MAYORS M
  WHERE C.CITY = M.CITY AND C.STATE = M.STATE
    PLAN JOIN (STATE NATURAL, CITIES INDEX DUPE_CITY,
    MAYORS INDEX MAYORS_1);

К началу страницы...

Смотри так же:

К началу страницы...


Оглавление  | Назад  | Вперед