WEB开发网
开发学院数据库MySQL Mysql入门系列:Perl DBI基础(2) 阅读

Mysql入门系列:Perl DBI基础(2)

 2006-12-31 10:49:46 来源:WEB开发网   
核心提示:如果使用fetchrow_hashref( ),请记住下列警告:如果性能很重要,Mysql入门系列:Perl DBI基础(2),则fetchrow_hashref( ) 并不是最好的选择,因为它没有fetchrow_array( ) 或fetchrow_arrayref( ) 的效率高,3. 提取单行的结果如果结果集只

如果使用fetchrow_hashref( ),请记住下列警告:

如果性能很重要,则fetchrow_hashref( ) 并不是最好的选择,因为它没有fetchrow_array( ) 或fetchrow_arrayref( ) 的效率高。

作为散列键值使用的列名具有与SELECT 语句中写出时相同的字符。在MySQL中,列名不区分大小写,所以此查询也是这样,不管以大写字母还是小写字母给出列名,查询结果都是一样的。但是Perl 散列索引名是区分大小写的,这可能会带来一些问题。为了避免潜在的大小写不匹配问题,可通过传递NAME_lc 或NAME_uc 属性,告知fetchrow_hashref( ) 强迫列名为大写或小写:

散列对每个唯一的列名含有一个元素。如果正在执行从多个具有重叠名称的表中返回列的连接,则不能访问所有的列值。例如,如果发布下面的查询, fetchrow_hashref( )将返回只有一个元素的散列:

SELECT a.name FROM a,b WHERE a.name=b.name

2. 确定查询返回的行数

如何知道SELECT 或类似于SELECT 的查询返回的行数?一种方法是,当提取它们时,计算这些行的数量。实际上,这是知道SELECT 查询返回多少行的唯一方便的方法。使用MySQL驱动程序,可以在调用execute( ) 后利用语句句柄调用rows( ) 方法,但是这对其他数据库引擎并不方便。而且即使就MySQL来说,如果已经设置了mysql_use_result 属性,rows( ) 也不能返回正确的结果,直到提取了所有行(有关的详细信息,请参阅附录G)。所以只能如提取行一样对它们进行计数。

3. 提取单行的结果

如果结果集只含单个行,则不需要运行循环来获得结果。假设要编写得出历史同盟成员当前数量的脚本count _ member s。完成查询的代码如下所示:

1 2 3 4 5 6  下一页

Tags:Mysql 入门 系列

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接