You are on page 1of 24

BASES DE DATOS

SQL !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

El lenguaje SQL y los sistemas de bases de datos relacionales basados en l son una de las tecnologas bsicas ms importantes de la industria informtica. Durante ms de dos dcadas SQL ha pasado de su primer uso comercial a ser un segmento del mercado de productos y servicios informticos. SQL es una de las herramientas para la organizacin, gestin y recuperacin de los datos almacenados en bases de datos informticas. El acrnimo SQL es la abreviatura de Structured Query Language (lenguaje estructurado de consultas).

Y cmo funciona? Cuando se necesita recuperar datos de una BD, se utiliza el lenguaje SQL para formular la solicitud. El SGBD procesa la solicitud de SQL, recupera los datos solicitados y los devuelve al usuario.

. Que facl.no?

SQL se utiliza para controlar todas las funciones que el SGBD ofrece a los usuarios, entre las que se hallan: Definicin de los datos Recuperacin de los datos Manipulacin de los datos Control de acceso Compartimiento de los datos Integridad de los datos

Redefinicin:
SQL es un sublenguaje de bases de datos, que consta de unas cuarenta instrucciones especializadas para las tareas de gestin de las bases de datos. SQL es un lenguaje interactivo de consultas SQL es un lenguaje de programacin de las bases de datos SQL es un lenguaje de administracin de las bases de datos SQL es un lenguaje cliente/servidor SQL es un lenguaje de acceso a datos por Internet SQL es un lenguaje de bases de datos distribuidas

Tablas de ejemplos Los clientes que compran los productos de la compaa Los pedidos realizados por esos clientes Los representantes que venden los productos a los clientes Las oficinas comerciales en que trabajan esos representantes

Recuperacin de datos SELECT CIUDAD, OFICINA VENTAS FROM OFICINAS SELECT NUM_PEDIDO, CLIENTE, PRODUCTO, CANTIDAD, IMPORTE FROM PEDIDOS WHERE IMPORTE > 25000 ORDER BY IMPORTE

Resumen de datos SELECT AVG( IMPORTE ) FROM PEDIDOS SELECT AVG( IMPORTE ) FROM PEDIDOS WHERE CLIENTE = 2103 SELECT CLIENTE, SUM( IMPORTE ) FROM PEDIDOS ORDER BY CLIENTE

Adicin de datos

INSERT INTO OFICINAS ( CIUDAD, REGION, OBJETIVO, VENTAS, OFICINA ) VALUES(daganzo, este, 25000, 0.00, 23 )

Eliminacin de datos DELETE FROM CLIENTES WHERE COMPAA = industria ACME

DELETE FROM REPRESENTANTES WHERE VENTAS < CUOTAS

Actualizacin de la bases de datos

UPDATE CLIENTES SET LIMITE_CREDITO = 75000 WHERE EMPRESA = DIAZ

Instrucciones principales de SQL


Manipulacin de datos SELECT recupera datos de la BD INSERT aade nuevas filas de datos a la BD DELETE elimina filas de datos de la BD UPDATE modifica datos existentes en la BD Definicin de datos CREATE TABLE DROP TABLE ALTER TABLE CREATE VIEW DROP VIEW CREATE INDEX DROP INDEX aade una nueva tabla a la BD elimina una tabla de la BD cambia la estructura de una tabla existente aade una nueva vista a la BD elimina una vista de la BD construye un ndice sobre una columna elimina el ndice de una columna

SELECT.la instruccin mgica


Consultas Simples
SELECT CIUDAD, OBJETIVO, VENTAS FROM OFICINAS SELECT CIUDAD, OBJETIVO, VENTAS FROM OFICINAS WHERE REGION = Este SELECT CIUDAD, OBJETIVO, VENTAS FROM OFICINAS WHERE REGION = Este AND VENTAS > OBJETIVO ORDER BY CIUDAD SELECT AVG (OBJETIVO), AVG (VENTAS) FROM OFICINAS WHERE REGION = Este Para las consultas simples, la solicitud en ingles y la instruccin SELECT de SQL son muy similares. Cuando la solicitud se torna ms complicada, se deben usar ms caractersticas de la instruccin SELECT para especificar de forma precisa la consulta.

Descripcin de componentes de SELECT


SELECT: lista los elementos de datos a recuperar por la instruccin SELECT. Los elementos pueden ser columnas de la BD o columnas calculadas por SQL al procesar la consulta.
FROM: lista las tablas que contienen los datos a recuperar por la consulta. Las consultas ms complejas que combinan datos de dos o ms tablas se incluyen. WHERE: informa a SQL de que incluya slo ciertas filas de datos en los resultados de la consulta. Se usa una condicin de bsqueda para especificar las filas deseadas. GROUP BY: especifica una consulta de resumen. En lugar de producir una fila de resultados por cada fila de datos de la B.D. , agrupa filas , similares y produce una fila de resumen de los resultados de cada grupo. HAVING: indica a SQL que incluya en el resultado slo determinados grupos producidos por la clusula GROUP BY. ORDER BY: ordena los resultados tomando como base los datos de una o ms columnas. si se omite, los resultados no se ordenan.

