MySQL - Selecione Consulta

O SQL SELECTcomando é usado para buscar dados do banco de dados MySQL. Você pode usar este comando no prompt mysql> assim como em qualquer script como PHP.

Sintaxe

Aqui está a sintaxe SQL genérica do comando SELECT para buscar dados da tabela MySQL -

SELECT field1, field2,...fieldN 
FROM table_name1, table_name2...
[WHERE Clause]
[OFFSET M ][LIMIT N]
  • Você pode usar uma ou mais tabelas separadas por vírgula para incluir várias condições usando uma cláusula WHERE, mas a cláusula WHERE é uma parte opcional do comando SELECT.

  • Você pode buscar um ou mais campos em um único comando SELECT.

  • Você pode especificar asterisco (*) no lugar dos campos. Nesse caso, SELECT retornará todos os campos.

  • Você pode especificar qualquer condição usando a cláusula WHERE.

  • Você pode especificar um deslocamento usando OFFSETde onde SELECT começará a retornar registros. Por padrão, o deslocamento começa em zero.

  • Você pode limitar o número de devoluções usando o LIMIT atributo.

Buscando dados de um prompt de comando

Isso usará o comando SQL SELECT para buscar dados da tabela MySQL tutorials_tbl.

Exemplo

O exemplo a seguir retornará todos os registros do tutorials_tbl mesa -

root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_tbl 
+-------------+----------------+-----------------+-----------------+
| tutorial_id | tutorial_title | tutorial_author | submission_date |
+-------------+----------------+-----------------+-----------------+
|           1 | Learn PHP      | John Poul       | 2007-05-21      |
|           2 | Learn MySQL    | Abdul S         | 2007-05-21      |
|           3 | JAVA Tutorial  | Sanjay          | 2007-05-21      |
+-------------+----------------+-----------------+-----------------+
3 rows in set (0.01 sec)

mysql>

Buscando dados usando um script PHP

Você pode usar o mesmo comando SQL SELECT em uma função PHP mysql_query(). Esta função é usada para executar o comando SQL e depois outra função PHPmysql_fetch_array()pode ser usado para buscar todos os dados selecionados. Esta função retorna a linha como uma matriz associativa, uma matriz numérica ou ambos. Esta função retorna FALSE se não houver mais linhas.

O programa a seguir é um exemplo simples que mostrará como buscar / exibir registros do tutorials_tbl mesa.

Exemplo

O bloco de código a seguir exibirá todos os registros da tabela tutorials_tbl.

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date FROM tutorials_tbl';

   mysql_select_db('TUTORIALS');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }
   
   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
      echo "Tutorial ID :{$row['tutorial_id']}  <br> ".
         "Title: {$row['tutorial_title']} <br> ".
         "Author: {$row['tutorial_author']} <br> ".
         "Submission Date : {$row['submission_date']} <br> ".
         "--------------------------------<br>";
   } 
   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

O conteúdo das linhas é atribuído à variável $ row e os valores dessa linha são impressos.

NOTE - Lembre-se sempre de colocar colchetes quando quiser inserir um valor de array diretamente em uma string.

No exemplo acima, a constante MYSQL_ASSOC é usado como o segundo argumento para a função PHP mysql_fetch_array(), para que ele retorne a linha como uma matriz associativa. Com uma matriz associativa, você pode acessar o campo usando seu nome em vez de usar o índice.

PHP fornece outra função chamada mysql_fetch_assoc(), que também retorna a linha como uma matriz associativa.

Exemplo

O exemplo a seguir para exibir todos os registros da tabela tutorial_tbl usando a função mysql_fetch_assoc ().

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);
   
   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   
   $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date
      FROM tutorials_tbl';

   mysql_select_db('TUTORIALS');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }
   
   while($row = mysql_fetch_assoc($retval)) {
      echo "Tutorial ID :{$row['tutorial_id']}  <br> ".
         "Title: {$row['tutorial_title']} <br> ".
         "Author: {$row['tutorial_author']} <br> ".
         "Submission Date : {$row['submission_date']} <br> ".
         "--------------------------------<br>";
   } 
   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

Você também pode usar a constante MYSQL_NUMcomo o segundo argumento para a função PHP mysql_fetch_array (). Isso fará com que a função retorne um array com o índice numérico.

Exemplo

Experimente o seguinte exemplo para exibir todos os registros da tabela tutorials_tbl usando o argumento MYSQL_NUM.

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);

   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   
   $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date
      FROM tutorials_tbl';

   mysql_select_db('TUTORIALS');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }
   
   while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
      echo "Tutorial ID :{$row[0]}  <br> ".
         "Title: {$row[1]} <br> ".
         "Author: {$row[2]} <br> ".
         "Submission Date : {$row[3]} <br> ".
         "--------------------------------<br>";
   }
   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

Todos os três exemplos acima produzirão o mesmo resultado.

Liberando Memória

É uma boa prática liberar a memória do cursor no final de cada instrução SELECT. Isso pode ser feito usando a função PHPmysql_free_result(). O programa a seguir é um exemplo para mostrar como deve ser usado.

Exemplo

Experimente o seguinte exemplo -

<?php
   $dbhost = 'localhost:3036';
   $dbuser = 'root';
   $dbpass = 'rootpassword';
   $conn = mysql_connect($dbhost, $dbuser, $dbpass);

   if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
   
   $sql = 'SELECT tutorial_id, tutorial_title, tutorial_author, submission_date
      FROM tutorials_tbl';

   mysql_select_db('TUTORIALS');
   $retval = mysql_query( $sql, $conn );
   
   if(! $retval ) {
      die('Could not get data: ' . mysql_error());
   }
   
   while($row = mysql_fetch_array($retval, MYSQL_NUM)) {
      echo "Tutorial ID :{$row[0]}  <br> ".
         "Title: {$row[1]} <br> ".
         "Author: {$row[2]} <br> ".
         "Submission Date : {$row[3]} <br> ".
         "--------------------------------<br>";
   }
   mysql_free_result($retval);
   echo "Fetched data successfully\n";
   mysql_close($conn);
?>

Ao buscar dados, você pode escrever um código tão complexo quanto desejar, mas o procedimento permanecerá o mesmo mencionado acima.