Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

SELECT

Описание

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

  • Возвращают одиночную стоку или часть строки из таблицы. Это операция упоминается, как sigleton выбор.
  • Непосредственно возвращают список строк или список частичных строк из таблицы.
  • Возвращают связанные строки, или частичные строки из 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 Определяет порядок сопоставления для данных возвращаемых запросом.
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 

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

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);

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

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог