Данная статья относится к циклу статей, посвященных PostgreSQL. В предыдущей статье мы ознакомились с наиболее распространенными объектами сервера и базы данных PostgreSQL. Теперь мы поговорим о базовом операторе PostgreSQL SELECT, используемого для запроса данных из таблицы.
Одна из самых распространённых задач при работе с PostgreSQL — это запрос данных из таблиц при помощи оператора SELECT. Этот оператор один из самых сложных в PostgreSQL. У него есть множество условий, использующихся для формирования гибкого запроса.
Из-за его [оператора] сложности мы разобьём данное руководство на несколько коротких и простых для понимания частей, чтобы вы могли быстрее изучить функциональность каждого условия.
Итак, оператор SELECT включает в себя следующие условия:
- Выделение отдельных строк с помощью оператора DISTINCT.
- Сортировка строк при помощи условия ORDER BY.
- Фильтрация строк при помощи условия WHERE.
- Выбор подмножества строк в таблице при помощи условий LIMIT и FETCH.
- Объединение строк в группы при помощи условия GROUP BY.
- Фильтрация групп при помощи условия HAVING.
- Объединение с другими таблицами при помощи объединений, таких как INNER JOIN, LEFT JOIN, FULL OUTER JOIN, CROSS JOIN.
- Выполнение заданных действий при помощи UNION, INTERSECT и EXCEPT.
В данной статье мы сосредоточимся на изучении SELECT с условием FROM.
Синтаксис оператора PostgreSQL SELECT
Давайте начнём с базовой формы оператора SELECT, который извелкает данные из одной таблицы.
Ниже показан синтаксис оператора SELECT:
SELECT
column_1,
column_2,
...
FROM
table_name;
Давайте детальнее рассмотрим оператор SELECT:
- Во-первых, укажите столбец таблицы, из которой вы хотите запросить данные, в условии SELECT. Если вы извлекаете данные из нескольких столбцов, используйте список столбцов, разделенных запятыми. Если вы хотите запрашивать данные из всех столбцов, вы можете использовать звездочку (*) в качестве сокращения.
- Во-вторых, укажите имя таблицы, из которой вы хотите запросить данные, после ключевого слова FROM.
Говоря о столбцах таблицы: вы можете использовать литеральные значения и выражения в условии SELECT.
Обратите внимание, что язык SQL не чувствителен к регистру. Это означает, что SELECT и select функционально эквивалентны друг другу. Поэтому договоримся, что будем использовать ключевые слова SQL в верхнем регистре, чтобы облегчить чтение кода.
Примеры оператора PostgreSQL SELECT
Рассмотрим некоторые примеры использования оператора PostgreSQL SELECT.
Мы будем использовать следующую таблицу customers (покупателей) из примера базы данных.
1) Пример использования оператора SELECT для запроса данных из одного столбца
В этом примере оператор SELECT используется для поиска имён всех покупателей в таблице customer (покупатель):
SELECT
first_name
FROM
customer;
Здесь пример вывода:
Обратите внимание, что мы добавили точку с запятой (;) в конце вызова оператора SELECT. Она [точка с запятой] не является частью оператора SQL, а используется для оповещения движка PostgreSQL об окончании работы оператора SQL. Точка с запятой также используется для разделения двух операторов SQL.
2) Пример использования оператора SELECT для запроса данных из нескольких столбцов
Предположим, что вам нужно знать имя, фамилию и адрес электронной почты покупателей. В таком случае вы можете указать эти имена столбцов в условии SELECT, как показано в запросе ниже:
SELECT
first_name,
last_name,
email
FROM
customer;
3) Пример использования оператора SELECT для запроса данных из всех столбцов таблицы
В следующем запросе оператор SELECT используется для возврата данных из всех строк и столбцов таблицы customer:
SELECT
*
FROM
customer;
В этом примере мы использовали звёздочку (*) в условии SELECT, которая является сокращением для всех столбцов. Поэтому вместо перечисления всех столбцов в условии SELECT мы просто использовали звёздочку (*).
В этом примере мы использовали звёздочку (*) в условии SELECT, которая является сокращением для всех столбцов. Поэтому вместо перечисления всех столбцов в условии SELECT мы просто использовали звёздочку (*).
Однако, использование звёздочки (*) в операторе SELECT является не самой лучшей практикой и вот почему:
- Представьте, что у вас есть огромная таблица с кучей столбцов. Оператор SELECT со звёздочкой (*) будет извлекать данные из всех столбцов таблицы, что может быть необязательно.
- К тому же, получение ненужных данных из базы данных увеличивает трафик между уровнями базы данных и приложения. В результате чего ваши приложения будут работать медленно и с меньшей масштабируемостью. Из-за чего рекомендуется по-возможности указывать имена столбцов в условии SELECT, чтобы получать только необходимые данные из таблицы.
Именно из-за этих причин звёздочку (*) следует использовать для специальных запросов, чтобы проверить данные таблицы.
4) Использование оператора SELECT с выражениями
В следующем примере оператор SELECT используется для возврата имени, фамилии и адресов электронной почты всех покупателей:
SELECT
first_name || ' ' || last_name AS full_name,
email
FROM
customer;
Здесь пример вывода:
В данном примере мы использовали оператор объединения || для того, чтобы объединить имя, пробел и фамилию каждого покупателя. Кроме того, мы использовали псевдоним столбца AS full_name для назначения выражения заголовку столбца.
5) Использование оператора SELECT только с выражениями
В следующем примере используется оператор SELECT с выражением. Мы опустим условие FROM, потому что этот оператор не ссылается ни на одну из таблиц:
SELECT 5 * 3 AS result;
Здесь пример вывода:
На этом данная статья подходит к концу. Мы рассмотрели оператор PostgreSQL SELECT. В следующей статье поговорим об условии PostgreSQL ORDER BY.
Источник: PostgreSQL Tutorial from Scratch