Você está na página 1de 58

USO DEL SQL PARA EL MANEJO DE BASES DE DATOS

Introduccin
SQL es una herramienta para organizar, gestionar y recuperar datos almacenados en una base de datos relacional. "SQL" es una abreviatura de Structured Query Language (Lenguaje de Consultas Estructurado). Veremos el Estndar SQL 92, la mayora de los manejadores de base de datos (DBMS) actuales implementan SQL 92, pero generalmente cada implementacin puede tener pequeas variantes.

DDL y DML
SQL est dividido en dos partes: Lenguaje de Definicin de Datos
(DDL siglas en Ingls): Proporciona instrucciones para la definicin del esquema (Estructura) de la Base de Datos, por ej: crear tablas, ndices, etc.

Lenguaje de Manipulacin de Datos


(DML siglas en Ingls): Brinda instrucciones para el mantenimiento y explotacin de datos.

Base de datos de ejemplo


De ahora en adelante los ejemplos de consultas SQL estarn hechos sobre el siguiente esquema de base de datos. Articulos(#art, desc, precio, cant, stock_min, stock_max) Provee(#prov,#art, precio_venta) Proveedores(#prov, nombre, direccion) Clientes(#cli, nombre, direccion ) Compran(#cli, #art) Con las siguientes instancias:

articulos

art

desc 100 Caf 101 Azucar 102 Harina

precio cant stock-min stock-max 5.2 8 10 50 1.2 30 15 45 1.1 35 16 40


provee

proveedores

prov 200 201 202

nombre Grasano Atomo VEA

dir Bs As 100 Lima 85 Alvear 455

clientes

prov art precio_Venta 200 100 4 200 101 1.1 201 101 1 201 102 0.5 202 102 1
compran

cli

nombre 300 Pedro 301 Juan 302 Maria

dir Bs As 90 Jujuy 800 Cordoba 24

cli 300 300 301 302

art 100 102 101 101

DDL
SQL tiene comandos de definicin de datos,
es decir, Adems de lenguaje de consulta tambin es un lenguaje de definicin de datos (Data Definition Language).

Comandos
Comandos DDL:
Comando Descripcin CREATE DROP ALTER Utilizado para crear nuevas tablas, campos e ndices Empleado para eliminar tablas e ndice Utilizado para modificar las tablas agregando campos.

Comandos
CREATE TABLE Nombre-Tabla ( definicin de columna [, definicin de columna ... ) Por ejemplo: CREATE TABLE Alumnos ( Nombre CHAR(35), Sexo CHAR(1), Telefono INTEGER, FechaNac DATE, CuotaMes DECIMAL(7,2) )

Sintaxis
Sintaxis en CREATE TABLE
<atributo>..NOT NULL

Semntica: El atributo no puede ser nulo, en una insercin debe especificarse un valor. Autor de un Libro
CREATE TABLE LIBRO ( nombre VARCHAR(100), codigo INT, autor VARCHAR(30) NOT NULL, editorial VARCHAR(30))

Comandos
ALTER TABLE Nombre-Tabla ADD columna tipo de dato Por ejemplo: ALTER TABLE Prueba ADD Descuento SMALLINT

Comandos
DROP TABLE Tambin es posible eliminar en cualquier momento una tabla existente. Se pierde todo. DROP TABLE Nombre-Tabla Por ejemplo: DROP TABLE Pruebas

Desarrollo de la sesin
Introduccin Comando INSERT Comando UPDATE Comando DELETE Comando SELECT Conclusin

Comando INSERT
Este comando se utiliza para agregar uno o mas registros (filas). Se puede utilizar para efectuar dos tipos de operaciones:
a) Insertar un nico registro b) Insertar en una tabla los registros contenidos en otra.

