Как и когда использовать Sqlite | www.8host.com

.

SQLite — это база данных, чем-то похожая на MySQL. Принципиальное отличие SQLite от других БД в том, что вся база представляет собой один файл. Если в MySQL база хранится где-то в дебрях сервера и недоступна для переноса, то в SQLite с этим всё до безобразия просто: один файл — одна база.

Конечно же, сервер должен поддерживать драйвер SQLite (также как и любой другой БД), но как правило сейчас с этим проблем нет.

SQLite позволяет привычно работать с базой через SQL, создавать таблицы, поля и т.д. В целом можно сказать, что SQLite ни в чем не уступает привычной MySQL, за исключением, пожалуй более медленной работы с «тяжелыми» sql-запросами по обновлению данных (insert и update).

Руководство по SQLite: настраиваем и учимся работать

Но, опять же, это для высоконагруженных сайтов.

Огромным плюсом SQLite будет её легкая переносимость. Скопировать файл — что может быть проще? Не нужно заботиться о бэкапах, как в MySQL, не нужно создавать на сервере пользователя с паролем, не нужно создавать саму базу. С SQLite просто берём и пользуемся.

Для работы с базой данных в PHP лучше использовать PDO — Объекты данных PHP — это т.н. абстракция, которая предлагает единый интерфейс для работы с разными базами. В теории, используя PDO, можно переключиться на любую базу, не переделывая SQL-запросы, например с MySQL на SQLite. Меняются только параметры подключения.

Таким образом SQLite будет подключаться через PDO. Для этого ничего не требуется, поскольку сам PDO уже в составе PHP, а драйвер SQLite, как правило, также включен на серверах.

Но, прежде, чем приступать к программированию, нужно создать саму базу. Например для MySQL существует phpMyAdmin, через который можно выполнять различные операции. Для SQLite также есть похожие разработки, но я покажу, как можно это делать через браузер FireFox. Для этого потребуется только установить дополнение SQLite Manager.

Чтобы добавить это дополнение в основное меню FireFox («гамбургер»), нажмите Изменить и перетащите мышью икноку в меню.

На этом SQLite Manager установлен и можно им пользоваться.

Для начала создадим новую базу данных. В SQLite — это отдельный файл, который будет иметь расширение . SQLite Manager предложит указать каталог, где будет храниться этот файл. Выберите или создайте новый каталог. Для нас это пока не имеет особого значения. В результате будет создан sqlite-файл с новой базой.

Этот файл можно перемещать (и переименовывать) куда угодно, а после открывать командой меню Базы данных — Подключить базу данных.

Теперь нужно создать таблицу (или таблицы) в базе данных.

SQLite Manager автоматом создаёт служебные таблицы sqlite_XXX. Мы их не трогаем и нам они не мешают.

Таблица в БД — это то место, где хранится структурированная информация. Таблица должна иметь набор полей с заданными свойствами. Например поле может быть integer — для целых чисел, или text — для текста. Количество полей может быть произвольным и определяется только задачей вебмастера.

Пусть, например, у нас будет таблица с полями

  • id — уникальный номер (автоинкремент)
  • slug — ссылка
  • text — произвольный текст
  • hits — число просмотров

После того, как таблица создана, обратите внимание на блок «SQL-оператор создавший этот объект». В нем будет SQL-запрос, которым можно создать таблицу. Он может пригодится, если требуется создать таблицу в базе через PHP.

На вкладке «Просмотр и Поиск» можно редактировать таблицу. Создадим для примера две строчки, где поле slug будет и . Это будут две страницы: главная и сайт/contact.

Поле hits будет содержать счетчик просмотров страницы. Текст может быть любым.

Всё, база готова, теперь можно её использовать.

Поставим задачу. Пусть у нас будет простенький сайт, который будет выдавать по короткой ссылке (slug) соответствующий текст и количество просмотров.

Если мы делаем это на локальном сервере, то пусть сайт будет в каталоге sqlite. В нём подкаталог db, куда мы и скопируем наш pages.sqlite.

