Раздел 10 · Databases

Выборка, проекция и переименование

junior~15 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

Мы разобрали, из чего состоит отношение. Теперь научимся с отношениями что-то делать. Для этого у Кодда есть небольшой набор операций, который называют реляционной алгеброй. Звучит страшно, но это просто «калькулятор для таблиц»: берёшь таблицы, применяешь операцию, получаешь новую таблицу. В этом уроке первые три операции: выборка, проекция и переименование. Из них уже собирается большая часть повседневных запросов.

Калькулятор для таблиц

Вспомни обычный калькулятор. На входе числа, операции +, −, ×, на выходе снова число. Поэтому операции можно сцеплять: (2 + 3) × 4. Результат одной операции сразу становится входом следующей.

Реляционная алгебра устроена так же, только вместо чисел отношения. Любая операция принимает таблицу (или две) и возвращает таблицу. Это свойство называют замкнутостью, и на нём держится вся мощь SQL: результат одного запроса можно подать на вход другому, сколько угодно раз.

Зачем учить алгебру, если есть SQL? Потому что СУБД сама переводит твой SQL в выражение реляционной алгебры, а потом переставляет его операции, чтобы выполнить быстрее. Когда ты будешь читать план запроса, ты увидишь там эти же операции.

Весь урок работаем с одной таблицей:

students
id | name  | city   | year
---+-------+--------+-----
 1 | Петя  | Казань |    1
 2 | Аня   | Пермь  |    2
 3 | Олег  | Казань |    2
 4 | Лиза  | Казань |    1

Выборка: оставить нужные строки

Первая операция работает как сито: пропускает строки, которые подходят под условие, и отбрасывает остальные. Её называют выборкой и обозначают греческой буквой σ, «сигма». Условие пишут рядом с буквой, а отношение в скобках:

σ city = 'Казань' (students)

id | name  | city   | year
---+-------+--------+-----
 1 | Петя  | Казань |    1
 3 | Олег  | Казань |    2
 4 | Лиза  | Казань |    1

Колонки остались те же, строк стало меньше. В условии можно сравнивать и соединять сравнения через «и», «или», «не»:

σ city = 'Казань' ∧ year = 1 (students)

Значок ∧ это «и», ∨ это «или», ¬ это «не». Результат: Петя и Лиза.

В SQL выборке соответствует WHERE:

SELECT * FROM students WHERE city = 'Казань' AND year = 1;

Не перепутай: буква σ называется selection, но в SQL ей соответствует не SELECT, а WHERE. Слово SELECT в SQL отвечает за следующую операцию.

дальше после входа

Урок целиком открыт всем, кто вошёл. Войди по своему email, чтобы читать дальше.

Вход пока по приглашению. Если хочешь учиться, напиши Vassiliy.