You are on page 1of 12

COMANDOS SQL Cmo se ingresan estas filas de datos en estas tablas en primer lugar?

Esto es lo que se trata en esta seccin, que explica la instruccin INSERT, y en la siguiente seccin, que explica la instruccin UPDATE. En SQL, hay fundamental y bsicamente dos formas para ingresar datos en una tabla: Una es insertar una fila por vez, y la otra es insertar filas mltiples por vez. Primero observemos como podemos ingresar datos a travs de una fila por vez: 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') 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. Para qu utilizamos los comandos SQL? El uso comn es la seleccin de datos desde tablas ubicadas en una base de datos. Inmediatamente, vemos dos palabras claves: necesitamos SELECT la informacin FROMuna tabla. (Note que la tabla es un contenedor que reside en la base de datos donde se almacena la informacin. Para obtener ms

informacin acerca de cmo manipular tablas, consulte la Seccin Manipulacin de Tabla). Por lo tanto tenemos la estructura SQL ms bsica: SELECT "nombre_columna" FROM "nombre_tabla" Para ilustrar el ejemplo anterior, suponga que tenemos 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

Podemos utilizar esta tabla como ejemplo a lo largo de la gua de referencia (esta tabla aparecer en todas las secciones). Para seleccionar todos los negocios en esta tabla, ingresamos, SELECT store_name FROM Store_Information Resultado: store_name Los Angeles San Diego Los Angeles Boston Pueden seleccionarse los nombres de columnas mltiples, as como tambin los nombres de tablas mltiples. Luego, podramos desear seleccionar condicionalmente los datos de una tabla. Por ejemplo, podramos desear slo recuperar los negocios con ventas mayores a $1.000 dlares estadounidenses. Para ello, utilizamos la palabra clave WHERE. La sintaxis es la siguiente: SELECT "nombre_columna" FROM "nombre_tabla" WHERE "condicin" Por ejemplo, para seleccionar todos los negocios con ventas mayores a 1.000 dlares estadounidenses en la 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

Ingresamos,

SELECT store_name FROM Store_Information WHERE Sales > 1000 Resultado:

store_name Los Angeles


En la seccin anterior, hemos visto que la palabra clave WHEREtambin puede utilizarse para seleccionar datos condicionalmente desde una tabla. Esta condicin puede ser una condicin simple (como la que se presenta en la seccin anterior), o puede ser una condicin compuesta. Las condiciones compuestas estn formadas por mltiples condiciones simples conectadas por AND u OR. No hay lmites en el nmero de condiciones simples que pueden presentarse en una sola instruccin SQL. La sintaxis de una condicin compuesta es la siguiente: SELECT "nombre_columna" FROM "nombre_tabla" WHERE "condicin simple" {[AND|OR] "condicin simple"}+ {}+ significa que la expresin dentro de las llaves ocurrir una o ms veces. Note que AND u OR pueden utilizarse indistintamente. Adems, podemos utilizar el smbolo parntesis () para indicar el orden de la condicin. Por ejemplo, podemos desear seleccionar todos los negocios con ventas mayores a 1000 dlares estadounidenses o todos los negocios con ventas menores a 500 dlares estadounidenses pero mayores a 275 dlares estadounidenses en la Tabla Store_Information, 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 FROM Store_Information WHERE Sales > 1000 OR (Sales < 500 AND Sales > 275) Resultado:

store_name Los Angeles San Francisco


En SQL, hay dos usos de la palabra clave IN, y esta seccin introduce aqul relacionado con la clusula WHERE. Cuando se lo utiliza en este contexto, sabemos exactamente el valor de los valores regresados que deseamos ver para al menos una de las columnas. La sintaxis para el uso de la palabra clave IN es la siguiente:

SELECT "nombre_columna" FROM "nombre_tabla" WHERE "nombre_columna" IN (''valor1', ''valor2', ...) El nmero de valores en los parntesis pueden ser uno o ms, con cada valor separado por comas. Los valores pueden ser nmeros o caracteres. Si hay slo un valor dentro del parntesis, este comando es equivalente a WHERE "nombre_columna" = 'valor1' Por ejemplo, podramos desear seleccionar todos los registros para los negocios de Los ngeles y San Diego en la Tabla Store_Information, 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 * 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

