Spec-Zone .ru
спецификации, руководства, описания, API

13.2.9. SELECT Синтаксис

13.2.9.1. SELECT ... INTOСинтаксис
13.2.9.2. JOIN Синтаксис
13.2.9.3. Индексируйте Синтаксис Подсказки
13.2.9.4. UNION Синтаксис
SELECT    [ALL | DISTINCT | DISTINCTROW ]      [HIGH_PRIORITY]      [STRAIGHT_JOIN]      [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]      [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]    select_expr [, select_expr ...]    [FROM table_references      [PARTITION partition_list]    [WHERE where_condition]    [GROUP BY {col_name | expr | position}      [ASC | DESC], ... [WITH ROLLUP]]    [HAVING where_condition]    [ORDER BY {col_name | expr | position}      [ASC | DESC], ...]    [LIMIT {[offset,] row_count | row_count OFFSET offset}]    [PROCEDURE procedure_name(argument_list)]    [INTO OUTFILE 'file_name'        [CHARACTER SET charset_name]        export_options      | INTO DUMPFILE 'file_name'      | INTO var_name [, var_name]]    [FOR UPDATE | LOCK IN SHARE MODE]]

SELECT используется, чтобы получить строки, выбранные из одной или более таблиц, и может включать UNION операторы и подзапросы. См. Раздел 13.2.9.4,"UNION Синтаксис", и Раздел 13.2.10, "Синтаксис Подзапроса".

Обычно используемые пункты SELECT операторы - они:

SELECT может также использоваться, чтобы получить строки, вычисленные независимо от любой таблицы.

Например:

mysql> SELECT 1 +
        1;        -> 2

Вам разрешают определить DUAL как фиктивное имя таблицы в ситуациях, где ни на какие таблицы не ссылаются:

mysql> SELECT 1 + 1 FROM DUAL;        -> 2

DUAL просто для удобства людей, которые требуют что все SELECT операторы должны иметь FROM и возможно другие пункты. MySQL может проигнорировать пункты. MySQL не требует FROM DUAL если ни на какие таблицы не ссылаются.

Вообще, используемые пункты должны быть поданы точно порядок, показанный в описании синтаксиса. Например, a HAVING пункт должен прибыть после любого GROUP BY пункт и перед любым ORDER BY пункт. Исключение то, что INTO пункт может появиться или как показано в описании синтаксиса или сразу после select_expr список. Для получения дополнительной информации о INTO, см. Раздел 13.2.9.1,"SELECT ... INTO Синтаксис".

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

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

После SELECT ключевое слово, можно использовать много опций, которые влияют на работу оператора. HIGH_PRIORITY, STRAIGHT_JOIN, и начинающиеся опции SQL_ расширения MySQL стандартного SQL.

До MySQL 5.6.6, a SELECT из разделенной таблицы, используя механизм хранения такой как MyISAM это использует блокировки на уровне таблицы, заблокированные все разделы таблицы. Это было истиной даже для SELECT ... PARTITION запросы. (Это не сделало и не происходит с механизмами хранения такой как InnoDB та работа блокировка на уровне строки.) В MySQL 5.6.6 и позже, MySQL использует сокращение блокировки раздела, так, чтобы только разделы, содержащие строки, соответствующие SELECT оператор WHERE пункт фактически блокируется. Для получения дополнительной информации см. Раздел 18.6.4, "Деля и Блокируя".