Lección 2 - Consultas I (SQL SELECT FROM WHERE)
![Nota Nota](./styles/prosilver/imageset/icon_post_target.gif)
Si este fuese un manual de SQL, o alguno de los muchos cursos SQL que se pueden encontrar por la web, ahora tocaría abordar la instalación de un SGBD para posteriormente crear una BD con algunas tablas de ejemplo con las que empezar a trabajar. Pero este curso pretende ser diferente. Si ahora se expusiera lo antes mencionado, corremos el riesgo de que usted pierda el interés por la materia, además, el SQL no incluye la instalación del SGBD ni la creación de tablas. Si usted, por ejemplo, desea aprender electricidad, ¿a caso ha de fabricar bombillas, cables y el generador eléctrico con el que poder trabajar? Obviamente no.
En este curso la BD y las tablas con las que trabajar las tiene accesibles mediante el banco de pruebas, así que empezaremos directamente por lo que será la tónica de este curso: las consultas SQL, que es digamos donde está la miga, y no será hasta el final del curso que se verá la creación de tablas y como modificar la información. A fin de cuentas no tiene demasiado sentido aprender a crear tablas cuando aun no sabe que hacer con ellas.
Consultas SQL
Abordemos las consultas SQL con un caso práctico. Sobre la tabla EMPLEADOS se plantea la siguiente cuestión:
¿Qué empleados tienen un salario mayor a 1350?
La respuesta es simple: José y Carlos tiene un salario mayor a 1350, pero si tuviésemos 500 empleados nos llevaría más tiempo responder, y al final tampoco tendríamos la certeza de no habernos equivocado. El SQL nos permite responder estas preguntas de forma rápida y fiable, salvo error al construir la consulta o errores en los propios datos.
Vamos pues a construir la consulta que nos permita responder a esta cuestión.
Preguntas de Construcción
Para construir una consulta SQL debemos hacernos como mínimo tres preguntas:
Primero hemos de preguntarnos: ¿qué datos nos están pidiendo?
En este caso, el nombre y los apellidos de los empleados.
Lo siguiente que nos preguntamos es: ¿dónde están esos datos?
Obviamente están en la tabla empleados.
Y por último: ¿qué requisitos deben cumplir los registros?
En este caso, que el sueldo del empleado sea superior a 1350.
Vamos a suponer por un momento que el SGBD, que es quien intermedia entre el usuario y la BD, fuese una persona; la BD un archivo de papel, y el jefe pide lo siguiente: "Necesito saber ¿qué empleados cobran más de 1350 euros? Usted, que conoce bien el archivo(tablas) y que datos contiene la ficha de un empleado (campos de la tabla EMPLEADOS), mentalmente se hace las preguntas de construcción y le dice a su ayudante que siempre espera ordenes concretas:
Seleccióname el NOMBRE y los APELLIDOS
del archivo EMPLEADOS
cuyo SALARIO sea mayor a 1350
El ayudante sirve la petición y se la entrega para que finalmente usted se la facilite a su jefe. ¿Que papel ocuparían hoy en una empresa moderna? El jefe sigue siendo el jefe, eso está claro, pero usted ha pasado a ser el informático, y su ayudante el SGBD.
Sintaxis SQL
En SQL la forma de operar es parecida, esta información se obtiene mediante la siguiente consulta:
Y el resultado que nos devuelve el SGBD es:
Parecido a lo que nos entregaría nuestro ayudante en el archivo, una lista con la respuesta o solución a la cuestión planteada. Como ve, tanto el modo de solicitar la información al SGBD, sea clásico o informatizado, como el modo en que este nos muestra la información, son muy similares, al menos en este caso. No podemos afirmar lo mismo del tiempo en que uno y otro tardan en facilitarnos la información solicitada.
Forma general
En general una consulta SQL simple tendrá la siguiente forma:
El SQL permite al usuario desentenderse de como el SGBD ejecuta la consulta, al igual que usted se desentiende de como su ayudante en el archivo de papel se las ingenia para facilitarle la información. Usted esperará pacientemente tras el mostrador a que su ayudante prepare su pedido y le entregue los datos. Dicho de otro modo, basta con saber como pedir la información y no como proceder a reunirla.
Resumen
Hemos visto como construir una consulta SQL simple y concreta, que nos da la solución a una cuestión concreta.
Se ha definido la forma general de una consulta SQL simple:
Destacar también la utilidad de las preguntas de construcción para ayudarnos a construir la consulta.
Ejercicio
Intente hallar una consulta que devuelva el nombre, apellidos y la fecha de nacimiento de aquellos empleados que cobren más de 1350 euros.
Puede probar su funcionamiento en el banco de pruebas![Banco de pruebas](/ipropias/database.gif)
Sugerencia: si envía el código SQL que sigue a este párrafo desde el banco de pruebas al SGBD, este le reportará la lista de campos de la tabla EMPLEADOS bajo una columna titulada Fied(termino en inglés que significa campo). Esto le puede venir bien para tener presente los nombres de los campos de la tabla EMPLEADOS mientras desarrolla el ejercicio.
La siguiente sentencia más simplificada es equivalente:
![Mostrar soluciones](/ipropias/soluciones.gif)
En este curso la BD y las tablas con las que trabajar las tiene accesibles mediante el banco de pruebas, así que empezaremos directamente por lo que será la tónica de este curso: las consultas SQL, que es digamos donde está la miga, y no será hasta el final del curso que se verá la creación de tablas y como modificar la información. A fin de cuentas no tiene demasiado sentido aprender a crear tablas cuando aun no sabe que hacer con ellas.
Consultas SQL
Abordemos las consultas SQL con un caso práctico. Sobre la tabla EMPLEADOS se plantea la siguiente cuestión:
¿Qué empleados tienen un salario mayor a 1350?
La respuesta es simple: José y Carlos tiene un salario mayor a 1350, pero si tuviésemos 500 empleados nos llevaría más tiempo responder, y al final tampoco tendríamos la certeza de no habernos equivocado. El SQL nos permite responder estas preguntas de forma rápida y fiable, salvo error al construir la consulta o errores en los propios datos.
Vamos pues a construir la consulta que nos permita responder a esta cuestión.
Preguntas de Construcción
Para construir una consulta SQL debemos hacernos como mínimo tres preguntas:
Primero hemos de preguntarnos: ¿qué datos nos están pidiendo?
En este caso, el nombre y los apellidos de los empleados.
Lo siguiente que nos preguntamos es: ¿dónde están esos datos?
Obviamente están en la tabla empleados.
Y por último: ¿qué requisitos deben cumplir los registros?
En este caso, que el sueldo del empleado sea superior a 1350.
Vamos a suponer por un momento que el SGBD, que es quien intermedia entre el usuario y la BD, fuese una persona; la BD un archivo de papel, y el jefe pide lo siguiente: "Necesito saber ¿qué empleados cobran más de 1350 euros? Usted, que conoce bien el archivo(tablas) y que datos contiene la ficha de un empleado (campos de la tabla EMPLEADOS), mentalmente se hace las preguntas de construcción y le dice a su ayudante que siempre espera ordenes concretas:
Seleccióname el NOMBRE y los APELLIDOS
del archivo EMPLEADOS
cuyo SALARIO sea mayor a 1350
El ayudante sirve la petición y se la entrega para que finalmente usted se la facilite a su jefe. ¿Que papel ocuparían hoy en una empresa moderna? El jefe sigue siendo el jefe, eso está claro, pero usted ha pasado a ser el informático, y su ayudante el SGBD.
Sintaxis SQL
En SQL la forma de operar es parecida, esta información se obtiene mediante la siguiente consulta:
- Código: Seleccionar todo
select NOMBRE , APELLIDOS
from EMPLEADOS
where SALARIO > 1350
Obsérvese que en la consulta los nombres de los objectos de base de datos (tabla y campos) los escribimos en mayúsculas, mientras que para las palabras reservadas de la consulta SQL (select, from, where) lo hacemos en minúsculas; esto tiene únicamente un propósito estético, con intención de hacer el código más ordenado y legible. Puede no ser así siempre, dependiendo del SGBD y/o del sistema operativo(windows, linux, ...) donde trabaje el SGBD, este puede ser sensible a mayúsculas y minúsculas.
Y el resultado que nos devuelve el SGBD es:
Parecido a lo que nos entregaría nuestro ayudante en el archivo, una lista con la respuesta o solución a la cuestión planteada. Como ve, tanto el modo de solicitar la información al SGBD, sea clásico o informatizado, como el modo en que este nos muestra la información, son muy similares, al menos en este caso. No podemos afirmar lo mismo del tiempo en que uno y otro tardan en facilitarnos la información solicitada.
Forma general
En general una consulta SQL simple tendrá la siguiente forma:
- Código: Seleccionar todo
select CAMPOS(separados por comas)
from TABLA
where CONDICION
El SQL permite al usuario desentenderse de como el SGBD ejecuta la consulta, al igual que usted se desentiende de como su ayudante en el archivo de papel se las ingenia para facilitarle la información. Usted esperará pacientemente tras el mostrador a que su ayudante prepare su pedido y le entregue los datos. Dicho de otro modo, basta con saber como pedir la información y no como proceder a reunirla.
* * *
Resumen
Hemos visto como construir una consulta SQL simple y concreta, que nos da la solución a una cuestión concreta.
Se ha definido la forma general de una consulta SQL simple:
- Código: Seleccionar todo
select CAMPOS(separados por comas)
from TABLA
where CONDICION
Destacar también la utilidad de las preguntas de construcción para ayudarnos a construir la consulta.
- ¿Qué datos nos piden?
- ¿Dónde están los datos?
- ¿Qué requisitos debe cumplir los registros?
* * *
Ejercicio
Intente hallar una consulta que devuelva el nombre, apellidos y la fecha de nacimiento de aquellos empleados que cobren más de 1350 euros.
Puede probar su funcionamiento en el banco de pruebas
![Banco de pruebas](/ipropias/database.gif)
Sugerencia: si envía el código SQL que sigue a este párrafo desde el banco de pruebas al SGBD, este le reportará la lista de campos de la tabla EMPLEADOS bajo una columna titulada Fied(termino en inglés que significa campo). Esto le puede venir bien para tener presente los nombres de los campos de la tabla EMPLEADOS mientras desarrolla el ejercicio.
- Código: Seleccionar todo
describe EMPLEADOS
La siguiente sentencia más simplificada es equivalente:
- Código: Seleccionar todo
desc EMPLEADOS
![Banco de pruebas](/ipropias/database.gif)
![Mostrar soluciones](/ipropias/soluciones.gif)