|
 |
 |
Sentencias SQL
página(s) : 1/2 (2494 palabras totales en este texto) (45484 Lecturas) 
S Q L
(Structured Query Language
Lenguaje de consulta estructurado).
Sentencias.
SELECT [ALL | DISTICT] lista_selección
FROM [nombre_tabla1 | nombre_vista1 | nombre_correlación1], ...
[WHERE condición_búsqueda]
[[GROUP BY [nombre_columna | número_columna]]
[HAVING condición_búsqueda]
[[INTERSECT | MINUS | UNION | ALL] sentencia_select]
[[ORDER BY nombre_columna | número_columna]]
[ASC | DESC]
[FOR UPDATE OF mombre_columna, ...]
Descripción:
Lleva a cabo las operaciones relacionales, selección, proyección y unión (join) para crear una tabla lógica a partir de otras tablas o vistas. Los elementos de la
lista_selección identifican las columnas de cada tabla que serán proyectadas en la tabla que está siendo formada. En la cláusula
FROM se identifican las tablas que serán unidas, y en la cláusula WHERE se identifica el criterio de unión, así como las filas que serán seleccionadas.
La palabra clave DISTINCT indica que si existen filas idénticas, sólo una de ellas será incluida.
Esta sentencia puede ejecutarse de forma interactiva o inmersa dentro de un programa de aplicación como parte de una sentencia
DECLARE CURSOR o INSERT.
Opcionalmente, se puede indicar un nombre_correlación para cada nombre de la tabla como un alias en lugar del nombre completo de la tabla, al cualificar los nombres de las columnas dentro de la
lista_selección o dentro de la cláusula WHERE y sus subcláusulas. Si se une una tabla o una vista consigo misma, se deben utilizar los nombres de correlación para identificar
con claridad la copia de la tabla o vista a la que hacemos referencia en la lista_selección, en el criterio de unión o el criterio de selección.
Si se especifica más de una tabla o vista en la cláusula
FROM de una sentencia SELECT o una subcláusula subselect, el sistema SQL construye el producto cartesiano de todas las tablas o vistas. El sistema devuelve las filas que cumplen los criterios de selección y unión especificados en la cláusula
WHERE.
Para la nomenclatura de nombre_tabla1 o nombre_vista1 válidos hay que consultar la documentación de cada fabricante.
Un nombre_columna dentro de la cláusula GROUP BY puede hacer referencia a cualquier columna de cualquier tabla especificada en la cláusula
FROM, aún en el caso de que la columna no aparezca en la lista_selección.
Se utiliza número_columna dentro de la cláusula GROUP BY para hacer referencia a una columna sin nombre, como por ejemplo una expresión, dentro de la
lista_selección.
Si la cláusula GROUP BY está precedida de una cláusula WHERE, el sistema forma grupos de las filas seleccionadas después de la aplicación de la cláusula
WHERE. En la mayoría de las implementaciones, el orden en que se especifican las cláusulas
WHERE y GROUP BY es significativo.
Cuando se incluye una cláusula GROUP BY, todas las columnas de la lista_selección deben ser funciones de columna (AVG, COUNT, MAX, MIN
ó SUM) o nombre_columna especificados en la cláusula GROUP BY.
En la mayoría de las implementaciones, no se pueden utilizar las cláusulas GROUP BY o
HAVING dentro de una sentencia SELECT o de una cláusula subselect si la sentencia
SELECT o la cláusula subselect contienen una cláusula FROM que hace referencia a una vista definida, utilizando las cláusulas
GROUP BY o HAVING.
Si se utiliza una cláusula HAVING pero no se incluye una cláusula GROUP BY, todas las columnas de
lista_selección deben formarse utilizando funciones de columna (AVG,
COUNT, MAX, MIN, SUM).
Si se incluye una cláusula GROUP BY precediendo a la cláusula HAVING, la
condición_búsqueda de la cláusula HAVING se aplica a cada uno de los grupos formados por tener los mismos valores en las columnas especificadas. Si no se incluye una cláusula
GROUP BY, la condición_búsqueda de la cláusula HAVING se aplica a toda la tabla lógica definida en la sentencia
SELECT.
En algunas implementaciones, el sistema aplica la cláusula HAVING a los resultados de las cláusulas inmediatamente precedentes. Esto significa que:
SELECT ... WHERE ... HAVING ...
GROUP BY
Se procesa de forma diferente a:
SELECT ... WHERE ... GROUP BY ...
HAVING
En otras implementaciones, el sistema siempre aplica la cláusula HAVING a los resultados de cualquier
GROUP BY presente, sin tener en cuenta el orden de las cláusulas.
Un nombre_columna dentro de la cláusula ORDER BY puede ser ambiguo porque el mismo nombre puede aparecer más de una vez en la
lista_selección, o bien columnas con diferentes nombres pueden aparecer en la misma posición al utilizar una operación
INTERSECT, MINUS, o UNION, las cuales hacen que los nombres de las columnas resultado queden indefinidos. Si el
nombre_columna es ambiguo, se debe usar un número_columna relativo dentro de la cláusula
ORDER BY.
Se pueden especificar varias columnas dentro de la cláusula ORDER BY. El resultado se ordena en primer lugar según el primer
nombre_columna o número_columna. Si existen filas en las que son iguales los valores de esa columna, se ordenan según el siguiente
nombre_columna o número_columna que aparece en la lista de la cláusula
ORDER BY.
Se puede especificar un orden ascendente (ASC) o descendente (DESC) para cada columna. Si no se especifica ninguno, se asume
ASC.
A menos que se utilice una cláusula ORDER BY dentro de una sentencia SELECT, en la mayoría de las implementaciones queda indefinida la secuencia de las filas devueltas, ahora bien, si la primera
nombre_columna de lista_selección es clave o índice de la tabla, esta aparecerá ordenada por por este
nombre_columna.
Funciones asociadas a los nombre_columna de la cláusula SELECT:
AVG([[ALL] expresión |
DISTINCT nombre_columna])
En una tabla lógica definida por una sentencia SELECT o una cláusula subselect, crea una columna cuyo valor es el promedio numérico de los valores de la expresión o del
nombre_columna especificado. Se puede utilizar la cláusula GROUP BY para crear el promedio de cada grupo de filas seleccionadas en las tablas o vistas subyacentes. | | (2/2) |
|
|