You are on page 1of 18

EJERCICIO PRCTICO No.

Anlisis y Desarrollo de
Sistemas de Informacin

SQL

ADS- I36
Fecha: 17 de febrero de 2016

Centro Colombo-Alemn

Structured Query Language, SQL


DDL:

Lenguaje de definicin de datos; data definition language.

Las sentencias DDL se utilizan para crear y modificar la estructura de


las tablas as como otros objetos de la base de datos.

CREATE - para crear objetos en la base de datos.

ALTER - modifica la estructura de la base de datos.

DROP - borra objetos de la base de datos.

TRUNCATE - elimina todos los registros de la tabla, incluyendo todos


los espacios asignados a los registros.

DML:

Lenguaje

de

manipulacin

de

datos

;data

manipulation language.

Las sentencias DML permiten generar consultas para ordenar, filtrar, insertar, actualizar,
agrupar y extraer datos de la base de datos.

Consulta de datos.
El proceso ms importante que podemos llevar a cabo en una base de datos es la
consulta de los datos. De nada servira una base de datos si no
pudiramos consultarla. Es adems la operacin que efectuaremos con mayor
frecuencia.

EJERCICIO PRCTICO No.1


SQL

Anlisis y Desarrollo de
Sistemas de Informacin
ADS- I36
Fecha: 17 de febrero de 2016

Centro Colombo-Alemn

Veamos por partes que quiere decir cada una de las partes que conforman la
sentencia.

SENTENCIA
SELECT
ALL
DISTINCT

FROM

WHERE
GROUP BY

HAVING

ORDER BY

SIGNIFICADO
Palabra clave que indica que la sentencia de SQL que
queremos ejecutar es de seleccin.
Indica que queremos seleccionar todos los valores.
Es el valor por defecto y no suele especificarse casi
nunca.
Indica que queremos seleccionar slo los valores
distintos.
Indica la tabla (o tablas) desde la que queremos
recuperar los datos. En el caso de que exista ms de
una tabla se denomina a la consulta "consulta
combinada" o "join". En las consultas combinadas es
necesario aplicar una condicin de combinacin a
travs de una clusula WHERE.
Especifica una condicin que debe cumplirse para que
los datos sean devueltos por la consulta. Admite los
operadores lgicos AND y OR.
Especifica la agrupacin que se da a los datos. Se usa
siempre en combinacin con funciones agregadas.
Especifica una condicin que debe cumplirse para los
datos Especfica una condicin que debe cumplirse
para que los datos sean devueltos por la consulta. Su
funcionamiento es similar al de WHERE pero
aplicado al conjunto de resultados devueltos por la
consulta. Debe aplicarse siempre junto a GROUP BY
y la condicin debe estar referida a los campos
contenidos en ella.
Presenta el resultado ordenado por las columnas
indicadas. El orden puede expresarse con ASC (orden
ascendente) y DESC (orden descendente). El valor
predeterminado es ASC.

EJERCICIO PRCTICO No.1

Anlisis y Desarrollo de
Sistemas de Informacin

SQL
Centro Colombo-Alemn

ADS- I36
Fecha: 17 de febrero de 2016

Consultas bsicas

La sintaxis bsica de una consulta de seleccin es la siguiente:

SELECT
Campos
FROM
Tabla

En donde campos es la lista de campos que se deseen recuperar y tabla es el origen de los
mismos, por ejemplo:

SELECT
Nombre, Telfono
FROM
Clientes

Esta sentencia devuelve un conjunto de resultados con el campo nombre y telfono de la


tabla clientes.

Devolver Literales

En determinadas ocasiones nos puede interesar incluir una columna con un texto fijo en una
consulta de seleccin, por ejemplo, supongamos que tenemos una tabla de empleados y
deseamos recuperar las tarifas semanales de los electricistas, podramos realizar la siguiente
consulta:

SELECT
Empleados.Nombre, 'Tarifa semanal: ', Empleados.TarifaHora * 40
FROM
Empleados
WHERE
Empleados.Cargo = 'Electricista'

EJERCICIO PRCTICO No.1

Anlisis y Desarrollo de
Sistemas de Informacin

SQL
Centro Colombo-Alemn

ADS- I36
Fecha: 17 de febrero de 2016

Ordenar los registros

