Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Новое на сайте
Топовые новости
Новое

PostgreSQL инструкция SELECT

Платформа PostgreSQL поддерживает простую реализацию инструкции SELECT. Поддерживаются предложения JOIN и подзапросы. В PostgreSQL также можно создавать новые временные или постоянные таблицы с использованием синтаксиса SELECT INTO.

[ALL ‘ DISTINCT [ON (отбираемый_элемент [, …])]]

Поддерживаются ключевые слова ALL и DISTINCT стандарта ANSI SQL, где ALL (задано по умолчанию) возвращает все строки (включая дублирующиеся), a DISTINCT удаляет дублирующиеся строки. Кроме того, предложение DISTINCT ON удаляет дубликаты только в одном из указанных отбираемых элементов, а не во всех отбираемых элементах запроса.

отбираемый_элемент

Включает все стандартные элементы списка отбираемых элементов, принятого стандартом ANSI SQL. Помимо обобщающего символа * (звездочка) вы можете использовать конструкцию имя_таблицы*, чтобы получить все строки из отдельной таблицы.

[AS псевдоним [(список псевдонимов)]

Создается псевдоним или список псевдопимов для одного или нескольких столбцов (или таблиц в предложении FROM). Предложение AS является необходимым для создания псевдонимов отбираемых элементов, но не для псевдонимов в предложении FROM. (Некоторые другие платформы считают предложения AS необязательными.)

INTO [[TEMP]ORARY] [TABLE] имя_новой_таблицы

Из результирующего набора запроса создается новая таблица. Для создания временных таблиц, которые автоматически удаляются по окончании сеанса, допустимым является синтаксис TEMP или TEMPORARY. В противном случае команда создает постоянную таблицу. Постоянные таблицы, созданные при помощи этой инструкции, должны иметь новые, уникальные имена, а временные таблицы могут иметь те же имена, что и уже существующие таблицы. Если вы создаете временную таблицу, имя которой совпадает с именем существующей постоянной таблицы, то временная таблица используется для всех операций, связанных с этим именем, которые проводятся в данном сеансе. Другие сеансы будут по-прежнему видеть существующую постоянную таблицу.

FROM [ONLY] таблица! […]

Указывается одна или несколько таблиц-источников, в которых находятся данные. (Обязательно укажите условие соединения или условие WHERE для тета-соедине-ния, чтобы не получить полный координатный продукт для всех записей во всех таблицах.) PostgreSQL позволяет использовать в таблицах-потомках наследование из родительских таблиц. Ключевое слово ONLY используется для того, чтобы данные не извлекались из таблиц-потомков исходной таблицы. (Вы можете отключить такое наследование на глобальном уровне командой SET SQL Inheritance ТО OFF) Платформа PostgreSQL также поддерживает вложенные табличные подзапросы. Предложение FROM не является необходимым при использовании вычислений.

SELECT 8 * 40;

Платформа PostgreSQL также может включать в инструкции SELECT неявные предложения FROM при использовании столбцов с указанием схемы. Например, следующий столбец является допустимым (хотя так делать и не рекомендуется).

SELECT
sales.stor_id
WHERE sales.stor_id=’6380′
GROUP ВY выражение_для group_by

Позволяет указать выражение для группировки, которое может представлять собой имя столбца или его порядковый номер (указывающий на его положение в списке отбираемых элементов). Пример, иллюстрирующий данную концепцию, приводится чуть ниже, в разделе, посвященном предложению ORDER BY.

ORDER BY выражение_для_сортировки

Позволяет указать выражение для сортировки, которое может представлять собой имя столбца, его псевдоним или порядковый номер столбца (указывающий на его положение в списке отбираемых элементов). Например, следующие два запроса функционально идентичны.

SELECT
stor_id,
ord_date,
qty AS quantity
FROM sales
ORDER BY stor_id, ord_date DESC, qty ASC;

SELECT
stor_id,
ord_date,
qty
FROM sales
ORDER 3Y 1, 2 DESC, quantity;

В инструкциях SELECT, обращающихся к одной таблице, вы можете проводить сортировку по столбцам, не входящим в список отбираемых элементов. Например:

SELECT *
FROM sales
ORDER BY stor_id, qty;

Предложения ASC и DESC соответствуют стандарту ANSI. По умолчанию принимается предложение ASC. Платформа PostgreSQL считает, что пустые значения больше всех остальных, поэтому они располагаются в конце при сортировке по возрастанию (ASC) и в начале — при сортировке по убыванию (DESC). FOR UPDATE OF столбец [, …] LIMIT {число ALL)] [OFFSET [количество_записей]] Число строк, возвращаемых запросом, ограничивается максимумом, указанным в целочисленном параметре число. Дополнительное ключевое слово OFFSET заставляет PostgreSQL пропустить указанное количество записей, прежде чем начать извлекать строки. При использовании предложения LIMIT должно обязательно присутствовать предложение ORDER BY, в противном случае результирующий набор будет неопределенным. (PostgreSQL версии 7.0 и выше рассматривают предложение LIMIT/OFFSET как подсказку оптимизатору и используют его для создания оптимальных, но, возможно, очень различных планов обработки запроса.)

PostgreSQL поддерживает удобный вариант предложения DISTINCT — DISTINCT ON (отбираемый_элеме///я [, …]). Этот вариант позволяет выбрать, в каких столбцах будет использоваться удаление дубликатов. Платформа PostgreSQL выбирает результирующий набор во многом так же, как для предложения ORDER BY. Вам следует указать предложение ORDER BY, чтобы не было непредсказуемости при выборе записей. Например:

SELECT DISTINCT ON (stor_id),
ord_date,
qty
FROM sales
ORDER BY stor_id, ord_date DESC;

Приведенный выше запрос извлекает самый последний отчет о продажах для каждого магазина (storid) на основе даты самого последнего заказа (ord_date). Однако без предложения ORDER BY невозможно будет предсказать, какая запись будет извлечена.

Платформа PostgreSQL поддерживает только следующие типы синтаксиса предложения JOIN (за подробной информацией обращайтесь к разделу «Предложение JOIN»).

Источник