Вы находитесь на странице: 1из 59

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES Tabla Store_Information
store_name Sales San Diego Los Angeles Boston Date

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

Ingresamos, SELECT DISTINCT store_name FROM Store_Information Resultado: store_name Los Angeles San Diego Boston

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES Tabla Store_Information
store_name Sales San Diego Los Angeles Boston Date

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

Ingresamos, SELECT store_name FROM Store_Information WHERE Sales > 1000 Resultado: store_name Los Angeles

Tabla Store_Information

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES
store_name Los Angeles San Diego San Francisco Boston Sales Date 1500 05-Jan-1999 250 07-Jan-1999 300 08-Jan-1999 700 08-Jan-1999

Ingresamos, SELECT store_name FROM Store_Information WHERE Sales > 1000 OR (Sales < 500 AND Sales > 275) Resultado: store_name Los Angeles San Francisco

Tabla Store_Information

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES
store_name Los Angeles San Diego San Francisco Boston Sales Date 1500 05-Jan-1999 250 07-Jan-1999 300 08-Jan-1999 700 08-Jan-1999

Ingresamos, SELECT * FROM Store_Information WHERE store_name IN ('Los Angeles', 'San Diego') Resultado: store_name Sales San Diego Date

Los Angeles 1500 05-Jan-1999 250 07-Jan-1999

Tabla Store_Information

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES
store_name Los Angeles San Diego San Francisco Boston Sales Date 1500 05-Jan-1999 250 07-Jan-1999 300 08-Jan-1999 700 08-Jan-1999

Ingresamos, SELECT * FROM Store_Information WHERE Date BETWEEN '06-Jan-1999' AND '10-Jan-1999' Tenga en cuenta que la fecha puede almacenarse en diferentes formatos segn las diferentes bases de datos. Esta gua de referencia simplemente elige uno de los formatos. Resultado: store_name San Diego Boston Sales Date 250 07-Jan-1999 700 08-Jan-1999

San Francisco 300 08-Jan-1999

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES

Tabla Store_Information
store_name LOS ANGELES SAN DIEGO SAN FRANCISCO BOSTON Sales Date

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

Deseamos encontrar todos los negocios cuyos nombres contengan AN. Parahacerlo, ingresamos, SELECT * FROM Store_Information WHERE store_name LIKE '%AN%' Resultado: store_name LOS ANGELES Sales Date

1500 05-Jan-1999

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES SAN DIEGO SAN FRANCISCO 250 07-Jan-1999 300 08-Jan-1999

Tabla Store_Information
store_name Los Angeles San Diego San Francisco Boston Sales Date

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

Ingresamos, SELECT store_name, Sales, Date FROM Store_Information ORDER BY Sales DESC Resultado:

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES store_name Los Angeles Boston San Francisco San Diego Sales Date 1500 05-Jan-1999 700 08-Jan-1999 300 08-Jan-1999 250 07-Jan-1999

store_name Sales San Diego Boston 250 700

Date 07-Jan-1999 08-Jan-1999 08-Jan-1999

Los Angeles 1500 05-Jan-1999 Los Angeles 300

ingresaramos SELECT SUM(Sales) FROM Store_Information Resultado: SUM(Sales) 2750

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES

Tabla Store_Information
store_name Sales San Diego Boston 250 700 Date 07-Jan-1999 08-Jan-1999 08-Jan-1999

Los Angeles 1500 05-Jan-1999 Los Angeles 300

ingresamos, SELECT COUNT(store_name) FROM Store_Information Resultado: Count(store_name) 4 COUNT y DISTINCT pueden utilizarse juntos en una instruccin para determinar el nmero de las distintas entradas en una tabla. Por ejemplo, si deseamos saber el nmero de los distintos negocios, ingresaramos,

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES SELECT COUNT(DISTINCT store_name) FROM Store_Information Resultado: Count(DISTINCT store_name) 3

SELECT "nombre1_columna", SUM("nombre2_columna") FROM "nombre_tabla" GROUP BY "nombre1-columna" Ilustremos utilizando la siguiente tabla, Tabla Store_Information
store_name Sales San Diego Boston 250 700 Date 07-Jan-1999 08-Jan-1999 08-Jan-1999

