Perl MySQL Selecionar Dados

Resumo : neste tutorial, mostraremos como consultar dados de tabelas de banco de dados MySQL usando Perl DBI.

Para consultar dados das tabelas do banco de dados MySQL do programa Perl, você usa as seguintes etapas:

  • Conecte-se ao banco de dados MySQL chamando o  connect()método.
  • Prepare uma SELECTinstrução para execução usando o  prepare()método do objeto identificador do banco de dados. O  prepare()método retorna um objeto identificador de instrução que representa uma instrução no banco de dados MySQL.
  • Execute a SELECTinstrução chamando o  execute()método do objeto identificador da instrução.
  • Chame fetchrow_array()ou  método para buscar dados do conjunto de resultados até que não haja mais nenhuma linha fetchrow_arrayref()fetchrow_hashref()Você pode usar a  whileinstrução para iterar o conjunto de resultados.
  • Desconecte-se do banco de dados MySQL.

Exemplos de SELECT Perl MySQL

Usaremos as seguintes tabelas para os exemplos:

Transação Perl MySQL - Tabelas de exemplo

Se você ainda não criou as tabelas, recomendamos fortemente que você as crie seguindo o tutorial de criação de tabelas .

Consultando dados de um exemplo de tabela

O exemplo a seguir seleciona dados da linkstabela:

#!/usr/bin/perl
use strict;
use warnings;
use v5.10; # for say() function

use DBI;

# MySQL database configurations
my $dsn = "DBI:mysql:perlmysqldb";
my $username = "root";
my $password = '';

# connect to MySQL database
my %attr = ( PrintError=>0,  # turn off error reporting via warn()
             RaiseError=>1   # report error via die()
           );
my $dbh = DBI->connect($dsn,$username,$password,\%attr);

# query data from the links table
query_links($dbh);

# disconnect from the MySQL database
$dbh->disconnect();Linguagem de código:  Perl  ( perl )

A lógica principal é implementada na  query_linkssub-rotina:

sub query_links{
  # query from the links table

  my ($dbh) = @_;
  my $sql = "SELECT title,
                    url
             FROM links";
  my $sth = $dbh->prepare($sql);

  # execute the query
  $sth->execute();

  while(my @row = $sth->fetchrow_array()){
     printf("%s\t%s\n",$row[0],$row[1]);
  }       
  $sth->finish();
}Linguagem de código:  Perl  ( perl )

A saída do script é a seguinte:

MySQL Tutorial  http://tutorials.acervolima.com/
Perl MySQL Insert Demo  https://tutorials.acervolima.com/perl-mysql/perl-mysql-insert/
Perl    http://www.perl.org
MySQL   http://www.mysql.com
Comprehensive Perl Archive Network      http://www.cpan.org/Linguagem de código:  JavaScript  ( javascript )

Consultando dados de uma tabela com exemplo de parâmetro

Freqüentemente passamos os valores para a consulta para selecionar dados com base na condição. O exemplo a seguir consulta dados dos  linksdestinos especificados na linkstabela:

sub query_links_by_target{
  # query from the links table by target

  my ($dbh,$target) = @_;
  my $sql = "SELECT title,url,target
             FROM links
             WHERE target = ?";
  my $sth = $dbh->prepare($sql);

  # execute the query
  $sth->execute($target);

  while(my @row = $sth->fetchrow_array()){
     printf("%s\t%s\n",$row[0],$row[1],$row[3]);
  }       
  $sth->finish();
}Linguagem de código:  Perl  ( perl )

Colocamos um ponto de interrogação como espaço reservado na cláusula WHERE da SELECTinstrução. O placeholder será substituído pelo valor que passamos para o  execute()método.

Por exemplo, para selecionar links cujo destino é _self, você chama a sub-rotina da seguinte forma:

query_links_by_target($dbh,'_self');Linguagem de código:  Perl  ( perl )

A saída é:

MySQL Tutorial  http://tutorials.acervolima.com/    _self
MySQL   http://www.mysql.com    _selfLinguagem de código:  JavaScript  ( javascript )

Ou para selecionar links cujo alvo seja _blank, você passa o valor para a  query_links_by_target()sub-rotina da seguinte forma:

query_links_by_target($dbh,'_blank');Linguagem de código:  Perl  ( perl )

A saída é:

Perl MySQL Insert Demo  https://tutorials.acervolima.com/perl-mysql/perl-mysql-insert/      _blank
Perl    http://www.perl.org     _blank
Comprehensive Perl Archive Network      http://www.cpan.org/    _blankLinguagem de código:  JavaScript  ( javascript )

Consultando dados e despejando o conjunto de resultados

O objeto handle de instrução fornece um método conveniente nomeado  dump_results()para exibir o conjunto de resultados rapidamente sem chamar os  fetchrow_*métodos.

O exemplo a seguir seleciona dados da tagstabela e faz dump do conjunto de resultados usando o  dump_results()método:

sub query_tags{
  # query data from the tags table 

  my ($dbh) = @_;
  my $sql = "SELECT * FROM tags";
  my $sth = $dbh->prepare($sql);
  $sth->execute();
  $sth->dump_results( );
  $sth->finish();
}Linguagem de código:  Perl  ( perl )

A saída é:

'1', 'Perl'
1 rowsLinguagem de código:  JavaScript  ( javascript )

Consultando dados de várias tabelas

O script a seguir seleciona dados de três tabelas: linkse tagstabelas  link_tagsusando uma SELECTinstrução com cláusulas INNER JOIN .

sub query_all{
  # query data from links, tags, link_tags tables
  my ($dbh) = @_;

  my $sql = "SELECT title, url, target,tag
             FROM link_tags
             INNER JOIN links ON links.link_id = link_tags.link_id
             INNER JOIN tags  ON tags.tag_id = link_tags.tag_id";

  my $sth = $dbh->prepare($sql);

  $sth->execute();

  while(my $array_ref = $sth->fetchrow_arrayref()){
    printf("%s\t%s\t%s\t%s\n", $array_ref->[0],
                             $array_ref->[1],
                             $array_ref->[2],
                             $array_ref->[3]);
  }
  $sth->finish();
}Linguagem de código:  Perl  ( perl )

Neste exemplo, usamos o  fetchrow_arrayref()método para buscar dados do conjunto de resultados. O  fetchrow_arrayref()método retorna uma referência a um array em vez de um array em si. O  fetchrow_arrayref()método não copia dados em um novo array para cada linha no conjunto de resultados como o  fetchrow_array()método, portanto, é mais rápido que o  fetchrow_array()método.

A seguir está a saída do script:

Comprehensive Perl Archive Network      http://www.cpan.org/    _blank  PerlLinguagem de código:  JavaScript  ( javascript )

Obtivemos 1 linha porque há apenas uma linha na  link_tagstabela.

Neste tutorial, você aprendeu várias maneiras de consultar dados das tabelas do banco de dados MySQL usando a API Perl DBI.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *