Sie sind auf Seite 1von 64

Tutorial de SQL: Curso de SQL

SQL (Structured Query Language) es un lenguaje de


programacin diseado para almacenar, manipular y
recuperar datos almacenados en bases de datos
relacionales. La primera encarnacin de SQL apareci en
1974, cuando un grupo de IBM desarroll el primer
prototipo de una base de datos relacional. Relational
Software (luego se convirti en Oracle) lanz la primera
base de datos relacional comercial.
Existen estndares para SQL. Sin embargo, el SQL que
puede utilizarse en cada uno de las principales RDBMS
actuales viene en distintas formas. Esto se debe a dos
razones: 1) el estndar SQL es bastante complejo, y no es
prctico implementar el estndar completo, y 2) cada
proveedor de base de datos necesita una forma de
diferenciar su producto de otros. En esta gua de referencia,
dichas diferencias se sealarn cuando sea apropiado.
Este sitio de la gua de referencia SQL enumera los
comandos SQL normalmente utilizados, y se divide en las
siguientes secciones:
Comandos SQL: Las instrucciones SQL bsicas para
almacenamiento, recuperacin y manipulacin de
datos en una base de datos relacional.
Manipulacin de Tabla: Cmo se utilizan las
instrucciones SQL para administrar las tablas dentro
de una base de datos.
SQL Avanzado: Comandos SQL avanzados.
Sintaxis SQL: Una pgina nica que enumera la
sintaxis para todos los comandos SQL en esta gua de
referencia.
Para cada comando, primero se presentar y explicar la
sintaxis SQL, seguida por un ejemplo. Al final de esta gua
de referencia, deber tener una idea general de la sintaxis
SQL. Adems, deber poder realizar consultas SQL
utilizando la sintaxis apropiada. Segn mi experiencia creo
que el comprender lo bsico de SQL es mucho ms fcil que
dominar todas las dificultades de este lenguaje de base de
datos, y espero que tambin llegue a la misma conclusin.
Si est interesado en cmo recuperar datos utilizando SQL,
le recomendamos que empiece con la seccinComandos
SQL. Si est interesado en comprender cmo puede
utilizarse SQL para manipular una tabla de base de datos,
le recomendamos que comience con la
seccin Manipulacin de Tabla. Si est buscando ayuda
sobre un comando SQL especfico, puede utilizar el Mapa
del Sitio para encontrar el comando que est buscando.
Bien, suficiente introduccin. Agregue este sitio a
favoritos ahora y comience a aprender SQL!
Nota: Si ensea SQL o da una clase relacionada con bases
de dato, puede realizar un enlace a este sitio como material
de referencia para sus alumnos.















SQL > Comandos SQL > Select
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 FROM una 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 Txn_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
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.
SQL > Comandos SQL > Distinct
La palabra clave SELECT nos permite tomar toda la
informacin de una columna (o columnas) en una tabla.
Esto, obviamente, significa necesariamente que habr
redundancias. Qu sucedera si slo deseamos seleccionar
cada elemento DISTINCT? Esto es fcil 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 Txn_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







SQL > Comandos SQL > Where
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 1000 dlares estadounidenses en la
Tabla Store_Information,
Tabla Store_Information
Store_Name Sales Txn_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






SQL > Comandos SQL > And Or
En la seccin anterior, hemos visto que la palabra
clave WHERE tambin 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 Sales Txn_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
SQL > Comandos SQL > 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 Sales Txn_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 Txn_Date
Los Angeles 1500 05-Jan-1999
San Diego 250 07-Jan-1999
SQL > Comandos SQL > Between
Mientras que la palabra clave IN ayuda 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 BETWEENes 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 Sales Txn_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 Txn_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 Sales Txn_Date
San Diego 250 07-Jan-1999
San Francisco 300 08-Jan-1999
Boston 700 08-Jan-1999
SQL > Comandos 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 Sales Txn_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 Txn_Date
LOS ANGELES 1500 05-Jan-1999
SAN DIEGO 250 07-Jan-1999
SAN FRANCISCO 300 08-Jan-1999
SQL > Comandos SQL > 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 clave ORDER 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 BY anterior 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 Sales Txn_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, Txn_Date
FROM Store_Information
ORDER BY Sales DESC;
Resultado:
Store_Name Sales Txn_Date
Los Angeles 1500 05-Jan-1999
Boston 700 08-Jan-1999
San Francisco 300 08-Jan-1999
San Diego 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, Txn_Date
FROM Store_Information
ORDER BY 2 DESC;