Los Angeles 1500 05-Jan-1999 Los Angeles 300

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES Deseamos saber las ventas totales para cada negocio. Para hacerlo, ingresaramos, SELECT store_name, SUM(Sales) FROM Store_Information GROUP BY store_name Resultado: store_name SUM(Sales) Los Angeles 1800 San Diego Boston> 250 700

SELECT "nombre1_columna", SUM("nombre2_columna") FROM "nombre_tabla" GROUP BY "nombre1_columna" HAVING (condicin de funcin aritmtica) Nota: La clusula GROUP BY es opcional. En nuestro ejemplo, tabla Store_Information, Tabla Store_Information

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES
store_name Sales San Diego Boston 250 700 Date 07-Jan-1999 08-Jan-1999 08-Jan-1999 Los Angeles 1500 05-Jan-1999 Los Angeles 300

ingresaramos, SELECT store_name, SUM(sales) FROM Store_Information GROUP BY store_name HAVING SUM(sales) > 1500 Resultado: store_name SUM(Sales) Los Angeles 1800

Tabla Store_Information
store_name Sales Date

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES
Los Angeles 1500 05-Jan-1999 San Diego Los Angeles Boston 250 07-Jan-1999 300 08-Jan-1999 700 08-Jan-1999

Utilizamos el mismo ejemplo que en la seccin SQL GROUP BY, salvo que hemos colocado tanto el alias de columna como el alias de tabla: SELECT A1.store_name Store, SUM(A1.Sales) "Total Sales" FROM Store_Information A1 GROUP BY A1.store_name Resultado: Store San Diego Boston Total Sales 250 700

Los Angeles 1800

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES
store_name Los Angeles San Diego Los Angeles Boston Sales Date 1500 05-Jan-1999 250 07-Jan-1999 300 08-Jan-1999 700 08-Jan-1999

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus:

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES East West 700 2050

Las primeras dos lneas le indican a SQL que seleccione dos campos, el primero es el campo "nombre_regin" de la tabla Geography (denominado REGIN), y elsegundo es la suma del campo "Sales" de la tabla Store_Information (denominado SALES). Note como se utilizan los alias de tabla aqu: Geografa se denomina A1, e Informacin_Negocio se denomina A2. Sin los alias, la primera lnea sera SELECT Geography.region_name REGION, SUM(Store_Information.Sales) SALES que es mucho ms problemtica. En esencia, los alias de tabla facilitan el entendimiento de la totalidad de la instruccin SQL, especialmente cuando se incluyen tablas mltiples. Luego, pongamos nuestra atencin en la lnea 2, la instruccin WHERE. Aqu esdonde se especifica la condicin de la unin. En este caso, queremos asegurarnos que el contenido en nombre_negocio en la tabla Geografa concuerde con la tablaStore_Information, y la forma

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES de hacerlo es igualarlos. Esta instruccin WHEREes esencial para asegurarse de que obtenga el resultado correcto. Sin la correcta instruccin WHERE se producir una Unin Cartesiana. Las uniones cartesianas darn por resultado que de la consulta se arroje toda combinacin posible de las dos tablas (o cualquiera que sea el nmero de tablas en la instruccin FROM). En este caso, una unin cartesiana resultara en un total de 4x4 = Se presenta un resultado de16 filas. Tabla Store_Information
store_name Sales San Diego Boston 250 700 Date 07-Jan-1999 08-Jan-1999 08-Jan-1999

Los Angeles 1500 05-Jan-1999 Los Angeles 300

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES y queremos saber la suma de las ventas de todos los negocios. Si realizamos una unin regular, no podramos obtener lo que deseamos debido a que habramos omitido Nueva York" ya que no aparece en la tabla Store_Information. Por lo tanto, necesitamos realizar una unin externa respecto de las dos tablas anteriores: SELECT A1.store_name, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name (+) GROUP BY A1.store_name Note que en este caso, estamos utilizando la sintaxis Oracle para unin externa. Resultado: store_name SALES Boston New York Los Angeles 1800 San Diego 250 700

Nota: Se devuelve NULL cuando no hay coincidencia en la segunda tabla. En este caso, Nueva York" no aparece en la tabla Store_Information, por lo tanto sucolumna "SALES" correspondiente es NULL. Tabla Geography

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES
region_name store_name East East West West Boston New York Los Angeles San Diego

