SELECT, столбцы и псевдонимы

Осваиваем главный инструмент чтения данных — оператор SELECT.

SELECT — это оператор, который читает данные из таблиц: он определяет, какие столбцы и выражения попадут в результат.

Все столбцы или только нужные

Запрос SELECT * FROM таблица возвращает все столбцы. Это удобно при беглом просмотре, но в реальных запросах лучше перечислять нужные столбцы явно: меньше лишних данных и понятнее намерение.

CREATE TABLE products (
    id    INTEGER PRIMARY KEY,
    name  TEXT,
    price INTEGER,
    qty   INTEGER
);

INSERT INTO products (name, price, qty) VALUES
    ('Клавиатура', 2500, 10),
    ('Мышь',       1200, 25),
    ('Монитор',   18000,  4);

SELECT name, price FROM products;

Вывод:

Клавиатура|2500
Мышь|1200
Монитор|18000

Вычисляемые столбцы

В SELECT можно не только брать столбцы как есть, но и считать прямо в запросе: складывать, умножать, конкатенировать строки. База посчитает выражение для каждой строки.

CREATE TABLE products (
    id    INTEGER PRIMARY KEY,
    name  TEXT,
    price INTEGER,
    qty   INTEGER
);

INSERT INTO products (name, price, qty) VALUES
    ('Клавиатура', 2500, 10),
    ('Мышь',       1200, 25),
    ('Монитор',   18000,  4);

SELECT name, price * qty FROM products;

Вывод:

Клавиатура|25000
Мышь|30000
Монитор|72000

Второй столбец — это произведение цены на количество, то есть стоимость всего запаса товара. Но у него некрасивое имя price * qty. Исправим это.

Псевдонимы через AS

Ключевое слово AS задаёт псевдоним — удобное имя столбца в результате. Это особенно важно для вычисляемых выражений и при выводе в отчёты.

CREATE TABLE products (
    id    INTEGER PRIMARY KEY,
    name  TEXT,
    price INTEGER,
    qty   INTEGER
);

INSERT INTO products (name, price, qty) VALUES
    ('Клавиатура', 2500, 10),
    ('Мышь',       1200, 25),
    ('Монитор',   18000,  4);

SELECT name AS товар, price * qty AS стоимость
FROM products;

Вывод:

Клавиатура|25000
Мышь|30000
Монитор|72000

Сами значения те же, но столбцы теперь называются товар и стоимость. Слово AS можно даже опустить (price * qty стоимость) — результат тот же, но с AS читается понятнее. Если в псевдониме есть пробелы, возьмите его в двойные кавычки: AS "полная стоимость".

Соединение строк

Оператор || склеивает строки. Удобно собирать читаемые подписи прямо в запросе:

CREATE TABLE products (id INTEGER PRIMARY KEY, name TEXT, price INTEGER);

INSERT INTO products (name, price) VALUES ('Клавиатура', 2500), ('Мышь', 1200);

SELECT name || ': ' || price || ' руб.' AS label FROM products;

Вывод:

Клавиатура: 2500 руб.
Мышь: 1200 руб.

Итог

  • SELECT столбцы FROM таблица читает данные; * берёт все столбцы.
  • В списке выбора можно вычислять выражения: price * qty, склейку строк через ||.
  • AS даёт столбцу понятное имя в результате; для имён с пробелами — двойные кавычки.
Проверьте себя
1. Зачем нужен псевдоним AS в SELECT?
AЧтобы ускорить запрос
BЧтобы задать столбцу или выражению понятное имя в результате
CЧтобы отсортировать строки
DЧтобы удалить дубликаты
2. Что вернёт выражение name || ': ' || price?
AСумму значений
BСклеенную строку из name, двоеточия и price
CОшибку типов
DТолько name
3. Чем плох SELECT * в рабочих запросах?
AОн не работает в SQLite
BВозвращает лишние столбцы и скрывает намерение запроса
CОн медленнее ровно в 10 раз всегда
DОн запрещён стандартом SQL
Поддержать проект