SELECT
Выборка записей из таблицы или представления.
Синтаксис:
SELECT [ ALL | DISTINCT [ ON (уникальное_выражение [….]) ] ] цель [ AS выходное_имя ] [….] [ FROM источник [ {. | CROSS JOIN }…] ] [ WHERE условие_фильтрации ] [ GROUP BY условие_группировки […. ] ] [ HAVING агрегатное_условие [….] ] [ { UNION | INTERSECT | EXCEPT } [ ALL ] подзапрос ] [ ORDER BY выражение [ ASC DESC | USING оператор ] [….] ] [ FOR UPDATE [ OF таблица […. 3 3 3 [ LIMIT { число | ALL } [ { OFFSET, } начало ] 3 источник:: = { [ ONLY ] таблица [ * 3 [ [ AS ] псевдоним источника [ (список_псевдонимов) ] ] | (подзапрос) [ [ AS ] псевдоним [ (список_псевдонимов) ] ] | источник [ NATURAL 3 тип_обьединения источник [ ON (условие_обьединения) | USING (список_полей_объединения) ] } тип_объединения – . -.= [ INNER | LEFT [ OUTER ] RIGHT [ OUTER ] FULL [ OUTER ] ] JOIN
Параметры:
- ALL | DISTINCT. Ключевое слово DISTINCT означает, что при наличии дубликатов в нескольких записях в выборку включается только одна (первая) запись. Ключевое слово ALL означает, что в выборку включаются все записи независимо от наличия дубликатов (используется по умолчанию). Обратите внимание: секция ORDER BY сортирует записи перед удалением дубликатов. Совместное использование этих секций позволяет убедиться в том, что в выборку включена именно та запись, которая вас интересует.
- DISTINCT ON. Ключевое слово ON, следующее за ключевым словом DISTINCT, позволяет задать одно или несколько выражений, уникальность которых проверяется командой.
- уникальное_выражение. Имя поля источника или синтаксически правильное выражение, уникальность значения которого проверяется секцией DISTINCT ON при удалении дубликатов.
- цель. Имя поля источника или синтаксически правильное выражение.
- выходное_имя. После ключевого слова AS указывается альтернативное имя выходного поля. В дальнейшем это имя используется при выводе данных, а также для ссылок в секциях ORDER BY и GROUP BY в той же команде SELECT. Помните, что это имя не действует в секциях WHERE и HAVING; в них должны использоваться настоящие имена.
- FROM источник. Таблица, подзапрос или объединенный набор, из которого берутся данные.
- {. | CROSS JOIN }. Перечисляемые источники разделяются запятыми или секциями CROSS JOIN.
- WHERE. Секция WHERE содержит условия фильтрации итогового набора.
- условие. Логическое выражение, применяемое к негруппированным целевым выражениям.
- GROUP BY. Секция GROUP BY содержит условия группировки записей.
- условие группировки. Имя поля источника или синтаксически правильное выражение, используемое для группировки записей.
- HAVING. Секция HAVING содержит условия фильтрации итогового набора.
- агрегатное условие. Логическое выражение, применяемое к группированным целевым выражениям.
- UNION. Слияние двух итоговых наборов, имеющих совместимую структуру, в один объединенный итоговый набор.
- INTERSECT. Из итогового набора исключаются все записи, не входящие в итоговый набор следующего подзапроса (то есть результат представляет собой пересечение двух множеств записей).
- EXCEPT. Из итогового набора исключаются все записи, входящие в итоговый набор следующего подзапроса (то есть результат представляет собой разность двух множеств записей).
- подзапрос. Полная команда SELECT. Чтобы в подзапрос могли входить секции ORDER BY, FOR UPDATE и LIMIT, он должен быть заключен в круглые скобки.
- ORDER BY. Сортировка итогового набора по заданным критериям.
- выражение [ ASC | DESC | USING оператор']. Имя поля итогового набора, по которому секция ORDER BY сортирует результаты. Ключевое слово ASC указывает на то, что сортировка выполняется по возрастанию (этот режим используется по умолчанию), а с ключевым словом DESC результат сортируется по убыванию. В секции USING указывается оператор (например, >), используемый для последующих сравнений.
- FOR UPDATE. Установка блокировки ROW SHARE MODE (см. описание команды LOCK) для таблицы-источника в текущей транзакции.
- OF таблица. Таблица, для которой устанавливается блокировка ROW SHARE MODE, если секция FROM содержит несколько таблиц.
- LIMIT. Вывод части полученного итогового набора.
- ALL | число. С ключевым словом ALL итоговый набор не ограничивается (режим используется по умолчанию). Если задан параметр число, итоговый набор ограничивается заданным количеством записей.
- { OFFSET |. } начало. Ключевое слово OFFSET (может заменяться запятой после ключевого слова LIMIT) означает, что в итоговом наборе игнорируется указанное количество начальных записей.