PostgreSQL SELECT: Запрос данных
PostgreSQL SELECT: Запрос данных
Оператор SELECT — это основа для извлечения данных в PostgreSQL. Он позволяет получать данные из одной или нескольких таблиц в вашей базе данных. В этом учебном пособии мы сосредоточимся исключительно на операторе SELECT, закладывая основу для более сложных запросов в будущих уроках.
Базовый синтаксис SELECT
Простейшая форма оператора SELECT извлекает данные из указанных столбцов таблицы:
SELECT column1, column2, ...
FROM table_name;SELECT: Указывает столбцы, которые требуется извлечь.FROM: Указывает таблицу, из которой нужно получить данные.
Выбор всех столбцов
(Не забудьте запустить пример схемы, если хотите протестировать эти запросы в своей оболочке)
Чтобы выбрать все столбцы из таблицы, используйте символ подстановки (*):
SELECT * FROM books;Этот запрос извлекает все столбцы и все строки из таблицы books.
Выбор определенных столбцов
Если вам нужны только определенные столбцы, укажите их явно:
SELECT title, author FROM books;Этот запрос извлекает столбцы title и author из таблицы books.
Псевдонимы столбцов
Псевдонимы столбцов временно переименовывают столбец в результате запроса, улучшая читаемость:
SELECT title AS book_title, author AS writer FROM books;AS: Присваивает псевдоним столбцу.- В результате столбцы будут отмечены как
book_titleиwriter.
Выполнение вычислений
Вы можете выполнять арифметические операции прямо в операторе SELECT:
SELECT title, price, price * 0.9 AS discounted_price FROM books;Этот запрос рассчитывает скидку 10% на цену каждой книги.
Конкатенация строк
Объединяйте несколько столбцов или добавляйте текст с помощью оператора объединения (||):
SELECT 'Title: ' || title || ', Author: ' || author AS book_info FROM books;Этот запрос создает объединенную строку с названиями книг и авторами.
Использование встроенных функций
PostgreSQL предоставляет различные функции, которые можно использовать в операторе SELECT:
- Строковые функции: Работа с текстовыми данными.
- Функции работы с датой и временем: Работа со значениями даты и времени.
- Математические функции: Выполнение математических вычислений.
Пример:
SELECT UPPER(title) AS uppercase_title FROM books;Этот запрос преобразует все названия книг в верхний регистр.
Выбор литеральных значений
Вы можете выбрать литеральные значения без указания таблицы:
SELECT 'Hello, PostgreSQL!';Этот запрос вернет одну строку с текстом Hello, PostgreSQL!.
Выбор выражений
В операторе SELECT можно оценивать выражения:
SELECT 7 * 3 AS result;Этот запрос вернет одну строку с результатом вычисления 21.
Упорядочение столбцов результата
Порядок столбцов в операторе SELECT определяет их порядок в результирующем наборе:
SELECT author, title FROM books;В результате будет сначала отображен столбец author, затем — title.
Выбор из нескольких таблиц (Декартово произведение)
Хотя здесь мы не углубляемся в объединения (JOIN), вы можете выбрать данные из нескольких таблиц, чтобы получить Декартово произведение:
SELECT * FROM books, authors;Примечание: Это объединит каждую строку таблицы books с каждой строкой таблицы authors, что может привести к большому количеству строк.
Ограничение результатов с помощью FETCH FIRST
Даже без условия WHERE, вы можете ограничить количество возвращаемых строк:
SELECT * FROM books
FETCH FIRST 5 ROWS ONLY;Этот запрос извлекает первые пять строк из таблицы books.
Резюме
Оператор SELECT — это основной инструмент для запросов данных в PostgreSQL. Овладев его базовым использованием, вы подготовите основу для создания более сложных запросов.
Ключевые моменты:
- Используйте
SELECT *, чтобы извлечь все столбцы из таблицы. - Указывайте конкретные столбцы, чтобы получить только нужные данные.
- Используйте псевдонимы столбцов для улучшения читаемости результатов.
- Выполняйте вычисления и используйте функции в операторе
SELECT. - Объединяйте строки и включайте литеральные значения в ваши запросы.
В следующих уроках мы рассмотрим дополнительные конструкции, такие как WHERE, JOIN и ORDER BY, чтобы далее фильтровать и манипулировать данными.
Продолжайте практиковаться с оператором SELECT, чтобы стать опытным специалистом по запросам данных в PostgreSQL.
Example Schema Code
-- Create the books table
CREATE TABLE books (
title VARCHAR(255),
author VARCHAR(255),
price NUMERIC(10, 2),
pages INTEGER
);
-- Insert sample data into the books table
INSERT INTO books (title, author, price, pages) VALUES
('The Great Gatsby', 'F. Scott Fitzgerald', 10.99, 180),
('To Kill a Mockingbird', 'Harper Lee', 7.99, 281),
('1984', 'George Orwell', 8.99, 328),
('Pride and Prejudice', 'Jane Austen', 6.99, 279),
('The Catcher in the Rye', 'J.D. Salinger', 9.99, 214),
('Moby-Dick', 'Herman Melville', 11.99, 635),
('War and Peace', 'Leo Tolstoy', 12.99, 1225);
-- Create the authors table
CREATE TABLE authors (
name VARCHAR(255)
);
-- Insert sample data into the authors table
INSERT INTO authors (name) VALUES
('F. Scott Fitzgerald'),
('Harper Lee'),
('George Orwell'),
('Jane Austen'),
('J.D. Salinger'),
('Herman Melville'),
('Leo Tolstoy');
-- Create the movies table
CREATE TABLE movies (
title VARCHAR(255)
);
-- Insert sample data into the movies table
INSERT INTO movies (title) VALUES
('The Shawshank Redemption'),
('The Godfather'),
('The Dark Knight'),
('Pulp Fiction'),
('The Lord of the Rings');
-- Optional: Verify the data insertion
SELECT * FROM books;
SELECT * FROM authors;
SELECT * FROM movies;