SELECT NOMBRE, CUOTA, ( CUOTA + ( .03 * VENTAS ) ) FROM REPRESENTANTES SELECT NOMBRE, MONTH(FECHA_CONTRATO), YEAR(FECHA_CONTRATO) FROM REPRESENTANTES SELECT * FROM OFICINAS

Filas Duplicadas ( DISTINCT) SELECT JEF FROM OFICINAS . Informacin duplicada SELECT DISTINCT JEF FROM OFICINAS . Correccin

Si una consulta incluye la clave primaria de una tabla en su lista de seleccin, entonces cada fila de los resultados ser nica. Si la clave primaria no se incluye en los resultados de la consulta, pueden aparecer filas duplicadas.

El test de valores nulos ( is null) SELECT NOMBRE FROM REPRESENTANTES WHERE OFICINA_REP IS NULL SELECT NOMBRE FROM REPRESENTANTES WHERE OFICINA_REP IS NOT NULL SELECT NOMBRE FROM REPRESENTANTES WHERE OFICINA_REP = NULL

.??????

Esta ltima condicin no es vlida

Condiciones compuestas de bsqueda ( AND , OR Y NOT ) SELECT NOMBRE, CUOTA, VENTAS FROM REPRESENTANTES WHERE VENTAS < CUOTAS OR VENTAS < 30000 SELECT NOMBRE, CUOTA, VENTAS FROM REPRESENTANTES WHERE VENTAS < CUOTAS AND VENTAS < 30000 SELECT NOMBRE, CUOTA, VENTAS FROM REPRESENTANTES WHERE VENTAS < CUOTAS AND NOT VENTAS < 15000

SELECT NOMBRE FROM REPRESENTANTES WHERE ( OFICINA_REP IN (22,11,13)) OR ( JEFE IS NULL AND FECHA_CONTRATO >= 01-JUN-06 ) OR ( VENTAS > CUOTA AND NOT VENTAS > 60000)
Nota: observe la complejidad de esta ultima consulta

Combinacin de los resultados de las consultas ( UNION )


A veces es conveniente combinar los resultados de dos o ms consultas en una nica tabla de resultados. SQL dispone de esta capacidad mediante la caracterstica UNION de la instruccin SELECT.

SELECT ID_FAB, ID_PRODUCTO FROM PRODUCTOS WHERE PRECIO > 20000 UNION SELECT DISTINCT FAB, PRODUCTO FROM PEDIDOS WHERE IMPORTE > 30000

Restricciones en la UNION
Hay restricciones severas sobre las tablas que se pueden combinar en una operacin UNION

. Las dos tablas deben contener el mismo numero de columnas . El tipo de datos de cada columna de la primera tabla debe ser el mismo que el de la columna
correspondiente de la segunda.

. Ninguna de las dos tablas se puede ordenar con la clausula ORDER BY . Sin embargo los
resultados de la consulta combinada, si. Uniones y filas duplicadas
SELECT ID_FAB, ID_PRODUCTO FROM PRODUCTOS WHERE PRECIO > 20000 UNION ALL SELECT DISTINCT FAB, PRODUCTO FROM PEDIDOS WHERE IMPORTE > 30000 ALL permite preservar las Filas duplicadas.

Consultas multitabla (reuniones)


Muchas consultas tiles necesitan de dos o ms tablas de la base de datos. SQL permite recuperar datos que responden a estas solicitudes con las consultas multitablas que renen datos de dos o ms tablas.

NOTA SUPER IMPORTANTE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Qu debe unir a las tablas? ???????????? SELECT NUM_PEDIDO, IMPORTE, EMPRESA, LIMITE_CREDITO FROM PEDIDOS, CLIENTES WHERE CLIENTE = NUM_CLI Traduccin: listar todos los pedidos, mostrando el numero de pedido, su importe y el

nombre y limite de crdito del cliente.

SELECT CIUDAD, NOMBRE, PUESTO FROM OFICINAS, REPRESENTANTES WHERE JEF = NUM_EMPL Traduccin: Listar las oficinas y los nombres y puestos de sus jefes

Nota importante: SQL no requiere que las columnas coincidentes se incluyan en los resultados de una consulta multitabla. A menudo se omiten en la prctica... por que?

SELECT CIUDAD, NOMBRE, PUESTO FROM OFICINAS, REPRESENTANTES WHERE JEF = NUM_EMPL AND OBJETIVO > 60000
Traduccin: Listar las oficinas con un objetivo superior a 600000

SELECT NUM_PEDIDO, IMPORTE, DESCRIPCION FROM PEDIDOS, PRODUCTOS WHERE FAB = ID_FAB AND PRODUCTO = ID_PRODUCTO Traduccin: Listar todos los pedidos, mostrando la cantidad y descripcin

