Перейти к содержанию

DISTINCT, псевдонимы и выражения

Программирование SQL Сложность 1/5

Начало урока

DISTINCT, псевдонимы и выражения

Наведите порядок в результатах, переименуйте столбцы и считайте прямо внутри SELECT

Главная мысль: Запрос SELECT не обязан показывать столбцы ровно так, как они хранятся. Можно скрыть повторяющиеся значения с помощью DISTINCT, дать столбцам удобные имена через псевдонимы, и даже вычислять совершенно новые значения с помощью выражений, таких как price * quantity или CONCAT(...).
К концу урока вы сможете:
  • убирать повторяющиеся строки из результата с помощью SELECT DISTINCT,
  • переименовывать столбец или таблицу через псевдоним с ключевым словом AS,
  • выполнять арифметику (+ - * /) внутри SELECT,
  • склеивать текст с помощью CONCAT(),
  • различать то, что хранится, и то, что только показывается.

0. Наша таблица-пример

Каждый запрос на этой странице использует одну маленькую таблицу магазина под названием products. Вот как её создали и заполнили:

CREATE TABLE products (
    id INT,
    name VARCHAR(50),
    category VARCHAR(50),
    price INT,
    quantity INT
);

INSERT INTO products (id, name, category, price, quantity) VALUES
(1, 'Notebook',  'Stationery', 3,  10),
(2, 'Pen',       'Stationery', 1,  50),
(3, 'Backpack',  'Bags',       20, 5),
(4, 'Pencil',    'Stationery', 1,  30),
(5, 'Lunchbox',  'Bags',       8,  12);

Итак, вся таблица выглядит так:

id name category price quantity
1NotebookStationery310
2PenStationery150
3BackpackBags205
4PencilStationery130
5LunchboxBags812

Обратите внимание, что столбец category повторяется: "Stationery" встречается три раза, а "Bags" — два раза. Запомните это для следующего раздела.

1. DISTINCT: только разные значения

Иногда в столбце одно и то же значение встречается снова и снова, а вам нужно увидеть каждое разное значение только один раз. Ключевое слово DISTINCT делает именно это: оно выбрасывает повторяющиеся строки и оставляет только уникальные.

Представьте пакет разноцветных конфет. Если высыпать их, вы увидите красную, красную, синюю, красную, синюю. Но если друг спросит "какие цвета в пакете?", вы ответите просто "красный и синий" — назовёте каждый цвет один раз. Вот что делает DISTINCT.

Без DISTINCT запрос всех категорий даёт повтор для каждой строки:

SELECT category
FROM products;
category
Stationery
Stationery
Bags
Stationery
Bags

Теперь добавьте DISTINCT сразу после SELECT — и повторы исчезнут:

SELECT DISTINCT category
FROM products;
category
Stationery
Bags

Пять строк превратились в две, потому что различных категорий всего две.

DISTINCT с несколькими столбцами: когда вы перечисляете несколько столбцов, DISTINCT оставляет каждую уникальную комбинацию этих столбцов, а не каждое отдельное значение. Например, SELECT DISTINCT category, price FROM products; оставляет строку для каждой разной пары (category, price).

Продолжите этот урок на YourAIZone

В полном уроке — объяснение целиком, разобранные примеры, частые ошибки, тесты с мгновенной проверкой и ИИ-репетитор. Начните сразу как гость или создайте аккаунт, чтобы сохранять прогресс.

В полном уроке

  • Объяснение целиком
  • Разобранные примеры
  • Частые ошибки и как их избежать
  • Тестовые вопросы: 15
  • ИИ-репетитор, который отвечает на вопросы по теме
  • Отслеживание прогресса для ученика, родителей и учителя