Таблица — это множество строк: первый SELECT
Знакомимся с крошечной таблицей столовой и тремя словами, с которых начинается любой запрос: SELECT, FROM, WHERE.
Школьная столовая продаёт четыре блюда и каждый день записывает, сколько чего продала. В базе данных такой журнал — одна таблица: каждая строка это один товар, каждый столбец — один факт о нём. У таблицы есть имя, 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 сам является таблицей, а значит его можно дальше спрашивать — скармливать один ответ следующему вопросу.
Практика
Управляющий столовой спрашивает: что мы сегодня вообще продавали? Какой запрос ответит на этот вопрос по таблице sales?
Подсказки
- Вопрос о том, какие товары продавались, а не о ценах и не об id.
- Столбец выбирает SELECT; таблицу называет FROM.
Напиши запрос, который показывает названия блюд дороже 2.90 евро: какой столбец взять, из какой таблицы и какие строки оставить.
Подсказки
- Пиши слова запроса в этом порядке: SELECT, потом FROM, потом WHERE.
- Тебе нужен столбец item из таблицы sales, то есть: SELECT item FROM sales.
- Условие сравнивает price с числом: WHERE price > 2.90.