SlideShare una empresa de Scribd logo
Select
¿Para qué utilizamos los comandos SQL? El uso común es la selección de datos desde tablas ubicadas en una base de
datos. Inmediatamente, vemos dos palabras claves: necesitamos SELECT la información FROM una tabla. (Note que
la tabla es un contenedor que reside en la base de datos donde se almacena la información. Para obtener más
información acerca de cómo manipular tablas, consulte la Sección Manipulación de Tabla). Por lo tanto tenemos la
estructura SQL más básica:
SELECT "nombre_columna" FROM "nombre_tabla"
Para ilustrar el ejemplo anterior, suponga que tenemos la siguiente tabla:
Tabla Store_Information
store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Los Angeles 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999
Podemos utilizar esta tabla como ejemplo a lo largo de la guía 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 múltiples, así como también los nombres de tablas múltiples.
Distinct
La palabra clave SELECT nos permite tomar toda la información de una columna (o columnas) en una tabla. Esto,
obviamente, significa necesariamente que habrá redundancias. ¿Qué sucedería si sólo deseamos seleccionar cada
elemento DISTINCT? Esto es fácil de realizar en SQL. Todo lo que necesitamos hacer es agregar DISTINCT luego
de SELECT. La sintaxis es la siguiente:
SELECT DISTINCT "nombre_columna"
FROM "nombre_tabla"
Por ejemplo, para seleccionar todos los negocios distintos en la Tabla Store_Information,
Tabla Store_Information
store_name Sales Date
Los Angeles 1500 €05-Jan-1999
San Diego 250 €07-Jan-1999
Los Angeles 300 €08-Jan-1999
Boston 700 €08-Jan-1999
Ingresamos,
SELECT DISTINCT store_name FROM Store_Information
Resultado:
store_name
Los Angeles
San Diego
Boston
Where
Luego, podríamos desear seleccionar condicionalmente los datos de una tabla. Por ejemplo, podríamos desear sólo
recuperar los negocios con ventas mayores a $1.000 dólares estadounidenses. Para ello, utilizamos la palabra clave
WHERE. La sintaxis es la siguiente:
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "condición"
Por ejemplo, para seleccionar todos los negocios con ventas mayores a 1.000€ dólares estadounidenses en la Tabla
Store_Information,
Tabla Store_Information
store_name Sales Date
Los Angeles 1500 €05-Jan-1999
San Diego 250 €07-Jan-1999
Los Angeles 300 €08-Jan-1999
Boston 700 €08-Jan-1999
Ingresamos,
SELECT store_name
FROM Store_Information
WHERE Sales > 1000
Resultado:
store_name
Los Angeles
And Or
En la sección anterior, hemos visto que la palabra clave WHERE también puede utilizarse para seleccionar datos
condicionalmente desde una tabla. Esta condición puede ser una condición simple (como la que se presenta en la
sección anterior), o puede ser una condición compuesta. Las condiciones compuestas están formadas por múltiples
condiciones simples conectadas por AND u OR. No hay límites en el número de condiciones simples que pueden
presentarse en una sola instrucción SQL.
La sintaxis de una condición compuesta es la siguiente:
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "condición simple"
{[AND|OR] "condición simple"}+
{}+ significa que la expresión dentro de las llaves ocurrirá una o más veces. Note que AND u OR pueden utilizarse
indistintamente. Además, podemos utilizar el símbolo paréntesis () para indicar el orden de la condición.
Por ejemplo, podemos desear seleccionar todos los negocios con ventas mayores a 1000€ dólares estadounidenses o
todos los negocios con ventas menores a 500€ dólares estadounidenses pero mayores a 275€ dólares estadounidenses
en la Tabla Store_Information,
Tabla Store_Information
store_name Sales Date
Los Angeles 1500 €05-Jan-1999
San Diego 250 €07-Jan-1999
San Francisco 300 €08-Jan-1999
Boston 700 €08-Jan-1999
Ingresamos,
SELECT store_name
FROM Store_Information
WHERE Sales > 1000
OR (Sales < 500 AND Sales > 275)
Resultado:
store_name
Los Angeles
San Francisco
In
En SQL, hay dos usos de la palabra clave IN, y esta sección introduce aquél relacionado con la cláusula 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 número de valores en los paréntesis pueden ser uno o más, con cada valor separado por comas. Los valores pueden
ser números o caracteres. Si hay sólo un valor dentro del paréntesis, este comando es equivalente a
WHERE "nombre_columna" = 'valor1'
Por ejemplo, podríamos desear seleccionar todos los registros para los negocios de Los Ángeles y San Diego en la
Tabla Store_Information,
Tabla Store_Information
store_name Sales Date
Los Angeles 1500 €05-Jan-1999
San Diego 250 €07-Jan-1999
San Francisco 300 €08-Jan-1999
Boston 700 €08-Jan-1999
Ingresamos,
SELECT *
FROM Store_Information
WHERE store_name IN ('Los Angeles', 'San Diego')
Resultado:
store_name Sales Date
Los Angeles 1500 €05-Jan-1999
San Diego 250 €07-Jan-1999
Between
Mientras que la palabra clave IN ayuda a las personas a limitar el criterio de selección para uno o más valores
discretos, la palabra clave BETWEEN permite la selección de un rango. La sintaxis para la cláusula 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, podríamos desear seleccionar la visualización de toda la información 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 Sales Date
Los Angeles 1500 €05-Jan-1999
San Diego 250 €07-Jan-1999
San Francisco 300 €08-Jan-1999
Boston 700 €08-Jan-1999
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 según las diferentes bases de datos. Esta guía
de referencia simplemente elige uno de los formatos.
Resultado:
store_name Sales Date
San Diego 250 €07-Jan-1999
San Francisco 300 €08-Jan-1999
Boston 700 €08-Jan-1999
Like
LIKE es otra palabra clave que se utiliza en la cláusula WHERE. Básicamente, LIKE le permite hacer una búsqueda
basada en un patrón 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 {patrón}
{patrón} generalmente consiste en comodines. Aquí hay algunos ejemplos:
• 'A_Z': Toda línea que comience con 'A', otro carácter y termine con 'Z'. Por ejemplo, 'ABZ' y 'A2Z' deberían
satisfacer la condición, mientras 'AKKZ' no debería (debido a que hay dos caracteres entre A y Z en vez de
uno).
• 'ABC%': Todas las líneas que comienzan con 'ABC'. Por ejemplo, 'ABCD' y 'ABCABC' ambas deberían
satisfacer la condición.
• '%XYZ': Todas las líneas que terminan con 'XYZ'. Por ejemplo, 'WXYZ' y 'ZZXYZ' ambas deberían satisfacer
la condición.
• '%AN%': : Todas las líneas que contienen el patrón 'AN' en cualquier lado. Por ejemplo, 'LOS ANGELES' y
'SAN FRANCISCO' ambos deberían satisfacer la condición.
Digamos que tenemos la siguiente tabla:
Tabla Store_Information
store_name Sales Date
LOS ANGELES 1500 €05-Jan-1999
SAN DIEGO 250 €07-Jan-1999
SAN FRANCISCO 300 €08-Jan-1999
BOSTON 700 €08-Jan-1999
Deseamos encontrar todos los negocios cuyos nombres contengan ‘AN’. Para hacerlo, ingresamos,
SELECT *
FROM Store_Information
WHERE store_name LIKE '%AN%'
Resultado:
store_name Sales Date
LOS ANGELES 1500 €05-Jan-1999
SAN DIEGO 250 €07-Jan-1999
SAN FRANCISCO 300 €08-Jan-1999
Order By
Hasta ahora, hemos visto cómo obtener datos de una tabla utilizando los comandos
SELECT y WHERE. Con frecuencia, sin embargo, necesitamos enumerar el
resultado en un orden particular. Esto podría ser en orden ascendente, en orden
descendente, o podría basarse en valores numéricos o de texto. En tales casos,
podemos utilizar la palabra clave ORDER BY para alcanzar nuestra meta.
La sintaxis para una instrucción ORDER BY es la siguiente:
SELECT "nombre_columna"
FROM "nombre_tabla"
[WHERE "condición"]
ORDER BY "nombre_columna" [ASC, DESC]
[] significa que la instrucción WHERE es opcional. Sin embargo, si existe una
cláusula WHERE, viene antes de la cláusula ORDER BY ASC significa que los
resultados se mostrarán en orden ascendente, y DESC significa que los resultados se
mostrarán en orden descendente. Si no se especifica ninguno, la configuración
predeterminada es ASC.
Es posible ordenar por más de una columna. En este caso, la cláusula 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 según la columna 1. Si hay una relación para el valor
de la columna 1, se clasificará en orden ascendente según la columna 2.
Por ejemplo, podríamos desear enumerar los contenidos de la Tabla
Store_Information según la suma en dólares, en orden descendente:
Tabla Store_Information
store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
San Francisco 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999
Ingresamos,
SELECT store_name, Sales, Date
FROM Store_Information
ORDER BY Sales DESC
Resultado:
store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
Boston 700 € 08-Jan-1999
San Francisco 300 € 08-Jan-1999
San Diego 250 € 07-Jan-1999
Además del nombre de la columna, podríamos utilizar la posición de la columna
(según la consulta SQL) para indicar en qué columna deseamos aplicar la cláusula
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
Fonciones
Ya que hemos comenzado trabajando con números, la siguiente pregunta natural a realizarse es si es posible hacer
cálculos matemáticos con aquellos números, tales como sumas, o sacar un promedio. ¡La respuesta es sí! SQL tiene
varias funciones aritméticas, y estas son:
- AVG
- COUNT
- MAX
- MIN
- SUM
La sintaxis para el uso de funciones es,
SELECT "tipo de función"("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 Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Los Angeles 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999
ingresaríamos
SELECT SUM(Sales) FROM Store_Information
Resultado:
SUM(Sales)
2750 €
2 750 € dólares estadounidenses representa la suma de todas las entradas de Ventas: 1500 € + 250 € + 300 € + 700 €.
Además de utilizar dichas funciones, también es posible utilizar SQL para realizar tareas simples como suma (+) y
resta (-). Para ingresar datos del tipo caracter, hay también varias funciones de cadenas disponibles, tales como
funciones de concatenación, reducción 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 cómo se
utilizan estas funciones.
Count
Otra función aritmética es COUNT. Esto nos permite COUNT el número de filas en una tabla determinada. La
sintaxis es,
SELECT COUNT("nombre_columna")
FROM "nombre_columna"
Por ejemplo, si deseamos encontrar el número de entradas de negocios en nuestra tabla,
Tabla Store_Information
store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Los Angeles 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999
ingresamos,
SELECT COUNT(store_name)
FROM Store_Information
Resultado:
Count(store_name)
4
COUNT y DISTINCT pueden utilizarse juntos en una instrucción para determinar el número de las distintas entradas
en una tabla. Por ejemplo, si deseamos saber el número de los distintos negocios, ingresaríamos,
SELECT COUNT(DISTINCT store_name)
FROM Store_Information
Resultado:
Count(DISTINCT store_name)
3
Group By
Ahora regresamos a las funciones de agregados. ¿Recuerda que utilizamos la palabra clave SUM para calcular las
ventas totales para todos los negocios? ¿Y si quisiéramos 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 también las ventas totales. Segundo, debemos asegurarnos de que todas las sumas de las ventas estén
GROUP BY negocios. 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 Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Los Angeles 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999
Deseamos saber las ventas totales para cada negocio. Para hacerlo, ingresaríamos,
SELECT store_name, SUM(Sales)
FROM Store_Information
GROUP BY store_name
Resultado:
store_name SUM(Sales)
Los Angeles 1800 €
San Diego 250 €
Boston> 700 €
La palabra clave GROUP BY se utiliza cuando estamos seleccionado columnas múltiples desde una tabla (o tablas) y
aparece al menos un operador aritmético en la instrucción 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
aritmético.
Having
Otra cosa que la gente puede querer hacer es limitar el resultado según la suma correspondiente (o cualquier otra
función de agregado). Por ejemplo, podríamos desear ver sólo los negocios con ventas mayores a 1 500 €, dólares. En
vez de utilizar la cláusula WHERE en la instrucción SQL, a pesar de que necesitemos utilizar la cláusula HAVING,
que se reserva para funciones de agregados. La cláusula HAVING se coloca generalmente cerca del fin de la
instrucción SQL, y la instrucción SQL con la cláusula HAVING. puede o no incluir la cláusula GROUP BY sintaxis
para HAVING es,
SELECT "nombre1_columna", SUM("nombre2_columna")
FROM "nombre_tabla"
GROUP BY "nombre1_columna"
HAVING (condición de función aritmética)
Nota: La cláusula GROUP BY es opcional.
En nuestro ejemplo, tabla Store_Information,
Tabla Store_Information
store_name Sales Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Los Angeles 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999
ingresaríamos,
SELECT store_name, SUM(sales)
FROM Store_Information
GROUP BY store_name
HAVING SUM(sales) > 1500
Resultado:
store_name SUM(Sales)
Los Angeles 1800 €
Alias
Nos concentraremos ahora en el uso de alias. Hay dos tipos de alias que se utilizan con mayor frecuencia. Alias de
columna y alias de tabla.
Resumiendo, los alias de columna existen para ayudar en la organización del resultado. En el ejemplo anterior,
cualquiera sea el momento en que vemos las ventas totales, se enumeran como SUM(sales). Mientras esto es
comprensible, podemos ver casos donde el título de la columna pueden complicarse (especialmente si incluye varias
operaciones aritméticas). El uso de un alias de columna haría el resultado mucho más legible.
El segundo tipo de alias es el alias de tabla. Esto se alcanza al colocar un alias directamente luego del nombre de tabla
en la cláusula FROM. Esto es conveniente cuando desea obtener información de dos tablas separadas (el término
técnico es 'realizar uniones'). La ventaja de utiliza un alias de tablas cuando realizamos uniones es rápidamente
aparente cuando hablamos de uniones.
Antes de comenzar con las uniones, miremos la sintaxis tanto para el alias de columna como de tabla:
SELECT "alias_tabla"."nombre1_columna" "alias_columna"
FROM "nombre _ tabla" "alias_tabla"
Brevemente, ambos tipos de alias se colocan directamente después del elemento por el cual generan el alias, separados
por un espacio en blanco. Nuevamente utilizamos nuestra tabla, Store_Information,
Tabla Store_Information
store_name Sales Date
Los Angeles 1500 €05-Jan-1999
San Diego 250 €07-Jan-1999
Los Angeles 300 €08-Jan-1999
Boston 700 €08-Jan-1999
Utilizamos el mismo ejemplo que en la sección 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 Total Sales
Los Angeles 1800 €
San Diego 250 €
Boston 700 €
Note la diferencia en el resultado: los títulos de las columnas ahora son diferentes. Ese es el resultado de utilizar el
alias de columna. Note que en vez de “Sum(sales)” de algún modo enigmático, ahora tenemos “Total Sales”, que es
más comprensible, como título de columna. La ventaja de utilizar un alias de tablas no es fácil de ver en este ejemplo.
Sin embargo, se tornará evidente en la siguiente sección.
Join
Ahora miremos las uniones. Para realizar uniones en SQL se requieren mucho de los elementos que ya hemos
presentado. Digamos que tenemos las siguientes dos tablas:
Tabla Store_Information
store_name Sales Date
Los Angeles 1500 €05-Jan-1999
San Diego 250 €07-Jan-1999
Los Angeles 300 €08-Jan-1999
Boston 700 €08-Jan-1999
Tabla Geography
region_name store_name
East Boston
East New York
West Los Angeles
West San Diego
y queremos saber las ventas por región. Vemos que la tabla Geography incluye información sobre regiones y negocios,
y la tabla Store_Information contiene información de ventas para cada negocio. Para obtener la información de ventas
por región, debemos combinar la información de las dos tablas. Al examinar las dos tablas, encontramos que están
enlazadas a través del campo común “nombre_negocio” Primero presentaremos la instrucción SQL y explicaremos el
uso de cada segmento después:
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:
REGIÓN SALES
East 700 €
West 2050 €
Las primeras dos líneas le indican a SQL que seleccione dos campos, el primero es el campo "nombre_región" de la
tabla Geography (denominado REGIÓN), y el segundo es la suma del campo "Sales" de la tabla Store_Information
(denominado SALES). Note como se utilizan los alias de tabla aquí: Geografía se denomina A1, e
Información_Negocio se denomina A2. Sin los alias, la primera línea sería
SELECT Geography.region_name REGION, SUM(Store_Information.Sales) SALES
que es mucho más problemática. En esencia, los alias de tabla facilitan el entendimiento de la totalidad de la
instrucción SQL, especialmente cuando se incluyen tablas múltiples.
Luego, pongamos nuestra atención en la línea 2, la instrucción WHERE. Aquí es donde se especifica la condición de
la unión. En este caso, queremos asegurarnos que el contenido en “nombre_negocio” en la tabla Geografía concuerde
con la tabla Store_Information, y la forma de hacerlo es igualarlos. Esta instrucción WHEREes esencial para
asegurarse de que obtenga el resultado correcto. Sin la correcta instrucción WHERE se producirá una Unión
Cartesiana. Las uniones cartesianas darán por resultado que de la consulta se arroje toda combinación posible de las
dos tablas (o cualquiera que sea el número de tablas en la instrucción FROM). En este caso, una unión cartesiana
resultaría en un total de 4x4 = Se presenta un resultado de16 filas.
Outer Join
Anteriormente, hemos visto una unión izquierda, o interna, donde seleccionamos filas comunes a las tablas que
participan en la unión. ¿Qué sucede en los casos donde estamos interesados en la selección 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 unión externa en SQL depende de la base de datos. Por ejemplo, en Oracle, colocaremos
un "(+)" en la cláusula 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 Date
Los Angeles 1500 € 05-Jan-1999
San Diego 250 € 07-Jan-1999
Los Angeles 300 € 08-Jan-1999
Boston 700 € 08-Jan-1999
Tabla Geography
region_name store_name
East Boston
East New York
West Los Angeles
West San Diego
y queremos saber la suma de las ventas de todos los negocios. Si realizamos una unión regular, no podríamos obtener
lo que deseamos debido a que habríamos omitido “Nueva York" ya que no aparece en la tabla Store_Information. Por
lo tanto, necesitamos realizar una unión 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 unión externa.
Resultado:
store_name SALES
Boston 700 €
New York
Los Angeles 1800 €
San Diego 250 €
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.
Concatenar Funcion
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
función CONCAT() de Oracle sólo permite dos argumentos – sólo dos cadenas pueden colocarse juntas al mismo
tiempo utilizando esta función. Sin embargo, es posible concatenar más 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 Boston
East New York
West Los Angeles
West 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'
Substring Funcion
La función de subcadena en SQL se utiliza para tomar una parte de los datos almacenados. Esta función tiene
diferentes nombres según las diferentes bases de datos:
• MySQL: SUBSTR(), SUBSTRING()
• Oracle: SUBSTR()
• SQL Server: SUBSTRING()
Los usos más frecuentes son los siguientes (utilizaremos SUBSTR() aquí):
SUBSTR(str,pos): Selecciona todos los caracteres de <str> comenzando con posición <pos>. Note que esta sintaxis
no es compatible en SQL Server.
SUBSTR(str,pos,len): Comienza con el carácter <pos> en la cadena <str> y selecciona los siguientes caracteres
<len>.
Supongamos que tenemos la siguiente tabla:
Tabla Geography
region_name store_name
East Boston
East New York
West Los Angeles
West San Diego
Ejemplo 1 :
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'
Trim Funcion
La función TRIM en SQL se utiliza para eliminar un prefijo o sufijo determinado de una cadena. El patrón más común
a eliminarse son los espacios en blanco. Esta función tiene diferentes nombres según las diferentes bases de datos:
• MySQL: TRIM(), RTRIM(), LTRIM()
• Oracle: RTRIM(), LTRIM()
• SQL Server: RTRIM(), LTRIM()
La sintaxis para estas funciones de reducción es:
TRIM([[LOCATION] [remstr] FROM ] str): [LOCATION] puede ser LÍDER, REMANENTE, o AMBAS. Esta
función se deshace del patrón [remstr] tanto para el comienzo de la cadena como para el final, o para ambos. Si no se
especifica ningún [remstr], los espacios en blanco se eliminarán.
LTRIM(str): Elimina todos los espacios en blanco del comienzo de la cadena.
RTRIM(str): Elimina todos los espacios en blanco del final de la cadena.
Ejemplo 1 :
SELECT TRIM(' Sample ');
Resultado :
'Sample'
Ejemplo 2 :
SELECT LTRIM(' Sample ');
Resultado :
'Sample '
Ejemplo 3 :
SELECT RTRIM(' Sample ');
Resultado :
' Sample'
José Gaete Ruiz

Más contenido relacionado

PPTX
Familia araceae
DOC
Sql comamdo
PDF
Operaciones basicas de sql
PPTX
Comandos utilizados en sql
PDF
Clase 3 El lenguaje DML de SQL
PPT
Introducción a Sql
PDF
Objeto De Aprendizaje
Familia araceae
Sql comamdo
Operaciones basicas de sql
Comandos utilizados en sql
Clase 3 El lenguaje DML de SQL
Introducción a Sql
Objeto De Aprendizaje

Similar a 46301750 comandos-basicos-de-sql (1) (20)

PDF
Consultas-SQL.pdf
PDF
Consultas sql
PPT
Objeto De Aprendizaje
DOCX
SENTENCIAS DE SQL SERVER
PDF
Resumen sql-oracle
PDF
Guia de ejercicio sql
DOC
Sql avanzado
PPTX
Consultas sql
PPT
RECUPERACXION DE REGISTROS CONSULTAS.ppt
DOCX
2. creación de tablas 2007
DOC
Proyecto De Aplicacion A La Bases Datos
PDF
Práctica sql server [fbdr]
PPTX
Sql Sentencias
DOCX
Sql avanzado
PDF
Practica3
PDF
Sql y programacion en access 2010
PDF
introduccion sql bases de datos m2.1.pdf m2.2.pdf
PPTX
Fundamentos de BD - Unidad 6 lenguaje sql
DOCX
Consultas select
Consultas-SQL.pdf
Consultas sql
Objeto De Aprendizaje
SENTENCIAS DE SQL SERVER
Resumen sql-oracle
Guia de ejercicio sql
Sql avanzado
Consultas sql
RECUPERACXION DE REGISTROS CONSULTAS.ppt
2. creación de tablas 2007
Proyecto De Aplicacion A La Bases Datos
Práctica sql server [fbdr]
Sql Sentencias
Sql avanzado
Practica3
Sql y programacion en access 2010
introduccion sql bases de datos m2.1.pdf m2.2.pdf
Fundamentos de BD - Unidad 6 lenguaje sql
Consultas select
Publicidad

Último (20)

PDF
Documental Beyond the Code (Dossier Presentación - 2.0)
PDF
clase auditoria informatica 2025.........
PPTX
Sesion 1 de microsoft power point - Clase 1
PDF
Diapositiva proyecto de vida, materia catedra
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
PDF
capacitación de aire acondicionado Bgh r 410
PPTX
Curso de generación de energía mediante sistemas solares
PDF
Maste clas de estructura metálica y arquitectura
PDF
MANUAL de recursos humanos para ODOO.pdf
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PDF
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PPTX
Presentación de Redes de Datos modelo osi
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PDF
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
PDF
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
PPTX
la-historia-de-la-medicina Edna Silva.pptx
DOCX
Guía 5. Test de orientación Vocacional 2.docx
PPTX
El uso de las TIC en la vida cotidiana..
PDF
Estrategia de Apoyo de Daylin Castaño (5).pdf
Documental Beyond the Code (Dossier Presentación - 2.0)
clase auditoria informatica 2025.........
Sesion 1 de microsoft power point - Clase 1
Diapositiva proyecto de vida, materia catedra
Power Point Nicolás Carrasco (disertación Roblox).pptx
capacitación de aire acondicionado Bgh r 410
Curso de generación de energía mediante sistemas solares
Maste clas de estructura metálica y arquitectura
MANUAL de recursos humanos para ODOO.pdf
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
Presentación de Redes de Datos modelo osi
historia_web de la creacion de un navegador_presentacion.pptx
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
la-historia-de-la-medicina Edna Silva.pptx
Guía 5. Test de orientación Vocacional 2.docx
El uso de las TIC en la vida cotidiana..
Estrategia de Apoyo de Daylin Castaño (5).pdf
Publicidad

46301750 comandos-basicos-de-sql (1)

  • 1. Select ¿Para qué utilizamos los comandos SQL? El uso común es la selección de datos desde tablas ubicadas en una base de datos. Inmediatamente, vemos dos palabras claves: necesitamos SELECT la información FROM una tabla. (Note que la tabla es un contenedor que reside en la base de datos donde se almacena la información. Para obtener más información acerca de cómo manipular tablas, consulte la Sección Manipulación de Tabla). Por lo tanto tenemos la estructura SQL más básica: SELECT "nombre_columna" FROM "nombre_tabla" Para ilustrar el ejemplo anterior, suponga que tenemos la siguiente tabla: Tabla Store_Information store_name Sales Date Los Angeles 1500 € 05-Jan-1999 San Diego 250 € 07-Jan-1999 Los Angeles 300 € 08-Jan-1999 Boston 700 € 08-Jan-1999 Podemos utilizar esta tabla como ejemplo a lo largo de la guía 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 múltiples, así como también los nombres de tablas múltiples.
  • 2. Distinct La palabra clave SELECT nos permite tomar toda la información de una columna (o columnas) en una tabla. Esto, obviamente, significa necesariamente que habrá redundancias. ¿Qué sucedería si sólo deseamos seleccionar cada elemento DISTINCT? Esto es fácil de realizar en SQL. Todo lo que necesitamos hacer es agregar DISTINCT luego de SELECT. La sintaxis es la siguiente: SELECT DISTINCT "nombre_columna" FROM "nombre_tabla" Por ejemplo, para seleccionar todos los negocios distintos en la Tabla Store_Information, Tabla Store_Information store_name Sales Date Los Angeles 1500 €05-Jan-1999 San Diego 250 €07-Jan-1999 Los Angeles 300 €08-Jan-1999 Boston 700 €08-Jan-1999 Ingresamos, SELECT DISTINCT store_name FROM Store_Information Resultado: store_name Los Angeles San Diego Boston Where
  • 3. Luego, podríamos desear seleccionar condicionalmente los datos de una tabla. Por ejemplo, podríamos desear sólo recuperar los negocios con ventas mayores a $1.000 dólares estadounidenses. Para ello, utilizamos la palabra clave WHERE. La sintaxis es la siguiente: SELECT "nombre_columna" FROM "nombre_tabla" WHERE "condición" Por ejemplo, para seleccionar todos los negocios con ventas mayores a 1.000€ dólares estadounidenses en la Tabla Store_Information, Tabla Store_Information store_name Sales Date Los Angeles 1500 €05-Jan-1999 San Diego 250 €07-Jan-1999 Los Angeles 300 €08-Jan-1999 Boston 700 €08-Jan-1999 Ingresamos, SELECT store_name FROM Store_Information WHERE Sales > 1000 Resultado: store_name Los Angeles
  • 4. And Or En la sección anterior, hemos visto que la palabra clave WHERE también puede utilizarse para seleccionar datos condicionalmente desde una tabla. Esta condición puede ser una condición simple (como la que se presenta en la sección anterior), o puede ser una condición compuesta. Las condiciones compuestas están formadas por múltiples condiciones simples conectadas por AND u OR. No hay límites en el número de condiciones simples que pueden presentarse en una sola instrucción SQL. La sintaxis de una condición compuesta es la siguiente: SELECT "nombre_columna" FROM "nombre_tabla" WHERE "condición simple" {[AND|OR] "condición simple"}+ {}+ significa que la expresión dentro de las llaves ocurrirá una o más veces. Note que AND u OR pueden utilizarse indistintamente. Además, podemos utilizar el símbolo paréntesis () para indicar el orden de la condición. Por ejemplo, podemos desear seleccionar todos los negocios con ventas mayores a 1000€ dólares estadounidenses o todos los negocios con ventas menores a 500€ dólares estadounidenses pero mayores a 275€ dólares estadounidenses en la Tabla Store_Information, Tabla Store_Information store_name Sales Date Los Angeles 1500 €05-Jan-1999 San Diego 250 €07-Jan-1999 San Francisco 300 €08-Jan-1999 Boston 700 €08-Jan-1999 Ingresamos, SELECT store_name FROM Store_Information WHERE Sales > 1000 OR (Sales < 500 AND Sales > 275) Resultado: store_name Los Angeles San Francisco In
  • 5. En SQL, hay dos usos de la palabra clave IN, y esta sección introduce aquél relacionado con la cláusula 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 número de valores en los paréntesis pueden ser uno o más, con cada valor separado por comas. Los valores pueden ser números o caracteres. Si hay sólo un valor dentro del paréntesis, este comando es equivalente a WHERE "nombre_columna" = 'valor1' Por ejemplo, podríamos desear seleccionar todos los registros para los negocios de Los Ángeles y San Diego en la Tabla Store_Information, Tabla Store_Information store_name Sales Date Los Angeles 1500 €05-Jan-1999 San Diego 250 €07-Jan-1999 San Francisco 300 €08-Jan-1999 Boston 700 €08-Jan-1999 Ingresamos, SELECT * FROM Store_Information WHERE store_name IN ('Los Angeles', 'San Diego') Resultado: store_name Sales Date Los Angeles 1500 €05-Jan-1999 San Diego 250 €07-Jan-1999 Between
  • 6. Mientras que la palabra clave IN ayuda a las personas a limitar el criterio de selección para uno o más valores discretos, la palabra clave BETWEEN permite la selección de un rango. La sintaxis para la cláusula 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, podríamos desear seleccionar la visualización de toda la información 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 Sales Date Los Angeles 1500 €05-Jan-1999 San Diego 250 €07-Jan-1999 San Francisco 300 €08-Jan-1999 Boston 700 €08-Jan-1999 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 según las diferentes bases de datos. Esta guía de referencia simplemente elige uno de los formatos. Resultado: store_name Sales Date San Diego 250 €07-Jan-1999 San Francisco 300 €08-Jan-1999 Boston 700 €08-Jan-1999 Like
  • 7. LIKE es otra palabra clave que se utiliza en la cláusula WHERE. Básicamente, LIKE le permite hacer una búsqueda basada en un patrón 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 {patrón} {patrón} generalmente consiste en comodines. Aquí hay algunos ejemplos: • 'A_Z': Toda línea que comience con 'A', otro carácter y termine con 'Z'. Por ejemplo, 'ABZ' y 'A2Z' deberían satisfacer la condición, mientras 'AKKZ' no debería (debido a que hay dos caracteres entre A y Z en vez de uno). • 'ABC%': Todas las líneas que comienzan con 'ABC'. Por ejemplo, 'ABCD' y 'ABCABC' ambas deberían satisfacer la condición. • '%XYZ': Todas las líneas que terminan con 'XYZ'. Por ejemplo, 'WXYZ' y 'ZZXYZ' ambas deberían satisfacer la condición. • '%AN%': : Todas las líneas que contienen el patrón 'AN' en cualquier lado. Por ejemplo, 'LOS ANGELES' y 'SAN FRANCISCO' ambos deberían satisfacer la condición. Digamos que tenemos la siguiente tabla: Tabla Store_Information store_name Sales Date LOS ANGELES 1500 €05-Jan-1999 SAN DIEGO 250 €07-Jan-1999 SAN FRANCISCO 300 €08-Jan-1999 BOSTON 700 €08-Jan-1999 Deseamos encontrar todos los negocios cuyos nombres contengan ‘AN’. Para hacerlo, ingresamos, SELECT * FROM Store_Information WHERE store_name LIKE '%AN%' Resultado: store_name Sales Date LOS ANGELES 1500 €05-Jan-1999 SAN DIEGO 250 €07-Jan-1999 SAN FRANCISCO 300 €08-Jan-1999 Order By
  • 8. Hasta ahora, hemos visto cómo obtener datos de una tabla utilizando los comandos SELECT y WHERE. Con frecuencia, sin embargo, necesitamos enumerar el resultado en un orden particular. Esto podría ser en orden ascendente, en orden descendente, o podría basarse en valores numéricos o de texto. En tales casos, podemos utilizar la palabra clave ORDER BY para alcanzar nuestra meta. La sintaxis para una instrucción ORDER BY es la siguiente: SELECT "nombre_columna" FROM "nombre_tabla" [WHERE "condición"] ORDER BY "nombre_columna" [ASC, DESC] [] significa que la instrucción WHERE es opcional. Sin embargo, si existe una cláusula WHERE, viene antes de la cláusula ORDER BY ASC significa que los resultados se mostrarán en orden ascendente, y DESC significa que los resultados se mostrarán en orden descendente. Si no se especifica ninguno, la configuración predeterminada es ASC. Es posible ordenar por más de una columna. En este caso, la cláusula 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 según la columna 1. Si hay una relación para el valor de la columna 1, se clasificará en orden ascendente según la columna 2. Por ejemplo, podríamos desear enumerar los contenidos de la Tabla Store_Information según la suma en dólares, en orden descendente: Tabla Store_Information store_name Sales Date Los Angeles 1500 € 05-Jan-1999 San Diego 250 € 07-Jan-1999 San Francisco 300 € 08-Jan-1999 Boston 700 € 08-Jan-1999 Ingresamos, SELECT store_name, Sales, Date FROM Store_Information ORDER BY Sales DESC Resultado: store_name Sales Date Los Angeles 1500 € 05-Jan-1999 Boston 700 € 08-Jan-1999
  • 9. San Francisco 300 € 08-Jan-1999 San Diego 250 € 07-Jan-1999 Además del nombre de la columna, podríamos utilizar la posición de la columna (según la consulta SQL) para indicar en qué columna deseamos aplicar la cláusula 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
  • 10. Fonciones Ya que hemos comenzado trabajando con números, la siguiente pregunta natural a realizarse es si es posible hacer cálculos matemáticos con aquellos números, tales como sumas, o sacar un promedio. ¡La respuesta es sí! SQL tiene varias funciones aritméticas, y estas son: - AVG - COUNT - MAX - MIN - SUM La sintaxis para el uso de funciones es, SELECT "tipo de función"("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 Date Los Angeles 1500 € 05-Jan-1999 San Diego 250 € 07-Jan-1999 Los Angeles 300 € 08-Jan-1999 Boston 700 € 08-Jan-1999 ingresaríamos SELECT SUM(Sales) FROM Store_Information Resultado: SUM(Sales) 2750 € 2 750 € dólares estadounidenses representa la suma de todas las entradas de Ventas: 1500 € + 250 € + 300 € + 700 €. Además de utilizar dichas funciones, también es posible utilizar SQL para realizar tareas simples como suma (+) y resta (-). Para ingresar datos del tipo caracter, hay también varias funciones de cadenas disponibles, tales como funciones de concatenación, reducción 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 cómo se utilizan estas funciones.
  • 11. Count Otra función aritmética es COUNT. Esto nos permite COUNT el número de filas en una tabla determinada. La sintaxis es, SELECT COUNT("nombre_columna") FROM "nombre_columna" Por ejemplo, si deseamos encontrar el número de entradas de negocios en nuestra tabla, Tabla Store_Information store_name Sales Date Los Angeles 1500 € 05-Jan-1999 San Diego 250 € 07-Jan-1999 Los Angeles 300 € 08-Jan-1999 Boston 700 € 08-Jan-1999 ingresamos, SELECT COUNT(store_name) FROM Store_Information Resultado: Count(store_name) 4 COUNT y DISTINCT pueden utilizarse juntos en una instrucción para determinar el número de las distintas entradas en una tabla. Por ejemplo, si deseamos saber el número de los distintos negocios, ingresaríamos, SELECT COUNT(DISTINCT store_name) FROM Store_Information Resultado: Count(DISTINCT store_name) 3
  • 12. Group By Ahora regresamos a las funciones de agregados. ¿Recuerda que utilizamos la palabra clave SUM para calcular las ventas totales para todos los negocios? ¿Y si quisiéramos 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 también las ventas totales. Segundo, debemos asegurarnos de que todas las sumas de las ventas estén GROUP BY negocios. 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 Date Los Angeles 1500 € 05-Jan-1999 San Diego 250 € 07-Jan-1999 Los Angeles 300 € 08-Jan-1999 Boston 700 € 08-Jan-1999 Deseamos saber las ventas totales para cada negocio. Para hacerlo, ingresaríamos, SELECT store_name, SUM(Sales) FROM Store_Information GROUP BY store_name Resultado: store_name SUM(Sales) Los Angeles 1800 € San Diego 250 € Boston> 700 € La palabra clave GROUP BY se utiliza cuando estamos seleccionado columnas múltiples desde una tabla (o tablas) y aparece al menos un operador aritmético en la instrucción 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 aritmético. Having Otra cosa que la gente puede querer hacer es limitar el resultado según la suma correspondiente (o cualquier otra función de agregado). Por ejemplo, podríamos desear ver sólo los negocios con ventas mayores a 1 500 €, dólares. En vez de utilizar la cláusula WHERE en la instrucción SQL, a pesar de que necesitemos utilizar la cláusula HAVING, que se reserva para funciones de agregados. La cláusula HAVING se coloca generalmente cerca del fin de la
  • 13. instrucción SQL, y la instrucción SQL con la cláusula HAVING. puede o no incluir la cláusula GROUP BY sintaxis para HAVING es, SELECT "nombre1_columna", SUM("nombre2_columna") FROM "nombre_tabla" GROUP BY "nombre1_columna" HAVING (condición de función aritmética) Nota: La cláusula GROUP BY es opcional. En nuestro ejemplo, tabla Store_Information, Tabla Store_Information store_name Sales Date Los Angeles 1500 € 05-Jan-1999 San Diego 250 € 07-Jan-1999 Los Angeles 300 € 08-Jan-1999 Boston 700 € 08-Jan-1999 ingresaríamos, SELECT store_name, SUM(sales) FROM Store_Information GROUP BY store_name HAVING SUM(sales) > 1500 Resultado: store_name SUM(Sales) Los Angeles 1800 € Alias Nos concentraremos ahora en el uso de alias. Hay dos tipos de alias que se utilizan con mayor frecuencia. Alias de columna y alias de tabla. Resumiendo, los alias de columna existen para ayudar en la organización del resultado. En el ejemplo anterior, cualquiera sea el momento en que vemos las ventas totales, se enumeran como SUM(sales). Mientras esto es
  • 14. comprensible, podemos ver casos donde el título de la columna pueden complicarse (especialmente si incluye varias operaciones aritméticas). El uso de un alias de columna haría el resultado mucho más legible. El segundo tipo de alias es el alias de tabla. Esto se alcanza al colocar un alias directamente luego del nombre de tabla en la cláusula FROM. Esto es conveniente cuando desea obtener información de dos tablas separadas (el término técnico es 'realizar uniones'). La ventaja de utiliza un alias de tablas cuando realizamos uniones es rápidamente aparente cuando hablamos de uniones. Antes de comenzar con las uniones, miremos la sintaxis tanto para el alias de columna como de tabla: SELECT "alias_tabla"."nombre1_columna" "alias_columna" FROM "nombre _ tabla" "alias_tabla" Brevemente, ambos tipos de alias se colocan directamente después del elemento por el cual generan el alias, separados por un espacio en blanco. Nuevamente utilizamos nuestra tabla, Store_Information, Tabla Store_Information store_name Sales Date Los Angeles 1500 €05-Jan-1999 San Diego 250 €07-Jan-1999 Los Angeles 300 €08-Jan-1999 Boston 700 €08-Jan-1999 Utilizamos el mismo ejemplo que en la sección 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 Total Sales Los Angeles 1800 € San Diego 250 € Boston 700 € Note la diferencia en el resultado: los títulos de las columnas ahora son diferentes. Ese es el resultado de utilizar el alias de columna. Note que en vez de “Sum(sales)” de algún modo enigmático, ahora tenemos “Total Sales”, que es más comprensible, como título de columna. La ventaja de utilizar un alias de tablas no es fácil de ver en este ejemplo. Sin embargo, se tornará evidente en la siguiente sección. Join Ahora miremos las uniones. Para realizar uniones en SQL se requieren mucho de los elementos que ya hemos presentado. Digamos que tenemos las siguientes dos tablas: Tabla Store_Information
  • 15. store_name Sales Date Los Angeles 1500 €05-Jan-1999 San Diego 250 €07-Jan-1999 Los Angeles 300 €08-Jan-1999 Boston 700 €08-Jan-1999 Tabla Geography region_name store_name East Boston East New York West Los Angeles West San Diego y queremos saber las ventas por región. Vemos que la tabla Geography incluye información sobre regiones y negocios, y la tabla Store_Information contiene información de ventas para cada negocio. Para obtener la información de ventas por región, debemos combinar la información de las dos tablas. Al examinar las dos tablas, encontramos que están enlazadas a través del campo común “nombre_negocio” Primero presentaremos la instrucción SQL y explicaremos el uso de cada segmento después: 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: REGIÓN SALES East 700 € West 2050 € Las primeras dos líneas le indican a SQL que seleccione dos campos, el primero es el campo "nombre_región" de la tabla Geography (denominado REGIÓN), y el segundo es la suma del campo "Sales" de la tabla Store_Information (denominado SALES). Note como se utilizan los alias de tabla aquí: Geografía se denomina A1, e Información_Negocio se denomina A2. Sin los alias, la primera línea sería SELECT Geography.region_name REGION, SUM(Store_Information.Sales) SALES que es mucho más problemática. En esencia, los alias de tabla facilitan el entendimiento de la totalidad de la instrucción SQL, especialmente cuando se incluyen tablas múltiples. Luego, pongamos nuestra atención en la línea 2, la instrucción WHERE. Aquí es donde se especifica la condición de la unión. En este caso, queremos asegurarnos que el contenido en “nombre_negocio” en la tabla Geografía concuerde con la tabla Store_Information, y la forma de hacerlo es igualarlos. Esta instrucción WHEREes esencial para asegurarse de que obtenga el resultado correcto. Sin la correcta instrucción WHERE se producirá una Unión Cartesiana. Las uniones cartesianas darán por resultado que de la consulta se arroje toda combinación posible de las dos tablas (o cualquiera que sea el número de tablas en la instrucción FROM). En este caso, una unión cartesiana resultaría en un total de 4x4 = Se presenta un resultado de16 filas.
  • 16. Outer Join Anteriormente, hemos visto una unión izquierda, o interna, donde seleccionamos filas comunes a las tablas que participan en la unión. ¿Qué sucede en los casos donde estamos interesados en la selección de elementos en una tabla sin importar si se encuentran presentes en la segunda tabla? Ahora necesitaremos utilizar el comando SQL OUTER JOIN.
  • 17. La sintaxis para realizar una unión externa en SQL depende de la base de datos. Por ejemplo, en Oracle, colocaremos un "(+)" en la cláusula 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 Date Los Angeles 1500 € 05-Jan-1999 San Diego 250 € 07-Jan-1999 Los Angeles 300 € 08-Jan-1999 Boston 700 € 08-Jan-1999 Tabla Geography region_name store_name East Boston East New York West Los Angeles West San Diego y queremos saber la suma de las ventas de todos los negocios. Si realizamos una unión regular, no podríamos obtener lo que deseamos debido a que habríamos omitido “Nueva York" ya que no aparece en la tabla Store_Information. Por lo tanto, necesitamos realizar una unión 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 unión externa. Resultado: store_name SALES Boston 700 € New York Los Angeles 1800 € San Diego 250 € 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. Concatenar Funcion 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
  • 18. función CONCAT() de Oracle sólo permite dos argumentos – sólo dos cadenas pueden colocarse juntas al mismo tiempo utilizando esta función. Sin embargo, es posible concatenar más 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 Boston East New York West Los Angeles West 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' Substring Funcion La función de subcadena en SQL se utiliza para tomar una parte de los datos almacenados. Esta función tiene diferentes nombres según las diferentes bases de datos: • MySQL: SUBSTR(), SUBSTRING() • Oracle: SUBSTR() • SQL Server: SUBSTRING()
  • 19. Los usos más frecuentes son los siguientes (utilizaremos SUBSTR() aquí): SUBSTR(str,pos): Selecciona todos los caracteres de <str> comenzando con posición <pos>. Note que esta sintaxis no es compatible en SQL Server. SUBSTR(str,pos,len): Comienza con el carácter <pos> en la cadena <str> y selecciona los siguientes caracteres <len>. Supongamos que tenemos la siguiente tabla: Tabla Geography region_name store_name East Boston East New York West Los Angeles West San Diego Ejemplo 1 : 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' Trim Funcion La función TRIM en SQL se utiliza para eliminar un prefijo o sufijo determinado de una cadena. El patrón más común a eliminarse son los espacios en blanco. Esta función tiene diferentes nombres según las diferentes bases de datos: • MySQL: TRIM(), RTRIM(), LTRIM() • Oracle: RTRIM(), LTRIM() • SQL Server: RTRIM(), LTRIM()
  • 20. La sintaxis para estas funciones de reducción es: TRIM([[LOCATION] [remstr] FROM ] str): [LOCATION] puede ser LÍDER, REMANENTE, o AMBAS. Esta función se deshace del patrón [remstr] tanto para el comienzo de la cadena como para el final, o para ambos. Si no se especifica ningún [remstr], los espacios en blanco se eliminarán. LTRIM(str): Elimina todos los espacios en blanco del comienzo de la cadena. RTRIM(str): Elimina todos los espacios en blanco del final de la cadena. Ejemplo 1 : SELECT TRIM(' Sample '); Resultado : 'Sample' Ejemplo 2 : SELECT LTRIM(' Sample '); Resultado : 'Sample ' Ejemplo 3 : SELECT RTRIM(' Sample '); Resultado : ' Sample'