SkillGridИзучай computer science на практике

Таблица — это множество строк: первый SELECT

Знакомимся с крошечной таблицей столовой и тремя словами, с которых начинается любой запрос: SELECT, FROM, WHERE.

13 мин · 40 XP

Школьная столовая продаёт четыре блюда и каждый день записывает, сколько чего продала. В базе данных такой журнал — одна таблица: каждая строка это один товар, каждый столбец — один факт о нём. У таблицы есть имя, sales, и ты будешь задавать ей вопросы весь урок.

sales
+----+----------+-------+--------+
| id | item     | price | count  |
+----+----------+-------+--------+
| 1  | soup     | 2.50  | 40     |
| 2  | sandwich | 3.20  | 55     |
| 3  | salad    | 2.80  | 23     |
| 4  | juice    | 1.90  | 60     |
+----+----------+-------+--------+Таблица sales, которую ведёт столовая: одна строка на товар.

Множества ты уже знаешь из модуля логики — а таблица и есть множество в маскировке: строки это его элементы, и двух одинаковых строк не бывает. Задать таблице вопрос значит вычислить из неё новое множество. SQL — язык таких вопросов, Structured Query Language, и каждое слово в этом названии честное.

Запрос — это предложение с фиксированным порядком слов. SELECT говорит, какие столбцы оставить, FROM называет таблицу, WHERE отфильтровывает строки. Этот порядок никогда не меняется — хотя база мысленно выполняет его в другом порядке: сначала FROM, потом WHERE, и SELECT в самом конце.

SELECT count, item
FROM   sales
WHERE  price < 3.00Оставить столбцы count и item из sales, но только строки, где цена меньше 3.00.

Читай запрос как маленький конвейер. FROM выдаёт всю таблицу. WHERE выбрасывает каждую строку, не прошедшую условие. SELECT оставляет запрошенные столбцы и выбрасывает остальное. Здесь через фильтр проходят суп и салат, а до результата доезжают только два их столбца.

sales          4 rows
   |
   +-- WHERE price < 3.00 --> soup (2.50), salad (2.80)
   |
   +-- SELECT count, item   --> soup: 40, salad: 23
   |
   +-- result               2 rowsТот же запрос, нарисованный как конвейер над четырьмя строками.

Заметь, что вернулось: не предложение, не число — меньшая таблица. Две строки, два столбца. Всякий ответ SQL сам является таблицей, а значит его можно дальше спрашивать — скармливать один ответ следующему вопросу.

Практика

  1. Управляющий столовой спрашивает: что мы сегодня вообще продавали? Какой запрос ответит на этот вопрос по таблице sales?

    Подсказки
    • Вопрос о том, какие товары продавались, а не о ценах и не об id.
    • Столбец выбирает SELECT; таблицу называет FROM.
  2. Напиши запрос, который показывает названия блюд дороже 2.90 евро: какой столбец взять, из какой таблицы и какие строки оставить.

    Подсказки
    • Пиши слова запроса в этом порядке: SELECT, потом FROM, потом WHERE.
    • Тебе нужен столбец item из таблицы sales, то есть: SELECT item FROM sales.
    • Условие сравнивает price с числом: WHERE price > 2.90.