Роутинг мы можем сделать, как описано в предыдущей статье PHP-роутинг (Routing) для новичков. Файл

AddDefaultCharset UTF-8 Options -Indexes <IfModule mod_rewrite.c> RewriteEngine on RewriteBase /sqlite/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*) /sqlite/index.php?$1 [QSA,L] </IfModule>

В index.php сам роутинг будет описан одной строчкой:

$page = ($p = key($_GET)) ? $p : ‘home’;

То есть будет содержать ссылку или для главной.

Дальше алгоритм будет такой:

  • подключаем базу
  • делаем в ней выборку по
  • выводим полученные данные

Я намеренно упрощаю алгоритм, чтобы не усложнять php-код.

Существуют два варианта работы с БД.

Первый — это нативный php-код. Он не очень сложный, но обилие параметров немного напрягает. Поэтому второй вариант — использование дополнительных библиотек-оберток. С ними код становится лаконичней.

Приведу код в первом варианте:

<?php $page = ($p = key($_GET)) ? $p : ‘home’; try { $pdo = new PDO(‘sqlite:db/pages.sqlite’); $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); $sql =’SELECT * FROM pages WHERE slug=:page LIMIT 1′; $sth = $pdo->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); $sth->execute(array(‘:page’ => $page)); $rows = $sth->fetchAll(); print_r($rows); // здесь выводим данные } catch(Exception $e) { echo $e->getMessage(); } # end of file

Для второго варианта я использовал php-библиотеку с сайта labaka.ru, которую разместил в подкаталог lib.

Код :

<?php $page = ($p = key($_GET)) ? $p : ‘home’; require ‘lib/sqlite.php’; try { $db = new Db(‘db/pages.sqlite’); $row = $db->queryRow(‘SELECT * FROM pages WHERE slug=:page LIMIT 1’, array(‘:page’ => $page)); if ($row) { echo $row[’text’]; echo ‘<br>Просмотров: ‘ . $row[’hits’] . ‘<br>’; $db->update(‘pages’, array(‘hits’ => $row[’hits’] + 1), ‘id=:id’, array(‘:id’ => $row[’id’])); } } catch(Exception $e) { echo $e->getMessage(); } # end of file

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

Здесь следует отметить пару важных моментов.

В первую очередь, вся работа с PDO должна заключаться в блок . Таким способом отлавливаются сообщения об ошибках.

Данные, которые отправляются в sql-запрос должны проходить через валидацию. В PDO, когда используется предподготовка данных (PDO::prepare), выполняется принудительное экранирование параметров. Это позволяет защититься от возможных SQL-инъекций.

Когда происходит подключение базы данных SQLite, в случае отсутствия файла базы, он будет создан автоматически. На этом базируется создание базы сразу после его подключения и создание нужных таблиц первым sql-запросом (о котором я написал выше).

Еще одно замечание по SQLite. Поскольку база это файл, то его можно скачать по URL прямо через браузер. Поэтому каталог с SQLite-файлами лучше защищать через строчкой . Или же размещать выше чем основной www-каталог.

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

Вы можете скачать файлы к этой статье.

СУБД SQLite

Термины СУБД и БД

Системой управления базами данных (СУБД) называют программное средство, позволяющее хранить информацию и извлекать хранимую информацию. В каком-то смысле, даже обычный массив в языке Си вместе с операциями индексации и индексированного присваивания можно считать примером очень примитивной СУБД. Тем не менее, обычно к СУБД подобные элементарные вещи не относят.

Обычно СУБД поддерживают возможность изолировать подмножества хранимых данных друг от друга. Единицы изоляции называют базами данных (БД). Например, если в качестве СУБД рассматривать только вышеупомянутые операции индексации и индексированного присваивания языка Си, то отдельными БД для такой СУБД будут массивы.

По факту понятия СУБД и БД часто используют как синонимы: ни к какой особой путанице это не приводит.

Реляционные БД

В этой главе мы обсудим т.н. реляционную модель СУБД/БД. Реляционная БД (именно БД как единица изоляции) представляет собой набор именованных таблиц. Каждая таблица имеет некоторое фиксированное (на момент создания таблицы) множество именованных колонок.

