Пошук уроків, статей та іншого контенту
Навчіться отримувати дані з таблиць, вибирати окремі стовпці та перейменовувати їх за допомогою псевдонімів.
SELECTКоманда SELECT отримує дані з однієї або кількох таблиць. Найпростіший запит має такий вигляд:
SELECT стовпці
FROM таблиця;SELECT вказує, які дані потрібно отримати.
FROM вказує таблицю, з якої потрібно отримати дані.
Крапка з комою ; завершує SQL-запит.
Для практики створимо тимчасову таблицю. Вона існуватиме лише протягом поточного підключення до PostgreSQL.
CREATE TEMP TABLE products (
id integer,
name text,
price numeric(10, 2),
in_stock boolean
);
INSERT INTO products (id, name, price, in_stock)
VALUES
(1, 'Клавіатура', 1299.00, true),
(2, 'Миша', 799.50, true),
(3, 'Вебкамера', 2499.00, false);Щоб отримати всі стовпці та всі рядки таблиці, використовуйте зірочку *:
SELECT *
FROM products;Результат міститиме всі стовпці таблиці:
id | name | price | in_stock
----+------------+---------+----------
1 | Клавіатура | 1299.00 | t
2 | Миша | 799.50 | t
3 | Вебкамера | 2499.00 | fЗірочка зручна для швидкого перегляду таблиці, але в прикладних запитах краще явно вказувати потрібні стовпці. Так запит буде зрозумілішим і не залежатиме від додавання нових стовпців до таблиці.
Після SELECT можна вказати назви потрібних стовпців через кому:
SELECT name, price
FROM products;Такий запит поверне лише назву та ціну товару:
name | price
------------+---------
Клавіатура | 1299.00
Миша | 799.50
Вебкамера | 2499.00Порядок стовпців у результаті відповідає їхньому порядку в команді SELECT:
SELECT price, name
FROM products;У результаті спочатку буде price, а потім name, навіть якщо в таблиці стовпець name розташований раніше.
Можна вибрати один стовпець:
SELECT name
FROM products;Або кілька стовпців:
SELECT id, name, in_stock
FROM products;Псевдонім — це тимчасове ім’я стовпця в результаті запиту. Для його створення використовують AS:
SELECT name AS product_name,
price AS product_price
FROM products;Результат матиме такі назви стовпців:
product_name | product_price
--------------+--------------
Клавіатура | 1299.00
Миша | 799.50
Вебкамера | 2499.00Псевдонім не перейменовує стовпець у самій таблиці. Він діє лише для результату поточного запиту.
Ключове слово AS можна не вказувати:
SELECT name product_name,
price product_price
FROM products;Проте варіант із AS зазвичай зрозуміліший, особливо у великих запитах.
Якщо псевдонім містить пробіли або має зберігати великі літери, його потрібно взяти в подвійні лапки:
SELECT name AS "Назва товару",
price AS "Ціна товару"
FROM products;Подвійні лапки в цьому випадку є частиною синтаксису SQL. Вони не змінюють значення даних, а лише задають назву стовпця в результаті.
Для імен без пробілів краще використовувати імена в нижньому регістрі з підкресленнями:
SELECT name AS product_name
FROM products;У SELECT можна вказувати не лише назви стовпців, а й вирази. Наприклад, обчислимо ціну з податком:
SELECT name,
price,
price * 1.20 AS price_with_tax
FROM products;Тут:
name і price — значення з таблиці;
price * 1.20 — обчислюваний вираз;
price_with_tax — псевдонім для результату обчислення.
Результат:
name | price | price_with_tax
------------+---------+----------------
Клавіатура | 1299.00 | 1558.80
Миша | 799.50 | 959.40
Вебкамера | 2499.00 | 2998.80Сам стовпець price у таблиці при цьому не змінюється.
Нижче наведено приклад, який можна виконати в PostgreSQL послідовно:
-- Створюємо тимчасову таблицю товарів
CREATE TEMP TABLE products (
id integer,
name text,
price numeric(10, 2),
in_stock boolean
);
-- Додаємо тестові дані
INSERT INTO products (id, name, price, in_stock)
VALUES
(1, 'Клавіатура', 1299.00, true),
(2, 'Миша', 799.50, true),
(3, 'Вебкамера', 2499.00, false);
-- Отримуємо всі стовпці
SELECT *
FROM products;
-- Отримуємо лише назву та ціну
SELECT name, price
FROM products;
-- Вибираємо стовпці в іншому порядку та задаємо псевдоніми
SELECT price AS product_price,
name AS product_name
FROM products;
-- Обчислюємо нове значення та задаємо йому псевдонім
SELECT name,
price,
price * 1.20 AS price_with_tax
FROM products;FROMНеправильно:
SELECT name products;У цьому запиті products сприймається як псевдонім для name, а не як назва таблиці.
Правильно:
SELECT name
FROM products;Одинарні лапки позначають текстове значення, а не назву стовпця:
SELECT 'name'
FROM products;Такий запит поверне текст name у кожному рядку, а не значення зі стовпця name.
Правильно:
SELECT name
FROM products;Подвійні лапки використовують для ідентифікаторів, наприклад для псевдонімів:
SELECT name AS "Назва товару"
FROM products;Якщо потрібно вивести звичайний текст, використовуйте одинарні лапки:
SELECT 'Товар'
FROM products;Запит:
SELECT name AS product_name
FROM products;не змінює структуру таблиці. Після завершення запиту стовпець у таблиці все одно називається name.
SELECT *SELECT * швидко показує всю таблицю:
SELECT *
FROM products;Але якщо потрібні лише окремі поля, краще вказати їх явно:
SELECT name, price
FROM products;SELECT отримує дані з таблиці.
FROM визначає таблицю, з якої потрібно отримати дані.
SELECT * повертає всі стовпці.
Окремі стовпці вказують через кому.
Порядок стовпців у результаті визначається їхнім порядком у SELECT.
AS створює псевдонім для стовпця або результату виразу.
Псевдонім змінює назву лише в результаті запиту, а не в самій таблиці.
Для псевдонімів із пробілами використовують подвійні лапки.