摘要:在本教程中,您将学习如何使用 Perl DBI 删除 MySQL 表中的数据。
您可以使用DELETE 语句删除表中的一行或多行。要删除表中的所有行,请使用不带WHERE 子句的DELETE
语句。要更有效地删除大表中的所有行,可以使用TRUNCATE TABLE 语句。
要删除相关表中的行,可以使用DELETE JOIN 语句或外键的ON DELETE CASCADE引用操作。
Perl MySQL删除数据步骤
要从Perl程序中删除MySQL表中的数据,需要使用以下步骤:
首先,使用connect()
方法连接MySQL数据库:
my $dbh = DBI->connect($dsn,$username,$password, \%attr);
Code language: Perl (perl)
接下来,要从表中删除一行,请使用带有WHERE
子句的DELETE
语句。您需要在DELETE
语句中放置占位符 ( ?
),以便将值从程序传递到语句。占位符 (?) 将被值替换。
my $sql = "DELETE FROM table_name WHERE id=?";
my $sth = $dbh->prepare($sql);
Code language: Perl (perl)
然后,调用语句句柄对象的execute()
方法来执行查询。您还需要将替换DELETE
语句中占位符的参数传递给execute()
方法。
$sth->execute($id);
Code language: Perl (perl)
之后,断开与 MySQL 数据库的连接。
$dbh->disconnect();
Code language: Perl (perl)
最后,您可以显示一条消息来指定该行已成功删除。
Perl MySQL 删除数据示例
我们制作links
表的副本以供演示。
CREATE TABLE clinks
SELECT * FROM links;
Code language: SQL (Structured Query Language) (sql)
MySQL 创建了一个名为clinks
的新表,其结构和数据与links
表相同。
以下是clinks
表的内容:
SELECT * FROM clinks;
Code language: SQL (Structured Query Language) (sql)
以下程序首先删除 id 为 1 的链接,然后截断clinks
表。
#!/usr/bin/perl
use strict;
use warnings;
use v5.10; # for say() function
use DBI;
say "Perl MySQL Delete Data Demo";
# MySQL database configurations
my $dsn = "DBI:mysql:perlmysqldb";
my $username = "root";
my $password = '';
# connect to MySQL database
my %attr = (PrintError=>0, RaiseError=>1);
my $dbh = DBI->connect($dsn,$username,$password, \%attr);
# delete 1 row with id 1
# say "Link with id 1 deleted successfully!" if delete_one_row($dbh,1);
# delete all rows in the clinks table
# say "All links deleted successfully!" if delete_all_rows($dbh);
# disconnect from the MySQL database
$dbh->disconnect();
sub delete_one_row {
# delete one row from table
# $dbh: database handle
# $link_id: id of the link that need to delete
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 {
# delete all rows in the clinks table
my($dbh) = @_;
my $sql = "TRUNCATE TABLE clinks";
my $sth = $dbh->prepare($sql);
return $sth->execute();
}
Code language: Perl (perl)
首先,删除对delete_one_row()
子例程的调用的注释并执行该程序。我们收到以下消息:
Perl MySQL Delete Data Demo
Link with id 1 deleted successfully!
Code language: JavaScript (javascript)
检查clinks
表以验证删除:
SELECT * FROM clinks;
Code language: SQL (Structured Query Language) (sql)
其次,注释对delete_on_row()
子例程的调用,删除对delete_all_rows()
子例程的调用的注释,并执行程序:
Perl MySQL Delete Data Demo
All links deleted successfully!
再次查询clinks
表来验证 truncate table 操作:
SELECT * FROM clinks;
Code language: SQL (Structured Query Language) (sql)
它没有按预期返回行。
在本教程中,您学习了如何使用 Perl DBI 删除 MySQL 数据库表中的数据。