Comando INSERT para un registro: INSERT INTO destino [(campo1[, campo2[, ...]])]VALUES (valor1[, valor2[, ...]) Comando INSERT para insertar mas de un registro: INSERT INTO destino {[(campo1[, campo2[, ...]])] seleccin

Argumento Destino CampoN

Descripcin El nombre de la tabla donde se van a aadir registros. Los nombres de los campos donde se van a aadir los datos, si est a continuacin del argumento destino, o los nombres de los campos de donde se obtienen los datos, si est a continuacin de un argumento origen. Es una expresin de seleccin que debe tener el mismo nmero de columnas y tipos que las columnas a insertar. Los registros que de cmo resultado la expresin SELECT sern agregados en la tabla destino (ver comando SELECT). Esto permite insertar en una tabla varios registros. Los valores que se van a insertar en los campos especficos del nuevo registro. Cada valor se inserta en el campo que corresponde a la posicin del valor en la lista: valor1 se inserta en campo1 del nuevo registro, valor2 dentro de campo2, y as sucesivamente. Debe separar los valores con una coma y escribir los campos de texto entre apstrofos ( ) y las fechas indicarlas en formato dd/mm/aa y entre apstrofos.

Seleccin

ValorN

Ejemplo
INSERT INTO articulos (art,Descripcion,precio,Stock_max,Stock_min) VALUES (5, 'Vino x1L', 1.5,90,20); En este ejemplo se agrega un nuevo registro a la tabla artculos, pero en el campo cantidad no se pone ningn valor (Valor nulo).

Comando UPDATE
Para cambiar uno o ms valores de campos de registros en una tabla, se utiliza el comando UPDATE. Su sintaxis es: UPDATE tabla SET campo1 = valor1 [, campo2 = valor2 [, ...]] WHERE condicin;
Argumento Tabla CampoN ValorN Condicin Descripcin Nombre de la tabla cuyos datos desea modificar. Nombre del campo cuyo valor se actualizar. Expresin cuyo valor tomara el campoN. La expresin debe ser del tipo del campo. Una expresin que determina qu registros se actualizarn. Slo se actualizan los registros que satisfacen la expresin.

Ejemplos
1) UPDATE articulos SET precio = precio * 1.2;

Esta instruccin incrementa los precios de todos los artculos en un 20 por ciento. 2) UPDATE articulos SET precio = precio * 1.2 WHERE precio <2; La ejecucin de este comando incrementa los precios de los artculos cuyo precio es menor a $2, en un 20 por ciento.

Comando DELETE
El comando DELETE se utiliza para borrar uno o varios registros de una tabla particular. Su sintaxis es: DELETE FROM tabla [WHERE condicion]; Argumento Tabla Condicin Descripcin Nombre de la tabla cuyos registros se van a eliminar. Expresin que determina qu registros se van a eliminar.

Nota: Si se omite la clusula WHERE se eliminan todos los registros de la tabla.

Ejemplos
1) DELETE FROM proveedores; La ejecucin de este comando producir que la tabla proveedores quede vaca.

2) DELETE FROM proveedores WHERE prov=200; Este comando elimina el registro correspondiente al proveedor nmero 200.

Prctica.
Objetivo
Desarrollar la habilidad en el manejo de los comandos DML para mantener una base de datos.

Recursos:
MANUAL DE PARTICIPANTE (Anexo E) DBMS: INTERBASE (IBCONSOLE) Base de Datos: CONOCER

Tiempo 10 mins.

Comando SELECT
El comando ms usado en SQL es la instruccin SELECT, que se utiliza para recuperar datos de diferentes tablas de una base de datos.

Consta de seis clusulas: las dos primeras (SELECT y FROM) obligatorias y las cuatro restantes, opcionales.

Su sintaxis es:
SELECT [ALL|DISTINCT] { * | expr_columna_1 [AS c_alias_1] [, expr_columna_2 [AS c_alias_2][,...]]} FROM nombre_tabla_1 [t_alias_1][, table_name_n [t_alias_n][,...]] [WHERE condicionWhere] [GROUP BY expr_columna_group1 [,expr_columna_group2] [,...]] [HAVING condicionHaving]] [{UNION [ALL] | INTERSECT | EXCEPT} SELECT ...] [ORDER BY nombre_campo_i1 [ASC|DESC] [, nombre_campo_j1 [ASC|DESC]][,...]]];

Clusula SELECT
La clusula SELECT lista los datos a recuperar por la sentencia SELECT. Los elementos o datos a seleccionar, pueden ser columnas de la base de datos o columnas a calcular por SQL cuando efecta la consulta. Su sintaxis es: SELECT [ALL|DISTINCT] { * | expr_columna_1 [AS c_alias_1] [, expr_columna_2 [AS c_alias_2][,...]]}