Ejemplo 1: MySQL/Oracle: SELECT CONCAT(region_name,store_name) FROM Geography WHERE store_name = 'Boston'; Resultado : 'EastBoston' Ejemplo 2: Oracle: SELECT region_name || ' ' || store_name FROM Geography WHERE store_name = 'Boston'; Resultado :

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES 'East Boston' Ejemplo 3: SQL Server: SELECT region_name + ' ' + store_name FROM Geography WHERE store_name = 'Boston'; Resultado : 'East Boston' Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

Ejemplo 1 :

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES SELECT SUBSTR(store_name, 3) FROM Geography WHERE store_name = 'Los Angeles'; Resultado : 's Angeles' Ejemplo 2 : SELECT SUBSTR(store_name,2,4) FROM Geography WHERE store_name = 'San Diego'; Resultado : 'an D'

RTRIM(str): Elimina todos los espacios en blanco del final de la cadena. Ejemplo 1 : SELECT TRIM(' Sample ');

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES Resultado : 'Sample' Ejemplo 2 : SELECT LTRIM(' Sample '); Resultado : 'Sample ' Ejemplo 3 : SELECT RTRIM(' Sample '); Resultado : ' Sample' La sintaxis SQL para CREATE TABLEes CREATE TABLE "nombre_tabla" ("columna 1" "tipo_de_datos_para_columna_1",

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES "columna 2" "tipo_de_datos_para_columna_2", ... ) Entonces, si debemos crear una tabla para el cliente tal como se especifica anteriormente, ingresaramos CREATE TABLE customer (First_Name char(50), Last_Name char(50), Address char(50), City char(50), Country char(25), Birth_Date date) A veces, deseamos brindar un valor predeterminado a cada columna. Se utiliza un valor predeterminado cuando no especifica un valor de columna cuando ingresa datos a la tabla. Para establecer un valor predeterminado, agregue [valor] Predeterminado luego de la instruccin de tipo de datos. En el ejemplo anterior, si deseamos predeterminar una columna Address como Desconocida y Ciudad como Mumbai, ingresaramos CREATE TABLE customer (First_Name char(50), Last_Name char(50), Address char(50) default 'Unknown', City char(50) default 'Mumbai', Country char(25), Birth_Date date)

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES Tambin puede limitar el tipo de informacin que una tabla /columna puede mantener. Esto se realiza a travs de la palabra clave CONSTRAINT, que se describe a continuacin. La sintaxis SQL para CREATE TABLEes CREATE TABLE "nombre_tabla" ("columna 1" "tipo_de_datos_para_columna_1", "columna 2" "tipo_de_datos_para_columna_2", ... ) Entonces, si debemos crear una tabla para el cliente tal como se especifica anteriormente, ingresaramos CREATE TABLE customer (First_Name char(50), Last_Name char(50), Address char(50), City char(50), Country char(25), Birth_Date date) A veces, deseamos brindar un valor predeterminado a cada columna. Se utiliza un valor predeterminado cuando no especifica un valor de columna cuando ingresa datos a la tabla. Para establecer un valor predeterminado, agregue [valor] Predeterminado luego de la instruccin de tipo de datos. En el ejemplo anterior, si deseamos predeterminar una columna Address como Desconocida y Ciudad como Mumbai, ingresaramos

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES CREATE TABLE customer (First_Name char(50), Last_Name char(50), Address char(50) default 'Unknown', City char(50) default 'Mumbai', Country char(25), Birth_Date date) Tambin puede limitar el tipo de informacin que una tabla /columna puede mantener. Esto se realiza a travs de la palabra clave CONSTRAINT, que se describe a continuacin.

La clave primaria se utiliza para identificar en forma nica cada lnea en la tabla. Puede ser parte de un registro real, o puede ser un campoartificial (uno que no tiene nada que ver con el registro real). Una clave primaria puede consistir en uno o ms campos en una tabla. Cuando se utilizan mltiples camposcomo clave primaria, se los denomina claves compuestas. Las claves primarias pueden especificarse cuando se crea la tabla (utilizando CREATE TABLE) o cambiando la estructura existente de la tabla (utilizando ALTER TABLE). A continuacin se presentan ejemplos para la especificacin de una clave primaria cuando se crea una tabla:

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES MySQL: CREATE TABLE Customer (SID integer, Last_Name varchar(30), First_Name varchar(30), PRIMARY KEY (SID)); Oracle: CREATE TABLE Customer (SID integer PRIMARY KEY, Last_Name varchar(30), First_Name varchar(30)); SQL Server: CREATE TABLE Customer (SID integer PRIMARY KEY, Last_Name varchar(30), First_Name varchar(30)); A continuacin se presentan ejemplos para la especificacin de una clave primaria al modificar una tabla: MySQL: ALTER TABLE Customer ADD PRIMARY KEY (SID); Oracle: ALTER TABLE Customer ADD PRIMARY KEY (SID);

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES SQL Server: ALTER TABLE Customer ADD PRIMARY KEY (SID); Nota: Antes de utilizar el comando ALTER TABLE para agregar una clave primaria, necesitar asegurarse de que el campo est definido como 'NOT NULL' -- en otraspalabras, NULL no puede aceptarse como valor para ese campo.

