摘要:在本教程中,我们将向您展示如何使用 Perl DBI API 在 MySQL 数据库中创建表。
Perl MySQL建表步骤
在对数据库执行任何其他操作(例如插入、更新、删除和查询数据)之前,您需要创建新表来存储数据。
要创建新表,请使用以下步骤:
- 连接到 MySQL 数据库。
- 通过调用数据库句柄对象的
do()
方法来执行CREATE TABLE 语句。 - 断开与 MySQL 数据库的连接。
Perl MySQL 创建表示例
我们将在perlmysqldb
示例数据库中创建三个表:
- links :存储 URL,包括 link_id、标题、URL 和目标。
- Tags :存储链接的标签,包括 tag_id 和 tag。
- link_tags :存储links和tags表之间的关系,包含两个字段link_id和tag_id。
下图说明了这些表:
以下是创建表的 Perl 脚本:
#!/usr/bin/perl
use strict;
use warnings;
use v5.10; # for say() function
use DBI;
say "Perl MySQL Create Table 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);
# create table statements
my @ddl = (
# create tags table
"CREATE TABLE tags (
tag_id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
tag varchar(255) NOT NULL
) ENGINE=InnoDB;",
# create links table
"CREATE TABLE links (
link_id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
title varchar(255) NOT NULL,
url varchar(255) NOT NULL,
target varchar(45) NOT NULL
) ENGINE=InnoDB;",
# create link_tags table
"CREATE TABLE link_tags (
link_id int(11) NOT NULL,
tag_id int(11) NOT NULL,
PRIMARY KEY (link_id,tag_id),
KEY fk_link_idx (link_id),
KEY fk_tag_idx (tag_id),
CONSTRAINT fk_tag FOREIGN KEY (tag_id)
REFERENCES tags (tag_id),
CONSTRAINT fk_link FOREIGN KEY (link_id)
REFERENCES links (link_id)
) ENGINE=InnoDB"
);
# execute all create table statements
for my $sql(@ddl){
$dbh->do($sql);
}
say "All tables created successfully!";
# disconnect from the MySQL database
$dbh->disconnect();
Code language: Perl (perl)
怎么运行的。
- 首先,使用
connect()
方法创建到perlmysqldb
数据库的连接。 - 接下来,定义一个包含三个
CREATE TABLE
语句的数组@ddl
。 - 然后,调用数据库句柄对象的
do()
方法来执行循环内的每个CREATE TABLE
语句。我们经常使用do()
方法来执行不返回结果集的非 select 语句。 - 之后,显示一条消息,表明所有表已成功创建。
- 最后,断开与数据库的连接。
脚本的输出如下:
Perl MySQL Create Table Demo
All tables created successfully!
现在,您可以检查perlmysqldb
数据库来验证表是否已成功创建。
在本教程中,您学习了如何使用数据库句柄对象的do()
方法从 Perl 程序在 MySQL 数据库中创建新表。
本教程有帮助吗?