SQLite - Perl: руковод начинающих

Здравствуйте, будущие маги баз данных! Я рад быть вашим проводником в этом захватывающем путешеествии в мир SQLite и Perl. Как кто-то, кто teaches计算机科学 на протяжении многих лет, я могу сказать, что это сочетание похоже на арахисовое масло и джем - просто восхитительно! Так что натянем рукава и окунемся с головой!

SQLite - Perl

Установка

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

  1. Во-первых, убедитесь, что у вас установлен Perl на вашей системе. Вы можете проверить это, открыв терминал и набрав:
perl -v

Если вы видите информацию о версии, вы на правильном пути!

  1. Далее, нам нужно установить модуль DBI (Интерфейс базы данных) и драйвер SQLite. Откройте ваш терминал и наберите:
cpan install DBI
cpan install DBD::SQLite

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

Интерфейс API DBI

Теперь, когда у нас готовыingredient, давайте посмотрим на книгу рецептов - интерфейс API DBI. Это функции, которые мы будем использовать для взаимодействия с нашей базой данных SQLite.

Вот таблица самых распространенных методов DBI, которые мы будем использовать:

Метод Описание
connect() Устанавливает соединение с базой данных
prepare() Подготавливает SQL-запрос для выполнения
execute() Выполняет подготовленный запрос
fetch() Получает строку данных из select-запроса
disconnect() Закрывает соединение с базой данных

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

Соединение с базой данных

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

#!/usr/bin/perl
use strict;
use warnings;
use DBI;

my $driver   = "SQLite";
my $database = "test.db";
my $dsn = "DBI:$driver:dbname=$database";
my $userid = "";
my $password = "";

my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 })
or die $DBI::errstr;

print "Opened database successfully\n";

Разберем это:

  1. Мы начинаем с импорта необходимых модулей.
  2. Мы указываем драйвер (SQLite) и имя базы данных.
  3. Мы создаем строку источника данных (DSN).
  4. Мы используем DBI->connect() для установления соединения и сохраняем его в $dbh.
  5. Если соединение успешное, мы выводим сообщение об успешном открытии.

Создание таблицы

Теперь, когда мы внутри, давайте создадим таблицу для хранения данных. Представьте это как создание новой таблицы в Excel.

my $stmt = qq(CREATE TABLE COMPANY
(ID INT PRIMARY KEY     NOT NULL,
NAME           TEXT    NOT NULL,
AGE            INT     NOT NULL,
ADDRESS        CHAR(50),
SALARY         REAL););

my $rv = $dbh->do($stmt);
if($rv < 0) {
print $DBI::errstr;
} else {
print "Table created successfully\n";
}

Вот что происходит:

  1. Мы определяем наш SQL-запрос для создания таблицы с именем COMPANY.
  2. Мы используем $dbh->do() для выполнения запроса.
  3. Мы проверяем, была ли операция успешной, и выводим соответствующее сообщение.

Операция INSERT

Пора добавить данные в нашу таблицу. Это как заполнение строк нашей таблицы.

my $stmt = qq(INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Paul', 32, 'California', 20000.00 ));

my $rv = $dbh->do($stmt) or die $DBI::errstr;
print "Records created successfully\n";

В этом коде:

  1. Мы создаем SQL-запрос INSERT.
  2. Мы выполняем его с помощью $dbh->do().
  3. Если успешно, мы выводим confirm-сообщение.

Операция SELECT

Теперь давайте получим наши данные. Это как чтение информации из нашей таблицы.

my $stmt = qq(SELECT id, name, address, salary from COMPANY;);
my $sth = $dbh->prepare( $stmt );
my $rv = $sth->execute() or die $DBI::errstr;

if($rv < 0) {
print $DBI::errstr;
}

while(my @row = $sth->fetchrow_array()) {
print "ID = ". $row[0] . "\n";
print "NAME = ". $row[1] ."\n";
print "ADDRESS = ". $row[2] ."\n";
print "SALARY = ". $row[3] ."\n\n";
}

Вот что происходит:

  1. Мы готовим наш SELECT-запрос с помощью $dbh->prepare().
  2. Мы выполняем запрос с помощью $sth->execute().
  3. Мы используем цикл while с $sth->fetchrow_array() для получения и вывода каждой строки.

Операция UPDATE

Иногда нам нужно изменить наши данные. Это как редактирование ячейки в нашей таблице.

my $stmt = qq(UPDATE COMPANY set SALARY = 25000.00 where ID=1;);
my $rv = $dbh->do($stmt) or die $DBI::errstr;

if( $rv < 0 ) {
print $DBI::errstr;
} else {
print "Total number of rows updated : $rv\n";
}

В этом коде:

  1. Мы создаем SQL-запрос UPDATE.
  2. Мы выполняем его с помощью $dbh->do().
  3. Мы проверяем, сколько строк было изменено, и выводим результат.

Операция DELETE

Наконец, давайте научимся удалять данные. Это как удаление строки из нашей таблицы.

my $stmt = qq(DELETE from COMPANY where ID=2;);
my $rv = $dbh->do($stmt) or die $DBI::errstr;

if( $rv < 0 ) {
print $DBI::errstr;
} else {
print "Total number of rows deleted : $rv\n";
}

Этот код follows то же шаблон, что и наша операция UPDATE:

  1. Мы создаем SQL-запрос DELETE.
  2. Мы выполняем его с помощью $dbh->do().
  3. Мы проверяем, сколько строк было удалено, и выводим результат.

И вот оно! Вы только что научились основам работы с базами данных SQLite с использованием Perl. Помните, что практика makes perfect, так что не бойтесь экспериментировать с этими примерами. Before вы знаете, вы будете создавать сложные приложения с базами данных с легкостью!

Credits: Image by storyset