Una clave externa es uncampo (o campos) que seala la clave primaria de otra tabla. El propsito de la clave externa es asegurar la integridad referencial de los datos.En otras palabras, slo se permiten los valores que se esperan que aparezcan en la base de datos. Por ejemplo, digamos que tenemos dos tablas, una tabla CUSTOMER que incluye todos los datos del CUSTOMER, y la tabla RDENES que incluye los pedidos del CUSTOMER. La restriccin aqu es que todos los pedidos deben asociarse con un CUSTOMER que ya se encuentra en la tabla CUSTOMER. En este caso, colocaremos una clave externa en la tabla ORDERS y la relacionaremos con la clave primaria de la tabla CUSTOMER. De esta forma, nos aseguramos que todos los pedidos en la tabla ORDERS estn relacionadas con un CUSTOMER en la tabla CUSTOMER. En otras palabras, la tabla ORDERS no puede contener informacin de un CUSTOMER que no se encuentre en la tabla CUSTOMER. La estructura de estas dos tablas ser la siguiente:

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES Tabla CUSTOMER
nombre de columna caracterstica SID Last_Name First_Name Clave Primaria

Tabla ORDERS
nombre de columna caracterstica Order_ID Order_Date Customer_SID Amount Clave Externa Clave Primaria

En el ejemplo anterior, la columna Customer_SID en la tabla ORDERS es una clave externa sealando la columna SID en la tabla CUSTOMER. A continuacin se muestran ejemplos de cmo especificar la clave externa a la hora de crear la tabla ORDERS: MySQL: CREATE TABLE ORDERS

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES (Order_ID integer, Order_Date date, Customer_SID integer, Amount double, Primary Key (Order_ID), Foreign Key (Customer_SID) references CUSTOMER(SID)); Oracle: CREATE TABLE ORDERS (Order_ID integer primary key, Order_Date date, Customer_SID integer references CUSTOMER(SID), Amount double); SQL Server: CREATE TABLE ORDERS (Order_ID integer primary key, Order_Date datetime, Customer_SID integer references CUSTOMER(SID), Amount double); A continuacin se presentan ejemplos para la especificacin de una clave externa al modificar una tabla: Esto asume que se ha creado la tabla ORDERS, y que la clave externa todava no se ha ingresado:

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES MySQL: ALTER TABLE ORDERS ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(SID); Oracle: ALTER TABLE ORDERS ADD (CONSTRAINT fk_orders1) FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(SID); SQL Server: ALTER TABLE ORDERS ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(SID);

Las vistas pueden considerarse como tablas virtuales. Generalmente hablando, una tabla tiene un conjunto de definiciones, y almacenadatos fsicamente. Unavista tambin tiene un conjunto de definiciones, que se construye en la parte superior de la(s) tabla(s) u otra(s) vista(s), y no almacena datos fsicamente. La sintaxis para la creacin de una vista es la siguiente: CREATE VIEW "NOMBRE_VISTA" AS "Instruccin SQL"

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES La Instruccin SQL puede ser cualquiera de las instrucciones SQL que hemos descripto en esta gua de referencia. Utilicemos un ejemplo simple para ilustrar. Supongamos que tenemos la siguiente tabla: Tabla Customer (First_Name char(50), Last_Name char(50), Address char(50), City char(50), Country char(25), Birth_Date date) y deseamos crear una vista denominada V_Customer que contiene slo las columnas First_Name, Last_Name y Pas de esta tabla, ingresaramos CREATE VIEW V_Customer AS SELECT First_Name, Last_Name, Country FROM Customer Ahora tenemos una vista llamada V_Customer con la siguiente estructura: View V_Customer (First_Name char(50), Last_Name char(50), Country char(25))

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES Podemos utilizar tambin una vista para aplicar uniones a dos tablas. En este caso, los usuarios slo ven una vista en vez de dos tablas, y la instruccin SQL que los usuarios necesitan emitir se vuelve mucho ms simple. Digamos que tenemos las siguientes dos tablas: Tabla Store_Information
store_name Sales San Diego Los Angeles Boston Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y deseamos construir una vista que tenga ventas organizadas segn la regin. Colocaramos la siguiente instruccin SQL:

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES

CREATE VIEW V_REGION_SALES AS SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Esto nos brinda una vista, V_REGION_SALES, que se ha definido para las ventas de los negocios segn los registros de la regin. Si deseamos saber el contenido de esta vista, ingresamos, SELECT * FROM V_REGION_SALES Resultado: REGION SALES East West 700 2050

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES Los ndices nos ayudan aobtener datos de las tablas en forma msrpida. Utilicemos un ejemplo para ilustrar este punto: Digamos que estamos interesados en leer en un libro de jardinera acerca de cmo cultivar pimientos. En vez de leer el libro desde el comienzo hasta que encontremos una seccinsobre pimientos, es mucho ms rpido paranosotros ir a la seccin ndice al final del libro, ubicar qu pginas contienen la informacinsobre pimientos, y luego dirigirnos a esas pginas directamente. Al dirigirnos al ndiceprimero ahorramos tiempo y seguramente es el mtodo ms eficiente para ubicar la informacin que necesitamos. El mismo principio se aplica para la obtencin de datos desde una tabla de base de datos. Sin un ndice, el sistema de base de datos lee a travs de toda la tabla (este proceso se denomina escaneo de tabla) para localizar la informacin deseada. Conel ndice correcto en su lugar, el sistema de base de datos puede entonces primero dirigirse al ndice para encontrar de dnde obtener los datos, y luego dirigirse a dichas ubicaciones para obtener los datos necesarios. Esto es mucho ms rpido. Por lo tanto, generalmente se recomienda crear ndices en tablas. Un ndice puede cubrir una o ms columnas. La sintaxis general para la creacin de un ndice es: CREATE INDEX "NOMBRE_NDICE" ON "NOMBRE_TABLA" (NOMBRE_COLUMNA) Digamos que tenemos la siguiente tabla: Tabla Customer (First_Name char(50), Last_Name char(50), Address char(50), City char(50),

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES Country char(25), Birth_Date date) Si deseamos crear un ndice tanto en Ciudad como en Pas, ingresaramos, CREATE INDEX IDX_CUSTOMER_LAST_NAME on CUSTOMER (Last_Name) Pour crer un index dans City et Country, il faut saisir CREATE INDEX IDX_CUSTOMER_LOCATION on CUSTOMER (City, Country) No hay una regla estricta respecto de cmo nombrar un ndice. El mtodo generalmente aceptado es colocar un prefijo, tal como IDX_, antes del nombre de un ndice para evitar la confusin con otros objetos de la base de datos. Tambin es unabuena idea brindar informacin sobre qu tabla y columna(s) se utilizar el ndice. Por favor note que la sintaxis exacta para CREATE INDEX puede ser distinta segn las diferentes bases de datos. Debera consultar con su manual de referencia de base de datos para obtener la sintaxis precisa. La sintaxis SQL para ALTER TABLE es ALTER TABLE "nombre_tabla" [modificar especificacin]

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES [modificar especificacin] depende del tipo de modificacin que deseamos realizar. Para los usos mencionados anteriormente, las instrucciones [modificar especificacin] son: Agregar una columna: ADD columna 1 tipos de datos para columna 1 Eliminar una columna: DROP columna 1 Cambiar el nombre de una columna: CHANGE nombre antiguo de la columna nuevo nombre de la columna tipos de datos para la nueva columna". Cambiar el tipo de datos para una columna: MODIFY columna 1 nuevo tipo de datos

