Perl MySQL删除数据
时间:2019-11-20 08:52:38 来源:igfitidea点击:
简介:在本教程中,您将学习如何使用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);
接下来,要从表中删除一行,请使用带有WHERE子句的DELETE语句。
您需要将占位符(?)放在DELETE语句中,以便将值从程序传递到该语句。
占位符(?)将替换为值。
my $sql = "DELETE FROM table_name WHERE id=?"; my $sth = $dbh->prepare($sql);
然后,调用语句句柄对象的execute()方法执行查询。
您还需要将替换DELETE语句中占位符的参数传递给execute()方法。
$sth->execute($id);
之后,断开与MySQL数据库的连接。
$dbh->disconnect();
最后,您可以显示一条消息以指定该行已成功删除。
Perl MySQL删除数据示例
我们为演示制作了链接表的副本。
CREATE TABLE clinks SELECT * FROM links;
MySQL创建了一个名为clinks的新表,该表的结构和数据与links表相同。
以下是clinks表的内容:
SELECT * FROM clinks;
以下程序首先删除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();
}
首先,删除对delete_one_row()子例程的调用的注释并执行程序。
我们收到以下消息:
Perl MySQL Delete Data Demo Link with id 1 deleted successfully!
检查clinks表以确认删除:
SELECT * FROM clinks;
其次,注释对delete_on_row()子例程的调用,删除对delete_all_rows()子例程的调用的注释,然后执行程序:
Perl MySQL Delete Data Demo All links deleted successfully!
再次查询clinks表以验证截断表操作:
SELECT * FROM clinks;
它不返回任何行,正如我们期望的那样。
在本教程中,我们向您展示了如何使用Perl DBI删除MySQL数据库表中的数据。

