Статьи

Начало работы с SQLite3 — Основные команды

SQLite — это библиотека C, которая реализует ядро ​​базы данных SQL. Это система управления реляционными базами данных (или RDBMS). Большинство баз данных SQL работают с моделью клиент / сервер. Возьмите MySQL для примера. Для ввода и получения данных из базы данных MySQL необходимо отправить запрос на сервер MySQL, который при получении предоставит вам соответствующий ответ. В отличие от MySQL, базы данных SQLite работают непосредственно с диска. Нет необходимости создавать запросы к серверу.

SQLite370.svg (Custom)

Установка

Мы будем работать с нашей базой данных, используя интерфейс командной строки sqlite3 1 (CLI). Мы будем работать на платформе Linux. CLI sqlite3 для MAC OS и Windows — это то же самое, но для согласованности рекомендуется установить Homestead Improved — легковесную виртуальную машину, запускаемую за 5 минут, которая обеспечит чистоту вашего компьютера от ненужного программного обеспечения.

Чтобы установить его на Homestead Improved (или на любую ОС на базе Debian, например Ubuntu), выполните следующее:

sudo apt-get install sqlite3 libsqlite3-dev 

Это установит sqlite3 . Чтобы установить его на другие платформы, следуйте их официальным инструкциям . После установки мы можем начать сеанс. Откройте терминал / командную строку и введите команду sqlite3 . Вы должны увидеть что-то в этом роде:

CLI sqlite3

Вторая строка говорит вам ввести .help для инструкций. Вам будет предложено ввести команду. Так что давай и введите .help . Это даст вам список мета-команд и их описания.

Мета Команды

Мета-команды используются для определения формата вывода для таблиц, проверки баз данных и других административных операций. Они всегда начинаются с точки . Даже .help является мета-командой. Вы можете пройти через список. Вот некоторые, которые часто пригодятся:

команда Описание
.Показать Отображает текущие настройки для различных параметров
.databases Предоставляет имена и файлы базы данных
.уволиться Выйти из программы sqlite3
.tables Показать текущие таблицы
.schema Показать схему таблицы
.header Показать или скрыть заголовок выходной таблицы
.Режим Выберите режим для выходной таблицы
.dump Дамп базы данных в текстовом формате SQL

Стандартные Команды

Давайте рассмотрим стандартные команды в sqlite3. Мета-команды выдаются для проверки базы данных. Стандартные команды SQL выдаются для работы с базой данных. Стандартные команды можно разделить на три группы:

  • Язык определения данных : обеспечивает структуру хранения и методы для доступа к данным из системы базы данных.

  • Язык манипулирования данными : позволяет пользователям манипулировать (добавлять / изменять / удалять) данными.

  • Data Query Language : позволяет пользователям получать необходимые данные из базы данных.

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

Базы данных SQLite — это кроссплатформенные переносимые файлы . Они могут храниться на различных устройствах хранения и могут передаваться на разные компьютеры.

Мы научимся работать с sqlite3 с нашей базой данных Секции комментариев . Почти каждый сайт сегодня имеет раздел комментариев. Чтобы оставить комментарий, пользователь должен ввести следующие данные:

  • имя
  • Эл. адрес
  • Интернет сайт
  • Комментарий

Из четырех из них, только URL сайта не является обязательным. Мы также должны определить столбец, который нумерует комментарии. Давайте назовем это post_id .

Мы можем определить типы данных столбцов (атрибутов) следующим образом:

атрибут Тип данных Обязательный
post_id INTEGER
имя ТЕКСТ
Эл. адрес ТЕКСТ
URL веб-сайта ТЕКСТ
комментарий ТЕКСТ

Вы можете увидеть документацию по различным типам данных и классам хранения, представленным в SQLite3.

SQLite3 использует Manifest Typing 2 . Большинство других механизмов баз данных, включая MySQL, используют статическую типизацию.

Теперь давайте создадим базу данных. Если вы все еще находитесь в программе .quit из нее, введя .quit в приглашении sqlite. Затем выполните команду:

 sqlite3 comment_section.db 

Это создаст файл базы данных comment_section.db в текущем рабочем каталоге.

Примечание. Если после команды не указано имя файла, sqlite3 автоматически создает временную базу данных. Это то, что произошло, когда мы впервые ввели единственную команду sqlite3.

СОЗДАТЬ СТОЛ

Для хранения комментариев мы должны определить таблицу. Давайте назовем это comments . Чтобы создать его, введите оператор:

 CREATE TABLE comments ( post_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT NOT NULL, website_url TEXT NULL, comment TEXT NOT NULL ); 

NOT NULL гарантирует, что конкретное значение не останется пустым в записи. PRIMARY KEY 3 и AUTOINCREMENT 4 развивают атрибут post_id .

Чтобы проверить, была ли таблица создана, .tables команду meta .tables . Будет отображаться название таблицы comments .

Create Table comments

Примечание: чтобы получить схему таблицы, введите .schema comments

Теперь, когда таблица создана, нам нужно ввести данные.

Вставить строки

Предположим, что пользователь ввел комментарий с деталями:

 

