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数据库表中的数据。