Argumento ALL DISTINCT *

Descripcin Si hay registros repetidos en la consulta tambin son devueltos. Si hay registros repetidos en la consulta, solo devuelve uno de los repetidos. Valor por omision. La tabla resultante de la consulta tendr todas las columnas de las tablas involucradas.

Expr_columna_N Define una columna, que ser parte del resultado de la consulta, puede ser el nombre de una columna de las tablas participantes en la consulta, o una expresin que la involucre (por Ej.: Precio * 2). Tambin puede ser una funcin agregada de SQL (ver funciones agregadas). c_alias_N Nombres que se van a utilizar como encabezados de columnas en la tabla resultante, en vez de los nombres de las expresiones de columnas.

Clusula FROM
La clusula FROM lista las tablas que contienen los datos a recuperar por la consulta. La sintaxis de esta clusula es: FROM nombre_tabla_1 [t_alias_1][, nombre_tabla _n [t_alias_n][,...]]
Argumento Descripcin Nombre_tabla_N Nombre de una tabla que contiene los datos que desea recuperar. t_alias_N Nombre que se usa para referirse a la tabla en el resto de la sentencia SELECT para abreviar el nombre original y hacerlo ms manejable, en el caso de existir ms de una tabla en la consulta y, tambin para poder realizar consultas uniendo varias veces la misma tabla.

Ejemplos
1) Devolver un listado de artculos con el nmero, Descripcin y precio de cada artculo. SELECT art, Desc, precio FROM articulos; Resultado:
art desc 100 Caf 101 Azucar 102 Harina precio 5.2 1.2 1.1

Clusula WHERE
En clusula WHERE se define la condicion que deben cumplir las filas o registros de datos, que estaran en el resultado de la consulta. Su sintaxis es: WHERE condicionWhere
Argumento CondicionWhere Descripcin Expresin que determina qu registros se incluirn en el resultado. Ms adelante se explicar en detalle como se pueden construir condiciones.

Ejemplo
1) Devolver un listado con todos los campos de los artculos a reponer.

SELECT * FROM articulos WHERE stock_min > cant Resultado:

art

desc 100 Caf

precio cant stock-min stock-max 5.2 8 10 50

Operadores de Comparacin
< , >, <>, <=, >=, = BETWEEN: Utilizado para especificar un intervalo de valores. Utilizado en tipos String, numricos y de fechas. LIKE: Utilizado en la comparacin de un patrn. El carcter % se utiliza como comodn y el _, de comodn posicional IN: Utilizado para saber si el valor de un campo se encuentra en una lista de valores IS: Para verificar si un atributo tiene un valor nulo (NULL)

Expresiones
En una condicion, se pueden cotejar con operadores de comparacin, columnas con otras columnas o con expresiones del tipo de la columna, las expresiones se pueden conectar con otras por medio de operadores lgicos

Operadores Lgicos
AND OR NOT XOR Concatena dos condiciones con Y Vincula dos condiciones con O Niega la expresion que precede Enlaza dos condiciones con O Exclusiva

Ejemplos
a) SELECT * FROM articulos WHERE desc like A% Listados de artculos cuya descripcin empieza con la letra A b) SELECT * FROM articulos WHERE desc like A% AND desc like %K Listados de artculos cuya descripcin empieza con la letra A y termina con la letra K
c) SELECT * FROM articulos WHERE stock_min < 15 OR stock_max > 40 Devuelve los artculos cuyo stock mnimo sea menor a 15 o el mximo sea mayor a 40

Clusula ORDER BY
Ordena los resultados de la consulta, en base a los datos de una o ms columnas. Si se omite, los resultados saldrn ordenados conforme estan alojados fisicamente Su sintaxis es: ORDER BY expresin_orden1 [ASC|DESC] [, expresin_orden2 [ASC|DESC] ][,...];
Argumento Expresin_ordenN Descripcin Puede ser el nombre de un campo, expresin o el nmero de posicin que ocupa la expresin de columna en la clusula SELECT. Produce el ordenamiento ascendente de los valores de la columna. Esta opcin es la elegida por defecto. Produce el ordenamiento descendente de los valores de la columna.