Чтобы вставить его, мы используем команду INSERT .

 INSERT INTO comments ( name, email, website_url, comment ) VALUES ( , 'xyz@gmail.com', 'shivammg.blogspot.com', 'Great tutorial for beginners.' ); 

Я не предоставил значение для post_id , даже если оно определено как NOT NULL . Дело в том, что это не нужно, потому что это поле AUTOINCREMENT .

Введите еще несколько строк в таблицу для практики.

ВЫБРАТЬ

Мы научились вставлять данные в таблицу. Для извлечения данных мы используем команду SELECT .

 SELECT post_id, name, email, website_url, comment FROM comments; 

Вышеприведенное утверждение также может быть записано как:

 SELECT * FROM comments; 

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

Введите .show

show

Чтобы отобразить атрибуты столбца, введите .headers ON .
Чтобы отобразить строки в стиле столбца, введите .mode column .
Введите оператор SELECT снова.

Column Display

Примечание. Выберите режим отображения, который вам подходит. Введите .help и найдите .mode . Вам будут показаны различные значения .mode может иметь.

ОБНОВИТЬ

Предположим, что электронная почта для «Shivam Mamgain» была изменена на «zyx@email.com». Нам нужно обновить строку. Сделайте следующее заявление:

 UPDATE comments SET email = 'zyx@email.com' WHERE name = ; 

Это изменит адрес электронной почты для имени «Shivam Mamgain» на «zyx@email.com».

Примечание. Атрибут name не является уникальным, поэтому приведенный выше оператор может влиять на несколько строк. Для каждого имени = ‘Shivam Mamgain’ адрес электронной почты будет установлен на ‘zyx@email.com’. Чтобы обновить конкретную строку, используйте атрибут post_id . Он определяется как PRIMARY KEY и всегда будет уникальным.

УДАЛЯТЬ

Чтобы УДАЛИТЬ строки из таблицы, мы можем использовать условие WHERE , как в UPDATE .

Предположим, нам нужно удалить строку с post_id 9. Мы можем ввести команду:

 DELETE FROM comments WHERE post_id = 9; 

Нам нужно удалить все комментарии, которые опубликовали «Барт Симпсон» и «Гомер Симпсон». Мы можем выполнить следующий запрос:

 DELETE FROM comments WHERE name = 'Bart Simpson' OR name = 'Homer Simpson'; 

ALTER

Новые столбцы могут быть добавлены в таблицу с помощью ALTER . В Интернете большинство людей не обязательно используют свое настоящее имя. Они обычно работают под псевдонимом, именем пользователя . Нам нужно добавить имя пользователя столбца в нашу таблицу. Запрос ниже выполняет задачу:

 ALTER TABLE comments ADD COLUMN username TEXT; 

Это создаст имя пользователя столбца в comments и установит его тип данных в TEXT. Значение имени пользователя для уже вставленных строк будет установлено в NULL.

Команда ALTER также используется для переименования таблиц. Давайте изменим таблицу comments на Coms .

 ALTER TABLE comments RENAME TO Coms; 

DROP

Удаление таблицы означает удаление всей таблицы. Таблицу Coms можно удалить с помощью следующего запроса:

 DROP TABLE Coms; 

Вывод

SQLite3 предлагает много преимуществ по сравнению с другими реляционными базами данных. Некоторые из его отличительных особенностей можно прочитать здесь . Большинство PHP-фреймворков и многих других веб-фреймворков, включая Django , Ruby on Rails и web2py, используют SQLite3 в качестве базы данных по умолчанию. Легкость делает его предпочтительным для локального хранения в веб-браузерах. Он также используется в качестве клиентского хранилища для многих операционных систем, включая Android и Windows Phone 8 . Это один из наиболее широко используемых механизмов баз данных.

В этом уроке мы взаимодействовали с системой баз данных SQLite. Есть приложения с графическим интерфейсом, которые делают то же самое, без необходимости изучать команды. Два таких приложения — это браузер БД для SQLite и SQLiteStudio . Вы также можете практиковать SQL онлайн в SQL Fiddle .

В этом руководстве описаны основы, с которых можно начать работу с SQLite3. Я надеюсь, что это соблазнит вас пойти дальше. Вы можете легко интегрировать его с PHP, используя общий класс PDO .


  1. sqlite версия 3 ↩
  2. Манифестная типизация снимает много ограничений на тип значения, которое можно ввести для определенного поля. Это позволяет вводить любое значение любого типа данных в столбец, независимо от объявленного типа столбца (кроме INTEGER PRIMARY KEY ). От вас даже не требуется указывать максимальный размер для типов данных. После того, как пользователь вводит данные, SQLite определяет размер, который ему потребуется на диске. Чтобы получить более глубокое понимание, обратитесь к типам данных в SQLite3 . ↩
  3. PRIMARY KEY может однозначно определить конкретную строку. Такой атрибут всегда должен быть определен как NOT NULL . ↩
  4. AUTOINCREMENT автоматически устанавливает соответствующий атрибут текущей вставленной записи в число, равное единице, плюс значение AUTOINCREMENT (если не указано иное). Определенные атрибуты INTEGERS обязательно должны быть INTEGERS . ↩