Документация SQLite
- Списки документов и указатели
-
Обзорные документы
- О SQLite → Общий обзор SQLite и причин, по которым вам может быть интересно его использовать.
- Подходящие варианты использования SQLite → В этом документе описаны ситуации, в которых SQLite подходит в качестве движка базы данных, и ситуации, когда движок базы данных клиент-сервер может оказаться более подходящим выбором.
- Отличительные особенности → В этом документе перечислены и описаны некоторые особенности SQLite, отличающие его от других движков баз данных SQL.
- Особенности SQLite → В этом документе приведён краткий список необычных особенностей SQLite, которые часто вызывают недопонимание и путаницу. В список входят как намеренные нововведения, так и «неудачные особенности», сохранённые исключительно для обратной совместимости.
- Как тестируется SQLite → Надёжность и устойчивость SQLite во многом обеспечиваются тщательным и всесторонним тестированием. В этом документе перечислены многочисленные тесты, проводимые перед каждым выпуском SQLite.
- Авторские права → SQLite находится в общественном достоянии. В этом документе объясняется, что это означает и какие последствия имеет для участников проекта.
- Часто задаваемые вопросы → Название документа говорит само за себя...
- Книги о SQLite → Список книг о SQLite, написанных независимыми авторами.
-
Программные интерфейсы
- SQLite за 5 минут или меньше → Краткое введение в программирование с использованием SQLite.
- Введение в API C/C++ → В этом документе представлено API C/C++. Перед чтением приведённого ниже справочника по API C/C++ рекомендуется ознакомиться с этим документом.
- Как скомпилировать SQLite → Инструкции и рекомендации по компиляции кода SQLite на C и интеграции этого кода в собственное приложение.
- Справочник по API C/C++ → В этом документе отдельно описана каждая функция API.
- Коды результатов и ошибок → Описание значений числовых кодов результатов, возвращаемых различными интерфейсами C/C++.
- Пользовательская функция SQL → Обзор интерфейсов языка C, используемых для создания новых пользовательских функций SQL в SQLite.
- API Tcl → Описание привязок интерфейса TCL для SQLite.
- Привязки SQLite для Android → Информация о том, как развернуть собственную копию SQLite на Android, обходя встроенную SQLite, но используя тот же интерфейс Java.
- System.Data.SQLite → Привязки C#/.NET для SQLite
-
Документация по языку SQL
- Синтаксис SQL → В этом документе описан язык SQL, поддерживаемый SQLite.
- Команды PRAGMA → В этом документе описаны параметры настройки производительности SQLite и другие специальные команды базы данных.
- Основные функции SQL → Встроенные скалярные функции SQL общего назначения.
- Агрегатные функции SQL → Встроенные агрегатные функции SQL общего назначения.
- Функции SQL для работы с датой и временем → Функции SQL для работы с датами и временем.
- Оконные функции → Оконные функции SQL.
- Генерируемые столбцы → Хранимые и виртуальные столбцы в определениях таблиц.
- Типы данных → В SQLite версии 3 введено понятие манифестной типизации: тип значения связан с самим значением, а не со столбцом, в котором оно хранится. На этой странице подробнее описана типизация данных в SQLite версии 3.
- Индексы по выражениям → Индексы в SQLite могут создаваться не только по обычным столбцам таблиц. Индексировать можно и выражения.
- Строковые значения → SQLite поддерживает сравнения, в том числе сравнения на неравенство, между кортежами значений, называемыми «строковыми значениями». В этом документе это объясняется.
- Таблицы STRICT → В таблицах STRICT SQLite строго проверяет типы, чтобы точнее имитировать поведение других движков баз данных SQL.
-
Расширения
- Функции JSON → Функции SQL для создания, разбора и выполнения запросов к данным JSON.
- FTS5 — полнотекстовый поиск → Описание расширения SQLite для полнотекстового поиска (FTS5).
- FTS3 — полнотекстовый поиск → Описание расширения SQLite для полнотекстового поиска (FTS3).
- Модуль R-Tree → Описание расширения R-Tree для SQLite. R-Tree — это специализированная структура данных, обеспечивающая быстрый поиск по многомерным диапазонам, часто используемый в геоинформационных системах.
- Сеансы → Расширение Sessions позволяет записывать изменения в базе данных SQLite в компактный файл, который можно применить к исходной базе данных для отмены изменений или перенести и применить к другой аналогичной базе данных.
- Расширения, загружаемые во время выполнения → Общий обзор принципов работы расширений, загружаемых во время выполнения, их компиляции и создания разработчиками собственных таких расширений для SQLite.
- Виртуальная таблица Dbstat → Виртуальная таблица DBSTAT сообщает о размерах и структуре таблиц, хранящих данные в базе SQLite, и служит основой для утилиты sqlite3_analyzer.
- Виртуальная таблица Csv → Виртуальная таблица CSV позволяет SQLite напрямую читать файлы в формате RFC 4180 и выполнять к ним запросы.
- Carray → CARRAY — это табличная функция, позволяющая использовать массивы языка C в запросах SQL.
- generate_series → Описание табличной функции generate_series().
- Spellfix1 → Расширение spellfix1 — это эксперимент по исправлению орфографических ошибок при полнотекстовом поиске.
- Zipfile → Виртуальная таблица со вспомогательными функциями, позволяющая читать и записывать ZIP-архив так, как если бы это была база данных.
- Расширение IEEE754 → Набор функций SQL для кодирования и декодирования чисел с плавающей точкой IEEE-754.
- Расширение Decimal → Набор функций для выполнения десятичной арифметики произвольной точности, включая преобразование значений с плавающей точкой IEEE-754 в их точное десятичное представление.
- Последовательность сортировки UINT → Последовательность сортировки, упорядочивающая текст со встроенными числами по числовому значению.
- Расширение Percentile → Реализация агрегатных функций: median(), percentile(), percentile_cont() и percentile_disc().
-
Возможности
- Имена файлов 8+3 → Как обеспечить работу SQLite в файловых системах, поддерживающих только имена файлов формата 8+3.
- Автоинкремент → Описание ключевого слова AUTOINCREMENT в SQLite: что оно делает, в каких случаях полезно и почему его не следует использовать без строгой необходимости.
- API резервного копирования → Интерфейс онлайн-резервного копирования можно использовать для копирования данных с дискового файла в базу данных в памяти или обратно, а также для создания резервной копии работающей базы данных. В этой заметке приведены примеры использования.
- Журнал ошибок и предупреждений → SQLite поддерживает механизм «журнала ошибок и предупреждений» для сбора сведений о подозрительных событиях и/или ошибках во время работы. Встраиваемым приложениям рекомендуется включать этот журнал, чтобы упростить отладку проблем, возникающих при эксплуатации. В этом документе объясняется, как это сделать.
- Поддержка внешних ключей → В этом документе описана поддержка ограничений внешних ключей, появившаяся в версии 3.6.19.
- Индексы по выражениям → Примечания о том, как создавать индексы по выражениям, а не только по отдельным столбцам.
- Внутреннее и внешнее хранение BLOB-данных → Следует ли хранить большие BLOB-объекты непосредственно в базе данных или размещать их в файлах, сохраняя в базе только имена файлов? В этом документе рассматривается этот вопрос.
- Ограничения SQLite → В этом документе описаны ограничения SQLite (максимальная длина строки или BLOB-объекта, максимальный размер базы данных, максимальное количество таблиц в базе данных и т. д.), а также способы их изменения во время компиляции и выполнения.
- Ввод-вывод с отображением в память → SQLite поддерживает ввод-вывод с отображением в память. В этом документе рассказывается, как включить эту возможность, а также о её преимуществах и недостатках.
- Многопоточные программы и SQLite → SQLite безопасно использовать в многопоточных программах. В этом документе подробно описано, как это работает, и приведены рекомендации по повышению производительности.
- Обработка NULL → Разные движки баз данных SQL обрабатывают NULL по-разному. Стандарты SQL допускают неоднозначные толкования. В этом документе (примерно за 2003 год) описана обработка NULL в SQLite в сравнении с другими движками баз данных SQL.
- Частичные индексы → Частичный индекс охватывает только часть строк таблицы. В этом документе рассказывается, как использовать частичные индексы в SQLite.
- Режим общего кэша → Версия 3.3.0 и более поздние версии позволяют двум или более подключениям к базе данных совместно использовать один и тот же кэш страниц и схемы. Эта возможность полезна для некоторых специализированных приложений.
- Уведомление о разблокировке → Возможность «уведомления о разблокировке» можно использовать вместе с режимом общего кэша для более эффективного управления конфликтами ресурсов (блокировками таблиц базы данных).
- Имена файлов URI → Имена файлов баз данных можно задавать как обычные имена файлов или как URI. Использование имён файлов URI предоставляет дополнительные возможности, описанные в этом документе.
- Таблицы WITHOUT ROWID → Оптимизация WITHOUT ROWID иногда позволяет уменьшить размер базы данных и повысить её производительность.
- Режим журнала предварительной записи (WAL) → Управление транзакциями с помощью журнала предварительной записи обеспечивает более высокий уровень параллелизма и часто работает быстрее, чем транзакции с откатом, используемые по умолчанию. В этом документе объясняется, как использовать режим WAL для повышения производительности.
-
Инструменты
- Командная оболочка (sqlite3.exe) → Примечания по использованию интерфейса командной строки «sqlite3.exe», с помощью которого можно создавать, изменять и запрашивать произвольные файлы баз данных SQLite.
-
Удалённое копирование работающей базы данных → Программа
sqlite3_rsyncсоздаёт согласованную копию работающей базы данных в удалённой системе или из неё. - Хэш базы данных (dbhash.exe) → Эта программа демонстрирует, как вычислить хэш содержимого базы данных SQLite.
- Fossil → Система управления версиями Fossil — это распределённая система управления версиями, специально разработанная для поддержки разработки SQLite. Для хранения данных Fossil использует SQLite.
- RBU → Утилита «Resumable Bulk Update» позволяет применять пакет изменений к удалённой базе данных на встроенном устройстве с возможностью возобновления процесса и без прерывания текущей работы.
- Анализатор баз данных SQLite (sqlite3_analyzer.exe) → Эта автономная программа читает базу данных SQLite и выводит файл со сведениями об использовании места каждой таблицей и индексом, а также с другой статистикой. Создана на основе виртуальной таблицы dbstat.
- Сравнение баз данных SQLite (sqldiff.exe) → Эта автономная программа сравнивает два файла баз данных SQLite и выводит инструкции SQL, необходимые для преобразования одной базы данных в другую.
- Архиватор SQLite (sqlar.exe) → Архиватор, аналогичный ZIP, использующий SQLite для хранения данных.
-
Популяризация
- На 35% быстрее файловой системы → В этой статье отмечается, что чтение BLOB-объектов из базы данных SQLite часто быстрее, чем чтение тех же BLOB-объектов из отдельных файлов файловой системы.
- Гибкая типизация — это преимущество → SQLite позволяет разработчикам хранить данные в любом нужном формате независимо от объявленного типа данных столбца. В этой статье объясняется, почему это преимущество, а не ошибка.
- SQLite в качестве формата файлов приложения → В этой статье предлагается использовать SQLite в качестве формата файлов приложения вместо XML, JSON или «набора файлов».
- Известные пользователи → На этой странице представлен небольшой список устройств и приложений из многих тысяч, использующих SQLite.
- Почему SQLite написана на C → Почему SQLite написана не на другом модном языке, например C++ или Rust? Разве C не устарел?
- Почему SQLite не использует Git → Почему SQLite не использует Git для управления версиями, как почти все остальные?
-
Техническая документация и описание проектных решений
- Как может произойти повреждение базы данных → SQLite обладает высокой устойчивостью к повреждению баз данных. Однако ошибки приложений, операционных систем и оборудования всё же могут привести к повреждению файлов баз данных. В этой статье описаны многие способы повреждения файлов баз данных SQLite.
- Защита от тёмных искусств → Рекомендации по предотвращению уязвимостей приложений при использовании SQLite.
- Временные файлы, используемые SQLite → При обработке некоторых инструкций SQL SQLite может использовать множество различных временных файлов. В этом документе описаны типы временных файлов, используемых SQLite, и приведены рекомендации по их предотвращению в системах, где создание временного файла обходится дорого.
- Базы данных в памяти → Обычно SQLite хранит данные в файле на диске. Однако его также можно использовать в качестве движка базы данных в памяти. В этом документе объясняется, как это сделать.
- Как SQLite реализует атомарную фиксацию → Описание логики SQLite, обеспечивающей транзакции с атомарной фиксацией даже при отключении питания.
- Динамическое выделение памяти в SQLite → В SQLite реализована сложная подсистема выделения памяти, которую можно настраивать и адаптировать к требованиям приложения по использованию памяти. Она надёжно работает при нехватке памяти и не допускает утечек. В этом документе подробно описана эта подсистема.
- Настройка и перенос SQLite → В этом документе объясняется, как настраивать сборку SQLite и переносить SQLite на новые платформы.
- Блокировки и параллелизм в SQLite версии 3 → Описание того, как новый код блокировок в версии 3 повышает уровень параллелизма и уменьшает проблему голодания писателей.
- Изоляция в SQLite → Что именно означает, когда мы говорим, что транзакции SQLite «сериализуемы»? Как и когда изменения становятся видимыми в рамках одного подключения к базе данных и для других подключений?
- Обзор оптимизатора → Краткий обзор различных оптимизаций запросов, выполняемых генератором кода SQLite.
- Планировщик запросов нового поколения → Дополнительная информация о планировщике запросов SQLite, в частности о его переработке для версии 3.8.0.
- Архитектура → Обзор архитектуры библиотеки SQLite, полезный для тех, кто хочет изучать и изменять исходный код.
- Коды операций VDBE → Этот документ автоматически создан и описывает различные коды операций, которые понимает VDBE. Программисты могут использовать его как справочник, чтобы лучше понимать вывод команд EXPLAIN в SQLite.
- Виртуальная файловая система → Объект «VFS» служит интерфейсом между ядром SQLite и базовой операционной системой. В этой статье рассказывается о принципах работы объекта VFS и создании новых объектов VFS.
- Виртуальные таблицы → В этой статье описаны механизм виртуальных таблиц и API SQLite, а также способы их использования для добавления новых возможностей в ядро библиотеки SQLite.
- Формат файла SQLite → Описание формата файлов баз данных и журналов SQLite, а также других сведений, необходимых для создания программ чтения и записи баз данных SQLite без использования SQLite.
- Параметры компиляции → В этом документе описаны параметры компиляции, позволяющие изменить поведение библиотеки по умолчанию или исключить необязательные функции для уменьшения размера исполняемого файла.
- Привязки SQLite для Android → Описание компиляции собственной версии SQLite для Android (в обход SQLite, встроенной в Android), а также соответствующий код и make-файлы.
- Рекомендации по отладке → Список приёмов и методов для трассировки, изучения и понимания работы ядра библиотеки SQLite.
-
Обновление SQLite и обратная совместимость
- Переход с SQLite 3.5 на 3.6 → Документ с описанием различий между SQLite версий 3.5.9 и 3.6.0.
- Переход с SQLite 3.4 на 3.5 → Документ с описанием различий между SQLite версий 3.4.2 и 3.5.0.
- История выпусков → Хронология выпусков SQLite, начиная с версии 1.0.0
- Обратная совместимость → В этом документе подробно описаны все несовместимые изменения формата файлов SQLite, произошедшие начиная с версии 1.0.0.
- Приватные ветки → В этом документе предлагаются процедуры ведения приватной ветки или ответвления SQLite и синхронизации этой ветки или ответвления с общедоступным деревом исходного кода SQLite.
-
Устаревшие документы
- Режим асинхронного ввода-вывода → На этой странице описано расширение асинхронного ввода-вывода, разработанное вместе с SQLite. Асинхронный ввод-вывод может повысить отзывчивость SQLite, передавая запись в базу данных фоновой нити. Примечание: это расширение устарело. Вместо него рекомендуется использовать режим WAL.
- API C/C++ версии 2 → Описание привязок интерфейса C/C++ для SQLite вплоть до версии 2.8
- Типы данных версии 2 → Описание обработки типов данных SQL в SQLite версии 2. Кратко: всё является строкой.
- Руководство по VDBE → VDBE — это подсистема SQLite, выполняющая фактическую работу по выполнению инструкций SQL. На этой странице описаны принципы работы VDBE в SQLite версии 2.7. Этот материал обязателен для всех, кто хочет изменять исходный код SQLite.
- SQLite версии 3 → Краткое описание изменений между SQLite версии 2.8 и SQLite версии 3.0.
- API C/C++ версии 3 → Краткое описание изменений API между SQLite версии 2.8 и SQLite версии 3.0.
- Сравнение скорости → Скорость SQLite версии 2.7.6 сравнивается со скоростью PostgreSQL и MySQL.
SQLite is in the Public Domain.
https://sqlite.org/docs.html