Você está na página 1de 40

PARTE 1

PARTE 2

El lenguaje SQL est compuesto por:


comandos
clusulas
operadores
funciones de agregado.
Estos elementos se combinan en las
instrucciones para crear, actualizar y
manipular las bases de datos.

COMANDOS

Existen dos tipos de comandos SQL:


los DLL que permiten crear y definir
nuevas bases de datos, campos e
ndices.
los
DML
que
permiten generar
consultas para ordenar, filtrar y extraer
datos de la base de datos.

Comandos DLL
CREATE
Utilizado para crear nuevas tablas, campos e ndices
DROP
Empleado para eliminar tablas e ndices
ALTER
Utilizado para modificar las tablas agregando
campos o cambiando la definicin de los campos.

Comandos DML
SELECT
Utilizado para consultar registros de la base de datos
que satisfagan un criterio determinado
INSERT
Utilizado para cargar lotes de datos en la base de
datos en una nica operacin.
UPDATE
Utilizado para modificar los valores de los campos y
registros especificados
DELETE
Utilizado para eliminar registros de una tabla de una
base de datos

Clusulas
Las clusulas son condiciones de modificacin
utilizadas para definir los datos que desea
seleccionar o manipular.
FROM: Utilizada para especificar la tabla de la cual
se van a seleccionar los registros
WHERE: Utilizada para especificar las condiciones
que deben reunir los registros que se van a
seleccionar
GROUP BY: Utilizada para separar los registros
seleccionados en grupos especficos
HAVING: Utilizada para expresar la condicin que
debe satisfacer cada grupo
ORDER BY: Utilizada para ordenar los registros

OPERADORES

lgicos:
AND, OR, NOT
de comparacin:
< , > , <> , = , <= , >= , between,
like, in

Funciones

de Agregado

Las funciones de agregado se usan dentro de una


clusula SELECT en grupos de registros para
devolver un nico valor que se aplica al grupo de
registros.
AVG: Utilizada para calcular el promedio de los
valores de un campo determinado
COUNT: Utilizada para
registros de la seleccin

devolver

el

nmero

de

SUM: Utilizada para devolver la suma de todos los


valores de un campo determinado
MAX: Utilizada para devolver el valor ms alto de un
campo especificado
MIN: Utilizada para devolver el valor ms bajo de un

CONSULTAS DE SELECCION
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
desean recuperar y tabla es el origen de los mismos,
por ejemplo:
SELECT Nombre, Telefono FROM Clientes;

Para especificar el orden en que


se desean recuperar los registros de las tablas
se usa la clusula
ORDER BY Lista de Campos.
Ejemplos:
SELECT CodigoPostal, Nombre, Telefono FROM
Clientes ORDER BY Nombre;
SELECT CodigoPostal, Nombre, Telefono FROM
Clientes ORDER BY CodigoPostal DESC , Nombre ASC;

Consultas con Predicado


El predicado se incluye entre la clusula y el primer
nombre del campo a recuperar. Los posibles
predicados son:
ALL: Devuelve todos los registros de la tabla
TOP: Devuelve un determinado nmero de registros
de la tabla
DISTINCT: Omite los registros cuyos
seleccionados coincidan totalmente

campos

SELECT ALL Apellido, Nombre FROM Empleados;


SELECT ALL * FROM Empleados;
SELECT TOP 25 Nombre, Apellido FROM Estudiantes
ORDER BY Nota DESC;
SELECT TOP 10 PERCENT Nombre, Apellido FROM
Estudiantes ORDER BY Nota DESC;
SELECT DISTINCT Apellido FROM Empleados;

SELECT * FROM Empleados WHERE Edad > 25 AND


Edad < 50;
SELECT * FROM Empleados WHERE (Edad > 25 AND
Edad < 50) OR Sueldo = 100;
SELECT * FROM Empleados WHERE NOT Estado
= 'Soltero';

SELECT * FROM Empleados WHERE (Sueldo >


100 AND Sueldo < 500) OR
(Provincia = 'Cordoba' AND Estado = 'Casado');

SELECT * FROM Pedidos WHERE CodPostal Between


1636 And 1644;

Like modelo
Tipo de coincidencia

Modelo
Planteado

Coincide

No coincide

Varios caracteres

'a*a'

'aa',
'aBBBa'

Carcter especial

'a[*]a'

'a*a'

'aaa'

Varios caracteres

'ab*'

'abcdefg', 'abc'

'cab', 'aab'

Un solo carcter

'a?a'

'aaa',
'aBa'

'a3a', 'aBBBa'

Un solo dgito

'a#a'

'a0a',
'a2a'

'a1a', 'aaa', 'a10a'

Rango de caracteres

'[a-z]'

'f', 'p', 'j'

'2', '&'

Fuera de un rango

'[!a-z]'

'9', '&', '%'

'b', 'a'

Distinto de un dgito

'[!0-9]'

'A', 'a', '&', '~'

'0', '1', '9'

Combinada

'a[!b-m]#'

'An9',
'a99'

'aBa', 'aBC'

'az0', 'abc', 'aj0'

Operador In

Este operador devuelve aquellos registros cuyo campo


indicado coincide con alguno de los que aparecen en una
lista.
Su sintaxis es:

expresin [Not] In(valor1, valor2, . . .)

SELECT * FROM Pedidos WHERE Provincia In ('Cordoba',


'Santa Fe', 'Chubut');

Clusula WHERE
Si no se emplea esta clusula, la consulta devolver todas las filas
de la tabla. WHERE es opcional, pero cuando aparece debe ir a
continuacin de FROM.
SELECT Apellidos, Salario FROM Empleados WHERE
Salario > 2100;
SELECT Id_Producto, Existencias FROM Productos WHERE
Existencias <=NuPedi;
SELECT * FROM Pedidos WHERE Fecha_Envio = #5/10/02#;
SELECT Apellidos, Nombre FROM Empleados WHERE
Apellidos = 'King';
SELECT Apellidos, Nombre FROM Empleados WHERE
Apellidos Like 'S*';

SELECT Apellidos, Salario FROM Empleados WHERE Salario


Between 200 And 300;

SELECT Apellidos, Salario FROM Empleados WHERE Apellidos


Between 'Lon' And 'Tol';

SELECT Id_Pedido, Fecha_Pedido FROM Pedidos WHERE


Fecha_Pedido Between #1/1/02# And #6/30/02#;

SELECT Apellidos, Nombre, Ciudad FROM Empleados WHERE


Ciudad In ('Rosario', 'San Isidro', 'Resistencia');

GROUP BY
SELECT campos FROM tabla WHERE criterio
GROUP BY campos-del-grupo
HAVING condicin;
SELECT Id_Familia, Sum(Stock) FROM Productos
GROUP BY Id_Familia;
SELECT Id_Familia, Sum(Stock) FROM Productos
GROUP BY Id_Familia
HAVING Sum(Stock) > 100;

SELECT Avg(Gastos) AS Promedio FROM Pedidos


WHERE Gastos > 100;
SELECT Min(Gastos) AS ElMin FROM Pedidos WHERE
Pais = 'Argentina';
SELECT Max(Gastos) AS ElMax FROM Pedidos WHERE
Pais = 'Argentina';
SELECT StDev(Gastos) AS Desviacion FROM Pedidos
WHERE Pais = 'Uruguay';
SELECT Sum(PrecioUnidad * Cantidad) AS Total FROM
DetallePedido;

SQL
Parte II

Consultas de Accin
Las consultas de accin son aquellas que no devuelven ningn
registro, son las encargadas de acciones como aadir, borrar y
modificar registros.
DELETE
INSERT INTO
UPDATE

DELETE
Crea una consulta de eliminacin que elimina los registros de una o
ms de las tablas listadas en la clusula FROM que satisfagan la
clusula WHERE. Esta consulta elimina los registros completos, no
es posible eliminar el contenido de algn campo en concreto.
DELETE Tabla.* FROM Tabla WHERE criterio
DELETE * FROM Empleados WHERE Cargo = 'Vendedor';
DELETE es especialmente til cuando se desea eliminar varios registros.
Si desea eliminar valores en un campo especificado, crear una consulta de
actualizacin que cambie los valores a Null.
No se puede deshacer la operacin. Es conveniente primero examinar los resultados de una
consulta de seleccin que utilice el mismo criterio y despus ejecutar la consulta de borrado.
Mantenga copias de seguridad de sus datos en todo momento.
Si elimina los registros equivocados podr recuperarlos desde las copias de seguridad.

DELETE CLIENTES.*
FROM CLIENTES
WHERE CLIENTES.codcliente > 2000;