ASC DESC

Ejemplo
SELECT art AS Numero_Art, Pv.prov AS Numero_prov, Nombre, Precio_Venta FROM Proveedores Pd, Provee Pv WHERE Pd.prov = Pv.prov ORDER BY art Esta consulta devuelve un listado con los artculos, que proveedores lo suministran y su respectivo precio de venta. El listado esta ordenado ascendentemente por el nmero de artculo. Tambin se puede observar la utilizacin de alias tanto en el nombre de tablas como en el de columnas.

Resultado
numero_Art numero_prov nombre precio_venta 100 200 Grasano 4 101 200 Grasano 1,1 101 201 Atomo 1 102 201 Atomo 0,5 102 202 VEA 1

Funciones Agregadas
SQL proporciona funciones agregadas que toman el nombre de una columna como argumento. El valor del operador agregado se calcula sobre todos los valores de la columna especificada en la tabla completa. Estas funciones se pueden combinar con la clusula GROUP BY que se vera mas adelante.
Las funciones agregadas son: AVG (Calcula el promedio) COUNT (Cuenta la cantidad de registros) SUM (Suma los valores de una columna) MIN (Calcula el mnimo valor de una columna) MAX (Calcula el mximo valor de una columna)

AVG
Devuelve el promedio de los valores de una expresin de columna. Ejemplo: SELECT AVG(Precio) as promedio FROM articulos Devolver el promedio de precios de todos los artculos. Resultado
promedio 2.5

SUM
Devuelve la suma total de los valores de una expresin de columna o campo numrico. Ejemplo: SELECT SUM(cant) as cantidad FROM articulos Devolver la cantidad total de artculos. Resultado:
cantidad 73

COUNT
Simplemente cuenta el nmero de registros. No importan los valores que estn almacenados en los registros. Ejemplo: SELECT COUNT(*) as cant_articulos FROM articulos Devolver la cantidad de artculos. Resultado:
cant_articulos 3

MAX
Devuelve el valor ms alto de los contenidos en una expresin de columna. Ejemplo: SELECT MAX(Precio) as precio_maximo FROM articulos Devolver el precio del articulo mas caro. Resultado
precio_maximo 5.2

MIN
Devuelve el valor ms bajo de los contenidos en una expresin de columna. Ejemplo: SELECT MIN(Precio) as precio_minimo FROM articulos Devolver el precio del articulo mas barato. Resultado
precio_minimo 1.1

Clusula GROUP BY
La clusula GROUP BY especifica una consulta sumaria. En vez de producir una fila de resultados por cada fila de datos de la base de datos, agrupa todas las filas similares y luego produce una fila sumaria de resultados para cada grupo. Su sintaxis: [GROUP BY expr_columna_group1 [,expr_columna_group2] [,...]] Donde: expr_columna_groupN deben coincidir con las expresin de columna utilizada en la clusula SELECT.

Ejemplo. 1) Retornar un listado con los nmeros de artculos y el precio promedio de venta de los proveedores para cada artculo. SELECT art, AVG(precio_venta) as promedio_p_v FROM Provee GROUP BY art; Resultado
art promedio_p_v 100 4 101 1.05 102 0.75

Clusula Having
La clusula HAVING trabaja muy similarmente a la clusula WHERE, y se utiliza para considerar slo aquellos grupos que satisfagan la condicin dada en la clusula HAVING. Su sintaxis es: HAVING condicionHaving Donde condicionHaving es la condicin que deben cumplir los grupos. Las expresiones permitidas en la clusula HAVING deben involucrar funciones agregadas

Ejemplo
Retornar un listado con los nmeros de artculos y el precio promedio de venta de los artculos cuyo precio promedio de venta de los proveedores es menor a $2. SELECT art, AVG(precio_venta) FROM Provee GROUP BY art Having AVG(precio_venta) < 2; Resultado
art avg 101 102 1.05 0.75

