Visualizando datos: Consultas básicas en SQL, con WinSQL

Ya hemos comentado la forma en la que se realizaría una consulta básica en lenguaje SQL: para mostrar todos los campos de la tabla “alumno”, usaríamos la orden “select”:

y para mostrar sólo los valores de algunos de los campos, detallaríamos cuales son dichos campos antes de la palabra “from”:

Pero normalmente no nos interesará ver todas las fichas (registros) que contiene la tabla, sino sólo aquellas que cumplen una cierta condición. Esta condición se indica después de la palabra “where”, así:

Con “=” nos responderá qué fichas contienen exactamente ese valor. Otras comparaciones posibles son:

Ejemplos de su uso podrían ser

Cuando buscamos un texto, es frecuente que no nos interese localizar un cierto texto exactamente, sino que sólo conozcamos parte de ese texto. Sería el caso de “alumnos cuyo nombre empieza por J”, o “personas que tienen López como primer apellido”, o “domicilios en los que aparece la palabra Barcelona”. Para ello se emplea la palabra “like”, se detalla la parte de condición que sabemos y se usa el símbolo % para la parte de la condición que no sabemos.

Por ejemplo para “alumnos cuyo nombre empieza por J” haríamos:

Para “alumnos cuyo nombre termina en e” sería

Y para “nombre de los alumnos en cuyo domicilio aparezca la palabra Barcelona” podría ser

Finalmente (por ahora), conviene indicar que los resultados de esta consulta los podemos obtener ordenados numéricamente (de menor a mayor valor) o alfabéticamente (de la A a la Z) si añadimos al final “order by” seguido del nombre del campo que queremos usar para esa ordenación:

O podemos ordenar de manera descendente (los números de mayor a menor y los textos de la Z a la A) y usamos “order by .. desc”:

 

Creando una Base de Datos con WinSQL

El lenguaje SQL es un lenguaje genérico para manipular bases de datos, que es aceptado por la gran mayoría de sistemas de bases de datos actuales.

Por eso, me parece muy conveniente que veamos cómo crear nuestra base de datos en cualquier gestor de bases de datos que soporte el lenguaje SQL.

También Access permite emplear este lenguaje, pero como ya hemos manejado Access de la forma más sencilla (y también la más habitual), utilizaremos otra base de datos distinta.

Yo he optado por WinSQL (una versión ya antigua, la 3.2.7), que es un gestor de base de datos para sistema operativo Windows, que se utiliza mediante lenguaje SQL, y que se puede descargar gratuitamente desde Internet:

 

Al entrar a WinSQL se nos pregunta qué tipo de bases de datos vamos a utilizar. Tenemos muchas posibilidades distintas, pero podemos emplear ficheros de “dBase”, por ejemplo.

Dbase es un gestor de bases de datos antiguo, mucho más incómodo de manejar que los actuales, pero que sentó un estándar, y que manejaba ficheros en un formato que soportan muchos gestores de bases de datos más modernos.

 

Cuando hemos elegido el formato de ficheros, nos aparecerá una ventana vacía, en la que nosotros deberemos escribir las órdenes en lenguaje SQL.

Por ejemplo, para crear nuestra tabla “alumnos”, en la que tengamos los campos dni (10 letras), nombre (40 letras) y tlf (teléfono, 15 letras), la orden que se usaría es:

Para que nuestro ejemplo quede correcto, todavía falta algo. En la tabla de los “alumnos”, queríamos que el DNI actuase como clave primaria. Esto, en la mayoría de las versiones de SQL se conseguiría añadiendo la siguiente línea al final de la orden anterior (antes del último paréntesis):

Pero resulta que WinSQL usa el “motor” de bases de datos creado por Microsoft (el mismo que emplea Access), que tiene alguna (pequeña) diferencia de sintaxis con el SQL estándar, de manera que tendremos que hacerlo de otra forma.

La manera utilizada por WinSQL es indicando esa clave primaria como una “restricción” (“constraint”), así:

Nuestra ventana de trabajo de WinSQL debería estar quedando como ésta:

En cualquier caso, WinSQL responderá con un mensaje que nos indica que lo ha hecho, pero que no hay datos que mostrar en pantalla. Estos mensajes de respuesta aparecen en la pestaña “Result”, que pasa a ser la pestaña visible cada vez que escribimos una orden y pulsemos el botón “Run Query” (el del triángulo verde, que hace que se procese la orden que hemos tecleado).

A la hora de añadir datos, se usa la orden “insert”. Su forma más sencilla consiste en indicar el nombre de la tabla, y, entre paréntesis, los valores para cada uno de los campos, en el orden en que los habíamos definido al crear la tabla:

Los valores los hemos indicado entre comillas porque son texto (cadenas de caracteres); si alguno de los campos fuera numérico, no habría que poner esas comillas.

 

Como hemos añadido un registro, WinSQL nos responderá diciendo que una fila de la tabla se ha visto afectado por estos cambios:

Siguiendo este mismo esquema podríamos añadir alguna ficha más.

Finalmente, podemos visualizar los datos obtenidos. Para ello se emplea la orden “select”:

Esta orden mostrará todos los datos (es lo que se indica con el asterisco *) de la tabla llamada “alumno”. Obtendríamos un resultado parecido a éste:

También podríamos pedir que se nos muestre sólo alguno de los campos. Por ejemplo, si queremos ver primero el teléfono y luego el nombre (y que no se muestre el DNI) escribiríamos

y la respuesta sería algo como:

La orden “select” permite hacer muchas más cosas, pero las veremos a su debido tiempo, cuando tratemos la forma de realizar consultas a partir de los datos.