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);Смотри так же: