Lección 11 - Síntesis de la primera parte

Curso SQL para principiantes


Durante las diez lecciones anteriores se ha trabajado con diversas consultas SQL que accedían a una sola tabla de la BD. El propósito de trabajar con una sola tabla es el de mostrar sobre el caso más simple (sólo interviene una tabla), la funcionalidad de todas las cláusulas SQL que una consulta puede incorporar. Con ello se consigue que en todos los ejemplos el motor SQL deba recorrer la tabla una sola vez, siendo más fácil entender que papel juega cada cláusula SQL y como deben combinarse para explotar los datos de una tabla. Aprovechado los ejemplos se han ido mostrando sobre la marcha distintos recursos y funcionalidades que el lenguaje SQL proporciona. Se ha pretendido mostrar estos recursos bajo un contexto, para acompañarlos de una aplicación práctica que ayude a entender su cometido.

* * *

A lo largo de estas lecciones se han estudiado dos tipos de consultas SQL que se diferencian claramente por el resultado que se obtiene:

Consultas SQL llanas:
Son las consultas que seleccionan los campos de una tabla indicados en la cláusula SELECT, de los registros filtrados por la cláusula WHERE.

Consultas SQL de cálculo:
Son las consultas que calculan los totales de una tabla indicados en la cláusula SELECT, mediante funciones de totalización (SUM, MAX,...), sobre los registros filtrados por la cláusula WHERE. Estos totales se pueden agrupar por los campos indicados en la cláusula GROUP BY, en cuyo caso, pueden ser filtrados por las condiciones establecidas en la clausula HAVING.

* * *

Cada cláusula SQL esta relacionada o responde a una pregunta de construcción:
  1. SELECT: ¿Qué datos nos piden?
  2. FROM: ¿Dónde están los datos?
  3. WHERE: ¿Qué requisitos deben cumplir los registros?
  4. GROUP BY: ¿Como deben agruparse los datos?
  5. HAVING: ¿Qué requisitos deben cumplir los cálculos de totalización?
  6. ORDER BY: ¿Por que columnas debe ordenarse el resultado?

Para construir una consulta como mínimo deben intervenir las cláusulas SELECT y FROM, el resto dependerá de lo que se quiera obtener, pero en cualquier caso el orden en que cada cláusula aparece en una consulta SQL no puede cambiarse, la cláusula SELECT siempre será la primera, y ORDER BY, si interviene, siempre será la última.

En general una consulta SQL tiene esta forma:
Código: Seleccionar todo
  select CAMPO_S1, ... , CAMPO_SN
    from TABLA_1
, ... , TABLA_N
   where CONDICIONES_WHERE
group by CAMPO_G1
, ... , CAMPO_GN
  having CONDICIONES_HAVING
order by CAMPO_O1
, ... , CAMPO_ON


En la cláusula SELECT se establecen las lista de campos que mostrará el resultado de la consulta, poniendo DISTINCT precediendo a la lista de campos se eliminan posibles registros duplicados que el resultado pueda devolver. Así mismo podemos rebautizar las columnas de resultado asignando un alias a cada campo.

En la cláusula FROM se establece la fuente de los datos, las tablas que intervienen en la consulta.

En la cláusula GROUP BY se establece los grupos de datos por los que se quiere obtener totales, no tendría sentido usar esta cláusula si no se indican cálculos de totalización (SUM , MAX, AVG , ...) en la cláusula SELECT.

La condiciones establecidas en la cláusula WHERE tienen como propósito filtrar registros de la tabla, mientras que las condiciones de la cláusula HAVING filtran filas de resultados condicionando únicamente los datos calculados por las funciones de totalización (SUM , MAX, AVG , ...). A efectos prácticos para este curso se considera que la cláusula HAVING sólo puede intervenir en una consulta SQL si lo hace la cláusula GROUP BY, de lo contrario no tiene sentido.

La cláusula ORDER BY permite finalmente ordenar el resultado por diferentes columnas, y en sentido ascendente o descendente, antes de ser presentado.

* * *

Si usted ha llegado hasta aquí le animo a que continué con el curso. En las siguientes lecciones se va a abordar lo que quizá es el mayor potencial de las BD relacionales: la reunión de datos. Usted aprenderá a trabajar con más de una tabla en una misma consulta SQL.


* * *

Ejercicio
Supongamos que usted tiene un amigo que es jugador de póquer, el pobre no sabe si sus ganancias en el juego son positivas o negativas porque no lleva un control sobre ello, por lo que usted se ofrece a gestionarle las ganancias. Le dice a su amigo que cuando acabe una sesión de juego le comunique a usted el dinero que ha ganado o perdido, entendiendo perdida como una ganancia o número en negativo.

Diseñe una tabla, es decir, los campos y tipo de dato de cada campo, para poder registrar la información que su amigo le facilita, y mediante SQL pueda responder en cualquier momento a las siguientes preguntas:

¿Cuales son las ganancias actuales?
¿Cuanto dinero se ganó durante el mes de marzo de 2009?

Una vez diseñada la tabla construya las consultas SQL que responden a cada una de estas preguntas.

* * *




    Lección 10 - El operador LIKE / El valor NULL
  • Lección 12 - El producto cartesiano (SQL FROM)

Creative Commons License Creative Commons License

Este curso está sujeto a la licencia Reconocimiento-NoComercial-SinObraDerivada 3.0 de Creative Commons. Usted puede copiarla, distribuirla y comunicarla públicamente siempre que especifique su autor y deletesql.com; no la utilice para fines comerciales; y no haga con ella obra derivada. Puede usted consultar la licencia completa aquí.




Volver a Curso SQL desde cero

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 7 invitados