Vous êtes sur la page 1sur 9

Sintaxis SQL.

LIKE
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

BETWEEN
Mientras que la palabra clave IN ayuda a las personas a limitar el criterio de seleccin parauno o ms valores discretos, la palabra claveBETWEEN 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 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

IN
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

ORDER BY

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 claveORDER BY para 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 Sales Date

1500 05-Jan-1999

Boston San Francisco San Diego

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

Having
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 clusulaWHERE 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 BYsintaxis 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 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

GROUP BY
Ahora regresamos a las funciones de agregados. Recuerda que utilizamos lapalabra clave SUM para calcular las ventas totales para todos los negocios? Y si quisiramos calcular el total de ventas paracada 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 BYtodas las otras columnas seleccionadas, es decir, todas las columnas excepto aquella(s) que se operan por un operador aritmtico. COUNT

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_InformationResultado: 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, SELECT COUNT(DISTINCT store_name) FROM Store_Information Resultado: Count(DISTINCT store_name) 3 Anteriormente, hemos visto una unin izquierda, o interna, donde seleccionamos filas comunes a las tablas que participan en la unin. Qu sucede en los casos donde estamos interesados en la seleccin de elementos en una tabla sin importar si se encuentran presentes en la segunda tabla? Ahora necesitaremos utilizar el comando SQL OUTER JOIN. La sintaxis para realizar una unin externa en SQL depende de la base de datos. Por ejemplo, en Oracle, colocaremos un "(+)" en la clusula WHERE del otro lado de la tabla para la que queremos incluir todas las filas. 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 Geography
region_name store_name East East West West Boston New York Los Angeles San Diego

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 su columna "SALES" correspondiente es NULL. Ya que hemos comenzado trabajando con nmeros, la siguiente pregunta natural arealizarse 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.

Vous aimerez peut-être aussi