Иллюстрированный самоучитель по PostgreSQL

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) означает, что в итоговом наборе игнорируется указанное количество начальных записей.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.