SUBCONSULTAS EN SQL SERVER
cambad_20052 de Octubre de 2013
628 Palabras (3 Páginas)589 Visitas
Una subconsulta es una consulta que aparece dentro de otra consulta o subconsultas, en la lista de selección o en la cláusula WHERE o HAVING, originalmente no se podían incluir en la lista de selección.
Una subconsulta se denomina también consulta o selección interna, mientras que la instrucción que contiene la subconsulta es conocida como consulta o selección externa.
Aparece siempre encerrada entre paréntesis y tiene la misma sintaxis que una sentencia SELECT normal y sólo puede incluir una cláusula ORDER BY cuando se especifica también una cláusula TOP.
Una subconsulta puede anidarse en la cláusula WHERE o HAVING de una instrucción externa SELECT, INSERT, UPDATE o DELETE, o bien en otra subconsulta. Se puede disponer de hasta 32 niveles de anidamiento, aunque el límite varía dependiendo de la memoria disponible y de la complejidad del resto de las expresiones de la consulta. Hay que tener en cuenta que para cada fila de la consulta externa, se calcula la subconsulta, si anidamos varias consultas, el número de veces que se ejecutarán las subconsultas ¡puede dispararse!
El lenguaje SQL está compuesto por comandos (CREATE, DROP, ALTER, SELECT, INSERT, UPDATE, DELETE), cláusulas(FROM, WHERE, GROUP BY, HAVING, ORDER BY), operadores lógicos (AND, OR, NOT) y de comparación (<, >, =, LIKE, IN...), y funciones de agregado(AVG, COUNT, MAX, MIN, SUM), las cuales se combinan en las instrucciones para crear, actualizar y manipular las base de datos. Cuando se comprende el significado de estos comandos las consultas (tanto consultas internas o subconsultas, y externas) pueden verse bastante sencillas y realizar muchas operaciones contra la base datos con mucha facillidad
Es propicio mencionar que una subconsulta es una instrucción SELECT anidada dentro de otra instrucción SELECT: SELECT INTO, INSERT INTO, DELETE, o UPDATE o dentro de otra subconsulta.
Una subconsulta puede devolver:
1. Una sola columna o un solo valor en cualquier lugar en donde pueda utilizarse una expresión de un sólo valor y puede compararse usando los siguientes operadores: =,<,>,<=,>= ,<>,!> y !<.
2. Una sola columna o muchos valores que se pueden utilizar con el operador de comparación de listas IN en la cláusula WHERE.
3. Muchas filas que pueden utilizarse para comprobar la existencia, usando la palabra EXISTS en la cláusula WHERE.
En el proceso de trabajo con subconsultas, necesariamente manejaremos dos tipos de consultas: consultas internas y consultas externas. Las consultas internas no es más que las subconsultas propiamente dichas y la consultas externa es aquella que hace uso de los resultados devueltos por la consulta interna o subconsulta. También se harán uso del predicado IN. La consulta externa usa el predicado IN para operar con los valores devueltos por la subconsulta.
Por otra parte, cuando se presenta una subconsulta con la palabra clave EXISTS, funciona como una prueba de existencia. La cláusula WHERE de la consulta externa comprueba la existencia de las filas devueltas por la subconsulta. La subconsulta en realidad no produce ningún dato, devuelve el valor TRUE o FALSE.
La subconsulta siempre está encerrada entre paréntesis y a menos que se vaya a ejecutar una subconsulta correlacionada termina antes de que se procese la consulta externa. Una subconsulta puede contener otra subconsulta, y esta subconsulta puede, a su vez, contener otra subconsulta, ... y así sucesivamente. Los recursos del sistema(como la memoria disponible) limitan el número de subconsultas que pueden procesarce. Se puede anidar subconsultas hasta 32 niveles, pero esto como le mencioné, depende de los recursos disponibles del sistema.
Subconsultas en las instrucciones UPDATE, DELETE e INSERT
Es posible anidar las su consultas en este tipo de instrucciones. Pero para entender mejor especificar
...