Cláusulas

Cláusula
Información sobre la plantilla
Concepto:Una cláusula es una disyunción de literales.

Cláusula. Una cláusula es una disyunción de literales. En cálculo proposicional, normalmente se escriben de la forma siguiente: l1v ... vln, donde cada li, con i = {1,...,n} es un literal. De la misma manera, se denomina cláusula conjuntiva a una conjunción de literales. En Base de Datos se proyecta de manera similar a las cláusulas que comúnmente podemos ver en la lógica matemática. Estas no son más que condiciones de modificación utilizadas para definir los datos que desea seleccionar o manipular.

Clásusulas de SQL

Cláusula FROM

La cláusula FROM lista las tablas o ficheros que contienen los datos a recuperar por la consulta. El formato de esta cláusula es: FROM nombretabla [alias_tabla] ...

  • nombretabla: puede ser una o mas nombres de tabla en el directorio de trabajo si se omite este, o en un directorio distinto si se especifica.
  • alias_tabla: es un nombre que se usa para referirse a la tabla en el resto de la sentencia SELECT para abreviar el nombre original y hacerlo más manejable, en el caso de existir más de una tabla en la consulta y, también para poder realizar consultas uniendo varias veces la misma tabla.

Ejemplo:

SELECT A.NOMBRE, A.APELLIDOS FROM MATRICUL M, ALUMNOS A WHERE M.MATRICULA = A.MATRICULA AND M.GRUPO = ‘1A’ AND ANNO = 1995. Es mucho más práctico y sencillo que:

SELECT ALUMNOS.NOMBRE, ALUMNOS.APELLIDOS FROM MATRICUL, ALUMNOS WHERE MATRICUL.MATRICULA = ALUMNO.MATRICULA AND MATRICUL.GRUPO = ‘1A’ AND ANNO = 1995 Las dos sentencias son idénticas y nos devolverían los nombres y apellidos del alumnado matriculado en el año 1995 y que figuran en el grupo 1A. El nombre de tablas junto al nombre de campo es obligatorio cuando existan campos con nombre idéntico en las tablas que formen parte de la sentencia. Así en el ejemplo anterior NOMBRE y APELLIDOS no lo necesitarían (aunque este puesto) pero MATRICULA si lo necesita porque en las dos tablas existe un campo con ese nombre. Si no se pudiera utilizar alias, no se podría unir una tabla consigo misma y la siguiente consulta no se podría llevar a cabo: SELECT A.NOMBRE, A.APELLIDOS, H.NOMBRE FROM ALUMNOS A, ALUMNOS H WHERE A.PADRE = H.PADRE que nos devolverá el nombre de aquellos alumnos/as que tienen el mismo padre, es decir, son hermanos.

Cláusula WHERE

La cláusula WHERE dice a SQL que incluya solo ciertas filas o registros de datos en los resultados de la consulta, es decir, que tienen que cumplir los registros que se desean ver. La cláusula WHERE contiene condiciones en la forma: WHERE expresión1 operador expresion2

  • expresión1 y expresion2: pueden ser nombres de campos, valores constantes o expresiones.
  • operador: es un operador relacional que une dos expresiones. Más tarde se verán los distintos operadores que se puede utilizar.

Por ejemplo, la siguiente sentencia nos muestra el nº de alumnos que han nacido con posterioridad a 1985. SELECT COUNT(*) FROM ALUMNOS WHERE YEAR(FECHA_NACIMIENTO) > 1985

Cláusula GROUP BY

La cláusula GROUP BY especifica una consulta sumaria. En vez de producir un fila de resultados por cada fila de datos de la base de datos, una consulta sumaria agrupa todas las filas similares y luego produce una fila sumaria de resultados para cada grupo. Seguido de la cláusula GROUP BY se especifican los nombres de uno o más campos cuyos resultados se desean agrupados. Tiene la forma: GROUP BY expresión_columna

  • expresión_columna: debe coincidir con la expresión de columna utilizada en la cláusula SELECT. Puede ser uno o más nombres de campo de una tabla, separados por coma o una o más expresiones separadas por comas.

El siguiente ejemplo nos dice cuantos alumnos están matriculados en cada grupo en el año 1995: SELECT GRUPO, COUNT(*) FROM MATRICUL WHERE ANNO = 1995 GROUP BY GRUPO Esta sentencia nos devolverá una fila por cada grupo de alumnos. Cada una de ellas contendrá el grupo y el nº de alumnos en él.

Cláusula HAVING

La cláusula HAVING dice a SQL que incluya solo ciertos grupos producidos por la cláusula GROUP BY en los resultados de la consulta. Al igual que la cláusula WHERE, utiliza una condición de búsqueda para especificar los grupos deseados. En otras palabras, especifica la condición que deben de cumplir los grupos. Sólo es válida si previamente se ha especificado la cláusula GROUP BY. La cláusula HAVING tiene la forma: HAVING expresión1 operador expresión2

  • expresión1 y expresión2: pueden ser nombres de campos, valores constantes o expresiones y estas no deben coincidir con una expresión de columna en la cláusula SELECT.
  • operador: es un operador relacional que une las dos expresiones. Más tarde se verán los distintos operadores que se puede utilizar.

La sentencia siguiente nos mostrará el número de alumnos en cada grupo de 1995 cuyo numero de integrantes supera los 30: SELECT GRUPO, COUNT(*) FROM MATRICUL WHERE ANNO = 1995 GROUP BY GRUPO HAVING COUNT(*) > 30

Bibliografía

  1. SQL: Introducción