Шифрование и секретность в Linux


SELECT



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) означает, что в итоговом наборе игнорируется указанное количество начальных записей.

Перечисленные ниже ключевые слова и параметры могут присутствовать в каждом определении источника.

  • [ ONLY ] таблица [ * ], Имя существующей таблицы или представления, из которого производится выборка. При отсутствии ключевого слова ONLY поиск также производится во всех производных таблицах. С этой же целью можно добавить после имени таблицы символ *.
  • подзапрос. Команда SELECT, выполняемая в секции FROM другой команды SELECT. В результате выполнения подзапроса создается временная таблица, записи которой обрабатываются во время выполнения команды. Код подзапросов заключается в круглые скобки.
  • [ AS ] псевдоним_источника. Альтернативное имя для источника данных, упоминаемого в секции FROM.
  • список_псевдонимов. Разделенный запятыми список псевдонимов для полей предшествующего источника. Количество псевдонимов в списке может быть меньше количества нолей в источнике, к которому относится список.
  • тип_объедипения. Тип объединения, задается одним из следующих значений: о [ INNER ] JOIN;
  • LEFT [ OUTER ] JOIN;
  • RIGHT [ OUTER ] JOIN;
  • FULL [ OUTER ] JOIN.
  • NATURAL. Необязательное ключевое слово NATURAL означает, что объединение двух источников производится по всем одноименным полям. Наличие ключевого слова NATURAL исключает необходимость объединения по явно заданным условиям.
  • условие_объедипения. После ключевого слова ON указывается условие объединения. Синтаксис аналогичен синтаксису секции WHERE.
  • список_полей_объединения. Список полей, приведенный в секции USING, представляет собой сокращенную запись для секции ON. Предполагается, что объединение производится по совпадающим значениям одноименных полей двух объединяемых источников.
  • Результаты

    Основным результатом команды SELECT является список записей итогового набора, за которым следует количество записей в выборке. Также возможны сообщения об ошибках.

    • ERROR: Relation 'источник' does not exist. Ошибка — указанная таблица или представление отсутствует в текущей базе данных.
    • ERROR: Table name "источник" specified more than once. Ошибка — таблица или представление встречается в списке дважды без определения псевдонима. Ошибка исправляется определением псевдонима в секции AS для одного из источников.
    • ERROR: Attribute 'поле' not found. Ошибка — поле не найдено ни в одном из перечисленных источников.

    Описание

    Команда SELECT предназначена для выборки данных из таблицы, представления, подзапроса или набора, полученного в результате объединения. Секция WHERE определяет критерий отбора записей; если запись не удовлетворяет критерию, она не включается в набор. При отсутствии секции WHERE в выборку включаются все записи источника данных.

    В команде SELECT могут включаться различные секции, полный список которых с краткими описаниями приведен выше в пункте «Параметры». Дополнительные примеры их использования имеются в главе 4.



    Содержание раздела