Documente Academic
Documente Profesional
Documente Cultură
COMANDOS SQL
ComandoSQLSelect
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:
Tabla Store_Information
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,
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.
ComandoSQLDistinct
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:
Por ejemplo, para seleccionar todos los negocios distintos en la Tabla Store_Information,
Tabla Store_Information
Ingresamos,
Resultado:
store_name
Los Angeles
San Diego
Boston
ComandoSQLWhere
Luego, podramos desear seleccionar condicionalmente los datos de una tabla. Por ejemplo,
podramos desear slo recuperar los negocios con ventas mayores a $1.000 dlares
estadounidenses. Para ello, utilizamos la palabra clave WHERE. La sintaxis es la siguiente:
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "condicin"
Por ejemplo, para seleccionar todos los negocios con ventas mayores a 1.000S/. dlares
estadounidenses en la Tabla Store_Information,
Tabla Store_Information
SELECT store_name
FROM Store_Information
WHERE Sales > 1000
Resultado:
store_name
Los Angeles
ComandoSQLAndOr
En la seccin anterior, hemos visto que la palabra clave WHEREtambin puede utilizarse para
seleccionar datos condicionalmente desde una tabla. Esta condicin puede ser una condicin
simple (como la que se presenta en la seccin anterior), o puede ser una condicin compuesta. Las
condiciones compuestas estn formadas por mltiples condiciones simples conectadas por AND u
OR. No hay lmites en el nmero de condiciones simples que pueden presentarse en una sola
instruccin SQL.
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 1000S/.
dlares estadounidenses o todos los negocios con ventas menores a 500S/. dlares
estadounidenses pero mayores a 275S/. dlares estadounidenses en la Tabla Store_Information,
Tabla Store_Information
Ingresamos,
SELECT store_name
FROM Store_Information
WHERE Sales > 1000
OR (Sales < 500 AND Sales > 275)
ComandosSQL>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
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
Ingresamos,
SELECT *
FROM Store_Information
WHERE store_name IN ('Los Angeles', 'San Diego')
Resultado:
Mientras que la palabra clave INayuda a las personas a limitar el criterio de seleccin para uno o
ms valores discretos, la palabra clave BETWEEN permite la seleccin de un rango. La sintaxis
para la clusula BETWEEN es la siguiente:
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "nombre_columna" BETWEEN 'valor1' AND 'valor2'
Esto seleccionar todas las filas cuya columna tenga un valor entre 'valor1' y 'valor2'.
Por ejemplo, podramos desear seleccionar la visualizacin de toda la informacin de ventas entre
el 06 de enero de 2007, y el 10 de enero de 2007, en la Tabla Store_Information,
Tabla Store_Information
Ingresamos,
SELECT *
FROM Store_Information
WHERE Date BETWEEN '06-Jan-2007' AND '10-Jan-2007'
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:
ComandosSQLLike
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:
'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.
Tabla Store_Information
Deseamos encontrar todos los negocios cuyos nombres contengan AN. Para hacerlo, ingresamos,
SELECT *
FROM Store_Information
WHERE store_name LIKE '%AN%'
Resultado:
ComandosSQLOrderBy
SELECT "nombre_columna"
FROM "nombre_tabla"
[WHERE "condicin"]
ORDER BY "nombre_columna" [ASC, DESC]
[] significa que la instruccin WHERE es opcional. Sin embargo, si existe una clusula WHERE,
viene antes de la clusula ORDER BY ASC significa que los resultados se mostrarn en orden
ascendente, y DESC significa que los resultados se mostrarn en orden descendente. Si no se
especifica ninguno, la configuracin predeterminada es ASC.
Es posible ordenar por ms de una columna. En este caso, la clusula ORDER BYanterior se
convierte en
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
Ingresamos,
Resultado:
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:
ComandosSQLFunciones
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
Por ejemplo, si deseamos obtener la sumatoria de todas las ventas de la siguiente tabla,
Tabla Store_Information
Ingresaramos
Resultado:
SUM(Sales)
2750
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.
ComandosSQLCount
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"
Tabla Store_Information
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,
Resultado:
Count(DISTINCT store_name)
3
ComandosSQLGroupBy
Tabla Store_Information
Deseamos saber las ventas totales para cada negocio. Para hacerlo, ingresaramos,
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,
necesitamos GROUP BY todas las otras columnas seleccionadas, es decir, todas las columnas excepto
aquella(s) que se operan por un operador aritmtico.
ComandosSQLHaving
Otra cosa que la gente puede querer hacer es limitar el resultado segn la suma correspondiente (o cualquier
otra funcin de agregado). Por ejemplo, podramos desear ver slo los negocios con ventas mayores a 1 500
, dlares. En vez de utilizar la clusula WHERE en la instruccin SQL, a pesar de que necesitemos utilizar la
clusula HAVING, que se reserva para funciones de agregados. La clusula HAVING se coloca generalmente
cerca del fin de la instruccin SQL, y la instruccin SQL con la clusula HAVING. puede o no incluir la clusula
GROUP BY sintaxis para HAVING es,
Tabla Store_Information
Ingresaramos,
Resultado:
store_name SUM(Sales)
Los Angeles 1800
ComandosSQLAlias
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:
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
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:
Resultado:
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.
ComandosSQLJoin
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
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_Informationcontiene 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:
Resultado:
REGIN SALES
East 700
West 2050
Las primeras dos lneas le indican a SQL que seleccione dos campos, el primero es el campo
"nombre_regin" de la tabla Geography (denominado REGIN), y el segundo es la suma del campo "Sales"
de la tabla Store_Information (denominado SALES). Note como se utilizan los alias de tabla aqu: Geografa
se denomina A1, e Informacin_Negocio se denomina A2. Sin los alias, la primera lnea sera
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 nombre_negocio en la tabla
Geografa concuerde con la tabla Store_Information, y la forma de hacerlo es igualarlos. Esta instruccin
WHEREes esencial para asegurarse de que obtenga el resultado correcto. Sin la correcta instruccin WHERE
se producir una Unin Cartesiana. Las uniones cartesianas darn por resultado que de la consulta se arroje
toda combinacin posible de las dos tablas (o cualquiera que sea el nmero de tablas en la instruccin
FROM). En este caso, una unin cartesiana resultara en un total de 4x4 = Se presenta un resultado de16
filas.
ComandosSQLOuterJoin
Anteriormente, hemos visto una unin izquierda, o interna, donde seleccionamos filas comunes a las tablas
que participan en la unin. Qu sucede en los casos donde estamos interesados en la seleccin de
elementos en una tabla sin importar si se encuentran presentes en la segunda tabla? Ahora necesitaremos
utilizar el comando SQL OUTER JOIN.
La sintaxis para realizar una unin externa en SQL depende de la base de datos. Por ejemplo, en Oracle,
colocaremos un "(+)" en la clusula WHERE del otro lado de la tabla para la que queremos incluir todas las
filas.
Tabla Store_Information
Tabla Geography
y queremos saber la suma de las ventas de todos los negocios. Si realizamos una unin regular, no
podramos obtener lo que deseamos debido a que habramos omitido Nueva York" ya que no aparece en la
tabla Store_Information. Por lo tanto, necesitamos realizar una unin externa respecto de las dos tablas
anteriores:
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, Nueva York" no
aparece en la tabla Store_Information, por lo tanto su columna "SALES" correspondiente es NULL.
ComandosSQLConcatenarFuncion
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: +
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 '||'.
Tabla Geography
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'
ComandosSQLSubstringFuncion
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:
SUBSTR(str,pos): Selecciona todos los caracteres de <str> comenzando con posicin <pos>. Note que esta
sintaxis no es compatible en SQL Server.
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'
ComandosSQLTrimFuncion
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:
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.
Ejemplo 1 :
Resultado :
'Sample'
Ejemplo 2 :
Resultado :
'Sample '
Ejemplo 3 :
Resultado :
' Sample'
CreateTable
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 TABLEen
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.
Entonces, si debemos crear una tabla para el cliente tal como se especifica anteriormente, ingresaramos
A veces, deseamos brindar un valor predeterminado a cada columna. Se utiliza un valor predeterminado
cuando no especifica un valor de columna cuando ingresa datos a la tabla. Para establecer un valor
predeterminado, agregue [valor] Predeterminado luego de la instruccin de tipo de datos. En el ejemplo
anterior, si deseamos predeterminar una columna Address como Desconocida y Ciudad como Mumbai,
ingresaramos
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.
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.
- NOT NULL
- UNIQUE
- CHECK
- Clave primaria
- Clave externa
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.
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.
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 favor note que la restriccin CHECK no sea ejecutada por MySQL en este momento.
Claveprimaria
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).
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.
Claveexterna
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 del
CUSTOMER, y la tabla RDENES que incluye los pedidos del CUSTOMER. La restriccin aqu es que todos
los pedidos deben asociarse con un CUSTOMER que ya se encuentra en la tabla CUSTOMER. En este caso,
colocaremos una clave externa en la tabla ORDERS y la relacionaremos con la clave primaria de la tabla
CUSTOMER. De esta forma, nos aseguramos que todos los pedidos en la tabla ORDERS estn relacionadas
con un CUSTOMER en la tabla CUSTOMER. En otras palabras, la tabla ORDERS no puede contener
informacin de un CUSTOMER que no se encuentre en la tabla CUSTOMER.
Tabla CUSTOMER
Tabla ORDERS
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);
CreateView
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 Instruccin SQL puede ser cualquiera de las instrucciones SQL que hemos descripto en esta gua de
referencia.
Utilicemos un ejemplo simple para ilustrar. Supongamos que tenemos la siguiente tabla:
Tabla Customer
(First_Name char(50),
Last_Name char(50),
Address char(50),
City char(50),
Country char(25),
Birth_Date date)
y deseamos crear una vista denominada V_Customer que contiene slo las columnas First_Name,
Last_Name y Pas de esta tabla, ingresaramos
View V_Customer
(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
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:
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,
Resultado:
REGION SALES
East 700
West 2050
CreateIndex
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:
Tabla Customer
(First_Name char(50),
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.
AlterTable
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:
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.
[modificar especificacin] depende del tipo de modificacin que deseamos realizar. Para los usos
mencionados anteriormente, las instrucciones [modificar especificacin] son:
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.
Primero, deseamos agregar una columna denominada Gender a esta tabla. Para hacerlo, ingresamos,
Table customer
Table customer
Luego, lo que queremos es cambiar el tipo de datos para Addr a 30 caracteres. Para hacerlo, ingresamos,
Table customer
Table customer
DropTable
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
para DROP TABLE es
Entonces, si deseamos eliminar una tabla denominada cliente que creamos en la seccin CREATE TABLE,
simplemente ingresamos
TruncateTable
Entonces, si deseamos truncar una tabla denominada cliente que creamos en SQL CREATE TABLE,
simplemente ingresamos
InsertInto
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:
Tabla Store_Information
y ahora deseamos insertar una fila adicional en la tabla que represente los datos de ventas para Los ngeles
el 10 de enero de 2007. En ese da, este negocio tena $900 dlares estadounidenses en ventas. Por lo tanto,
utilizaremos la siguiente escritura SQL:
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:
Entonces por ejemplo, si deseamos tener una tabla Store_Information, que recolecte la informacin de
ventas para el ao 1998, y ya conoce en donde reside la fuente de datos en tabala Sales_Information table,
ingresaremos:
Aqu hemos utilizado la sintaxis de Servidor SQL para extraer la informacin anual por medio de una fecha.
Otras bases de datos relacionales pueden tener sintaxis diferentes. Por ejemplo, en Oracle, utilizar to_char
(date,'yyyy')=1998.
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}
Tabla Store_Information
y notamos que las ventas para Los Angeles el 08/01/2007 es realmente de 500 en vez de 300 dlares
estadounidenses, y que esa entrada en particular necesita actualizarse. Para hacerlo, utilizamos el siguiente
SQL:
UPDATE Store_Information
SET Sales = 500
WHERE store_name = "Los Angeles"
AND Date = "08-Jan-2007"
Tabla Store_Information
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}
DeleteFrom
A veces podemos desear deshacernos de los registros de una tabla. Para ello, utilizamos el comando
DELETE FROM. La sintaxis para esto es,
Es ms fcil utilizar un ejemplo. Por ejemplo, digamos que actualmente tenemos la siguiente tabla:
Tabla Store_Information
y decidimos no mantener ninguna informacin sobre Los ngeles en esta tabla. Para lograrlo, ingresamos el
siguiente SQL:
Tabla Store_Information
2.
Para el ejemplo utilizaremos algunos comandos SQL para crear nuestra Base de
Datos que llamaremos Mototaxistas.
Usamos los siguientes comandos:
Use master
Go
Drop database MOTOTAXIS
GO
Create database MOTOTAXIS
go
Use MOTOTAXIS
Go
Create Table TABEMPRESA(
IDEMPRESA INT Identity Primary key,
EMPRESA VARCHAR(50) NOT NULL unique)
Go
Insert into TABEMPRESA values ("CHIQUINQUIRA")
Insert into TABEMPRESA values ("TOVIC SAC")
Insert into TABEMPRESA values ("LABRADOR S.A.")
Insert into TABEMPRESA values ("PIRATA SAC")
Insert into TABEMPRESA values ("LA PEPA INFORMAL")
Go
Create Table INTEGRANTES(
IDINTEGRANTES int Identity Primary key,
NombreINTEGRANTE VARCHAR(50) NOT NULL UNIQUE,
IDEMPRESA INT not null foreign key (IDEMPRESA) references
TABEMPRESA)
Go
Insert into INTEGRANTES values ("LEOPOLDO TAVARA JOSE",1)
Insert into INTEGRANTES values ("PAJARITO HUAMAN HERNALDO",2)
Insert into INTEGRANTES values ("PAJARITO HUAMAN ROBERTO",3)
Insert into INTEGRANTES values ("CARDENAS LUJAN PELUKITA",4)
Insert into INTEGRANTES values ("GALVAN LOPEZ TOMBI",2)
Insert into INTEGRANTES values ("PATO LINDO ZOILA",5)
Insert into INTEGRANTES values ("BALLICO TRUENO RAUL",1)
Go