Единица хранения (т.н. запись) — строка таблицы. В таблицу в любой момент можно добавлять новые строки или удалять из неё уже имеющиеся там. Обычно разрешаются «неполные» строки: некоторые колонки в такой строке могут быть пустыми.

Основа реляционной модели — язык SQL, на котором строятся запросы к реляционной БД. Изначально (в 70х годах) этот язык не отождествлялся с реляционной моделью. В настоящее время, говоря о реляционных БД/СУБД, подразумевают именно ту или иную реализацию языка SQL.

СУБД SQLite

В качестве реализации языка SQL мы будем использовать СУБД SQLite. Для Windows-систем можно скачать с официального сайта архив , содержащий интерпретатор SQL-команд .

Работа с SQLite-базами при помощи интерпретатора команд — далеко не основной режим работы. Тем не менее, с точки зрения процесса обучения, он является одним из наиболее удобных.

Если запустить без аргументов, он создаёт БД в памяти. Создать БД в файле можно одним из двух способов:

  • дать интерпретатору команду
  • запустить интерпретатор с названием файла в качестве аргумента командной строки

Основы языка SQL

Каждая команда языка SQL, вбитая в интерпретатор, должна завершаться точкой-с-запятой ( не является командой языка SQL).

Чтобы создать таблицу, используется команда

Язык SQL является регистронезависимым (в разумных пределах: нелатинские буквы в названиях таблиц и колонок обычно допускаются, но поведение таких названий не регламентировано).

SQLite — основы использования

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

Для того, чтобы удалить таблицу , можно воспользоваться командой

Чтобы посмотреть названия таблиц и их колонок, можно воспользоваться командой (естественно, это команда интерпретатора sqlite3, а не языка SQL; в других СУБД это делается по-другому).

Чтобы добавить строчку в таблицу , пишут

Чтобы оставить ячейку пустой, можно воспользоваться специальным словом . Числовые данные записываются цифрами (и десятичной точкой, если нужно). Текстовые данные заключаются в одинарные кавычки.

Довольно распространённая практика — включать в таблицу уникальный идентификатор записи. Обычно это делают так:

В данном случае — указание типа данных колонки с названием . Такой тип данных обеспечивает:

  • быстрый поиск по значениям этой колонки
  • уникальность значений в этой колонке
  • непустоту ячеек этой колонки

На последнем пункте остановимся отдельно: если подать в качестве значения колонки с типом , значение ячейки будет сгенерировано автоматически. Это очень удобно! (Подобное поведение специфично для SQLite. В других СУБД автогенерация идентификатора реализуется по-другому.)

Основной режим работы с БД — извлечение нужной информации. Для этого используется команда . Наиболее простая её разновидность устроена так:

Такая команда достаёт из указанной таблицы все записи, удовлетворяющие заданному условию, и выдаёт их в заданном формате.

Например, рассмотрим БД со схемой:

Чтобы получить имена всех людей, которым больше 30 лет, можно сделать такой запрос:

В формате вывода можно перечислить несколько выражений через запятую, например (в предположении наличия таблицы с колонками и ):

В том месте команды SELECT, где указывается таблица, разрешаются более сложные выражения, чем одиночное название таблицы. Например, можно использовать запятую как операцию декартова произведения таблиц (декартово произведение двух таблиц — множество всех пар записей этих таблиц).

Например, в предположении следующей схемы БД

для получения имён всех людей, которым больше 30 лет, можно использовать запрос

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

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

Для есть почти аббревиатура (на самом деле, функцию можно использовать и с названием колонки в качестве аргумента; в этом случае вычисляется количество записей, в которых соответствующая ячейка непуста). Единственная существенная разница между и состоит в том, что на пустом наборе записей даёт значение , а — ноль.

Удалить запись из таблицы можно командой

Например, наличие уникальных идентификаторов в таблице очень сильно упрощает удаление конкретных записей.

Изменить запись можно командой . Она обычно используется как-то так:

Естественно, в допустимо любое условие.