Mientras que la palabra clave INayuda a las personas a limitar el criterio de seleccin para uno o ms valores discretos, la palabra clave BETWEEN permite la seleccin de un rango. La sintaxis para la clusula BETWEEN es la siguiente: SELECT "nombre_columna" FROM "nombre_tabla" WHERE "nombre_columna" BETWEEN 'valor1' AND 'valor2' Esto seleccionar todas las filas cuya columna tenga un valor entre 'valor1' y 'valor2'. Por ejemplo, podramos desear seleccionar la visualizacin de toda la informacin de ventas entre el 06 de enero de 1999, y el 10 de enero de 1999, en la Tabla Store_Information, Tabla Store_Information
store_name Los Angeles San Diego San Francisco Sales Date

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

Boston

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

LIKE es otra palabra clave que se utiliza en la clusula WHERE. Bsicamente, LIKE le permite hacer una bsqueda basada en un patrn en vez de especificar exactamente lo que se desea (como en IN) o determinar un rango (como en BETWEEN). La sintaxis es la siguiente: SELECT "nombre_columna" FROM "nombre_tabla" WHERE "nombre_columna" LIKE {patrn} {patrn} generalmente consiste en comodines. Aqu hay algunos ejemplos:

'A_Z': Toda lnea que comience con 'A', otro carcter y termine con 'Z'. Por ejemplo, 'ABZ' y 'A2Z' deberan satisfacer la condicin, mientras 'AKKZ' no debera (debido a que hay dos caracteres entre A y Z en vez de uno). 'ABC%': Todas las lneas que comienzan con 'ABC'. Por ejemplo, 'ABCD' y 'ABCABC' ambas deberan satisfacer la condicin. '%XYZ': Todas las lneas que terminan con 'XYZ'. Por ejemplo, 'WXYZ' y 'ZZXYZ' ambas deberan satisfacer la condicin. '%AN%': : Todas las lneas que contienen el patrn 'AN' en cualquier lado. Por ejemplo, 'LOS ANGELES' y 'SAN FRANCISCO' ambos deberan satisfacer la condicin.

Digamos que tenemos la siguiente tabla: 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. Para hacerlo, ingresamos, SELECT * FROM Store_Information WHERE store_name LIKE '%AN%' Resultado: store_name LOS ANGELES SAN DIEGO SAN FRANCISCO Sales Date

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

Hasta ahora, hemos visto cmo obtener datos de una tabla utilizando los comandos SELECT y WHERE. Con frecuencia, sin embargo, necesitamos enumerar el resultado en un orden particular. Esto podra ser en orden ascendente, en orden descendente, o podra basarse en valores numricos o de texto. En tales casos, podemos utilizar la palabra clave ORDER BYpara alcanzar nuestra meta. La sintaxis para una instruccin ORDER BY es la siguiente: SELECT "nombre_columna" FROM "nombre_tabla" [WHERE "condicin"] ORDER BY "nombre_columna" [ASC, DESC] [] significa que la instruccin WHERE es opcional. Sin embargo, si existe una clusula WHERE, viene antes de la clusula ORDER BY ASC significa que los resultados se mostrarn en orden ascendente, y DESC significa que los resultados se mostrarn en orden descendente. Si no se especifica ninguno, la configuracin predeterminada es ASC. Es posible ordenar por ms de una columna. En este caso, la clusula ORDER BYanterior se convierte en ORDER BY "nombre1_columna" [ASC, DESC], "nombre2_columna" [ASC, DESC] Suponiendo que elegimos un orden ascendente para ambas columnas, el resultado se clasificar en orden ascendente segn la columna 1. Si hay una relacin para el valor de la columna 1, se clasificar en orden ascendente segn la columna 2. Por ejemplo, podramos desear enumerar los contenidos de la Tabla Store_Information segn la suma en dlares, en orden descendente: 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 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

Adems del nombre de la columna, podramos utilizar la posicin de la columna (segn la consulta SQL) para indicar en qu columna deseamos aplicar la clusula ORDER BY. La primera columna es 1, y la segunda columna es 2, y as sucesivamente. En el ejemplo anterior, alcanzaremos los mismos resultados con el siguiente comando: SELECT store_name, Sales, Date FROM Store_Information ORDER BY 2 DESC Ya que hemos comenzado trabajando con nmeros, la siguiente pregunta natural a realizarse es si es posible hacer clculos matemticos con aquellos nmeros, tales como sumas, o sacar un promedio. La respuesta es s! SQL tiene varias funciones aritmticas, y estas son: - AVG - COUNT - MAX - MIN - SUM La sintaxis para el uso de funciones es, SELECT "tipo de funcin"("nombre_columna") FROM "nombre_tabla" Por ejemplo, si deseamos obtener la sumatoria de todas las ventas de 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

ingresaramos SELECT SUM(Sales) FROM Store_Information Resultado:

SUM(Sales) 2750

