SQLite - Perl: руковод начинающих
Здравствуйте, будущие маги баз данных! Я рад быть вашим проводником в этом захватывающем путешеествии в мир SQLite и Perl. Как кто-то, кто teaches计算机科学 на протяжении многих лет, я могу сказать, что это сочетание похоже на арахисовое масло и джем - просто восхитительно! Так что натянем рукава и окунемся с головой!
Установка
Прежде чем мы сможем начать творить магию с базами данных, нам нужно настроить наши инструменты. Представьте это как подготовку кухни перед приготовлением изысканного блюда.
- Во-первых, убедитесь, что у вас установлен Perl на вашей системе. Вы можете проверить это, открыв терминал и набрав:
perl -v
Если вы видите информацию о версии, вы на правильном пути!
- Далее, нам нужно установить модуль 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";
Разберем это:
- Мы начинаем с импорта необходимых модулей.
- Мы указываем драйвер (SQLite) и имя базы данных.
- Мы создаем строку источника данных (DSN).
- Мы используем
DBI->connect()
для установления соединения и сохраняем его в$dbh
. - Если соединение успешное, мы выводим сообщение об успешном открытии.
Создание таблицы
Теперь, когда мы внутри, давайте создадим таблицу для хранения данных. Представьте это как создание новой таблицы в 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";
}
Вот что происходит:
- Мы определяем наш SQL-запрос для создания таблицы с именем COMPANY.
- Мы используем
$dbh->do()
для выполнения запроса. - Мы проверяем, была ли операция успешной, и выводим соответствующее сообщение.
Операция 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";
В этом коде:
- Мы создаем SQL-запрос INSERT.
- Мы выполняем его с помощью
$dbh->do()
. - Если успешно, мы выводим 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";
}
Вот что происходит:
- Мы готовим наш SELECT-запрос с помощью
$dbh->prepare()
. - Мы выполняем запрос с помощью
$sth->execute()
. - Мы используем цикл 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";
}
В этом коде:
- Мы создаем SQL-запрос UPDATE.
- Мы выполняем его с помощью
$dbh->do()
. - Мы проверяем, сколько строк было изменено, и выводим результат.
Операция 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:
- Мы создаем SQL-запрос DELETE.
- Мы выполняем его с помощью
$dbh->do()
. - Мы проверяем, сколько строк было удалено, и выводим результат.
И вот оно! Вы только что научились основам работы с базами данных SQLite с использованием Perl. Помните, что практика makes perfect, так что не бойтесь экспериментировать с этими примерами. Before вы знаете, вы будете создавать сложные приложения с базами данных с легкостью!
Credits: Image by storyset