Recorramos ejemplos para cada uno de lo anteriormente mencionado, utilizando la tabla cliente creada en la seccin CREATE TABLE, il convient de se reporter aux exemples mentionns ci-dessus. Tabla customer
Column Name Data Type First_Name Last_Name Address City Country Birth_Date char(50) char(50) char(50) char(50) char(25) date

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES Primero, deseamos agregar una columna denominada Gender a esta tabla. Para hacerlo, ingresamos, ALTER table customer add Gender char(1) Estructura de la tabla resultante: Table customer
Column Name Data Type First_Name Last_Name Address City Country Birth_Date Gender char(50) char(50) char(50) char(50) char(25) date char(1)

Luego, deseamos renombrar Address" a Addr. Para hacerlo, ingresamos, ALTER table customer change Address Addr char(50) Estructura de la tabla resultante:

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES Table customer
Column Name Data Type First_Name Last_Name Addr City Country Birth_Date Gender char(50) char(50) char(50) char(50) char(25) date char(1)

Luego, lo que queremos es cambiar el tipo de datos para Addr a 30 caracteres. Para hacerlo, ingresamos, ALTER table customer modify Addr char(30) Estructura de la tabla resultante: Table customer
Column Name Data Type First_Name char(50)

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES
Last_Name Addr City Country Birth_Date Gender char(50) char(30) char(50) char(25) date char(1)

Finalmente, deseamos eliminar la columna Gender. Para hacerlo, ingresamos, ALTER table customer drop Gender Estructura de la tabla resultante: Table customer
Column Name Data Type First_Name Last_Name Addr City Country Birth_Date char(50) char(50) char(30) char(50) char(25) date

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES

La sintaxis para insertar datos en una tabla mediante una fila por vez es la siguiente: INSERT INTO "nombre_tabla" ("columna1", "columna2", ...) VALUES ("valor1", "valor2", ...) Suponiendo que tenemos una taba con la siguiente estructura, Tabla Store_Information
Column Name Data Type store_name Sales Date char(50) float datetime

y ahora deseamos insertar una fila adicional en la tabla que represente los datos de ventas para Los ngeles el 10 de enero de 1999. En ese da, este negocio tena $900 dlares estadounidenses en ventas. Por lo tanto, utilizaremos la siguiente escritura SQL: INSERT INTO Store_Information (store_name, Sales, Date) VALUES ('Los Angeles', 900, '10-Jan-1999')

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES El segundo tipo de INSERT INTO nos permite insertar filas mltiples en una tabla. A diferencia del ejemplo anterior, donde insertamos una nica fila al especificar sus valores para todas las columnas, ahora utilizamos la instruccin SELECT para especificar los datos que deseamos insertar en la tabla. Si est pensando si esto significa que est utilizando informacin de otra tabla, est en lo correcto. La sintaxis es la siguiente: INSERT INTO "tabla1" ("columna1", "columna2", ...) SELECT "columna3", "columna4", ... FROM "tabla2" Note que esta es la forma ms simple. La instruccin entera puede contener fcilmente clusulas WHERE, GROUP BY, y HAVING, as como tambin uniones y alias. Entonces por ejemplo, si deseamos tener una tabla Store_Information, que recolecte la informacin de ventas para el ao 1998, y ya conoce en donde reside la fuente de datos en tabala Sales_Information table, ingresaremos: INSERT INTO Store_Information (store_name, Sales, Date) SELECT store_name, Sales, Date FROM Sales_Information WHERE Year(Date) = 1998 Aqu hemos utilizado la sintaxis de Servidor SQL para extraer la informacin anual por medio de una fecha. Otras bases de datos relacionales pueden tener sintaxis diferentes. Por ejemplo, en Oracle, utilizar to_char (date,'yyyy')=1998.

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES
store_name Sales San Diego Los Angeles Boston Date Los Angeles 1500 05-Jan-1999 250 07-Jan-1999 300 08-Jan-1999 700 08-Jan-1999

y notamos que las ventas para Los Angeles el 08/01/1999 es realmente de 500 en vez de 300 dlares estadounidenses, y que esa entrada en particular necesita actualizarse. Para hacerlo, utilizamos el siguiente SQL: UPDATE Store_Information SET Sales = 500 WHERE store_name = "Los Angeles" AND Date = "08-Jan-1999" La tabla resultante ser vera Tabla Store_Information
store_name Sales San Diego Los Angeles Date

Los Angeles 1500 05-Jan-1999 250 07-Jan-1999 500 08-Jan-1999

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES
Boston 700 08-Jan-1999