Adicionalmente se puede especificar el orden en que se desean recuperar los registros de las
tablas mediante la clusula ORDER BY Lista de Campos. En donde Lista de campos
representa los campos a ordenar. Ejemplo:

SELECT
CodigoPostal, Nombre, Telefono
FROM
Clientes
ORDER BY
Nombre

Esta consulta devuelve los campos CodigoPostal, Nombre, Telefono de la tabla Clientes
ordenados por el campo Nombre.

Se pueden ordenar los registros por mas de un campo, como por ejemplo:

SELECT
CodigoPostal, Nombre, Telefono
FROM
Clientes
ORDER BY
CodigoPostal, Nombre

Incluso se puede especificar el orden de los registros: ascendente mediante la clusula (ASC
- se toma este valor por defecto) descendente (DESC)

SELECT
CodigoPostal, Nombre, Telefono
FROM
Clientes

EJERCICIO PRCTICO No.1

Anlisis y Desarrollo de
Sistemas de Informacin

SQL
Centro Colombo-Alemn

ADS- I36
Fecha: 17 de febrero de 2016

ORDER BY
CodigoPostal DESC , Nombre ASC

Uso de Indices de las tablas

Si deseamos que la sentencia SQL utilice un ndice para mostrar los resultados se puede
utilizar la palabra reservada INDEX de la siguiente forma:

SELECT ... FROM Tabla (INDEX=Indice) ...

Normalmente los motores de las bases de datos deciden que ndice se debe utilizar para la
consulta, para ello utilizan criterios de rendimiento y sobre todo los campos de bsqueda
especificados en la clusula WHERE. Si se desea forzar a no utilizar ningn ndice
utilizaremos la siguiente sintaxis:

SELECT ... FROM Tabla (INDEX=0) ...

Consultas con Predicado

El predicado se incluye entre la clusula y el primer nombre del campo a recuperar, los
posibles predicados son:

Predicado
ALL

Descripcin
Devuelve todos los campos de la tabla
Devuelve un determinado nmero de registros de la
TOP
tabla
Omite los registros cuyos campos seleccionados
DISTINCT
coincidan totalmente
Omite los registros duplicados basndose en la totalidad
DISTINCTOW
del registro y no slo en los campos seleccionados.
ALL
Si no se incluye ninguno de los predicados se asume ALL. El Motor de base de datos
selecciona todos los registros que cumplen las condiciones de la instruccin SQL y devuelve
todos y cada uno de sus campos. No es conveniente abusar de este predicado ya que

EJERCICIO PRCTICO No.1

Anlisis y Desarrollo de
Sistemas de Informacin

SQL
Centro Colombo-Alemn

ADS- I36
Fecha: 17 de febrero de 2016

obligamos al motor de la base de datos a analizar la estructura de la tabla para averiguar los
campos que contiene, es mucho ms rpido indicar el listado de campos deseados.
SELECT ALL
FROM
Empleados
SELECT *
FROM
Empleados

TOP
Devuelve un cierto nmero de registros que entran entre al principio o al final de un rango
especificado por una clusula ORDER BY. Supongamos que queremos recuperar los nombres
de los 25 primeros estudiantes del curso 1994:
SELECT TOP 25
Nombre, Apellido
FROM
Estudiantes
ORDER BY
Nota DESC

Si no se incluye la clusula ORDER BY, la consulta devolver un conjunto arbitrario de 25


registros de la tabla de Estudiantes. El predicado TOP no elige entre valores iguales. En el
ejemplo anterior, si la nota media nmero 25 y la 26 son iguales, la consulta devolver 26
registros. Se puede utilizar la palabra reservada PERCENT para devolver un cierto porcentaje
de registros que caen al principio o al final de un rango especificado por la clusula ORDER
BY. Supongamos que en lugar de los 25 primeros estudiantes deseamos el 10 por ciento del
curso:
SELECT TOP 10 PERCENT
Nombre, Apellido
FROM
Estudiantes
ORDER BY
Nota DESC

El valor que va a continuacin de TOP debe ser un entero sin signo. TOP no afecta a la
posible actualizacin de la consulta.
DISTINCT
Omite los registros que contienen datos duplicados en los campos seleccionados. Para que
los valores de cada campo listado en la instruccin SELECT se incluyan en la consulta deben
ser nicos. Por ejemplo, varios empleados listados en la tabla Empleados pueden tener el
mismo apellido. Si dos registros contienen Lpez en el campo Apellido, la siguiente
instruccin SQL devuelve un nico registro:
SELECT DISTINCT

