В этом учебном пособии вы узнаете, как использовать в PostgreSQL оператор SELECT с синтаксисом и примерами.
Описание
Оператор PostgreSQL SELECT используется для извлечения записей из одной или нескольких таблиц в PostgreSQL.
Синтаксис
В своей простейшей форме синтаксис для оператора SELECT в PostgreSQL:
FROM tables
[WHERE conditions];
Тем не менее, полный синтаксис для оператора SELECT PostgreSQL:
expressions
FROM tables
[WHERE conditions]
[GROUP BY expressions]
[HAVING condition]
[ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS FIRST | NULLS LAST ]]
[LIMIT [ number_rows | ALL]
[OFFSET offset_value [ ROW | ROWS ]]
[FETCH { FIRST | NEXT } [ fetch_rows ] { ROW | ROWS } ONLY]
[FOR { UPDATE | SHARE } OF table [ NOWAIT ]];
Параметры или аргументы
- ALL
- Необязательный. Возвращает все совпадающие строки.
- DISTINCT
- Необязательный. Удаляет дубликаты из набора результатов. Узнайте больше об операторе DISTINCT.
- DISTINCT ON
- Необязательный. Удаляет дубликаты на основе different_expressions. Подробнее об операторе DISTINCT ON.
- expressions
- Столбцы или расчеты, которые вы хотите получить. Используйте *, если хотите выбрать все столбцы.
- tables
- Таблицы, из которых вы хотите получить записи. В операторе FROM должна быть указана хотя бы одна таблица.
- WHERE conditions
- Необязательный. Условия, которые должны быть выполнены для записей, которые будут выбраны.
- GROUP BY expressions
- Необязательный. Он собирает данные по нескольким записям и группирует результаты по одному или нескольким столбцам.
- HAVING condtion
- Необязательный. Он используется в сочетании с GROUP BY, чтобы ограничить группы возвращаемых строк только теми, чье условие TRUE.
- ORDER BY expression
- Необязательный. Он используется для сортировки записей в вашем результирующем наборе.
- LIMIT
- Необязательный. Если указан LIMIT, он контролирует максимальное количество записей для извлечения. Максимум, количество записей, указанное number_rows, будет возвращено в результирующем наборе. Первая строка, возвращаемая LIMIT, будет определена offset_value.
- FETCH
- Необязательный. Если указан FETCH, он контролирует максимальное количество записей для извлечения. Самое большее, количество записей, указанное fetch_rows, будет возвращено в результирующем наборе. Первая строка, возвращаемая FETCH, будет определена offset_value.
- FOR UPDATE
- Необязательный. Записи, затронутые запросом, блокируются от записи до завершения транзакции
- FOR SHARE
- Необязательный. Записи, затронутые запросом, могут использоваться другими транзакциями, но не могут быть обновлены или удалены этими другими транзакциями
Пример - выбрать все поля из одной таблицы
Рассмотрим, как использовать PostgreSQL запрос SELECT для выбора всех полей в таблице.
1 2 3 4 |
SELECT * FROM categories WHERE category_id >= 2500 ORDER BY category_id ASC; |
В этом примере оператора SELECT PostgreSQL мы использовали *, чтобы указать, что мы хотим выбрать все поля из таблицы categories, где category_id больше или равен 2500. Результирующий набор сортируется по category_id в порядке возрастания.
Пример - выбор отдельных полей из одной таблицы
Вы также можете использовать PostgreSQL оператор SELECT для выбора отдельных полей из таблицы, в отличие от всех полей из таблицы.
Например:
1 2 3 4 |
SELECT category_id, category_name, comments FROM categories WHERE category_name = 'Hardware' ORDER BY category_name ASC, comments DESC; |
Этот PostgreSQL пример SELECT будет возвращать только поля category_id, category_name и comments из таблицы categories, где category_name - это 'Hardware'. Результаты сортируются по category_name в порядке возрастания, а затем по comments в порядке убывания.
Пример - выбор полей из нескольких таблиц
Вы также можете использовать SELECT оператор PostgreSQL для извлечения полей из нескольких таблиц.
1 2 3 4 5 |
SELECT products.product_name, categories.category_name FROM categories INNER JOIN products ON categories.category_id = products.category_id ORDER BY product_name; |
Этот пример PostgreSQL SELECT соединяет две таблицы, чтобы получить результирующий набор, который отображает поля product_name и category_name, где значение category_id совпадает в обоих таблицах categories и products. Результаты сортируются по product_name в порядке возрастания.