SQL > Comandos SQL > Fonciones
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 Txn_Date
Los Angeles 1500 05-Jan-1999
San Diego 250 07-Jan-1999
Los Angeles 300 08-Jan-1999
Boston 700 08-Jan-1999
ingresaramos
SELECT SUM(Sales) FROM Store_Information;
Resultado:
SUM(Sales)
2750
2750 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.
SQL > Comandos SQL > 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 Txn_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
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

SQL > Comandos SQL > 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 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
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 Txn_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,
ingresaramos,
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 mltiples desde una tabla (o tablas) y aparece al menos un
operador aritmtico en la instruccin SELECT. Cuando esto sucede,
necesitamosGROUP BY todas las otras columnas seleccionadas, es
decir, todas las columnas excepto aquella(s) que se operan por un
operador aritmtico.

SQL > Comandos SQL > 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 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 clusulaGROUP
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 Txn_Date
Los Angeles 1500 05-Jan-1999
San Diego 250 07-Jan-1999
Los Angeles 300 08-Jan-1999
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 SUM(Sales)
Los Angeles 1800
SQL > Comandos SQL > 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
organizacin 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 ttulo de la
columna pueden complicarse (especialmente si incluye
varias operaciones aritmticas). El uso de un alias de
columna hara el resultado mucho ms 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 clusula FROM. Esto es conveniente cuando desea
obtener informacin de dos tablas separadas (el trmino
tcnico es 'realizar uniones'). La ventaja de utiliza un alias
de tablas cuando realizamos uniones es rpidamente
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
despus 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 Txn_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 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 Total Sales
Los Angeles 1800
San Diego 250
Boston 700
Note la diferencia en el resultado: los ttulos de las
columnas ahora son diferentes. Ese es el resultado de
utilizar el alias de columna. Note que en vez de
Sum(Sales) de algn modo enigmtico, ahora tenemos
Total Sales, que es ms comprensible, como ttulo de
columna. La ventaja de utilizar un alias de tablas no es fcil
de ver en este ejemplo. Sin embargo, se tornar evidente
en la siguiente seccin.












SQL > Comandos SQL > 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 Txn_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 regin. Vemos que la
tabla Geography incluye informacin 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:
REGION SALES
East 700
West 2050
Las primeras dos lneas le indican a SQL que seleccione dos
campos, el primero es el campo "Region_Name" de la
tabla Geography (denominado REGION), y el segundo es
la suma del campo "Sales" de la
tablaStore_Information (denominado SALES). Note como
se utilizan los alias de tabla aqu: Geography se denomina
A1, e Store_Information 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 es donde se especifica la
condicin de la unin. En este caso, queremos asegurarnos
que el contenido en "Store_Name" en la
tablaGeography concuerde con la
tabla Store_Information, y la forma de hacerlo es
igualarlos. Esta instruccinWHERE es esencial para
asegurarse de que obtenga el resultado correcto. Sin la
correcta instruccin WHEREse 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.




SQL > Comandos SQL > Outer Join
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 comandoSQL 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 Txn_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 unin regular, no podramos
obtener lo que deseamos debido a que habramos omitido
New York" ya que no aparece en la
tablaStore_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 700
New York

Los Angeles 1800
San Diego 250
Nota: Se devuelve NULL cuando no hay coincidencia en la
segunda tabla. En este caso, New York" no aparece en la
tabla Store_Information, por lo tanto su columna
"SALES" correspondiente es NULL.















SQL > Comandos SQL > 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 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 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'














SQL > Comandos SQL > Substring Funcion
La funcin de subcadena en SQL se utiliza para tomar una
parte de los datos almacenados. Esta funcin tiene
diferentes nombres segn las diferentes bases de datos:
MySQL: SUBSTR( ), SUBSTRING( )
Oracle: SUBSTR( )
SQL Server: SUBSTRING( )
Los usos ms frecuentes son los siguientes (utilizaremos
SUBSTR( ) aqu):
SUBSTR (str, pos)
Selecciona todos los caracteres de <str> comenzando con
posicin <pos>. Note que esta sintaxis no es compatible en
SQL Server.
SUBSTR (str, pos, len)
Comienza con el carcter <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'
























SQL > Comandos SQL > Trim Funcion
La funcin TRIM en SQL se utiliza para eliminar un prefijo o sufijo
determinado de una cadena. El patrn ms comn a eliminarse son
los espacios en blanco. Esta funcin tiene diferentes nombres segn
las diferentes bases de datos:
MySQL: TRIM( ), RTRIM( ), LTRIM( )
Oracle: RTRIM( ), LTRIM( )
SQL Server: RTRIM( ), LTRIM( )
La sintaxis para estas funciones de reduccin es:
TRIM( [[ LOCATION] [remstr] FROM ] str): [LOCATION] puede
ser LDER, REMANENTE, o AMBAS. Esta funcin se deshace del patrn
[remstr] tanto para el comienzo de la cadena como para el final, o
para ambos. Si no se especifica ningn [remstr], los espacios en
blanco se eliminarn.
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'
Manipulacion de tablas
SQL > Manipulacin de Tabla > Create Table
Las tablas son la estructura bsica donde se almacena la
informacin en la base de datos. Dado que en la mayora
de los casos, no hay forma de que el proveedor de base de
datos sepa con antelacin cuales son sus necesidades de
almacenamiento de datos, es probable que necesite crear
tablas en la base de datos usted mismo. Muchas
herramientas de base de datos le permiten crear tablas sin
ingresar SQL, pero debido a que las tablas son los
contenedores de toda la informacin, es importante incluir
la sintaxis CREATE TABLE en esta gua de referencia.
Antes de sumergirnos en la sintaxis SQL para CREATE
TABLE, es una buena idea comprender lo que se incluye en
una tabla. Las tablas se dividen en filas y columnas. Cada
fila representa una parte de los datos, y cada columna
puede pensarse como la representacin de un componente
de aquella parte de los datos. Entonces, por ejemplo, si
tenemos una tabla para registrar la informacin del cliente,
las columnas pueden incluir informacin tal como Primer
Nombre, Apellido, Direccin, Ciudad, Pas, Fecha de
Nacimiento y dems. Como resultado, cuando
especificamos una tabla, incluimos los ttulos de columna y
los tipos de datos para esta columna en particular.
Entonces Qu son los tipos de datos? Generalmente, los
datos se generan en formas variadas. Podra ser un entero
(tal como 1), un nmero real (tal como 0,55), una lnea (tal
como 'sql'), una fecha/expresin de tiempo (tal como '25-
ene-2000 03:22:22'), o incluso en formato binario. Cuando
especificamos una tabla, necesitamos especificar el tipo de
dato asociado con cada columna (es decir, especificaremos
que First_Name es de char(50) tipo lo que significa que
es una lnea con 50 caracteres). Una cosa a tener en cuenta
es que las diferentes bases de datos relacionales permiten
diferentes tipos de datos, entonces es prudente consultar
primero una referencia especfica de base de datos.
La sintaxis SQL para CREATE TABLE es
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 datetime);
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
Barcelona, ingresaramos
CREATE TABLE Customer
(First_Name char(50),
Last_Name char(50),
Address char(50) default 'Unknown',
City char(50) default 'Barcelona',
Country char(25),
Birth_Date datetime);
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.