EJERCICIO PRCTICO No.1

Anlisis y Desarrollo de
Sistemas de Informacin

SQL
Centro Colombo-Alemn

ADS- I36
Fecha: 17 de febrero de 2016

Apellido
FROM
Empleados

Con otras palabras el predicado DISTINCT devuelve aquellos registros cuyos campos
indicados en la clusula SELECT posean un contenido diferente. El resultado de una consulta
que utiliza DISTINCT no es actualizable y no refleja los cambios subsiguientes realizados por
otros usuarios.
DISTINCTROW
Este predicado no es compatible con ANSI. Que yo sepa a da de hoy slo funciona con
ACCESS.
Devuelve los registros diferentes de una tabla; a diferencia del predicado anterior que slo se
fijaba en el contenido de los campos seleccionados, ste lo hace en el contenido del registro
completo independientemente de los campos indicados en la clusula SELECT.
SELECT DISTINCTROW
Apellido
FROM Empleados

Si la tabla empleados contiene dos registros: Antonio Lpez y Marta Lpez el ejemplo del
predicado DISTINCT devuelve un nico registro con el valor Lpez en el campo Apellido ya
que busca no duplicados en dicho campo. Este ltimo ejemplo devuelve dos registros con el
valor Lpez en el apellido ya que se buscan no duplicados en el registro completo.
ALIAS
En determinadas circunstancias es necesario asignar un nombre a alguna columna
determinada de un conjunto devuelto, otras veces por simple capricho o porque estamos
recuperando datos de diferentes tablas y resultan tener un campo con igual nombre. Para
resolver todas ellas tenemos la palabra reservada AS que se encarga de asignar el nombre
que deseamos a la columna deseada. Tomado como referencia el ejemplo anterior podemos
hacer que la columna devuelta por la consulta, en lugar de llamarse apellido (igual que el
campo devuelto) se llame Empleado. En este caso procederamos de la siguiente forma:
SELECT DISTINCTROW
Apellido AS Empleado
FROM Empleados

AS no es una palabra reservada de ANSI, existen diferentes sistemas de asignar los alias en
funcin del motor de bases de datos. En ORACLE para asignar un alias a un campo hay que
hacerlo de la siguiente forma:
SELECT
Apellido AS "Empleado"
FROM Empleados

Tambin podemos asignar alias a las tablas dentro de la consulta de seleccin, en esta caso

EJERCICIO PRCTICO No.1

Anlisis y Desarrollo de
Sistemas de Informacin

SQL
Centro Colombo-Alemn

ADS- I36
Fecha: 17 de febrero de 2016

hay que tener en cuenta que en todas las referencias que deseemos hacer a dicha tabla se
ha de utilizar el alias en lugar del nombre. Esta tcnica ser de gran utilidad ms adelante
cuando se estudien las vinculaciones entre tablas. Por ejemplo:
SELECT
Apellido AS Empleado
FROM
Empleados AS Trabajadores

Para asignar alias a las tablas en ORACLE y SQL-SERVER los alias se asignan escribiendo el
nombre de la tabla, dejando un espacio en blanco y escribiendo el Alias (se asignan dentro
de la clusula FROM).
SELECT
Trabajadores.Apellido (1) AS Empleado
FROM
Empleados Trabajadores

(1)Esta nomenclatura [Tabla].[Campo] se debe utilizar cuando se est recuperando un


campo cuyo nombre se repite en varias de las tablas que se utilizan en la sentencia. No
obstante cuando en la sentencia se emplean varias tablas es aconsejable utilizar esta
nomenclatura para evitar el trabajo que supone al motor de datos averiguar en que tabla
est cada uno de los campos indicados en la clusula SELECT.
Recuperar Informacin de una base de Datos Externa
Para concluir este captulo se debe hacer referencia a la recuperacin de registros de bases
de datos externas. Es ocasiones es necesario la recuperacin de informacin que se
encuentra contenida en una tabla que no se encuentra en la base de datos que ejecutar la
consulta o que en ese momento no se encuentra abierta, esta situacin la podemos salvar
con la palabra reservada IN de la siguiente forma:
SELECT
Apellido AS Empleado
FROM
Empleados IN'c: \databases\gestion.mdb'

