Описание: в этой статье вы узнаете, как удалять данные в таблице MySQL с помощью Perl DBI.
Вы используете команду DELETE для удаления одной или нескольких строк в таблице. Чтобы удалить все строки в таблице, вы используете оператор DELETE без предложения WHERE. Чтобы более эффективно удалить все строки в большой таблице, используйте оператор TRUNCATE TABLE.
Для удаления строк в связанных таблицах вы используете оператор DELETE JOIN или ссылочное действие ON DELETE CASCADE внешнего ключа.
Чтобы удалить данные в таблице 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();
Наконец, вы можете отобразить сообщение, чтобы указать, что строка была успешно удалена.
Делаем копию таблицы 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.