Более сложные запросы

Как внутри , так и внутри допускаются подзапросы.

Внутри такой подзапрос трактуется естественным образом — как таблица, состоящая из результатов такого запроса. Внутри чаще всего подзапросы встречаются в виде

В случае бинарных операторов «равно», «больше», «меньше», и т.п. подзапрос должен возвращать одну запись. Для оператора подзапрос должен возвращать одну колонку. В этом случае проверяет принадлежность значения результату подзапроса. (Также допускает правым аргументом список значений наподобие , а также — имена таблиц.)

Проверить подзапрос на пустоту можно одним из как минимум двух способов:

Первый из них более гибок, но одновременно и более громоздок.

Теперь полезные приёмы, не касающиеся подзапросов.

Если требуется проверить значение на пустоту, нужно пользоваться выражением , а не , как может показаться на первый взгляд.

Если требуется упорядочить результаты, можно воспользоваться модификаторами или .

Если требуется ограничить количество результатов записями, можно воспользоваться модификатором .

Если требуется для каждого достижимого значения некоторого выражения выдать ровно один результат с таким значением, можно воспользоваться модификатором . Например,

для таблицы

выдаст (в зависимости от фазы луны) одно из двух: либо (1,2) и (2,3), либо (3,2) и (2,3).

Ещё модификатор можно применять для агрегатных запросов. Для каждого достижимого значения выражения выдаётся ровно один результат, в котором агрегатные функции считаются только по записям с одним и тем же значением выражения.

Упражнения

Все упражнения следует выполнять в предположении следующей схемы БД:

  1. Составьте запрос, который выдаёт имена всех людей, у которых есть хотя бы два ребёнка.

  2. Составьте запрос, который выдаёт имена детей всех людей, у которых есть хотя бы два ребёнка. Один и тот же человек не должен находиться в выдаче более одного раза!

  3. Составьте запрос, который выдаёт имена людей вместе с количеством внуков у каждого.

  4. Составьте запрос, который выдаёт имена и возраста всех людей, являющихся внуками тех, у кого более двух детей.

SQLite Учебное пособие

Далее: SQLite Введение

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

Этот учебник покажет вам, как использовать программу SQLite, и позволяет быстро приступить к работе.

Теперь начать обучение SQLite!

Этот учебник поможет новичкам понять SQLite движок базы данных через основы и передовых концепций.

Перед тем, как начать использовать все виды примеров этого руководства на практике, вы должны понимать, что представляет собой базу данных, в частности, СУБД, и что это язык программирования.

Если вы хотите передать SQLite СУБД компиляция / выполнение программы SQL, но у вас нет соответствующих настроек, вы можете получить доступ к compileonline.com . Вам нужно всего лишь простые клики, вы можете испытать реальный опыт программирования на высокопроизводительных серверах. Этот онлайновый инструмент является полностью бесплатным.

Это руководство содержит все важные функции встроенной справочной SQLite руководстве.

SQLite часто используемые функции

В этом руководстве перечислены SQLite базы данных веб-сайтов и книг.

SQLite полезные сайты

  • Главная страница SQLite — SQLite Официальный сайт предоставляет последние SQLite установленная версия, последняя информация и полный учебник SQLite SQLite.

  • SQLite3 PHP — веб — сайт предоставляет полную информацию SQLite PHP поддержку 3 базы данных.

  • Драйвер JDBC SQLite: — SQLite JDBC, с помощью Taro Л.

    Что есть SQLite и как им пользоваться

    Сайто разработал Java для доступа и создания библиотеки SQLite файла базы данных.

  • -0,31 SQLite-DBD — SQLite драйвер Драйвер использует Perl с модулем Perl DBI.

  • 1,625-The DBI — Perl — модуль DBI включает в себя SQLite, включая любую базу данных обеспечивает общий интерфейс.

  • Python SQLite — модуль sqlite3 Python состоит Герхард Haring подготовлен. Это обеспечивает совместимость с 2.0 спецификации интерфейса DB-API SQL.

SQLite полезные книги

Далее: SQLite Введение

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *