Sunteți pe pagina 1din 43

UNIVERSIDAD TCNICA PARTICULAR DE LOJA

La Universidad Catlica de Loja

MODALIDAD ABIERTA Y A DISTANCIA

Titulacin de IngenieraInformtica

PRACTICUM 3.1

Entregable2:

Revisin Bibliogrfica: Manual SQL

Estudiante: Cristian Rubn Vaca Vega

2017
1 SQL contexto y definiciones (mximo una hoja)
El SQL (Structure Query Lenguage), es un lenguaje de consulta estructurado establecido
claramente como el lenguaje de alto nivel estndar para sistemas de bases de datos
relacionales. Los responsables de publicar este lenguaje como estndar, fueron
precisamente los encargados de publicar estndar de la ANSI y la ISO por lo cual este
lenguaje lo vas a encontrar en cualquiera de los DBMS relacionales que existen en la
actualidad.

Las aplicaciones en red son cada da ms numerosas y verstiles. En muchos casos, el


esquema bsico de operacin es una serie de scripts que rigen el comportamiento de una
base de datos. Debido a la diversidad de lenguajes y de bases de datos existentes, la
manera de comunicar entre unos y otras sera realmente complicada a gestionar de no ser
por la existencia de estndares que nos permiten el realizar las operaciones bsicas de una
forma universal. Hablamos por tanto de un lenguaje normalizado que nos permite trabajar
con cualquier tipo de lenguaje (ASP o PHP) en combinacin con cualquier tipo de base
de datos (MS Access, SQL Server, MySQL...). El hecho de que sea estndar no quiere
decir que sea idntico para cada base de datos. En efecto, determinadas bases de datos
implementan funciones especficas que no tienen necesariamente que funcionar en otras.
Aparte de esta universalidad, el SQL posee otras dos caractersticas muy apreciadas. Por
una parte, presenta una potencia y versatilidad notables que contrasta, por otra, con su
accesibilidad de aprendizaje.

Es un lenguaje estndar de cuarta generacin que se utiliza para definir, gestionar y


manipular la informacin contenida en una Base de Datos Relacional.

En los lenguajes procedimentales de tercera generacin se deben especificar todos los


pasos que hay que dar para conseguir el resultado. Sin embargo en SQL tan solo
deberemos indicar al SGDB qu es lo que queremos obtener, y el sistema decidir cmo
obtenerlo.

Es un lenguaje sencillo y potente que se emplea para la gestin de la base de datos a


distintos niveles de utilizacin: usuarios, programadores y administradores de la base de
datos.

Todos los principales SGBDR incorporan un motor SQL en el Servidor de Base Datos,
as como herramientas de cliente que permiten enviar comandos SQL para que sean
procesadas por el motor del servidor. De esta forma, todas las tareas de gestin de la Base
de Datos (BD) pueden realizarse utilizando sentencias SQL.

- Consultar datos de la Base de Datos.


- Insertar, modificar y borrar datos.
- Crear, modificar y borrar objetos de la Base de Datos.
- Controlar el acceso a la informacin.
- Garantizar la consistencia de los datos
2 Comando - para cada uno incluir:
Propsito
Sintaxis
Ejemplo

CREATE TABLE

Define el nombre de la tabla, las columnas con su tipo de datos, las ligaduras de integridad
que vigilan el valor que se guarde como dato en las columnas o atributos sean llaves o
no.

SINTAXIS

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);

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.

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.

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 del CUSTOMER, 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
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.

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);

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

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.

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

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 para DROP 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;

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;

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.

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

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

SELECT

Obtiene filas de la base de datos y permite realizar la seleccin de una o varias filas o
columnas de una o varias tablas

Con esta sentencia se puede realizar todas las operaciones de algebra relacional

SINTAXIS:

SELECT "nombre_columna" FROM "nombre_tabla";

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

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

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. Todo lo que necesitamos hacer es agregar DISTINCT luego de SELECT
para seleccionar cada elemento.

SINTAXIS:

SELECT DISTINCT "nombre_columna"


FROM "nombre_tabla";
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

Para seleccionar todos los negocios distintos en la Tabla

SELECT DISTINCT store_name FROM Store_Information;

Resultado:

Store_Name
Los Angeles
San Diego
Boston

WHERE

Establece criterios de seleccin de ciertas filas en el resultado de la columna

SINTAXIS:

SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "condicin";

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

Para seleccionar todos los negocios con ventas mayores a 1000 dlares estadounidenses
en la Tabla
SELECT Store_Name
FROM Store_Information
WHERE Sales > 1000;

Resultado:

Store_Name
Los Angeles

AND u OR

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.

SINTAXIS:

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.

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

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

SELECT Store_Name
FROM Store_Information
WHERE Sales > 1000
OR (Sales < 500 AND Sales > 275);
Resultado:

Store_Name
Los Angeles
San Francisco

IN

En SQL, hay dos usos de la palabra clave IN, y esta 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

SINTAXIS:

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'

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

Podramos desear seleccionar todos los registros para los negocios de Los ngeles y San
Diego en la Tabla

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

BETWEEN

Permite la seleccin de un rango

SINTAXIS:

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'.

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

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

SELECT *
FROM Store_Information
WHERE Txn_Date BETWEEN '06-Jan-1999' AND '10-Jan-1999';

Resultado:

Store_Name Sales Txn_Date


San Diego 250 07-Jan-1999
San Francisco 300 08-Jan-1999
Boston 700 08-Jan-1999

LIKE

Le permite hacer una bsqueda basada en un patrn en vez de especificar exactamente lo


que se desea
SINTAXIS:

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.

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

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
ORDER BY

Esto podra ser en orden ascendente, en orden descendente, o podra basarse en valores
numricos o de texto

SINTAXIS:

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 ASCsignifica 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.

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

Podramos desear enumerar los contenidos de la Tabla segn la suma en dlares, en


orden descendente

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

FUNCIONES

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

SINTAXIS:

SELECT "tipo de funcin"("nombre_columna")


FROM "nombre_tabla";

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

SELECT SUM(Sales) FROM Store_Information;

Resultado:

SUM(Sales)
2750

COUNT
Esto nos permite COUNT el nmero de filas en una tabla determinada

SINTAXIS:

SELECT COUNT("nombre_columna")
FROM "nombre_columna";

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

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

GROUP BY

Esta clausula permitir agrupar un conjunto de columnas con valores repetidos y utilizar
las funciones de agregacin sobre las columnas con valores no repetidos.

SINTAXIS:
SELECT "nombre1_columna", SUM("nombre2_columna")
FROM "nombre_tabla"
GROUP BY "nombre1-columna";

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

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, necesitamos GROUP BY todas las otras
columnas seleccionadas, es decir, todas las columnas excepto aquella(s) que se operan
por un operador aritmtico

HAVING

Es la encargada de condicionar la seleccin de los grupos en base a los valores resultantes


en las funciones agregadas utilizadas que la clausula WHERE condiciona solo para la
seleccin de filas individuales.

SINTAXIS:

SELECT "nombre1_columna", SUM("nombre2_columna")


FROM "nombre_tabla"
GROUP BY "nombre1_columna"
HAVING (condicin de funcin aritmtica);

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

SELECT Store_Name, SUM(Sales)


FROM Store_Information
GROUP BY Store_Name
HAVING SUM(Sales) > 1500;

Resultado:

Store_Name SUM(Sales)
Los Angeles 1800

ALIAS

Nos concentraremos ahora en el uso de alias. Hay dos tipos de alias que se utilizan con
mayor frecuencia. Alias de columna y alias de tabla.

Resumiendo, los alias de columna existen para ayudar en la 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.

SINTAXIS:

SELECT "alias_tabla"."nombre1_columna" "alias_columna"


FROM "nombre_tabla" "alias_tabla";
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

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

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:

SINTAXIS

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 tabla Store_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 tabla Geography concuerde con la
tabla Store_Information, y la forma de hacerlo es igualarlos. Esta
instruccin WHERE es esencial para asegurarse de que obtenga el resultado correcto.
Sin la correcta instruccinWHERE 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.
OUTER JOIN

Sirve en la seleccin de elementos en una tabla sin importar si se encuentran presentes en


la segunda tabla.

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 tabla Store_Information. Por lo tanto, necesitamos
realizar una unin externa respecto de las dos tablas anteriores:

SINTAXIS

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

CONCATENAR

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: +

SINTAXIS

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

Region_Name Store_Name
East Boston
East New York
West Los Angeles
West San Diego

Ejemplo 1

MySQL/Oracle:

SELECT CONCAT (Region_Name, Store_Name) FROM Geography


WHERE Store_Name = 'Boston';

Resultado:

'EastBoston'

Ejemplo 2
Oracle:

SELECT Region_Name || ' ' || Store_Name FROM Geography


WHERE Store_Name = 'Boston';

Resultado:

'East Boston'

Ejemplo 3

SQL Server:

SELECT Region_Name + ' ' + Store_Name FROM Geography


WHERE Store_Name = 'Boston';

Resultado:

'East Boston'

SUBSTRING

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'

TRIM

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'

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.

SINTAXIS

[Instruccin SQL 1]
UNION
[Instruccin SQL 2];

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

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

UNION ALL

Es combinar los resultados de dos consultas juntas. La diferencia entre UNION


ALL y UNION es que, mientras UNION slo selecciona valores distintos, UNION
ALL selecciona todos los valores.

SINTAXIS

[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

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).
SINTAXIS

[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

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.

SINTAXIS
[Instruccin SQL 1]
MINUS
[Instruccin SQL 2];

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.
SUBCONSULTA

Es posible incorporar una instruccin SQL dentro de otra. Cuando esto se hace en las
instrucciones WHERE o HAVING, tenemos una construccin de subconsulta.

SINTAXIS

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

EJEMPLO:

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

SELECT SUM(Sales) FROM Store_Information


WHERE Store_Name IN
(SELECT Store_Name FROM Geography
WHERE Region_Name = 'West');

Resultado:
SUM(Sales)
2050

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.

SINTAXIS

SELECT "nombre1_columna"
FROM "nombre1_tabla"
WHERE EXISTS
(SELECT *
FROM "nombre2_tabla"
WHERE "Condicin");

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

Table Geography

Region_Name Store_Name
East Boston
East New York
West Los Angeles
West San Diego

SELECT SUM(Sales) FROM Store_Information


WHERE EXISTS
(SELECT * FROM Geography
WHERE region_name = 'West');

Obtendremos el siguiente resultado:


SUM(Sales)
2750

CASE

Se utiliza para brindar un tipo de lgica "si-entonces-otro" para SQL

SINTAXIS

SELECT CASE ("nombre_columna")


WHEN "condicin1" THEN "resultado1"
WHEN "condicin2" THEN "resultado2"
...
[ELSE "resultadoN"]
END
FROM "nombre_tabla";

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

3 Referencias Bibliogrficas
Recuperado de http://www.choucairtesting.com/Media/Default/Prepararse-para-
aplicar/manual-practico-sql.pdf

Recuperado de https://desarrolloweb.com/articulos/262.php

Recuperado de http://www.cartagena99.com/recursos/alumnos/apuntes/Manual-
SQL1.pdf

Recuperado de https://www.1keydata.com/es/sql/sql-select.php

S-ar putea să vă placă și