SQL и реляционные базы данных

SQL

Что это такое

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

Почему это важно

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

Что в этом треке

  1. Таблицы и связи (05-backend-data/07-sql-relational-databases/01-tables-and-relationships) — строки, столбцы, ключи и отношения между таблицами.
  2. Запросы и соединения (05-backend-data/07-sql-relational-databases/02-queries-and-joins) — выборка, фильтрация, группировка и объединение таблиц.
  3. Индексы и планы запросов (05-backend-data/07-sql-relational-databases/03-indexes-and-query-plans) — почему запрос быстр и как это выяснить.
  4. Транзакции и изоляция (05-backend-data/07-sql-relational-databases/04-transactions-and-isolation) — атомарность, конкурентность и то, что одна транзакция видит в другой.

Предварительные требования

Нет.

Что читать дальше

  • Проектирование баз данных (05-backend-data/14-database-design) — как для настоящего приложения выбирают схему и индексы.
  • Внутреннее устройство баз данных (01-cs-fundamentals/04-database-internals) — что происходит внутри, когда язык запросов уже знаком.
  • Объектно-реляционное отображение (05-backend-data/15-object-relational-mapping) — абстракция, которую большинство приложений ставит между собой и здешним SQL.