En este caso, hay slo una fila que satisface la condicin en la clusula WHERE. Si hay mltiples filas que satisfacen la condicin, todas ellas se modificarn. Tambin es posible UPDATE mltiples columnas al mismo tiempo. La sintaxis en este caso se vera como la siguiente: UPDATE "nombre_tabla" SET colonne 1 = [[valor1], colonne 2 = [valor2] WHERE {condicin}
store_name Sales San Diego Los Angeles Boston Date

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

y decidimos no mantener ninguna informacin sobre Los ngeles en esta tabla. Para lograrlo, ingresamos el siguiente SQL: DELETE FROM Store_Information WHERE store_name = "Los Angeles"

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES Ahora el contenido de la tabla se vera, Tabla Store_Information
store_name Sales Date San Diego Boston 250 07-Jan-1999 700 08-Jan-1999

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 250 Date 07-Jan-1999

Los Angeles 1500 05-Jan-1999

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES
Los Angeles 300 Boston 700 08-Jan-1999 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

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES 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. Tabla Store_Information
store_name Sales San Diego Boston 250 700 Date 07-Jan-1999 08-Jan-1999 08-Jan-1999

Los Angeles 1500 05-Jan-1999 Los Angeles 300

Tabla Internet_Sales
Date Sales

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN 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 unnegocio 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

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES 10-Jan-1999 11-Jan-1999 12-Jan-1999

[Instruccin SQL 1] INTERSECT [Instruccin SQL 2] Digamos que tenemos las siguientes dos tablas: Tabla Store_Information
store_name Sales San Diego Boston 250 700 Date 07-Jan-1999 08-Jan-1999 08-Jan-1999

Los Angeles 1500 05-Jan-1999 Los Angeles 300

Tabla Internet_Sales

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN 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.

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES

MINUS [Instruccin SQL 2] Continuemos con el mismo ejemplo: Tabla Store_Information


store_name Sales San Diego Boston 250 700 Date 07-Jan-1999 08-Jan-1999 08-Jan-1999

Los Angeles 1500 05-Jan-1999 Los Angeles 300

Tabla Internet_Sales
Date Sales

07-Jan-1999 250 10-Jan-1999 535 11-Jan-1999 320

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES
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.

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES 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.

Es posible incorporar una instruccin SQL dentro de otra. Cuando esto se hace en las instruccionesWHERE o HAVING, tenemos unaconstruccin 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

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES 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 250 700 Date 07-Jan-1999 08-Jan-1999 08-Jan-1999

Los Angeles 1500 05-Jan-1999 Los Angeles 300

Table Geography
region_name store_name East East West Boston New York Los Angeles

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES
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. Ce type

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES de sous-requte est appel sous-requte simple. Si la requte interne dpend de la requte externe, nous aurons une sousrequte 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. En la seccin anterior, utilizamos IN paraenlazar la consultainterna y la consultaexterna en una instruccin de subconsulta. IN no es lanica forma de hacerlo uno puede utilizar muchos operadores talescomo >, <, o =. EXISTSes un operador especialque 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

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES 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 250 700 Date 07-Jan-1999 08-Jan-1999 08-Jan-1999

Los Angeles 1500 05-Jan-1999 Los Angeles 300

Tabla Geography
region_name store_name

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES
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

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES no influencia la forma en que se ejecuta la consulta externa.

CASE se utiliza parabrindar 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 clusulaELSE es opcional. En nuestra Tabla Store_Information de ejemplo, Tabla Store_Information
store_name Sales Date

store_name Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES
Los Angeles San Diego San Francisco Boston 1500 05-Jan-1999 250 07-Jan-1999 300 08-Jan-1999 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 Sales San Diego Los Angeles Boston

Date

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

Tabla Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

y queremos saber las ventas por regin. Vemos que la tabla Geography incluyeinformacin sobre regiones y negocios, y la tabla Store_Information contiene informacin de ventas para cada negocio. Para obtener la informacin de ventas por regin, debemos combinar la informacin de las dos tablas. Al examinar las dos tablas, encontramos que estn enlazadas a travs del campo comn nombre_negocio Primero presentaremos la instruccin SQL y explicaremos el uso de cada segmento despus: SELECT A1.region_name REGION, SUM(A2.Sales) SALES FROM Geography A1, Store_Information A2 WHERE A1.store_name = A2.store_name GROUP BY A1.region_name Resultado: REGIN SALES 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

Вам также может понравиться