En donde c: \databases\gestion.mdb es la base de datos que contiene la tabla Empleados.


Esta tcnica es muy sencilla y comn en bases de datos de tipo ACCESS en otros sistemas
como SQL-SERVER u ORACLE, la cosa es ms complicada la tener que existir relaciones de
confianza entre los servidores o al ser necesaria la vinculacin entre las bases de datos. Este
ejemplo recupera la informacin de una base de datos de SQL-SERVER ubicada en otro
servidor (se da por supuesto que los servidores estn lincados):

EJERCICIO PRCTICO No.1

Anlisis y Desarrollo de
Sistemas de Informacin

SQL

ADS- I36
Fecha: 17 de febrero de 2016

Centro Colombo-Alemn

San Diego

DISTINCT
Estructura:
SELECT DISTINCT "nombre_columna"
FROM "nombre_tabla"

250 07-Jan-1999

San Francisco 300 08-Jan-1999


Boston

SELECT
Estructura:

700 08-Jan-1999

Ingresamos,
SELECT *
FROM Store_Information
WHERE store_name IN ('Los Angeles',
'San Diego')

SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "condicin"
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "condicin simple"
{[AND|OR] "condicin simple"

Resultado:
store_name Sales

Date

Los Angeles 1500 05-Jan-1999


Ejemplo:
SELECT store_name
FROM Store_Information
WHERE Sales > 1000
OR (Sales < 500 AND Sales > 275)

IN
Estructura:
SELECT nombre_columna
FROM nombre_tabla
WHERE nombre_columna IN
(valor1, valor2, )

San Diego

250 07-Jan-1999

BETWEEN
Estructura:
SELECT nombre_columna
FROM nombre_tabla
WHERE nombre_columna BETWEEN
valor1 AND valor2
Ejemplo:

Ejemplo:
Tabla Store_Information
store_name

Sales

Date

Los Angeles

1500 05-Jan-1999

Tabla Store_Information
store_name

Sales

Date

Los Angeles

1500 05-Jan-1999

San Diego

250 07-Jan-1999

EJERCICIO PRCTICO No.1

Anlisis y Desarrollo de
Sistemas de Informacin

SQL

ADS- I36
Fecha: 17 de febrero de 2016

Centro Colombo-Alemn

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

San Francisco 300 08-Jan-1999


Boston

700 08-Jan-1999

Ingresamos,
SELECT *
FROM Store_Information
WHERE Date BETWEEN '06-Jan-1999'
AND '10-Jan-1999'
Tenga en cuenta que la fecha puede
almacenarse en diferentes formatos
segn las diferentes bases de datos.
Esta gua de referencia simplemente
elige uno de los formatos.

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

Resultado:
store_name

Sales Date

San Diego

250 07-Jan-1999

San Francisco 300 08-Jan-1999


Boston

700 08-Jan-1999

LIKE
Estructura:
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

Ejemplo:
Digamos que tenemos la siguiente
tabla:
Tabla Store_Information
store_name

Sales

Date

LOS ANGELES

1500 05-Jan-1999

SAN DIEGO

250 07-Jan-1999

SAN FRANCISCO 300 08-Jan-1999


BOSTON

700 08-Jan-1999

EJERCICIO PRCTICO No.1

Anlisis y Desarrollo de
Sistemas de Informacin

SQL

ADS- I36
Fecha: 17 de febrero de 2016

Centro Colombo-Alemn

Deseamos encontrar todos los


negocios cuyos nombres contengan
AN. Para hacerlo, ingresamos,

ORDER BY "nombre1_columna" [ASC, DESC],


"nombre2_columna" [ASC, DESC]
Ejemplo:

SELECT *
FROM Store_Information
WHERE store_name LIKE '%AN%'

Por ejemplo, podramos desear enumerar los


contenidos de la Tabla Store_Information
segn la suma en dlares, en orden
descendente:

Resultado:

Tabla Store_Information

store_name

Sales

Date

store_name

Sales

LOS ANGELES

1500 05-Jan-1999

Los Angeles

1500 05-Jan-1999

SAN DIEGO

250 07-Jan-1999

San Diego

250 07-Jan-1999

SAN FRANCISCO 300 08-Jan-1999

Date

San Francisco 300 08-Jan-1999


Boston

700 08-Jan-1999

ORDER BY
Estructura:

Ingresamos,

SELECT "nombre_columna"
FROM "nombre_tabla"
[WHERE "condicin"]
ORDER BY "nombre_columna" [ASC, DESC]

SELECT store_name, Sales, Date


FROM Store_Information
ORDER BY Sales 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

Resultado:
store_name

Sales

Date

Los Angeles

1500 05-Jan-1999

Boston

700 08-Jan-1999

San Francisco 300 08-Jan-1999


San Diego

250 07-Jan-1999

EJERCICIO PRCTICO No.1

Anlisis y Desarrollo de
Sistemas de Informacin

SQL

ADS- I36
Fecha: 17 de febrero de 2016

Centro Colombo-Alemn

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

2750
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

La sintaxis para el uso de funciones es,

store_name Sales

SELECT "tipo de funcin"("nombre_columna")


FROM "nombre_tabla"

Los Angeles 1500 05-Jan-1999

Por ejemplo, si deseamos obtener la sumatoria


de todas las ventas de la siguiente tabla,
Tabla Store_Information
store_name Sales

Date

Los Angeles 1500 05-Jan-1999


San Diego

250 07-Jan-1999

San Diego

Date

250 07-Jan-1999

Los Angeles 300 08-Jan-1999


Boston

700 08-Jan-1999

ingresamos,
SELECT COUNT(store_name)
FROM Store_Information
Resultado:

Los Angeles 300 08-Jan-1999


Count(store_name)
Boston

700 08-Jan-1999
4

ingresaramos
SELECT SUM(Sales) FROM Store_Information

Resultado:
SUM(Sales)

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:

EJERCICIO PRCTICO No.1

Anlisis y Desarrollo de
Sistemas de Informacin

SQL

ADS- I36
Fecha: 17 de febrero de 2016

Centro Colombo-Alemn

Count(DISTINCT store_name)
3
SELECT "nombre1_columna",
SUM("nombre2_columna")
FROM "nombre_tabla"
GROUP BY "nombre1-columna"

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,

Ilustremos utilizando la siguiente tabla,


Tabla Store_Information
Tabla Store_Information
store_name Sales
store_name Sales

Date

Date
Los Angeles 1500 05-Jan-1999

Los Angeles 1500 05-Jan-1999


San Diego
San Diego

250 07-Jan-1999

250 07-Jan-1999
Los Angeles 300 08-Jan-1999

Los Angeles 300 08-Jan-1999


Boston
Boston

700 08-Jan-1999

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:

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_name SUM(Sales)
Store

Total Sales

Los Angeles 1800


Los Angeles 1800
San Diego

250

Boston>

700

San Diego

250

Boston

700

ALIAS
Estructura:

CREAR TABLA
Estructura:

EJERCICIO PRCTICO No.1

Anlisis y Desarrollo de
Sistemas de Informacin

SQL

ADS- I36
Fecha: 17 de febrero de 2016

Centro Colombo-Alemn

CREATE TABLE "nombre_tabla"


("columna 1"
"tipo_de_datos_para_columna_1",
"columna 2"
"tipo_de_datos_para_columna_2",
... )

Column Name Data Type

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 date)
CREAR TABLA CON LLAVE PRIMARIA
CREATE TABLE Customer
(SID integer,
Last_Name varchar(30),
First_Name varchar(30),
PRIMARY KEY (SID));
INSERCIN DE DATOS EN UNA TABLA
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,

