SQLite
SQLite – это система управления базами данных, отличительной особенностью которой является ее встраиваемость в приложения. Это значит, что большинство СУБД являются самостоятельными приложениями, взаимодействие с которыми организовано по принципу клиент-сервер. Программа-клиент посылает запрос на языке SQL, СУБД, которая в том числе может находиться на удаленном компьютере, возвращает результат запроса.
В свою очередь SQLite является написанной на языке C библиотекой, которую динамически или статически подключают к программе. Для большинства языков программирования есть свои привязки (API) для библиотеки SQLite. Так в Python СУБД SQLite импортируют командой import sqlite3
. Причем модуль sqlite3 входит в стандартную библиотеку языка и не требует отдельной установки.
С другой стороны, библиотеку SQLite можно скачать с сайта разработчика. Она встроена в консольную утилиту sqlite3, с помощью которой можно на чистом SQL создавать базы данных и управлять ими. Также существуют включающие SQLite приложения с графическим интерфейсом пользователя от сторонних разработчиков.
СУБД SQLite во многом поддерживает стандартный SQL. Диалект языка SQL, используемый в SQLite, по синтаксису схож с тем, который используется в PostgreSQL. Однако SQLite накладывает ряд специфических особенностей на SQL.
Следует различать саму SQLite как содержащую СУБД библиотеку и базу данных как таковую. С помощью SQLite создаются базы данных, представляющие собой один кроссплатформенный текстовый файл. Файл базы данных, в отличие от SQLite, не встраивается в приложение, не становится его частью, он существует отдельно. Так можно создать базу данных, пользуясь консольным sqlite3, после чего использовать ее в программе с помощью библиотеки SQLite языка программирования. При этом файл базы данных также хранится на локальной машине.
Приложение, включающее в себя SQLite, использует ее функциональность посредством простых вызовов функций. Поскольку функции вызываются в том же процессе, что работает приложение, вызовы работают быстрее, чем это было бы в случае межпроцессного взаимодействия.
Уход от клиент-серверной модели вовсе не означает, что SQLite – это учебная или урезанная СУБД. Это означает лишь специфику ее применения в роли встраиваемого компонента. Существует множество типов приложений, от "записных книжек" до браузеров и операционных систем, нуждающихся в небольших локальных базах данных.
Поскольку SQLite работает в рамках другого приложения, во время записи файл базы данных блокируется. Таким образом, записывать данные можно только последовательно. В то же время читать базу могут сразу несколько процессов. SQLite – не лучший выбор, если предполагаются частые обращения к БД на запись.
Не считая NULL, SQLite поддерживает всего четыре типа данных – INTEGER, REAL, TEXT и BLOB. Последний тип – это двоичные данные. При этом в столбец, объявленный одним типом, могут записываться данные любого другого. Если SQLite не может преобразовать переданные данные в заявленный для столбца тип, то оставляет их как есть.
В SQLite нет контроля доступа к БД посредством пароля или с помощью оператора GRANT. Доступ контролируется на уровне файловой системы путем разрешений на файл базы данных для пользователей и групп.
В SQLite поддержка внешних ключей по умолчанию отключена, но ее можно включить.
В Ubuntu установить sqlite3 можно командой sudo apt install sqlite3
. В этом случае утилита вызывается командой sqlite3
. Также можно скачать с сайта https://sqlite.org архив с последней версией библиотеки, распаковать и вызвать в терминале утилиту:
Для операционной системы Windows скачивают свой архив (sqlite-tools-win32-*.zip) и распаковывают. Далее настраивают путь к каталогу, добавляя адрес каталога к переменной PATH (подобное можно сделать и в Linux). Возможно как и в Linux работает вызов утилиты по ее адресу. Android же имеет уже встроенную библиотеку SQLite.
Следует различать операторы и выражения языка SQL и команды самой утилиты sqlite3. Команды утилиты обязательно пишутся с маленькой буквы и начинаются с точки. В конце точка с запятой не ставится. Команды языка SQL заканчиваются точкой с запятой и содержат операторы, которые обычно пишут прописными буквами.