SQL > Manipulacin de Tabla > Constraint
Puede colocar restricciones para limitar el tipo de dato que
puede ingresarse en una tabla. Dichas restricciones pueden
especificarse cuando la tabla se crea por primera vez a
travs de la instruccin CREATE TABLE, o luego de crear
la tabla a travs de la instruccin ALTER TABLE.
Los tipos comunes de restricciones incluyen las siguientes:
- NOT NULL
- UNIQUE
- CHECK
- Clave primaria
- Clave externa
Cada uno se describe en detalle a continuacin.
NOT NULL
En forma predeterminada, una columna puede ser NULL. Si
no desea permitir un valor NULL en una columna, querr
colocar una restriccin en esta columna especificando que
NULL no es ahora un valor permitido.
Por ejemplo, en la siguiente instruccin,
CREATE TABLE Customer
(SID integer NOT NULL,
Last_Name varchar (30) NOT NULL,
First_Name varchar(30));
Las columnas SID y Last_Name no incluyen NULL,
mientras que First_Name puede incluir NULL.
UNIQUE
La restriccin UNIQUE asegura que todos los valores en una
columna sean distintos.
Por ejemplo, en la siguiente instruccin,
CREATE TABLE Customer
(SID integer Unique,
Last_Name varchar (30),
First_Name varchar(30));
La columna SID no puede incluir valores duplicados,
mientras dicha restriccin no se aplica para columnas
Last_Name y First_Name.
Por favor note que una columna que se especifica como
clave primaria tambin puede ser nica. Al mismo tiempo,
una columna que es nica puede o no ser clave primaria.
CHECK
La restriccin CHECK asegura que todos los valores en una
columna cumplan ciertas condiciones.
Por ejemplo, en la siguiente instruccin,
CREATE TABLE Customer
(SID integer CHECK (SID > 0),
Last_Name varchar (30),
First_Name varchar(30));
La columna SID slo debe incluir enteros mayores a 0.
Por favor note que la restriccin CHECK no sea ejecutada
por MySQL en este momento.
Clave primaria y Clave externa se comentan en las
siguientes dos secciones.









SQL > Manipulacin de Tabla > Clave primaria
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 campo artificial (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 campos como 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:
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);
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 otras palabras,
NULL no puede aceptarse como valor para ese campo.



















