Sie sind auf Seite 1von 4

ESCUELA SUPERIOR POLITECNICA DE CHIMBORAZO

FACULTAD DE INFORMATICA Y ELECTRONICA


ESCUELA DE INGENIERIA EN ELECTRONICA TELECOMUNICACIONES Y
REDES

BASE DE DATOS

Nombre:Bonifaz Washington (1068)


Fecha: 11-07-2018
Tema: Sub consultas

Tenemos tres tipos de subconsultas:

Las que devuelven un solo valor, aparecen en la lista de selección de la consulta


externa o con un operador de comparación sin modificar.

Las que generan una columna de valores, aparecen con el operador IN o con un
operador de comparación modificado con ANY, SOME o ALL.

Las que pueden generar cualquier número de columnas y filas, son utilizadas en
pruebas de existencia especificadas con EXISTS.

Tipos de subconsulta

Las subconsultas se pueden especificar en muchos sitios:

• Con alias Para obtener más información, consulte Subconsultas con alias.
• Con IN o NOT IN. Para obtener más información, consulte Subconsultas con IN y
Subconsultas con NOT IN.
• En instrucciones UPDATE, DELETE y INSERT. Para obtener más información,
consulte Subconsultas en las instrucciones UPDATE, DELETE e INSERT.
• Con los operadores de comparación. Para obtener más información, consulte
Subconsultas con operadores de comparación.
• Con ANY, SOME o ALL. Para obtener más información, consulte Operadores de
comparación modificados por ANY, SOME o ALL.
• Con EXISTS o NOT EXISTS. Para obtener más información, consulte
Subconsultas con EXISTS y Subconsultas con NOT EXISTS.
• En lugar de una expresión. Para obtener más información, consulte
Subconsultas usadas en lugar de una expresión.

Múltiples niveles de anidamiento


Una subconsulta puede incluir una o varias subconsultas. En una instrucción se puede
anidar cualquier número de subconsultas.

USE NAME;
GO
SELECT LASTNAME, FIRSTNAME
FROM NAMETABLA
WHERE NAMEATRIBUTO1 IN
(SELECT NAMEATRIBUTO2
FROM NAMETABLA2
WHERE NAMEATRIBUTO3 IN
(SELECT NAMEATRIUTO3
FROM ATRIBUTO)
);
GO

Subconsultas con IN

El resultado de una subconsulta especificada con IN (o con NOT IN) es una lista de cero
o más valores. Una vez que la consulta devuelve los resultados, la consulta externa
hace uso de ellos.

USE ADVENTUREWORKS2016;
GO
SELECT NAME
FROM PRODUCTION.PRODUCT
WHERE PRODUCTSUBCATEGORYID IN
(SELECT PRODUCTSUBCATEGORYID
FROM PRODUCTION.PRODUCTSUBCATEGORY
WHERE NAME = 'WHEELS');
GO

Subconsultas con NOT IN

Las subconsultas que empiezan por la palabra clave NOT IN, devuelven también una
lista de cero o más valores.

USE AdventureWorks2016;
GO
SELECT Name
FROM Production.Product
WHERE ProductSubcategoryID NOT IN
(SELECT ProductSubcategoryID
FROM Production.ProductSubcategory
WHERE Name = 'Mountain Bikes'
OR Name = 'Road Bikes'
OR Name = 'Touring Bikes');
GO
Subconsultas en las instrucciones UPDATE, DELETE e INSERT

Las subconsultas se pueden anidar en instrucciones de manipulación de datos (DML)


UPDATE, DELETE, INSERT y SELECT.

En el ejemplo siguiente se duplica el valor de la columna ListPrice en la tabla


Production.Product. La subconsulta de la cláusula WHERE hace referencia a la tabla
Purchasing.ProductVendor para limitar las filas que se actualizan en la tabla Product
únicamente a las que proporciona BusinessEntity 1540.

USE ADVENTUREWORKS2016;
GO
UPDATE PRODUCTION.PRODUCT
SET LISTPRICE = LISTPRICE * 2
WHERE PRODUCTID IN
(SELECT PRODUCTID
FROM PURCHASING.PRODUCTVENDOR
WHERE BUSINESSENTITYID = 1540);
GO

Subconsultas con operadores de comparación

Las subconsultas se pueden presentar con uno de los operadores de comparación (=, <
>, >, > =, <, ! >, ! < o < =).

Una subconsulta precedida de un operador de comparación sin modificar (un operador


de comparación no seguido de ANY o ALL) debe devolver un valor individual en lugar
de una lista de valores, al igual que las subconsultas precedidas de IN. Si una
subconsulta de este tipo devuelve más de un valor, SQL Server muestra un mensaje de
error.

Para usar una subconsulta presentada con un operador de comparación sin modificar,
debe estar suficientemente familiarizado con los datos y con la naturaleza del
problema para saber que la subconsulta devolverá exactamente un valor.

Subconsultas con EXISTS

Cuando una subconsulta se especifica con la palabra clave EXISTS, funciona como una
prueba de existencia. La cláusula WHERE de la consulta externa comprueba si existen
las filas devueltas por la subconsulta. En realidad, la subconsulta no produce ningún
dato, devuelve el valor TRUE o FALSE.
Una subconsulta que se especifica con EXISTS tiene la sintaxis siguiente:

WHERE [NOT] EXISTS (subquery)

Subconsultas con NOT EXISTS

NOT EXISTSS funciona igual que EXISTS, con la diferencia de que la cláusula WHERE en
la que se utiliza se cumple si la subconsulta no devuelve ninguna fila.

Subconsultas usadas en lugar de una expresión

En Transact-SQL, una subconsulta se puede usar en el lugar en que se puede usar una
expresión en las instrucciones SELECT, UPDATE, INSERT y DELETE, excepto en una lista
ORDER BY.

Das könnte Ihnen auch gefallen