store_name

char(50)

Sales

float

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, Date)
VALUES ('Los Angeles', 900, '10-Jan-1999')
ACTUALIZAR O MODIFICAR
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

Date

Los Angeles 1500 05-Jan-1999


San Diego

250 07-Jan-1999

Los Angeles 300 08-Jan-1999


Tabla Store_Information

EJERCICIO PRCTICO No.1

Anlisis y Desarrollo de
Sistemas de Informacin

SQL

ADS- I36
Fecha: 17 de febrero de 2016

Centro Colombo-Alemn

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 Date = "08-Jan-1999"

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

Date

Los Angeles 1500 05-Jan-1999

La tabla resultante ser vera

San Diego

Tabla Store_Information

Los Angeles 300 08-Jan-1999

store_name Sales

Boston

Date

Los Angeles 1500 05-Jan-1999


San Diego

250 07-Jan-1999

Los Angeles 500 08-Jan-1999


Boston

700 08-Jan-1999

250 07-Jan-1999

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

Tambin es posible UPDATEmltiples 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}

store_name Sales Date


San Diego

250 07-Jan-1999

Boston

700 08-Jan-1999

BORRAR O ELIMINAR
UNION, INTERSECT,MINUS
A veces podemos desear deshacernos de los
registros de una tabla. Para ello, utilizamos el
comando DELETE FROM. La sintaxis para esto
es,

