ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Удаление данных в MySQL с помощью Perl

Учебник. MySQL и Perl

Описание: в этой статье вы узнаете, как удалять данные в таблице MySQL с помощью Perl DBI.

Вы используете команду DELETE для удаления одной или нескольких строк в таблице. Чтобы удалить все строки в таблице, вы используете оператор DELETE без предложения WHERE. Чтобы более эффективно удалить все строки в большой таблице, используйте оператор TRUNCATE TABLE.

Для удаления строк в связанных таблицах вы используете оператор DELETE JOIN или ссылочное действие ON DELETE CASCADE внешнего ключа.

 

Удаление данных в MySQL с помощью Perl

Чтобы удалить данные в таблице MySQL из программы Perl, вам необходимо выполнить следующие шаги:

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

my $dbh = DBI->connect($dsn,$username,$password, \%attr);

 

Затем, чтобы удалить одну строку из таблицы, вы используете оператор DELETE с предложением WHERE. Вам необходимо поместить заполнители (?) в оператор DELETE, чтобы передать значения из программы в оператор. Заполнители (?) будут заменены значениями.

my $sql = "DELETE FROM table_name WHERE id=?";
my $sth = $dbh->prepare($sql);

 

Затем вызовите метод execute() объекта дескриптора оператора для выполнения запроса. Также необходимо передать аргументы, которые заменяют заполнители в предложении DELETE, методу execute().

$sth->execute($id);

 

После этого отключитесь от базы данных MySQL.

$dbh->disconnect();

 

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

 

Пример удаления данных в MySQL с помощью Perl

Делаем копию таблицы links для демонстрации.

CREATE TABLE clinks
SELECT * FROM links;

 

MySQL создал новую таблицу clinks с такой же структурой и данными, как у таблицы links.

Ниже приводится содержание таблицы clinks:

SELECT * FROM clinks;

 

Следующая программа сначала удаляет ссылку с идентификатором 1, а затем усекает таблицу clinks.

#!/usr/bin/perl
use strict;
use warnings;
use v5.10; # для функции say()

use DBI;

say "Пример удаления данных в MySQL с помощью Perl";

# Конфигурации баз данных MySQL
my $dsn = "DBI:mysql:perlmysqldb";
my $username = "root";
my $password = '';

# подключение к базе данных MySQL
my %attr = (PrintError=>0, RaiseError=>1);

my $dbh = DBI->connect($dsn,$username,$password, \%attr);

# удалить 1 строку с идентификатором 1
# say "Ссылка с идентификатором 1 успешно удалена!" if delete_one_row($dbh,1);

# удалите все строки в таблице clinks
# say "Все ссылки успешно удалены!" if delete_all_rows($dbh);

# отключитесь от базы данных MySQL
$dbh->disconnect();

sub delete_one_row {
# удалить одну строку из таблицы
# $dbh: дескриптор базы данных
# $link_id: идентификатор ссылки, которую нужно удалить
my($dbh,$link_id)  = @_;
my $sql = "DELETE FROM clinks WHERE link_id = ?";
my $sth = $dbh->prepare($sql);
return $sth->execute($link_id);
}

sub delete_all_rows {
# удалите все строки в таблице clinks
my($dbh) = @_;
my $sql = "TRUNCATE TABLE clinks";
my $sth = $dbh->prepare($sql);
return $sth->execute();
}

 

Сначала удалите комментарий вызова к подпрограмме delete_one_row() и запустите программу. Мы получили следующее сообщение:

Пример удаления данных в MySQL с помощью Perl
Ссылка с идентификатором 1 успешно удалена!

 

Проверьте таблицу clinks, чтобы подтвердить удаление:

SELECT * FROM clinks;

 

Во-вторых, закомментируйте вызов подпрограммы delete_on_row(), удалите комментарий вызова к подпрограмме delete_all_rows() и выполните программу:

Пример удаления данных в MySQL с помощью Perl
Все ссылки успешно удалены!

 

Снова запросите таблицу clinks, чтобы проверить операцию с усеченной таблицей:

SELECT * FROM clinks;

 

Он не возвращает строки, как мы ожидали.

В этой статье мы показали, как использовать Perl DBI для удаления данных в таблице базы данных MySQL.

Exit mobile version