Anda di halaman 1dari 8

En esta seccin, describiremos las siguientes palabras claves y conceptos SQL:

SQL UNION
SQL UNION ALL
SQL INTERSECT
SQL MINUS
SQL Subconsulta
SQL EXISTS
SQL CASE
SQL UNION >>
l propsito del comando SQL UNION es combinar los resultados de dos consultas juntas. En este
sentido,UNION es parecido a Join, ya que los dos se utilizan para informacin relacionada en
mltiples tablas. Una restriccin de UNION es que todas las columnas correspondientes necesitan
ser del mismo tipo de datos. Tambin, cuando utilizamos UNION, slo se seleccionan valores
distintos (similar a SELECTDISTINCT).
La sintaxis es la siguiente:
[Instruccin SQL 1]
UNION
[Instruccin SQL 2]
Supongamos que tenemos las siguientes dos tablas,
Tabla Store_Information
store_name Sales Date
Los Angeles 1500 05-Jan-1999
San Diego 250 07-Jan-1999
Los Angeles 300 08-Jan-1999
Boston 700 08-Jan-1999
Tabla Internet_Sales
Date Sales
07-Jan-1999 250
10-Jan-1999 535
11-Jan-1999 320
12-Jan-1999 750
y deseamos saber de todas las fechas donde hay una operacin de venta. Para hacerlo, utilizamos
la siguiente instruccin SQL:
SELECT Date FROM Store_Information
UNION
SELECT Date FROM Internet_Sales
Resultado:
Date
05-Jan-1999
07-Jan-1999
08-Jan-1999
10-Jan-1999
11-Jan-1999
12-Jan-1999
Por favor note que si ingresamos "SELECT DISTINCT Date" para cada o ambas instrucciones
SQL, obtendremos el mismo conjunto de resultados.
SQL UNION ALL >>
El propsito del Comando SQL UNION ALL es tambin combinar los resultados de dos consultas
juntas. Ladiferencia entre UNION ALL y UNION es que, mientrasUNION slo selecciona valores
distintos, UNION ALLselecciona todos los valores.
La sintaxis para UNION ALL es la siguiente:
[Instruccin SQL 1]
UNION ALL
[Instruccin SQL 2]
Utilicemos el mismo ejemplo de la seccin anterior para ilustrar la diferencia. Supongamos que
tenemos las siguientes dos tablas,
Tabla Store_Information
store_name Sales Date
Los Angeles 1500 05-Jan-1999
San Diego 250 07-Jan-1999
Los Angeles 300 08-Jan-1999
Boston 700 08-Jan-1999
Tabla Internet_Sales
Date Sales
07-Jan-1999 250
10-Jan-1999 535
11-Jan-1999 320
12-Jan-1999 750
y deseamos encontrar las fechas en donde se realiz una operacin de venta en un negocio como
as tambin las fechas donde hay una venta a travs de Internet. Para hacerlo, utilizamos la
siguiente instruccin SQL:
SELECT Date FROM Store_Information
UNION ALL
SELECT Date FROM Internet_Sales
Resultado:
Date
05-Jan-1999
07-Jan-1999
08-Jan-1999
08-Jan-1999
07-Jan-1999
10-Jan-1999
11-Jan-1999
12-Jan-1999
SQL INTERSECT >>
Parecido al comando UNION, INTERSECT tambin opera en dos instrucciones SQL. La diferencia
es que, mientras UNION acta fundamentalmente como unoperador OR (O) (el valor se selecciona
si aparece en la primera o la segunda instruccin), el comandoINTERSECT acta como un
operador AND (Y) (el valor se selecciona si aparece en ambas instrucciones).
La sintaxis es la siguiente:
[Instruccin SQL 1]
INTERSECT
[Instruccin SQL 2]
Digamos que tenemos las siguientes dos tablas:
Tabla Store_Information
store_name Sales Date
Los Angeles 1500 05-Jan-1999
San Diego 250 07-Jan-1999
Los Angeles 300 08-Jan-1999
Boston 700 08-Jan-1999
Tabla Internet_Sales
Date Sales
07-Jan-1999 250
10-Jan-1999 535
11-Jan-1999 320
12-Jan-1999 750
y deseamos encontrar todas las fechas donde hay ventas tanto en el negocio como en Internet.
Para hacerlo, utilizamos la siguiente instruccin SQL:
SELECT Date FROM Store_Information
INTERSECT
SELECT Date FROM Internet_Sales
Resultado:
Date
07-Jan-1999
Por favor note que el comando INTERSECT slo arrojar valores distintivos.
SQL MINUS >>
MINUS opera en dos instrucciones SQL. Toma todos los resultados de la primera instruccin SQL,
y luego sustrae aquellos que se encuentran presentes en la segunda instruccin SQL para obtener
una respuestafinal. Si la segunda instruccin SQL incluye resultados que no estn presentes en la
primera instruccin SQL, dichos resultados se ignoran.
La sintaxis es la siguiente:
[Instruccin SQL 1]
MINUS
[Instruccin SQL 2]
Continuemos con el mismo ejemplo:
Tabla Store_Information
store_name Sales Date
Los Angeles 1500 05-Jan-1999
San Diego 250 07-Jan-1999
Los Angeles 300 08-Jan-1999
Boston 700 08-Jan-1999
Tabla Internet_Sales
Date Sales
07-Jan-1999 250
10-Jan-1999 535
11-Jan-1999 320
12-Jan-1999 750
y deseamos encontrar todas las fechas donde hay ventas en el negocio, pero no aquellas
realizadas por Internet. Para hacerlo, utilizamos la siguiente instruccin SQL:
SELECT Date FROM Store_Information
MINUS
SELECT Date FROM Internet_Sales
Resultado:
Date
05-Jan-1999
08-Jan-1999
"05-Jan-1999", "07-Jan-1999",et "08-Jan-1999" son los valores distintivos arrojados desde
"SELECT Date FROM Store_Information." Tambin se arroja "07-Jan-1999" de la segunda
instruccin SQL, "SELECT Date FROM Internet_Sales," de este modo se lo excluye del conjunto
final de resultados.
Por favor note que el comando MINUSslo arrojar valores distintos.
Algunas bases de datos pueden utilizar EXCEPT en vez de MINUS. Por favor verifique la
documentacin para su base de datos especfica para el uso apropiado.
SQL Subconsulta >>
Es posible incorporar una instruccin SQL dentro de otra. Cuando esto se hace en las
instruccionesWHERE o HAVING, tenemos una construccin de subconsulta.
La sintaxis es la siguiente:
SELECT "nombre1_columna"
FROM "nombre1_tabla"
WHERE "nombre2_columna" [Operador de Comparacin]
(SELECT "nombre3_columna"
FROM "nombre2_tabla"
WHERE [Condicin])
[Operador de Comparacin] podran ser operadores de igualdad tales como =, >, <, >=, <=.
Tambin puede ser un operador textual como "LIKE". La parte en rojose considera como la
"consulta interna", mientras que la parte en verde se considera como la "consulta externa".
Utilisons le mme exemple que celui que nous avons utilis pour illustrer les jointures SQL :
Table Store_Information
store_name Sales Date
Los Angeles 1500 05-Jan-1999
San Diego 250 07-Jan-1999
Los Angeles 300 08-Jan-1999
Boston 700 08-Jan-1999
Table Geography
region_name store_name
East Boston
East New York
West Los Angeles
West San Diego
et en utilisant une sous-requte pour trouver les ventes de tous les magasins dans la rgion West
(Ouest), il faudra utiliser linstruction SQL suivante :
SELECT SUM(Sales) FROM Store_Information
WHERE Store_name IN
(SELECT store_name FROM Geography
WHERE region_name = 'West')
Rsultat :
SUM(Sales)
2050
Dans cet exemple, au lieu de joindre directement les deux tables et dajouter seulement le montant
des ventes des magasins de la rgion West (Ouest), nous allons dabord utiliser la sous-requte
pour trouver les magasins situs dans la rgion West (Ouest), puis additionner le montant des
ventes de ces magasins.
Dans lexemple ci-dessus, la requte interne est dabord excute, puis le rsultat est envoy la
requte externe. Cetype de sous-requte est appel sous-requte simple. Si la requte interne
dpend de la requte externe, nous aurons une sous-requte corrle. Vous trouverez ci-dessous
un exemple de de sous-requte corrle :
SELECT SUM(a1.Sales) FROM Store_Information a1
WHERE a1.Store_name IN
(SELECT store_name FROM Geography a2
WHERE a2.store_name = a1.store_name)
Notez la clause WHERE dans la requte interne, o la condition ncessite une table de la requte
externe.
SQL EXISTS >>
En la seccin anterior, utilizamos IN para enlazar la consulta interna y la consulta externa en una
instruccin de subconsulta. IN no es la nica forma de hacerlo uno puede utilizar muchos
operadores tales como >, <, o =. EXISTS es un operador especial que describiremos
en esta seccin.
EXISTS simplemente verifica si la consulta interna arroja alguna fila. Si lo hace, entonces la
consulta externa procede. De no hacerlo, la consulta externa no se ejecuta, y la totalidad de la
instruccin SQL no arroja nada.
La sintaxis para EXISTS es
SELECT "nombre1_columna"
FROM "nombre1_tabla"
WHERE EXISTS
(SELECT *
FROM "nombre2_tabla"
WHERE [Condicin])
Por favor note que en vez de *, puede seleccionar una o ms columnas en la consulta interna. El
efecto ser idntico.
Utilizamos las mismas tablas de ejemplos:
Tabla Store_Information
store_name Sales Date
Los Angeles 1500 05-Jan-1999
San Diego 250 07-Jan-1999
Los Angeles 300 08-Jan-1999
Boston 700 08-Jan-1999
Tabla Geography
region_name store_name
East Boston
East New York
West Los Angeles
West San Diego
colocaramos la siguiente consulta SQL:
SELECT SUM(Sales) FROM Store_Information
WHERE EXISTS
(SELECT * FROM Geography
WHERE region_name = 'West')
Obtendremos el siguiente resultado:
SUM(Sales)
2750
Al principio, esto puede parecer confuso, debido a que la subsequencia incluye la condicin
[region_name = 'West'], an as la consulta sum los negocios para todas las regiones. Si
observamos de cerca, encontramos que debido a que la subconsulta arroja ms de 0 filas, la
condicin EXISTS es verdadera, y la condicin colocada dentro de la consulta interna
no influencia la forma en que se ejecuta la consulta externa.
SQL CASE >>
CASE se utiliza para brindar un tipo de lgica "si-entonces-otro" para SQL. Su sintaxis es:
SELECT CASE ("nombre_columna")
WHEN "condicin1" THEN "resultado1"
WHEN "condicin2" THEN "resultado2"
...
[ELSE "resultadoN"]
END
FROM "nombre_tabla"
"condicin" puede ser un valor esttico o una expresin. La clusula ELSE es opcional.
En nuestra Tabla Store_Information de ejemplo,
Tabla Store_Information
store_name Sales Date
Los Angeles 1500 05-Jan-1999
San Diego 250 07-Jan-1999
San Francisco 300 08-Jan-1999
Boston 700 08-Jan-1999

si deseamos multiplicar las sumas de ventas de 'Los Angeles' por 2 y las sumas de ventas de 'San
Diego' por 1,5, ingresamos,
SELECT store_name, CASE store_name
WHEN 'Los Angeles' THEN Sales * 2
WHEN 'San Diego' THEN Sales * 1.5
ELSE Sales
END
"Nuevas Ventas",
Date
FROM Store_Information
"Nuevas Ventas" es el nombre que se le otorga a la columna con la instruccin CASE.
Resultado:
store_name Nuevas Ventas Date
Los Angeles 3000 05-Jan-1999
San Diego 375 07-Jan-1999
San Francisco 300 08-Jan-1999
Boston 700 08-Jan-1999

Anda mungkin juga menyukai