Vous êtes sur la page 1sur 12

SQL UNION >> El 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 SELECT DISTINCT). 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 San Diego Boston Date

Los Angeles 1500 05-Jan-1999 250 07-Jan-1999 700 08-Jan-1999 Los Angeles 300 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. La diferencia entre UNION ALL y UNION es que, mientras UNION slo selecciona valores distintos, UNION ALL selecciona 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 San Diego Boston Date

Los Angeles 1500 05-Jan-1999 250 07-Jan-1999 700 08-Jan-1999 Los Angeles 300 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 un operador OR (O) (el valor se selecciona si aparece en la primera o la segunda instruccin), el comando INTERSECT 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 San Diego Boston Date

Los Angeles 1500 05-Jan-1999 250 07-Jan-1999 700 08-Jan-1999 Los Angeles 300 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
Date 07-Jan-1999

Resultado:

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 respuesta final. 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 San Diego Boston Date

Los Angeles 1500 05-Jan-1999 250 07-Jan-1999 700 08-Jan-1999 Los Angeles 300 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
Date 05-Jan-1999 08-Jan-1999

Resultado:

"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 instrucciones WHERE 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 rojo se 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 San Diego Boston Date

Los Angeles 1500 05-Jan-1999 250 07-Jan-1999 700 08-Jan-1999 Los Angeles 300 08-Jan-1999

Table Geography region_name store_name East East West West Boston New York Los Angeles 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. Ce type 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 San Diego Boston Date

Los Angeles 1500 05-Jan-1999 250 07-Jan-1999 700 08-Jan-1999 Los Angeles 300 08-Jan-1999

Tabla Geography region_name store_name East East West West Boston New York Los Angeles 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 San Diego Boston Sales Date

Los Angeles 1500 05-Jan-1999 250 07-Jan-1999 700 08-Jan-1999 San Francisco 300 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 Los Angeles San Diego San Francisco Boston Nuevas Ventas Date 3000 05-Jan-1999 375 07-Jan-1999 300 08-Jan-1999 700 08-Jan-1999

SQL Sintaxis >> En esta pgina, enumeramos la sintaxis SQL para cada uno de los comandos SQL en esta gua de referencia. Para obtener explicaciones detalladas para cada sintaxis SQL, por favor dirjase a la seccin individual haciendo clic en la palabra clave. El propsito de esta pgina es brindar una pgina de referencia rpida para la sintaxis SQL. Le sugerimos que agregue esta pgina a favoritos ahora presionando Control-D para que pueda tener esta pgina de sintaxis a mano. Select SELECT "nom de colonne" FROM "nombre_tabla" Distinct SELECT DISTINCT "nombre_columna" FROM "nombre_tabla" Where SELECT "nombre_columna" FROM "nombre_tabla" WHERE "condition" And/Or SELECT "nombre_columna" FROM "nombre_tabla"

WHERE "condicin simple" {[AND|OR] "condicin simple"}+ In SELECT "nombre_columna" FROM "nombre_tabla" WHERE "nombre_columna" IN ('valor1', 'valor2', ...) Between SELECT "nombre_columna" FROM "nombre_tabla" WHERE "nombre_columna" BETWEEN 'valor1' AND 'valor2' Like SELECT "nombre_columna" FROM "nombre_tabla" WHERE "nombre_columna" LIKE {patrn} Order By SELECT "nombre_columna" FROM "nombre_tabla" [WHERE "condicin"] ORDER BY "nombre_columna" [ASC, DESC] Count SELECT COUNT("nombre_columna") FROM "nombre_tabla" Group By SELECT "nombre_columna 1", SUM("nombre_columna 2") FROM "nombre_tabla" GROUP BY "nombre_columna 1" Having SELECT "nombre_columna 1", SUM("nombre_columna 2") FROM "nombre_tabla" GROUP BY "nombre_columna 1" HAVING (condicin de funcin aritmtica) Create Table CREATE TABLE "nombre_tabla" ("columna 1" "tipo_de_datos_para_columna_1", "columna 2" "tipo_de_datos_para_columna_2", ... )

Drop Table DROP TABLE "nombre_tabla" Truncate Table TRUNCATE TABLE "nombre_tabla" Insert Into INSERT INTO "nombre_tabla" ("colonne 1", "colonne 2", ...) valorS ("valor 1", "valor 2", ...) Update UPDATE "nombre_tabla" SET "colonne 1" = [nuevo valor] WHERE {condition} Delete From DELETE FROM "nombre_tabla" WHERE {condicin}

Vous aimerez peut-être aussi