Базы данных

Учебник SQLite для начинающих

24 урока · 6 разделов · бесплатно, без регистрации

Курс по SQLite — самой распространённой базе данных в мире, которая работает прямо внутри приложения и хранит все данные в одном файле. Идеальный курс для интерактива: песочница на этой странице — это и есть SQLite, поэтому почти каждый пример можно запустить кнопкой, поменять и тут же увидеть результат. Начнём с устройства SQLite и его необычной динамической типизации, разберём выборку данных (SELECT, WHERE, ORDER BY, NULL), изменение данных и ограничения целостности, связи и соединения таблиц (JOIN, подзапросы), агрегацию и группировку, оконные функции, а закончим практикой: индексами, представлениями, транзакциями и работой из кода. Базовых знаний не требуется — учим SQL с самого начала на живых примерах.

Курс «SQLite» состоит из 6 разделов и 24 уроков: Введение в SQLite, Выборка данных, Изменение данных и схема, Связи и соединения, Агрегация и группировка и Практика и возможности. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Введение в SQLite

    1. Что такое SQLite

      SQLite — встраиваемая база данных в одном файле, без сервера. Разбираем, как она устроена, где применяется и чем отличается от «больших» СУБД.

    2. Утилита sqlite3 и создание базы

      Командная строка sqlite3: как создать файл базы, выполнять SQL и пользоваться точечными командами .tables, .schema, .mode, .headers.

    3. Типы данных и динамическая типизация

      Классы хранения SQLite и его необычная динамическая типизация: что такое type affinity и почему столбец может хранить значения «не своего» типа.

    4. Первая таблица: CREATE, INSERT, SELECT

      Полный путь от пустой базы к данным: создаём таблицу командой CREATE TABLE, добавляем строки через INSERT и читаем их запросом SELECT.

  2. 2 Выборка данных

    1. SELECT, столбцы и псевдонимы

      Учимся выбирать данные: перечисление столбцов, вычисляемые выражения и псевдонимы AS для удобных имён результата.

    2. WHERE и операторы сравнения

      Фильтрация строк через WHERE: операторы =, <, >, диапазон BETWEEN, список IN и поиск по шаблону LIKE.

    3. Сортировка, LIMIT, DISTINCT

      Упорядочиваем и ограничиваем выборку: ORDER BY с ASC/DESC, постраничный вывод через LIMIT и OFFSET, удаление дубликатов с DISTINCT.

    4. NULL и проверка на пустоту

      Что такое NULL в SQLite, почему его нельзя сравнивать через = и как правильно фильтровать пустые значения через IS NULL и COALESCE.

  3. 3 Изменение данных и схема

    1. INSERT, UPDATE, DELETE

      Изменяем данные: варианты INSERT, обновление строк через UPDATE с условием и удаление через DELETE. Главное правило — не забывать WHERE.

    2. Ограничения и первичный ключ

      Ограничения целостности: PRIMARY KEY и rowid, AUTOINCREMENT, NOT NULL, UNIQUE, DEFAULT и проверки CHECK — как база сама защищает данные.

    3. ALTER TABLE: изменение схемы

      Как менять структуру существующей таблицы в SQLite: добавление столбца, переименование таблицы и столбца, удаление столбца и ограничения ALTER TABLE.

    4. Внешние ключи и целостность

      Внешние ключи FOREIGN KEY связывают таблицы и защищают целостность данных. Важная деталь SQLite: их проверку нужно включать через PRAGMA foreign_keys.

  4. 4 Связи и соединения

    1. Моделирование связей: один-ко-многим

      Как разбить данные на связанные таблицы: нормализация, связь один-ко-многим и внешний ключ на стороне «многих».

    2. INNER JOIN и LEFT JOIN

      Соединяем таблицы: INNER JOIN берёт только совпавшие строки, LEFT JOIN сохраняет все строки левой таблицы, подставляя NULL при отсутствии пары.

    3. Подзапросы

      Подзапрос — запрос внутри запроса: фильтрация через IN и NOT IN, скалярные подзапросы со сравнением и подзапросы в списке выбора.

    4. Самосоединение

      Самосоединение (self-join) — соединение таблицы с самой собой через псевдонимы. Классический пример: сотрудники и их руководители в одной таблице.

  5. 5 Агрегация и группировка

    1. Агрегатные функции

      Считаем итоги по множеству строк: COUNT, SUM, AVG, MIN и MAX. Как они сворачивают много строк в одно число и как ведут себя с NULL.

    2. GROUP BY и HAVING

      Группируем строки и считаем итоги по каждой группе через GROUP BY, а затем фильтруем сами группы условием HAVING.

    3. Встроенные функции, даты и CAST

      Полезные встроенные функции SQLite: строковые (LENGTH, SUBSTR, REPLACE, TRIM), работа с датами как текстом (date, strftime) и приведение типов через CAST.

    4. CASE WHEN и оконные функции

      Условные выражения CASE WHEN внутри запроса и оконные функции (RANK, SUM OVER, PARTITION BY), которые SQLite полностью поддерживает.

  6. 6 Практика и возможности

    1. Индексы и EXPLAIN QUERY PLAN

      Зачем нужны индексы, как их создавать через CREATE INDEX и как с помощью EXPLAIN QUERY PLAN увидеть, использует ли запрос индекс или сканирует таблицу целиком.

    2. Представления (VIEW)

      Представление (VIEW) — сохранённый запрос с собственным именем. Как создавать представления, обращаться к ним как к таблицам и зачем они нужны.

    3. Транзакции: BEGIN, COMMIT, ROLLBACK

      Транзакции объединяют несколько операций в одно неделимое целое: либо всё применяется (COMMIT), либо всё отменяется (ROLLBACK). Основа надёжности данных.

    4. Особенности SQLite и работа из кода

      Сильные и слабые стороны SQLite: хранение в файле и его ограничения, когда брать серверную СУБД, работа из Python через модуль sqlite3 и что учить дальше.