SQL > Manipulacin de Tabla > Clave externa
Una clave externa es un campo (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
delCUSTOMER, y la tabla ORDERS 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
tablaCUSTOMER. 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:
Tabla CUSTOMER
Nombre de Columna Caracterstica
SID Clave Primaria
Last_Name
First_Name
Tabla ORDERS
Nombre de Columna Caracterstica
Order_ID Clave Primaria
Order_Date
Customer_SID Clave Externa
Amount
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
(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:
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);



















SQL > Manipulacin de Tabla > Create View
Las vistas pueden considerarse como tablas virtuales. Generalmente
hablando, una tabla tiene un conjunto de definiciones, y almacena
datos fsicamente. Una vista 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";
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
Nombre de Columna Tip de Datos
First_Name char(50)
Last_Name char(50)
Address char(50)
City char(50)
Country char(25)
Birth_Date Datetime
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
Nombre de Columna Tip de Datos
First_Name char(50)
Last_Name char(50)
Country char(25)
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 Txn_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 deseamos construir una vista que tenga ventas organizadas segn
la regin. Colocaramos la siguiente instruccin SQL:
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 700
West 2050



SQL > Manipulacin de Tabla > Create Index
Los ndices nos ayudan a obtener datos de las tablas en
forma ms rpida. 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 seccin sobre pimientos, es mucho ms
rpido para nosotros ir a la seccin ndice al final del libro,
ubicar qu pginas contienen la informacin sobre
pimientos, y luego dirigirnos a esas pginas directamente.
Al dirigirnos al ndice primero 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. Con el 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
Nombre de Columna Tip de Datos
First_Name char(50)
Last_Name char(50)
Address char(50)
City char(50)
Country char(25)
Birth_Date datetime
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 una buena 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.













SQL > Manipulacin de Tabla > Alter Table
Una vez que se crea la tabla en la base de datos, hay
muchas ocasiones donde uno puede desear cambiar la
estructura de la tabla. Los casos tpicos incluyen los
siguientes:
- Agregar una columna
- Eliminar una columna
- Cambiar el nombre de una columna
- Cambiar el tipo de datos para una columna
Por favor note que lo anterior no es una lista exhaustiva.
Hay otras instancias donde ALTER TABLE se utiliza para
cambiar la estructura de la tabla, tales como cambiar la
especificacin de la clave primaria o agregar una restriccin
nica para una columna.
La sintaxis SQL para ALTER TABLE es
ALTER TABLE "nombre_tabla"
[modificar especificacin];
[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
Nombre de Columna Tip de Datos
First_Name char(50)
Last_Name char(50)
Address char(50)
City char(50)
Country char(25)
Birth_Date datetime
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
Nombre de Columna Tip de Datos
First_Name char(50)
Last_Name char(50)
Address char(50)
City char(50)
Country char(25)
Birth_Date datetime
Gender char(1)
Luego, deseamos renombrar Address" a Addr. Para
hacerlo, ingresamos,
ALTER TABLE Customer CHANGE Address Addr
char(50);
Estructura de la tabla resultante:
Table customer
Nombre de Columna Tip de Datos
First_Name char(50)
Last_Name char(50)
Addr char(50)
City char(50)
Country char(25)
Birth_Date datetime
Gender 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
Nombre de Columna Tip de Datos
First_Name char(50)
Last_Name char(50)
Addr char(30)
City char(50)
Country char(25)
Birth_Date datetime
Gender char(1)
Finalmente, deseamos eliminar la columna Gender. Para
hacerlo, ingresamos,
ALTER TABLE Customer DROP Gender;
Estructura de la tabla resultante:
Table Customer
Nombre de Columna Tip de Datos
First_Name char(50)
Last_Name char(50)
Addr char(30)
City char(50)
Country char(25)
Birth_Date datetime

SQL > Manipulacin de Tabla > Drop Table
A veces podemos decidir que necesitamos eliminar una
tabla en la base de datos por alguna razn. De hecho, sera
problemtico si no podemos hacerlo ya que esto creara
una pesadilla de mantenimiento para DBA.
Afortunadamente, SQL nos permite hacerlo, ya que
podemos utilizar el comando DROP TABLE. La sintaxis
paraDROP TABLE es
DROP TABLE "nombre_tabla";
Entonces, si deseamos eliminar una tabla denominada
cliente que creamos en la seccin CREATE TABLE,
simplemente ingresamos
DROP TABLE Customer;




SQL > Manipulacin de Tabla > Truncate Table
A veces deseamos eliminar los datos en una tabla. Una
forma de hacer esto es con DROP TABLE, que vimos en
la ltima seccin Pero Si deseamos simplemente
deshacernos de los datos pero no de la tabla en s? Para
esto, podemos utilizar el comando TRUNCATE TABLE. La
sintaxis para TRUNCATE TABLE es
TRUNCATE TABLE "nombre_tabla";
Entonces, si deseamos truncar una tabla denominada
cliente que creamos en SQL CREATE TABLE, simplemente
ingresamos
TRUNCATE TABLE Customer;



SQL > Manipulacin de Tabla > Insert Into
En las secciones anteriores, hemos visto cmo obtener
informacin de tablas. Pero 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 INSRER datos en una tabla: Una es insertar una fila
por vez, y la otra es insertar filas mltiples por vez. Primero
observemos como podemos INSRER 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
Nombre de Columna Tip de Datos
Store_Name char(50)
Sales float
Txn_Date 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,
Txn_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,
ingresaremos:
INSERT INTO Store_Information (Store_Name, Sales,
Txn_Date)
SELECT Store_Name, Sales, Txn_Date
FROM Sales_Information
WHERE Year (Txn_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
(Txn_Date, 'yyyy') = 1998.







SQL > Manipulacin de Tabla > Update
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 Txn_Date
Los Angeles 1500 05-Jan-1999
San Diego 250 07-Jan-1999
Los Angeles 300 08-Jan-1999
Boston 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 Txn_Date = '08-Jan-1999';
La tabla resultante ser vera
Tabla Store_Information
Store_Name Sales Txn_Date
Los Angeles 1500 05-Jan-1999
San Diego 250 07-Jan-1999
Los Angeles 500 08-Jan-1999
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";






















SQL > Manipulacin de Tabla > Delete From
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 Txn_Date
Los Angeles 1500 05-Jan-1999
San Diego 250 07-Jan-1999
Los Angeles 300 08-Jan-1999
Boston 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 Txn_Date
San Diego 250 07-Jan-1999
Boston 700 08-Jan-1999






SQL > SQL Avanzado
En esta seccin, describiremos las siguientes palabras
claves y conceptos SQL:
SQL UNION
SQL UNION ALL
SQL INTERSECT
SQL MINUS
SQL Subconsulta
SQL EXISTS
SQL CASE

SQL > SQL Avanzado > Union
El propsito del comando SQL UNION es combinar los
resultados de dos consultas juntas. En este
sentido,UNION es parecido a Join, ya que los dos se
utilizan para informacin relacionada en mltiples tablas.
Una restriccin de UNION es que todas las columnas
correspondientes necesitan ser del mismo tipo de datos.
Tambin, cuando utilizamos UNION, slo se seleccionan
valores distintos (similar a SELECT DISTINCT).
La sintaxis es la siguiente:
[Instruccin SQL 1]
UNION
[Instruccin SQL 2];
Supongamos que tenemos las siguientes dos tablas,
Tabla Store_Information
Store_Name Sales Txn_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 Internet_Sales
Txn_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 Txn_Date FROM Store_Information
UNION
SELECT Txn_Date FROM Internet_Sales;
Resultado:
Txn_Date
05-Jan-1999
07-Jan-1999
08-Jan-1999
10-Jan-1999
11-Jan-1999
12-Jan-1999
Por favor note que si ingresamos "SELECT DISTINCT
Txn_Date" para cada o ambas instrucciones SQL,
obtendremos el mismo conjunto de resultados.










SQL > SQL Avanzado > Union All
El propsito del Comando SQL UNION ALL es tambin
combinar los resultados de dos consultas juntas. La
diferencia entre UNION ALL y UNION es que,
mientras UNION slo selecciona valores distintos, UNION
ALLselecciona todos los valores.
La sintaxis para UNION ALL es la siguiente:
[Instruccin SQL 1]
UNION ALL
[Instruccin SQL 2];
Utilicemos el mismo ejemplo de la seccin anterior para
ilustrar la diferencia. Supongamos que tenemos las
siguientes dos tablas,
Tabla Store_Information
Store_Name Sales Txn_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 Internet_Sales
Txn_Date Sales
07-Jan-1999 250
10-Jan-1999 535
11-Jan-1999 320
12-Jan-1999 750
y deseamos encontrar las fechas en donde se realiz una
operacin de venta en un negocio como as tambin las
fechas donde hay una venta a travs de Internet. Para
hacerlo, utilizamos la siguiente instruccin SQL:
SELECT Txn_Date FROM Store_Information
UNION ALL
SELECT Txn_Date FROM Internet_Sales;
Resultado:
Txn_Date
05-Jan-1999
07-Jan-1999
08-Jan-1999
08-Jan-1999
07-Jan-1999
10-Jan-1999
11-Jan-1999
12-Jan-1999


















SQL > SQL Avanzado > Intersect
Parecido al comando UNION, INTERSECT tambin opera en dos
instrucciones SQL. La diferencia es que, mientras UNION acta
fundamentalmente como un operador OR (O) (el valor se selecciona
si aparece en la primera o la segunda instruccin), el
comando INTERSECT acta como un operador AND (Y) (el valor se
selecciona si aparece en ambas instrucciones).
La sintaxis es la siguiente:
[Instruccin SQL 1]
INTERSECT
[Instruccin SQL 2];
Digamos que tenemos las siguientes dos tablas:
Tabla Store_Information
Store_Name Sales Txn_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 Internet_Sales
Txn_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 Txn_Date FROM Store_Information
INTERSECT
SELECT Txn_Date FROM Internet_Sales;
Resultado:
Txn_Date
07-Jan-1999
Por favor note que el comando INTERSECT slo arrojar valores
distintivos.
SQL > SQL Avanzado > Minus
MINUS opera en dos instrucciones SQL. Toma todos los
resultados de la primera instruccin SQL, y luego sustrae
aquellos que se encuentran presentes en la segunda
instruccin SQL para obtener una respuesta final. Si la
segunda instruccin SQL incluye resultados que no estn
presentes en la primera instruccin SQL, dichos resultados
se ignoran.
La sintaxis es la siguiente:
[Instruccin SQL 1]
MINUS
[Instruccin SQL 2];
Continuemos con el mismo ejemplo:
Tabla Store_Information
Store_Name Sales Txn_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 Internet_Sales
Txn_Date Sales
07-Jan-1999 250
10-Jan-1999 535
11-Jan-1999 320
12-Jan-1999 750
y deseamos encontrar todas las fechas donde hay ventas
en el negocio, pero no aquellas realizadas por Internet.
Para hacerlo, utilizamos la siguiente instruccin SQL:
SELECT Txn_Date FROM Store_Information
MINUS
SELECT Txn_Date FROM Internet_Sales;
Resultado:
Txn_Date
05-Jan-1999
08-Jan-1999
'05-Jan-1999', '07-Jan-1999',et '08-Jan-1999' son los
valores distintivos arrojados desde SELECT Txn_Date
FROM Store_Information. Tambin se arroja '07-Jan-
1999' de la segunda instruccin SQL, SELECT Txn_Date
FROM Internet_Sales, de este modo se lo excluye del
conjunto final de resultados.
Por favor note que el comando MINUS slo arrojar
valores distintos.
Algunas bases de datos pueden utilizar EXCEPT en vez
de MINUS. Por favor verifique la documentacin para su
base de datos especfica para el uso apropiado.















SQL > SQL Avanzado > Subconsulta
Es posible incorporar una instruccin SQL dentro de otra.
Cuando esto se hace en las
instrucciones WHERE oHAVING, tenemos una
construccin de subconsulta.
La sintaxis es la siguiente:
SELECT "nombre1_columna"
FROM "nombre1_tabla"
WHERE "nombre2_columna" [Operador de
Comparacin]
(SELECT "nombre3_columna"
FROM "nombre2_tabla"
WHERE "Condicin");
[Operador de Comparacin] podran ser operadores de
igualdad tales como =, >, <, >=, <=. Tambin puede ser
un operador textual como "LIKE". La parte en rojo se
considera como la "consulta interna", mientras que la parte
en verde se considera como la "consulta externa".
Utilisons le mme exemple que celui que nous avons utilis
pour illustrer les jointures SQL :
Table Store_Information
Store_Name Sales Txn_Date
Los Angeles 1500 05-Jan-1999
San Diego 250 07-Jan-1999
Los Angeles 300 08-Jan-1999
Boston 700 08-Jan-1999
Table Geography
Region_Name Store_Name
East Boston
East New York
West Los Angeles
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');
Resultado:
SUM(Sales)
2050
Dans cet exemple, au lieu de joindre directement les deux
tables et dajouter seulement le montant des ventes des
magasins de la rgion West (Ouest), nous allons dabord
utiliser la sous-requte pour trouver les magasins situs
dans la rgion West (Ouest), puis additionner le montant
des ventes de ces magasins.
Dans lexemple ci-dessus, la requte interne est dabord
excute, puis le rsultat est envoy la requte externe.
Ce type de sous-requte est appel sous-requte simple.
Si la requte interne dpend de la requte externe, nous
aurons une sous-requte corrle. Vous trouverez ci-
dessous un exemple de de sous-requte corrle :
SELECT SUM(a1.Sales) FROM Store_Information a1
WHERE a1.Store_Name IN
(SELECT Store_Name FROM Geography a2
WHERE a2.Store_Name = a1.Store_Name);
Notez la clause WHERE dans la requte interne, o la
condition ncessite une table de la requte externe.





SQL > SQL Avanzado > Exists
En la seccin anterior, utilizamos IN para enlazar la
consulta interna y la consulta externa en una instruccin de
subconsulta. IN no es la nica forma de hacerlo uno
puede utilizar muchos operadores tales como >, <, o
=.EXISTS es un operador especial que describiremos en
esta seccin.
EXISTS simplemente verifica si la consulta interna arroja
alguna fila. Si lo hace, entonces la consulta externa
procede. De no hacerlo, la consulta externa no se ejecuta,
y la totalidad de la instruccin SQL no arroja nada.
La sintaxis para EXISTS es
SELECT "nombre1_columna"
FROM "nombre1_tabla"
WHERE EXISTS
(SELECT *
FROM "nombre2_tabla"
WHERE "Condicin");
Por favor note que en vez de *, puede seleccionar una o
ms columnas en la consulta interna. El efecto ser
idntico.
Utilizamos las mismas tablas de ejemplos:
Tabla Store_Information
Store_Name Sales Txn_Date
Los Angeles 1500 05-Jan-1999
San Diego 250 07-Jan-1999
Los Angeles 300 08-Jan-1999
Boston 700 08-Jan-1999
Table Geography
Region_Name Store_Name
East Boston
East New York
West Los Angeles
West San Diego
colocaramos la siguiente consulta SQL:
SELECT SUM(Sales) FROM Store_Information
WHERE EXISTS
(SELECT * FROM Geography
WHERE region_name = 'West');
Obtendremos el siguiente resultado:
SUM(Sales)
2750
Al principio, esto puede parecer confuso, debido a que la
subsequencia incluye la condicin [Region_Name = 'West'],
an as la consulta sum los negocios para todas las
regiones. Si observamos de cerca, encontramos que debido
a que la subconsulta arroja ms de 0 filas, la
condicin EXISTS es verdadera, y la condicin colocada
dentro de la consulta interna no influencia la forma en que
se ejecuta la consulta externa.













SQL > SQL Avanzado > Case
CASE se utiliza para brindar un tipo de lgica "si-entonces-
otro" para SQL. Su sintaxis es:
SELECT CASE ("nombre_columna")
WHEN "condicin1" THEN "resultado1"
WHEN "condicin2" THEN "resultado2"
...
[ELSE "resultadoN"]
END
FROM "nombre_tabla";
"condicin" puede ser un valor esttico o una expresin. La
clusula ELSE es opcional.
En nuestra Tabla Store_Information de ejemplo,
Tabla Store_Information
Store_Name Sales Txn_Date
Los Angeles 1500 05-Jan-1999
San Diego 250 07-Jan-1999
Los Angeles 300 08-Jan-1999
Boston 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",
Txn_Date
FROM Store_Information;
"Nuevas Ventas" es el nombre que se le otorga a la
columna con la instruccin CASE.
Resultado:
Store_name Nuevas Ventas Txn_Date
Los Angeles 3000 05-Jan-1999
San Diego 375 07-Jan-1999
San Francisco 300 08-Jan-1999
Boston 700 08-Jan-1999

























SQL > SQL Sintaxis
En esta pgina, enumeramos la sintaxis SQL para cada uno
de los comandos SQL en esta gua de referencia. Para
obtener explicaciones detalladas para cada sintaxis SQL,
por favor dirjase a la seccin individual haciendo clic en la
palabra clave.
El propsito de esta pgina es brindar una pgina de
referencia rpida para la sintaxis SQL.
Select
SELECT "nom de colonne" FROM "nombre_tabla";
Distinct
SELECT DISTINCT "nombre_columna"
FROM "nombre_tabla";
Where
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "condition";
And/Or
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "condicin simple"
{[AND|OR] "condicin simple"}+;
In
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna" IN ('valor1', 'valor2', ...);
Between
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna" BETWEEN 'valor1' AND 'valor2';
Like
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna" LIKE {patrn};
Order By
SELECT "nombre_columna"
FROM "nombre_tabla"
[WHERE "condicin"]
ORDER BY "nombre_columna" [ASC, DESC];
Count
SELECT COUNT("nombre_columna")
FROM "nombre_tabla";
Group By
SELECT "nombre_columna 1", SUM("nombre_columna 2")
FROM "nombre_tabla"
GROUP BY "nombre_columna 1";
Having
SELECT "nombre_columna 1", SUM("nombre_columna 2")
FROM "nombre_tabla"
GROUP BY "nombre_columna 1"
HAVING (condicin de funcin aritmtica);
Create Table
CREATE TABLE "nombre_tabla"
("columna 1" "tipo_de_datos_para_columna_1",
"columna 2" "tipo_de_datos_para_columna_2",
... );
Drop Table
DROP TABLE "nombre_tabla";
Truncate Table
TRUNCATE TABLE "nombre_tabla";
Insert Into
INSERT INTO "nombre_tabla" ("colonne 1", "colonne 2", ...)
VALUES ("valor 1", "valor 2", ...);
Update
UPDATE "nombre_tabla"
SET "colonne 1" = [nuevo valor]
WHERE "condicin";
Delete From
DELETE FROM "nombre_tabla"
WHERE "condicin";

Das könnte Ihnen auch gefallen