Herramientas de usuario

Herramientas del sitio


Barra lateral

Logo ACEMU

acemu:articulos:articulos_tecnicos:software:introduccion_a_las_bases_de_datos_con_mysql:tutorial:recuperandotablas

Dentro de MySQL - Recuperando datos de una Tabla

En este capítulo no solo veremos como recuperar los datos de una tabla, para leerlos, modificarlos o borrarlos, sino que también aprenderemos a ver todos los campos del registro o solo los campos que nosotros necesitemos acceder.

Para comenzar, diremos que la sentencia SELECT se usa para obtener información almacenada en una tabla. La forma general de esta sentencia es :

SELECT el_dato_que_deseamos FROM nombre_de_tabla WHERE condicion_a_satisfacer

En este ejemplo, el_dato_que_deseamos es la información que queremos ver o acceder. Esta puede ser una lista de columnas. o un * para indicar todas las columnas.
nombre_de_tabla, nos indica el nombre de la tabla a la cual vamos a acceder para obtener los datos.
La condición WHERE es opcional, si está presente, la condicion_a_satisfacer especifica las condiciones que los registros tienen que satisfacer para que puedan ser mostrados.

Para especificar las condiciones podemos utilizar los operadores lógicos AND, OR, NOT, =, <, >, < =, >=, y sus combinaciones.

Seleccionando todos los datos

La manera más simple de la sentencia SELECT es cuando se recuperan todos los datos de una tabla :

SELECT * FROM Tabla

Esta forma del SELECT es útil si deseamos ver los datos completos de una tabla, por ejemplo, para asegurarnos de que estén todos los registros luego de la carga desde un archivo.

Veamos un caso particular :
En el caso que tratamos, al revisar los registros de la tabla, observamos que hay un error en la carga de los registros desde aseguradoras.txt; en realidad la dirección del B.S.E., no es Libertador 12345, sino que es Libertador 1234.

Hay al menos 2 maneras de poder corregir este error :

1.- Editar el archivo aseguradoras.txt para corregir el error, eliminar los datos de la tabla aseguradoras con la sentencia DELETE, y cargar nuevamente todos los datos del archivo aseguradoras.txt con la sentencia LOAD DATA.

mysql> DELETE FROM aseguradoras;
mysql> LOAD DATA LOCAL INFILE "aseguradoras.txt" INTO TABLE aseguradoras;

Esto nos obliga a realizar una doble operación, borrar la tabla, corregir el archivo .txt y volver a cargar la tabla.

2.- La segunda opción consiste en corregir sólo el registro erróneo con una sentencia UPDATE:

mysql> UPDATE aseguradoras SET direccion='Libertador 1234' WHERE codigo=2;

Como hemos visto, es muy sencillo recuperar los datos de una tabla completa, pero, generalmente no deseamos hacer esto, particularmente cuando las tablas son muy grandes.
En vez de ello, podremos evacuar consultas sobre cuestiones más específicas, en cuyo caso, debemos especificar algunas restricciones a la información que deseamos mostrar.

Seleccionando registros particulares

Una de las utilidades más usadas es la búsqueda de registros en particular dentro de una tabla.
Si deseamos verificar el cambio que realizamos en la dirección de B.S.E., podemos solo seleccionar ese registro mediante la siguiente instrucción :

mysql> SELECT * FROM datos WHERE codigo = 2;

La salida mostrada, nos confirma el cambio realizado.

En el caso de querer comparar cadenas (strings), la misma no es de carácter sensitiva, por lo cual podemos especificar, en el caso de la cadena “banco”, tanto “banco” como “BANCO”, etc. El resultado de la consulta será siempre el mismo, pues MySQL no distingue entre mayúsculas o minúsculas.

También podemos establecer condiciones sobre las columnas (campos), por ejemplo, si queremos seleccionar aquellos registros cuyo campo código sea mayor o igual a 3, entonces :

mysql> SELECT * FROM datos WHERE codigo >= 3;

También podemos combinar condiciones, por ejemplo, aquellos registros que tienen código menor a 4 y telefono menor a 29000000 :

mysql> SELECT * FROM datos WHERE codigo < 4 AND telefono < 29000000;

si en la consulta anterior utilizamos el operador AND, también podemos consultar utilizando el operador OR;

mysql> SELECT * FROM datos WHERE codigo = 2 OR telefono = 29154786;

Podemos también intercambiar operadores OR y AND.
Para esto, es una buena técnica, utilizar paréntesis para agrupar las condiciones :

mysql> SELET * FROM datos WHERE (codigo > 1 AND telefono < 29000000) OR (codigo > 3 AND telefono > 27000000);



Seleccionando Columnas Particulares

Puede suceder que no necesitemos ver los registros completos de una tabla, y si uno o mas campos de esa tabla.
Para este tipo de situaciones, MySQL nos permite consultar por columnas(campos) particulares, de a una columna (campo) sola, o más de una (en este caso separando sus nombres por comas).
Por ejemplo si deseamos ver solo los campos direccion y telefono, debemos seleccionar las columnas (o campos) del mismo nombre.

mysql> SELECT direccion, telefono FROM datos;

Para saber los nombres de las aseguradoras que tenemos en nuestra base de datos, haremos :

mysql> SELECT nombre FROM datos;

Puede suceder que en algún caso tengamos cargados más de una vez el mismo nombre de la aseguradora, pues ésta puede tener varias sucursales o dependencias. Es por esto, que MySQL nos provee del comando DISTINCT el cual minimiza la salida, mostrando solo 1 vez aquellos datos que aparecen repetidos, en nuestro caso nos mostraría solo una vez el nombre de la aseguradora y no todas sus recurrencias en la tabla.

mysql> SELECT DISTINCT nombre FROM datos;

Por último, podemos también utilizar la cláusula WHERE para combinar selección de filas con selección de columnas.
Si queremos consultar el código, nombre y dirección de las aseguradoras, que cumplan con la condición de que el código sea igual a 1 y el nombre distinto a B.S.E. entonces .

mysql> SELECT codigo, nombre, direccion FROM datos
     > WHERE codigo = 1 OR nombre <> "b.s.e."     -> notemos que "b.s.e." lo escribimos con minuscula



Retorno a página principal
Retorno a Página Anterior

acemu/articulos/articulos_tecnicos/software/introduccion_a_las_bases_de_datos_con_mysql/tutorial/recuperandotablas.txt · Última modificación: 2012/01/25 17:21 por luis