Мы разобрали, из чего состоит отношение. Теперь научимся с отношениями что-то делать. Для этого у Кодда есть небольшой набор операций, который называют реляционной алгеброй. Звучит страшно, но это просто «калькулятор для таблиц»: берёшь таблицы, применяешь операцию, получаешь новую таблицу. В этом уроке первые три операции: выборка, проекция и переименование. Из них уже собирается большая часть повседневных запросов.
Калькулятор для таблиц
Вспомни обычный калькулятор. На входе числа, операции +, −, ×, на выходе снова число. Поэтому операции можно сцеплять: (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.