1. 结构化查询语句(SQL)
Sql命令 | 说明 |
SELECT | 从一个或多个表中选择字段 |
FROM | 指定从那个表里取字段。每个SELECT命令必带。 |
WHERE | 指定选择数据记录的标准 |
ORDER BY | 指定记录的排列标准(ASC或DESC) |
INSERT INTO | 把值插入一个或多个表里 |
UPDATE | 更新一个或多个的数据 |
2. DBI概述
perl数据库接口(DBI)提供了从perl程序访问关系型数据库的手段。
DBI使用一种面向对象的接口。DBI对象被称为句柄。有3种不同的句柄类型——驱动程序句柄、数据库句柄和语句句柄。驱动程序句柄把数据库的驱动程序封装起来,但它们很少用于脚本。数据库句柄把一个对数据库的特定连接封装起来,他们用于把SQL语句发送到数据库。语句句柄则封装特定的SQL语句和从SQL语句返回的结果。一个驱动程序句柄可以创建任意数目的数据库句柄,而一个数据库句柄可以创建任意数目的语句句柄。
3. DBI运用
Ø 要创建一个数据库的连接,必须把数据源的名字传递给connect方法。connect方法能通过数据源的名字来判断在哪里可以找到需要的数据库。为ODBC数据库构建数据源名的格式如下:
接口名:数据库驱动:数据源名字
方法connect使用3个参数,第一个参数就是上面所说的数据源名,第二个参数为用户名,第三个参数为数据库口令。例如:
$dbh = DBI -> connect ( “DBI:ODBC:employeeDB” , “” , “”)
Ø prepare方法创建语句句柄。prepare方法为语句准备数据库驱动程序,以后程序就可以多次执行这条语句。SQL查询作为字符串被传递到prepare方法中。例如:
$sth = $dbh -> prepare ( q { SELECT * FROM employee })
Ø 用prepare方法准备好语句之后,在处理结果之前,必须执行查询语句。通过调用语句句柄execute方法来实现。查询结果集存储在语句句柄中。通过调用方法fetchrow_array,把结果集中的每一行记录从对象中检索出来,再放到一个数组中。
$rc = $sth -> execute ()
while ( @array = $sth -> fetchrow_array() )
函数名 | 返回类型 | 说明 |
fetchrow_array | 数组 | 返回数组中的一行 |
fetchrow_arrayref | 数组引用 | 返回一个数组引用中的一行 |
fetchrow_hashref | 散列引用 | 返回散列引用中的一行,同时附有字段名-值对。 |
fetchall_arrayref | 数组引用 | 返回一个数组引用中的整个结果集。数组中包括对容纳数据行的数组的引用。 |
Ø 无论是行数据取完,还是取数据时发生错误,这两种情况都会导致方法fetchrow_array返回false,所以在循环结束时要检查错误类型。如果错误确实是发生在取数据时,$DBI::err就会被定义。
warn ( $DBI::errstr ) if $DBI::err
Ø 一旦结束数据库连接,就调用disconnect方法将其关闭。
Ø 如果不需要从语句句柄中取出所有的数据,那么在取完所需数据后,就应该调用方法finish表示结束。当结果集中所有数据都取出来后,程序自动调用方法finish。
4. 用DBI操作一个数据库
Ø 把一个散列表引用作为第四个参数传递给connect方法,这样就可以使错误检查自动执行。在散列表中,把RaiseError设为1,这样在发生错误时,就可以调用带有一条错误消息的die函数。如果程序出错时,不希望程序调用die函数并中止程序运行,那么可以用PrintError代替RaiseError。这样,在出现错误时,就会调用函数warn发出警告,而不是调用函数die中止程序运行。
Ø 在数据库中删除和修改记录的办法与插入类似。只需在执行do方法时,用相应的SQL语句为参数。
Ø DBI提供一些工具函数,使用户能够判断出来,用户编写的程序所运行的那台计算机提供何种数据库支持。这些工具函数有available_drivers和data_sources。函数available_drivers返回当前可用的数据库驱动程序(DBD)。函数data_soources返回在系统注册过的数据库。
Ø 要通过DBI来使用MySQL数据库,必须有MySQL数据库驱动程序DBD::mysql
Ø 创建一张表的sql语句是:
CREATE TABLE TableName ( ColumnName type modifiers, ColumnName type modifiers …)
Ø VARCHAR类型把字段中的数据指定为变长的文本。跟在类型后面圆括号里的数字表示该字段中数据的最大字符数。
Ø 类型ENUM是指枚举类型,表示可以从指定的一系列选项中使用其中的一个,放入该字段中。这些选项就位于跟在关键字ENUM后面的括号内,以逗号隔开。
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>