MySQL - Seleccionar consulta

El SQL SELECTEl comando se utiliza para obtener datos de la base de datos MySQL. Puede usar este comando en el indicador mysql> así como en cualquier script como PHP.

Sintaxis

Aquí está la sintaxis SQL genérica del comando SELECT para obtener datos de la tabla MySQL:

SELECT field1, field2,...fieldN 
FROM table_name1, table_name2...
[WHERE Clause]
[OFFSET M ][LIMIT N]
  • Puede usar una o más tablas separadas por comas para incluir varias condiciones usando una cláusula WHERE, pero la cláusula WHERE es una parte opcional del comando SELECT.

  • Puede buscar uno o más campos en un solo comando SELECT.

  • Puede especificar asterisco (*) en lugar de campos. En este caso, SELECT devolverá todos los campos.

  • Puede especificar cualquier condición utilizando la cláusula WHERE.

  • Puede especificar un desplazamiento usando OFFSETdesde donde SELECT comenzará a devolver registros. De forma predeterminada, el desplazamiento comienza en cero.

  • Puede limitar el número de devoluciones utilizando el LIMIT atributo.

Obtener datos de un símbolo del sistema

Esto usará el comando SQL SELECT para obtener datos de la tabla MySQL tutorials_tbl.

Ejemplo

El siguiente ejemplo devolverá todos los registros del tutorials_tbl mesa -

[email protected]# 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>

Obtención de datos mediante un script PHP

Puede usar el mismo comando SQL SELECT en una función PHP mysql_query(). Esta función se usa para ejecutar el comando SQL y luego otra función PHPmysql_fetch_array()se puede utilizar para recuperar todos los datos seleccionados. Esta función devuelve la fila como una matriz asociativa, una matriz numérica o ambas. Esta función devuelve FALSE si no hay más filas.

El siguiente programa es un ejemplo simple que mostrará cómo buscar / mostrar registros del tutorials_tbl mesa.

Ejemplo

El siguiente bloque de código mostrará todos los registros de la tabla 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);
?>

El contenido de las filas se asigna a la variable $ fila y luego se imprimen los valores de esa fila.

NOTE - Recuerde siempre poner corchetes cuando desee insertar un valor de matriz directamente en una cadena.

En el ejemplo anterior, la constante MYSQL_ASSOC se utiliza como segundo argumento de la función PHP mysql_fetch_array(), para que devuelva la fila como una matriz asociativa. Con una matriz asociativa, puede acceder al campo usando su nombre en lugar de usar el índice.

PHP proporciona otra función llamada mysql_fetch_assoc(), que también devuelve la fila como una matriz asociativa.

Ejemplo

El siguiente ejemplo muestra todos los registros de la tabla tutorial_tbl usando la función 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);
?>

También puedes usar la constante MYSQL_NUMcomo segundo argumento de la función PHP mysql_fetch_array (). Esto hará que la función devuelva una matriz con el índice numérico.

Ejemplo

Pruebe el siguiente ejemplo para mostrar todos los registros de la tabla tutorials_tbl usando el 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);
?>

Los tres ejemplos anteriores producirán el mismo resultado.

Liberando memoria

Es una buena práctica liberar la memoria del cursor al final de cada instrucción SELECT. Esto se puede hacer usando la función PHPmysql_free_result(). El siguiente programa es un ejemplo para mostrar cómo debe usarse.

Ejemplo

Pruebe el siguiente ejemplo:

<?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);
?>

Mientras busca datos, puede escribir un código tan complejo como desee, pero el procedimiento seguirá siendo el mismo que se mencionó anteriormente.