de cada producto

Nota importante: La gran mayora de las consultas multitabla se basan en relaciones padre/hijo, pero SQL no requiere que las columnas coincidentes se relacionen como clave primaria y externa. Cualquier par de columnas de dos tablas pueden servir como columnas coincidentes, siempre que tengan tipos de datos comparables. SELECT NUM_PEDIDO, IMPORTE, FECHA_PEDIDO, NOMBRE FROM PEDIDOS, REPRESENTANTES WHERE FECHA_PEDIDO = FECHA_CONTRATO Traduccin: Hallar todos los pedidos recibidos en fechas en las que se haya

Contratado algn nuevo representante

Consultas de resumen
SQL permite resumir los datos de las bases de datos mediante un conjunto de funciones de columna. Una funcin de columna de SQL toma una columna de datos completa como argumento y produce un nico elemento de datos que resume la columna.

Calculo total de una columna ( SUM ) La funcin de columna SUM () calcula la suma de los valores de datos de una columna. Los datos de la columna deben tener un tipo numrico ( entero, decimal, coma flotante o moneda ). El resultado de la funcin SUM () tiene el mismo tipo de datos bsico que los datos de la columna, pero el resultado puede tener mayor precisin.

SELECT SUM(CUOTA), SUM(VENTAS) FROM REPRESENTANTES

Traduccin: Cules son las cuotas y ventas totales de todos los representantes

SELECT SUM (IMPORTE) FROM PEDIDOS, REPRESENTANTES WHERE NOMBRE = Bruno Arteaga AND REP = NUM_EMPL Traduccin: Cul es el total de los pedidos de Bruno Arteaga

Calculo de la media de una columna ( AVG ) La funcin de columna AVG( ) calcula la media de una columna. Como con la funcion SUM ( ), los datos de la columna deben tener un tipo numrico. Dado que la funcin suma los valores de la columna y despues lo divide por el numero de valores, su resultado puede tener un tipo de dato diferente del de los valores de la columna. SELECT AVG( PRECIO ) FROM PRODUCTOS WHERE ID_FAB = ACI Traduccin: Calcular el precio medio de los productos del fabricante ACI

SELECT AVG( IMPORTE ) FROM PEDIDOS WHERE CLIENTE = 2103


Traduccin: Calcular el importe medio de los pedidos de ACME (numero de

Cliente 2103)

Recuento de valores de datos ( COUNT ) La funcin de columna COUNT ( ) cuenta el nmero de valores de datos de una columna. Los datos de la columna pueden ser de cualquier tipo. SELECT COUNT( NUM_CLI) FROM CLIENTES

Traduccin: Cuntos clientes hay?


SELECT COUNT( NOMBRE) FROM REPRESENTANTES WHERE VENTAS > CUOTA Traduccin: Cuantos representantes exceden su cuota? Ntese que la funcin COUNT ( ) ignora los valores de los elementos de datos de la columna; simplemente cuenta cuntos elementos de datos hay. Como resultado, no importa realmente la columna que se especifique como argumento de la funcin COUNT( ) SELECT COUNT( * ) FROM PEDIDOS WHERE IMPORTE > 25000

Subconsultas y expresiones de consultas


Las subconsultas en SQL permiten usar los resultados de una consulta como parte de otra. Las subconsultas son menos conocidas que las reuniones de SQL, pero desempean un papel importante en SQL por tres motivos: Una instruccin SQL con una subconsulta es a menudo la forma ms natural de expresar una consulta, porque se acerca a la descripcin en lenguaje natural de la consulta.

Las subconsultas hacen ms facl la escritura de las instrucciones SELECT, porque permiten dividir la consulta en piezas ( la consulta y sus subconsultas ) y despus componerlas de nuevo.
Algunas consultas no se pueden expresar en el lenguaje SQL, sin el uso de una subconsulta.

Definicin directa : Una subconsulta es una consulta dentro de otra

Listar las oficinas ( ciudad ) en las que el objetivo de ventas exceda la suma de las cuotas de cada representante
SELECT CIUDAD FROM OFICINAS WHERE OBJETIVO > ( SELECT SUM( CUOTA ) FROM REPRESENTANTES WHERE OFICINA_REP = OFICINA ) Por cada oficina , la consulta interna ( la subconsulta ) calcula la suma de las cuotas de los representantes que trabajan en esa oficina.. La consulta externa ( la consulta principal ) compara el objetivo de la oficina con el total calculado y decide si aade la oficina a los resultados de la consulta principal. Al trabajar juntas, la consulta principal y la subconsulta expresan la solicitud original y recuperan los datos solicitados de la BD.

Listar los representantes ( nombres )cuya cuota sea menor que el 10 % de los objetivos totales de la empresa
SELECT NOMBRE FROM REPRESENTANTES WHERE CUOTA < ( .1 * ( SELECT SUM( OBJETIVO ) FROM OFICINAS ) )

You might also like