SELECT
Перечисленные ниже ключевые слова и параметры могут присутствовать в каждом определении источника.
- [ 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.
Примеры
Следующая команда возвращает все записи из таблицы books:
booktown=# SELECT * FROM books; id 1 title | authorjd | subjectjd 7808 | The Shining 4156 9 4513 Dune 1866 | 15 4267 | 2001: A Space Odyssey 2001 15 1608 The Cat in the Hat 1809 2 1590 Bartholomew and the Oobleck 1809 2 25908 Franklin in the Dark 15990 | 2 1501 Goodnight Moon 2031 | 2 190 Little Women 16 6 1234 The Velveteen Rabbit 25041 3 2038 Dynamic Anatomy 1644 | 0 156 The Tell-Tale Heart 115 9 41472 Practical PostgreSQL 1212 4 41473 | Programming Python 7805 | 4 41477 Learning Python 7805 j 4 41478 | Perl Cookbook 7806 | 4 (15 rows)
В другом примере выборка ограничивается записями с кодом, большим 5000:
booktown=# SELECT * FROM books WHERE id > 5000; id title | authorjd | subjectjd 7808 | The Shining | 4156 | 9 25908 Franklin in the Dark 15990 2 41472 Practical PostgreSQL | 1212 4 41473 I Programming Python 7805 | 4 41477 I Learning Python 7805 | 4 41478 | Perl Cookbook 7806 | 4 (6 rows)