INSERT INTO
Agrega un registro en una tabla. Esta consulta puede:
Insertar un nico registro
Insertar en una tabla los registros contenidos en otra tabla.
Para insertar un nico Registro:
INSERT INTO Tabla (campo1, campo2, .., campoN) VALUES
(valor1, valor2, ..,valorN)
Para insertar Registros de otra Tabla:
INSERT INTO Tabla [IN base_externa] (campo1, campo2, ...,
campoN) SELECT TablaOrigen.campo1, TablaOrigen.campo2, ...,
TablaOrigen.campoN FROM TablaOrigen
La condicin SELECT puede incluir la clusula WHERE para filtrar los registros a copiar.

Ejemplos

INSERT INTO Empleados (Nombre, Apellido, Cargo)VALUES


('Luis', 'Snchez', 'Becario');

INSERT INTO Empleados SELECT Vendedores.*


Vendedores WHERE Fecha_Contratacion < Now() - 30;

Los registros se agregan al final de la tabla.

FROM

UPDATE
Crea una consulta de actualizacin que cambia los valores de los
campos de una tabla especificada basndose en un criterio
especfico.
UPDATE Tabla SET Campo1=Valor1,
CampoN=ValorN WHERE Criterio;

Campo2=Valor2,

...

UPDATE es especialmente til cuando se desea cambiar un gran


nmero de registros o cuando stos se encuentran en mltiples
tablas.
Puede cambiar varios campos a la vez.

El ejemplo siguiente incrementa los valores Cantidad pedidos en un 10 por ciento y los
valores Transporte en un 3 por ciento para aquellos que se hayan enviado al Reino
Unido.:

UPDATE Pedidos SET Pedido = Pedido * 1.1, Transporte =


Transporte * 1.03 WHERE PaisEnvo = 'UK';
UPDATE no genera ningn resultado. Para saber qu registros se van a cambiar, hay que
examinar primero el resultado de una consulta de seleccin que utilice el mismo criterio y
despus ejecutar la consulta de actualizacin.

Otros ejemplos
UPDATE Empleados SET Grado = 5 WHERE Grado = 2;
UPDATE Productos SET Precio = Precio * 2 WHERE Prov = 8
AND Familia = 3;
Si en una consulta de actualizacin suprimimos la clusula WHERE todos los registros de
la tabla sealada sern actualizados.

UPDATE Empleados SET Salario = Salario * 1.1

Consultas de Unin Internas


Las vinculaciones entre tablas se realizan mediante
la clusula INNER que combina registros de dos
tablas siempre que haya concordancia de valores en
un campo comn.
SELECT campos FROM tb1 INNER JOIN tb2 ON tb1.campo1
comp tb2.campo2
tb1, tb2: Son los nombres de las tablas desde las que se combinan los registros.
Campo1, campo2: Son los nombres de los campos que se combinan. Si no son
numricos, los campos deben ser del mismo tipo de datos y contener el mismo tipo de
datos, pero no tienen que tener el mismo nombre.
Comp: Es cualquier operador de comparacin relacional : =, <, >, <=, >=, o <>.

SELECT Nombre_Categora, NombreProducto


FROM Categorias INNER JOIN Productos
ON Categorias.IDCategoria = Productos.IDCategoria;

Tambin se puede anidar instrucciones JOIN

SELECT campos
FROM tb1 INNER JOIN
(tb2 INNER JOIN
[( ]tb3 [INNER JOIN
[( ]tablax [INNER JOIN ...)]
ON tb3.campo3 comp tbx.campox)]
ON tb2.campo2 comp tb3.campo3)
ON tb1.campo1 comp tb2.campo2;

SELECT MOVIMIENTOS.NUMDOC,
MOVIMIENTOS.DOMINIO, VEHICULOS.MARCA,
VEHICULOS.MODELO, CLIENTES.Apellido
FROM CLIENTES INNER JOIN
(VEHICULOS INNER JOIN MOVIMIENTOS
ON VEHICULOS.DOMINIO =MOVIMIENTOS.DOMINIO)
ON CLIENTES.Codcliente = MOVIMIENTOS.CODCLIENTE;

LEFT JOIN

SELECT campos FROM tb1 LEFT JOIN tb2 ON tb1.campo1


comp tb2.campo2
LEFT toma todos los registros de la tabla de la izquierda aunque
no tengan ningn registro en la tabla de la derecha.

RIGHT JOIN
SELECT campos FROM tb1 RIGHT JOIN tb2 ON tb1.campo1
comp tb2.campo2
RIGHT realiza la misma operacin pero al contrario, toma todos
los registros de la tabla de la derecha aunque no tenga ningn
registro en la tabla de la izquierda.