Supongamos que tenemos las siguientes dos


tablas,
Tabla Store_Information

EJERCICIO PRCTICO No.1

Anlisis y Desarrollo de
Sistemas de Informacin

SQL

ADS- I36
Fecha: 17 de febrero de 2016

Centro Colombo-Alemn

store_name Sales

Date

Los Angeles 1500 05-Jan-1999


San Diego

250 07-Jan-1999

Los Angeles 300 08-Jan-1999

11-Jan-1999
12-Jan-1999
INTERSECT
Digamos que tenemos las siguientes dos tablas:
Tabla Store_Information

Boston

700 08-Jan-1999
store_name Sales

Date

Tabla Internet_Sales
Los Angeles 1500 05-Jan-1999
Date

Sales
San Diego

250 07-Jan-1999

07-Jan-1999 250
Los Angeles 300 08-Jan-1999
10-Jan-1999 535
Boston

700 08-Jan-1999

11-Jan-1999 320
Tabla Internet_Sales
12-Jan-1999 750
Date
y deseamos saber de todas las fechas donde
hay una operacin de venta. Para hacerlo,
utilizamos la siguiente instruccin SQL:
SELECT Date FROM Store_Information
UNION
SELECT Date FROM Internet_Sales

Sales

07-Jan-1999 250
10-Jan-1999 535
11-Jan-1999 320

Resultado:

12-Jan-1999 750

Date

y deseamos encontrar todas las fechas donde


hay ventas tanto en el negocio como en
Internet. Para hacerlo, utilizamos la siguiente
instruccin SQL:

05-Jan-1999
07-Jan-1999
08-Jan-1999
10-Jan-1999

SELECT Date FROM Store_Information


INTERSECT
SELECT Date FROM Internet_Sales
Resultado:

EJERCICIO PRCTICO No.1

Anlisis y Desarrollo de
Sistemas de Informacin

SQL

ADS- I36
Fecha: 17 de febrero de 2016

Centro Colombo-Alemn

Date

12-Jan-1999 750

07-Jan-1999

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:

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.

SELECT Date FROM Store_Information


MINUS
SELECT Date FROM Internet_Sales
Resultado:

La sintaxis es la siguiente:

Date

[Instruccin SQL 1]
MINUS
[Instruccin SQL 2]

05-Jan-1999
08-Jan-1999

Continuemos con el mismo ejemplo:


Tabla Store_Information
store_name Sales

Date

Los Angeles 1500 05-Jan-1999


San Diego

250 07-Jan-1999

Los Angeles 300 08-Jan-1999


Boston

700 08-Jan-1999

RESUMEN SINTAXIS SQL


Select
SELECT "nom de colonne" FROM
"nombre_tabla"
Distinct
SELECT DISTINCT "nombre_columna"
FROM "nombre_tabla"

Tabla Internet_Sales
Date

Sales

07-Jan-1999 250
10-Jan-1999 535
11-Jan-1999 320

Where
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "condition"
And/Or
SELECT "nombre_columna"
FROM "nombre_tabla"
WHERE "condicin simple"
{[AND|OR] "condicin simple"}+

EJERCICIO PRCTICO No.1

Anlisis y Desarrollo de
Sistemas de Informacin

SQL

ADS- I36
Fecha: 17 de febrero de 2016

Centro Colombo-Alemn

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", ...)
valorS ("valor 1", "valor 2", ...)
Update
UPDATE "nombre_tabla"
SET "colonne 1" = [nuevo valor]
WHERE {condition}
Delete From
DELETE FROM "nombre_tabla"
WHERE {condicin}

You might also like