Reuniones (JOIN)
Se utilizan para vincular dos o ms tablas, y proporcionar informacin como si se tratara de una sola. Para ello, se expresan los nombres de las tablas en la clusula FROM y su sintaxis es: FROM Tabla1, Tabla2 Adems, en la clusula WHERE se escribe la ecuacin que indica, a travs de que atributos se vinculan WHERE Tabla1.Atributo k = Tabla2.Atributo j

Ejemplo
Mostrar el nombre del cliente y el de los artculos que ha comprado. SELECT clientes.nombre, articulos.desc FROM clientes, compran, articulos WHERE clientes.cli = compran.cli AND compran.art = articulos.art SELECT C.nombre, A.desc FROM clientes C, compran C1, articulos A WHERE C.cli = C1.cli AND C1.art = A.art

nombre Pedro Pedro Juan Mara

desc Caf Harina Azucar Azucar

Ejemplo (2)
Mostrar el nombre del proveedor y el de los artculos que ha provedo. SELECT P.nombre, A.desc FROM proveedores P, provee P1, articulos A WHERE P.prov = P1.prov AND P1.art = A.art Resultado
nombre Grasano Grasano Atomo Atomo VEA desc Caf Azucar Azucar Harina Harina

Subquery
Se utiliza para proveer de forma dinmica valores necesarios para resolver un Query. Estn asociados a la clusula WHERE y HAVING, donde es necesario comparar con datos WHERE <atributo> <comparador> (SELECT ...FROM ... WHERE ...) HAVING <funcin> <comparador> (SELECT ...FROM ... WHERE ...)

Subquery
Condiciones
Entrega una sola columna Esta debe proporcionar un valor compatible con el usado en la clusula WHERE HAVING En ocasiones, puede entregar una lista de valores, en cuyo caso, los comparadores a usar son: IN, ANY, ALL Se pueden anidar hasta 16 subqueries sta facilidad puede sustituir al JOIN en algunos casos

Subquery
Comparadores especiales
IN Se usa para comparar con igualdad una serie de valores ANY Se aplica para comparar con CUALESQUIER valor de una lista ALL Se usa para comparar con TODOS los valores de una serie

Ejemplo
Mostrar la clave y nombre del artculo que ha sido comprado por lo menos una vez SELECT art, desc FROM articulos WHERE art IN (SELECT DISTINCT art FROM compran) RESULTADO
art desc 100 Caf 102 Harina 101 Azucar

Ejemplo (2)
Mostrar la clave y nombre del artculo, de aquellos cuyo precio est por debajo del promedio general SELECT art, desc FROM articulos WHERE precio < (SELECT avg(precio) FROM articulos) RESULTADO
art desc 102 Harina 101 Azucar

Ejemplo (3)
Mostrar la clave y nombre del artculo ms caro.

SELECT art, desc FROM articulos WHERE precio >= ALL (SELECT DISTINCT precio FROM articulos) RESULTADO
art desc 100 Caf

UNION
El operador UNION combina el resultado de dos sentencias SELECT en un nico resultado. Este resultado se compone de todos los registros devueltos en ambas sentencias. Por defecto, los registros repetidos se omiten. Para no quitarlos se emplear la palabra ALL. Su sintaxis es: SELECT sentencia UNION [ALL] SELECT sentencia REGLAS. La lista de seleccin para cada sentencia SELECT, debe tener el mismo nmero de expresiones de columnas Con el mismo tipo de datos y en el mismo orden

Ejemplo
Devolver el nombre y direccin de todas las personas o empresas del negocio (clientes mas proveedores) SELECT nombre, dir FROM clientes UNION SELECT nombre, dir FROM proveedores Resultado
nombre Pedro Juan Maria Grasano Atomo VEA dir Bs As 90 Jujuy 800 Cordoba 24 Bs As 100 Lima 85 Alvear 455

Conclusin del subtema


El uso de los comandos DML, conforman la base para una preparacin adecuada, en la construccin de aplicaciones con BD Las aplicaciones manejan comandos de insert, delete, update y select, contra la base de datos. Mencin especial merece este ultimo comando, pues como se ha observado, se constituye por si mismo, en la expresin principal de la generacin de informacin

USO DEL SQL PARA EL MANEJO DE BASES DE DATOS

Você também pode gostar