SELECT TIPO.CODTIPO, VEHICULOS.CODTIPO,


VEHICULOS.DOMINIO, VEHICULOS.MARCA
FROM TIPO RIGHT JOIN VEHICULOS
ON TIPO.CODTIPO = VEHICULOS.CODTIPO;

SELECT TIPO.CODTIPO, VEHICULOS.CODTIPO,


VEHICULOS.DOMINIO, VEHICULOS.MARCA
FROM TIPO INNER JOIN VEHICULOS
ON TIPO.CODTIPO = VEHICULOS.CODTIPO;

Consultas de Referencias Cruzadas


Una consulta de referencias cruzadas es aquella
que nos permite visualizar los datos en filas y
en columnas, estilo tabla, por ejemplo:
Productos

2000

2001

Pantalones

1250

3000

Camisas

8560

1253

Zapatos

4369

2563

Si tenemos una tabla de productos y otra tabla de pedidos,


podemos visualizar el total de productos pedidos por ao
para un artculo determinado.

La sintaxis para este tipo de consulta es la siguiente:

TRANSFORM funcin agregada instruccin select


PIVOT campo pivot [IN (valor1[, valor2[, ...]])]
funcin agregada: Es una funcin SQL agregada que opera sobre los
datos seleccionados.
instruccin select: Es una instruccin SELECT.
campo pvot: Es el campo o expresin que desea utilizar para crear las
cabeceras de la columna en el resultado de la consulta.
valor1, valor2: Son valores fijos utilizados para crear las cabeceras de la
columna.

Se trata de resolver este problema: tenemos una tabla de productos


con dos campos, cdigo y nombre del producto, tenemos otra tabla
de pedidos en la que anotamos cdigo del producto, fecha del pedido
y cantidad pedida. Deseamos consultar los totales de producto por
ao, calculando la media anual de ventas.
Artculos
IDNombre
1 Zapatos
2 Pantalones
3 Blusas

Pedidos
Id

1
2
3
1
2
3
1
2
3

Fecha
1
11/11/2000
2
11/11/2000
3
11/11/2000
12/10/2000
50
04/05/2000
250
05/08/2000
100
01/01/2001
40
02/08/2001
60
05/10/2001
70
12/12/2001
8
15/12/2001
520
17/10/2001
1250

Cantidad
250
125
520

La consulta sera:

TRANSFORM Sum(Pedidos.Cantidad) AS Resultado


SELECT Nombre AS Producto, Pedidos.Id AS Cdigo,
Sum(Pedidos.Cantidad) AS TOTAL, Avg(Pedidos.Cantidad) AS
Media
FROM Pedidos INNER JOIN Artculos ON Pedidos.Id =
Artculos.Id
GROUP BY Pedidos.Id, Artculos.Nombre
PIVOT Year(Fecha);

y obtenemos el siguiente resultado:

Producto Cdigo TOTAL


2001
Zapatos

348

Pantalones 2
580

955

Blusas

1940

Media
87

2000
300

238,75
485

48
375

620

1320

Consultas con Parmetros


Las consultas con parmetros son aquellas cuyas
condiciones
de
bsqueda
se
definen
mediante
parmetros. Si se ejecutan directamente desde la base de
datos donde han sido definidas aparecer un mensaje
solicitando el valor de cada uno de los parmetros. Si
deseamos ejecutarlas desde una aplicacin hay que
asignar primero el valor de los parmetros y despus
ejecutarlas. Su sintaxis es la siguiente:

PARAMETERS nombre1 tipo1, nombre2 tipo2, ... , nombreN tipoN;


Consulta
Nombre: Es el nombre del parmetro
Tipo: Es el tipo de dato del parmetro
Consulta: Una consulta SQL

Puede utilizar nombre pero no tipo de datos en una clusula


WHERE o HAVING.
PARAMETERS Precio_Minimo Currency, Fecha_Inicio
DateTime;
SELECT IDPedido, Cantidad FROM Pedidos WHERE Precio >
Precio_Minimo AND FechaPedido >= Fecha_Inicio;
Otro ejemplo:
PARAMETERS [Escriba los Apellidos:] Text; SELECT *
FROM Empleados
WHERE [Escriba los Apellidos:] =
[Apellidos];
La ejecucin desde la base de datos solicita al usuario los
apellidosdelempleadoydespusmuestralosresultados.

Você também pode gostar