2 750 dlares estadounidenses representa la suma de todas las entradas de Ventas: 1500 + 250 + 300 + 700 . Adems de utilizar dichas funciones, tambin es posible utilizar SQL para realizar tareas simples como suma (+) y resta (-). Para ingresar datos del tipo caracter, hay tambin varias funciones de cadenas disponibles, tales como funciones de concatenacin, reduccin y subcadena. Los diferentes proveedores RDBMS tienen diferentes implementaciones de funciones de cadenas, y es mejor consultar las referencias para sus RDBMS a fin de ver cmo se utilizan estas funciones. Otra funcin aritmtica es COUNT. Esto nos permite COUNT el nmero de filas en una tabla determinada. La sintaxis es, SELECT COUNT("nombre_columna") FROM "nombre_columna" Por ejemplo, si deseamos encontrar el nmero de entradas de negocios en nuestra 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

ingresamos, SELECT COUNT(store_name) FROM Store_Information Resultado:

Count(store_name) 4
COUNT y DISTINCTpueden 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, SELECT COUNT(DISTINCT store_name) FROM Store_Information Resultado:

Count(DISTINCT store_name) 3
Ahora regresamos a las funciones de agregados. Recuerda que utilizamos la palabra clave SUMpara calcular las ventas totales para todos los negocios? Y si quisiramos calcular el total de ventas para cada negocio? Entonces, necesitamos hacer dos cosas: Primero, necesitamos asegurarnos de que hayamos seleccionado el nombre del negocio as como tambin las ventas totales. Segundo, debemos asegurarnos de que todas las sumas de las ventas estn GROUP BYnegocios. La sintaxis SQL correspondiente es,

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

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

La palabra clave GROUP BY se utiliza cuando estamos seleccionado columnas mltiples desde una tabla (o tablas) y aparece al menos un operador aritmtico en la instruccin SELECT. Cuando esto sucede, necesitamos GROUP BY todas las otras columnas seleccionadas, es decir, todas las columnas excepto aquella(s) que se operan por un operador aritmtico. Otra cosa que la gente puede querer hacer es limitar el resultado segn la suma correspondiente (o cualquier otra funcin de agregado). Por ejemplo, podramos desear ver slo los negocios con ventas mayores a 1 500 , dlares. En vez de utilizar la clusula WHERE en la instruccin SQL, a pesar de que necesitemos utilizar la clusula HAVING, que se reserva para funciones de agregados. La clusula HAVING se coloca generalmente cerca del fin de la instruccin SQL, y la instruccin SQL con la clusula HAVING. puede o no incluir la clusula GROUP BY sintaxis para HAVING es, 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 250 Date 07-Jan-1999 08-Jan-1999

Los Angeles 1500 05-Jan-1999 Los Angeles 300

Boston

700

08-Jan-1999

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

Algunas veces es necesario combinar en forma conjunta (concatenar) los resultados de varios campos diferentes. Cada base de datos brinda una forma para realizar esto: MySQL: CONCAT() Oracle: CONCAT(), || SQL Server: +

La sintaxis para CONCAT() es la siguiente: CONCAT(cad1, cad2, cad3, ...): Concatenar cad1, cad2, cad3, y cualquier otra cadena juntas. Por favor note que la funcin CONCAT() de Oracle slo permite dos argumentos slo dos cadenas pueden colocarse juntas al mismo tiempo utilizando esta funcin. Sin embargo, es posible concatenar ms de dos cadenas al mismo tiempo en Oracle utilizando '||'. Observemos algunos ejemplos. Supongamos que tenemos la siguiente tabla: Tabla Geography
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 : 'East Boston' Ejemplo 3: SQL Server: SELECT region_name + ' ' + store_name FROM Geography WHERE store_name = 'Boston'; Resultado : 'East Boston'

Una vez que hay datos en la tabla, podramos tener la necesidad de modificar los mismos. Para hacerlo, utilizamos el comando UPDATE. La sintaxis para esto es, UPDATE "nombre_tabla" SET "columna_1" = [nuevo valor] WHERE {condicin} Por ejemplo, digamos que actualmente tenemos la tabla a continuacin: 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

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 Date

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

Los Angeles Boston

500 08-Jan-1999 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} A veces podemos desear deshacernos de los registros de una tabla. Para ello, utilizamos el comando DELETE FROM. La sintaxis para esto es, DELETE FROM "nombre_tabla" WHERE {condicin} Es ms fcil utilizar un ejemplo. Por ejemplo, digamos que actualmente tenemos la siguiente tabla: 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

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" 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

You might also like