You are on page 1of 20

UNIDAD III

Modelo Relacional

Objetivo: Aplicar el modelo relacional para la generacin de esquemas de bases


de datos.

Objetivos acadmicos:

Describir el Modelo Relacional.

Analizar el concepto de lgebra Relacional.

Actividades de Aprendizaje

Analizar diferentes diagramas E-R

Proponer un ejemplo utilizando el modelo relacional

Elaborar un reporte escrito con conclusiones respecto a los lenguajes de


consulta

Elaborar el diagrama relacional del proyecto de curso y entregar el avance.

3.1 Estructura bsica

El modelo relacional para la gestin de una base de datos es un modelo de datos


basado en la lgica de predicado y en la teora de conjuntos. Su idea fundamental
es el uso de relaciones. Estas relaciones podran considerarse en forma lgica
como conjuntos de datos llamados tuplas. Pese a que esta es la teora de las
bases de datos relacionales creadas por Edgar Frank Codd, la mayora de las
veces se conceptualiza de una manera ms fcil de imaginar, esto es, pensando
en cada relacin como si fuese una tabla que est compuestas por registros
(cada fila de la tabla sera un registro), que representaran las tuplas, y campos
(las columnas de una tabla).

3.2. Esquema de las bases de datos

Figura 27.- Modelo Relacional.

Entre los modelos lgicos, el modelo relacional est considerado como el ms


simple. El modelo se compone de tres partes:
1. Estructura de datos: bsicamente se compone de relaciones.
2. Manipulacin de datos: un conjunto de operadores para recuperar, derivar o
modificar los datos almacenados.
3. Integridad de datos: una coleccin de reglas que definen la consistencia de
la base de datos.1

3.2 Esquema de las bases de datos

Administrador de la base de datos son los encargados de disear la estructura de


la base de datos y los responsables de que el sistema funcione correctamente. El
A.B.D. se encarga de autorizar el acceso a la base de datos, de coordinar y vigilar
su utilizacin y de adquirir los recursos necesarios de software y hardware. El
A.B.D. es el responsable cuando surgen problemas como violaciones de
seguridad o una respuesta lenta del sistema. El A.B.D. tiene, entre otras, las
-siguientes funciones:

Definicin del esquema: Decidir el contenido de la base de datos, eligiendo


cuales son los datos que interesa tener almacenados y organizarlos de la

1 Pons Capote, Olga; Marn Ruiz, Nicols; Medina Rodrguez, Juan Miguel; Acid
Carrillo, Silvia (2005). Introduccin A Las Bases De Datos. El Modelo Relacional.
Espaa: Ra-Ma. Pp. 23

mejor forma posible, creando el esquema conceptual, que se escribir


mediante un lenguaje de definicin de datos (DDL).

Definicin de las estructuras de almacenamiento y mtodo de acceso: Debe


decidir sobre la forma en que se van a almacenar los datos sobre los
soportes fsicos en los que se grabar la base de datos y la
correspondencia entre esta estructura de almacenamiento y el esquema
conceptual.

Modificacin del esquema y de la organizacin fsica si los requerimientos


cambian.

Decidir los controles de autorizaciones para el acceso a los datos: Es el que


concede diferentes tipos de autorizaciones al resto de los usuarios de la
base de datos.

Especificar las restricciones de integridad: Debe definir los procedimientos


de validacin que habrn de ejecutarse cada vez que se actualiza la base
de datos. Estas restricciones son consultadas por el SGBD cada vez que
se realiza una actualizacin de los datos.

3.3. Claves

Integridad referencial declarativa.


Corresponde a un principio bsico en las bases de datos relacionales, que cada
tupla de cada relacin debe ser identificada de manera exclusiva.
Para ello se utilizan las llaves primaria o principal (primary key), pudiendo existir
slo una en una tabla. Ninguna otra fila de la tabla puede tener el mismo valor de

clave principal. No se pueden asignar valores NULL a ninguna de las columnas de


una clave principal. NULL es un valor especial en las bases de datos que
representa un valor desconocido, que no es lo mismo que un espacio o un cero.
Como clave principal se recomienda el uso de columnas de tipo entero y de
tamao pequeo. Todas las tablas deben de tener una llave principal.
Una tabla puede tener varias combinaciones de columnas que puedan identificar
de forma nica a cada una de las filas de la tabla; cada combinacin es una llave
candidata.

Las llaves alternativas o candidatas identifican otras columnas que tambin deben
de ser exclusivas por poseer esa particularidad dentro de la tabla, pudiendo existir
ms de una de estas claves en una misma tabla (a diferencia de las primarias que
slo puede existir una). SQL Server nos brinda adems una posibilidad de
generacin de nmero exclusivos, mediante la propiedad Identity de una columna.
Para establecer las relaciones contamos con las restricciones llave externa o
fornea (Foreign Key), que consisten en una columna (o un conjunto de columnas)
que se corresponden con la clave primaria de otra tabla, siendo ste el paradigma
de las bases de datos relacionales. Las tuplas relacionadas deben de coincidir en
su tipo de datos.
Una llave externa de una tabla apunta a una llave candidata de otra tabla. No se
puede insertar una fila que tenga un valor en una llave externa (excepto NULL) si
no hay una llave candidata con dicho valor. No se puede eliminar una fila de la
tabla a la que hace referencia la clave externa si algn valor de dicha llave externa
coincide con el de la clave candidata de la fila que va a eliminar.

3.4. Lenguajes de consulta

Bases de datos-SQL
El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos
normalizado, utilizado por los diferentes motores de bases de datos para realizar
determinadas operaciones sobre los datos o sobre la estructura de los mismos.
Pero como sucede con cualquier sistema de normalizacin hay excepciones para
casi todo; de hecho, cada motor de bases de datos tiene sus peculiaridades y lo
hace diferente de otro motor, por lo tanto, el lenguaje SQL normalizado (ANSI) no
nos servir para resolver todos los problemas, aunque si se puede asegurar que
cualquier sentencia escrita en ANSI ser interpretable por cualquier motor de
datos.
Breve Historia
La historia de SQL (que se pronuncia deletreando en ingls las letras que lo
componen, es decir "ese-cu-ele" y no "siquel" como se oye a menudo) empieza en
1974 con la definicin, por parte de Donald Chamberlin y de otras personas que
trabajaban en los laboratorios de investigacin de IBM, de un lenguaje para la
especificacin de las caractersticas de las bases de datos que adoptaban el
modelo relacional. Este lenguaje se llamaba SEQUEL (Structured English Query
Language) y se implement en un prototipo llamado SEQUEL-XRM entre 1974 y
1975. Las experimentaciones con ese prototipo condujeron, entre 1976 y 1977, a
una revisin del lenguaje (SEQUEL/2), que a partir de ese momento cambi de
nombre por motivos legales, convirtindose en SQL. El prototipo (System R),
basado en este lenguaje, se adopt y utiliz internamente en IBM y lo adoptaron
algunos de sus clientes elegidos. Gracias al xito de este sistema, que no estaba
todava comercializado, tambin otras compaas empezaron a desarrollar sus
productos relacionales basados en SQL. A partir de 1981, IBM comenz a entregar
sus productos relacionales y en 1983 empez a vender DB2. En el curso de los
aos ochenta, numerosas compaas (por ejemplo Oracle y Sybase, slo por citar
algunos) comercializaron productos basados en SQL, que se convierte en el
estndar industrial de hecho por lo que respecta a las bases de datos relacionales.

En 1986, el ANSI adopt SQL (sustancialmente adopt el dialecto SQL de IBM)


como estndar para los lenguajes relacionales y en 1987 se transform en
estndar ISO. Esta versin del estndar va con el nombre de SQL/86. En los aos
siguientes, ste ha sufrido diversas revisiones que han conducido primero a la
versin SQL/89 y, posteriormente, a la actual SQL/92.
El hecho de tener un estndar definido por un lenguaje para bases de datos
relacionales abre potencialmente el camino a la intercomunicabilidad entre todos
los productos que se basan en l. Desde el punto de vista prctico, por desgracia
las cosas fueron de otro modo. Efectivamente, en general cada productor adopta e
implementa en la propia base de datos slo el corazn del lenguaje SQL (el as
llamado Entry level o al mximo el Intermediate level), extendindolo de manera
individual segn la propia visin que cada cual tenga del mundo de las bases de
datos.
Actualmente, est en marcha un proceso de revisin del lenguaje por parte de los
comits ANSI e ISO, que debera terminar en la definicin de lo que en este
momento se conoce como SQL3. Las caractersticas principales de esta nueva
encarnacin de SQL deberan ser su transformacin en un lenguaje stand-alone
(mientras ahora se usa como lenguaje hospedado en otros lenguajes) y la
introduccin de nuevos tipos de datos ms complejos que permitan, por ejemplo,
el tratamiento de datos multimediales.
Componentes del SQL
El lenguaje SQL est compuesto por comandos, clusulas, operadores y funciones
de agregado. Estos elementos se combinan en las instrucciones para crear,
actualizar y manipular las bases de datos.

LENGUAJE ESTRUCTURADO DE CONSULTA (SQL)


Consulta de Seleccin:
Las consultas de seleccin se utilizan para indicar el motor de datos que devuelva
informacin de las base de datos, esta informacin es devuelta en forma de
conjunto de registros. Este conjunto de registros puede ser modificado.
ESTRUCTURA BSICA:
La estructura bsica en una expresin de SQL consta de tres clusulas:
1.

SELECT: Corresponde a la operacin de proyeccin del lgebra relacional.


Se usa para listar los atributos que se desean en el resultado de la consulta.
2.
FROM: Corresponde a la operacin del producto cartesiano del lgebra
relacional. Lista las relaciones que se van a examinar en la evaluacin de la
expresin.
3.
WHERE: Corresponde al predicado de seleccin del lgebra relacional.
Consta de un predicado e indica atributos de las relaciones que aparecen en la
clusula FROM.
Una consulta tpica tiene la siguiente forma:
SELECT camp1, camp2,...,campN FROM nom_tabla WHERE condicin
TABLA: CLIENTE
Numero_cliente

Nombre

Ciudad

Por ejemplo:
Seleccionar de la tabla clientes aquellos que viven en Tierra Blanca
SELECT Numero_cliente, Nombre Ciudad FROM Cliente
WHERE ciudadTierra Blanca

TABLA: EMPLEADO
No_Empleado

Nombre

Edad

Sueldo

Depto

1.

Seleccionar de la tabla empleados todos los que ganan un sueldo mayor a


$ 5,000.00
2.
Seleccionar de la tabla empleados aquellos que tienen ms de 25 aos y
menos de 40 aos.
3.
Seleccionar de la tabla empleados solo con su nombre y el nmero de
empleado de los que laboran en el departamento de recursos humanos.
Consultas:
1.
2.
3.

SELECT * FROM empleado WHERE sueldo > 5000


SELECT * FROM empleado WHERE edad > 25 and edad < 40
SELECT num_empleado, nombre FROM empleado WHERE
Recursos Humanos

depto=

Manipulacin de datos numricos


Operadores
+ , - , /, *, %
Sintaxis:
SELECT nom_campX, (nom_campX operador Valor ), nom_campN
FROM nom_tabla
TABLA: LIBROS
No_Libro

Nombre

Precio

Precio_C

No_existencias

Ejemplo:
Obtener el nmero del libro, el nombre y el precio aumentando el 15% del IVA de
la tabla Libros.
SELECT No_Libro, Nombre, precio (precio * 1.15) FROM Libros
Prctica
Crear una base de datos que contenga 3 tablas por lo menos, y que se hagan 5
consultas simples.
En determinadas ocasiones nos puede interesar incluir una columna con un
texto fijo en una consulta de seleccin. Por ejemplo, supongamos que conocemos

una tabla de empleados y deseamos recuperar las tarifas semanales de los


electricistas, podramos realizar la siguiente consulta:
SELECT empleados.nombre, Tarifa semanal (empleados.tarifa * 40) FROM
empleados
WHERE empleados.cargo = Electricista
ORDENAR 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
Se pueden ordenar los registros por ms 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) o descendente (DESC).
SELECT codigopostal, nombre, telefono FROM clientes ORDER BY codigopostal
DESC
TABLA: CLIENTES
No_Cliente

Compras

Fecha

No_Tienda

Se desea recuperar las ganancias de cada cliente (15% se aplica a cada cliente)
SELECT No_Cliente, fecha, No_Tienda, Ganancia:, compras * .15 FROM
Clientes
EJERCICIOS:
1.

Obtener de la tabla medicinas todos los medicamentos que caducan el 23


de febrero del 2003.

2.
3.
4.
5.
6.

Muestre los datos de todos los medicamentos que tienen un precio entre 50
y 300 pesos.
Obtener el precio por unidad y el nombre de cada medicamento.
Obtener todos los datos de los empleados que trabajan en la farmacia No.
3.
Obtener el IVA, su precio, nombre, nmero de identificacin de todos los
medicamentos.
Obtener todos los datos de las ventas del da 14 de febrero ordenados por
hora de venta descendentemente.

CONSULTAS CON PREDICADO


El predicado se incluye entre la clusula y el primer nombre de campo a
recuperar, los posibles predicados son:
PREDICADO
ALL
TOP
DISTINCT
DISTINCT ROW

DESCRIPCIN
Devuelve todos los campos de la tabla
Devuelve un determinado nmero de registros de la tabla
Omite los registros cuyos campos seleccionados coincidan
totalmente
Omite los registros duplicados basndose en la totalidad del
registro y no solo en los campos seleccionados

ALL.- Si no se incluye uno de los predicados se asume ALL. El motor de base de


datos selecciona todos los registros que cumplen las condiciones de la instruccin
SQL. No es conveniente abusar de este predicado ya que 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.
Ejemplo:
Select ALL from empleados
Select * from Empleados
TOP.- Devuelve un cierto nmero de registros que entran al final de un rango
especificado por una clusula ORDER BY. Supongamos que queremos recuperar
los nombres de los primeros 25 estudiantes del curso del 2003.
SELECT TOP 25 nombre, apellido FROM alumnos ORDER BY nota DESC
Si no se incluye la clusula ORDER BY la clusula devolver un conjunto
arbitrario de 25 registros de la tabla alumnos. El predicado TOP no elige entre
valores iguales. El ejemplo anterior, si la nota media es 25 y 25 la consulta

devolver 26 registros. Se puede utilizar la palabra reservada 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
primeros 25 deseamos el 10% del curso.
SELECT TOP 10 Porcent nombre, apellido FROM alumnos ORDER BY nota
DESC
El valor que va a continuacin de TOP debe ser un entero sin signo.
DISTINCT.- Por ejemplo, varios empleado 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 apellido FROM empleado
Con otras palabras el predicado Distinct devuelve aquellos registros cuyos
campos indicados en la clusula SELECT pasean un contenido de diferente. El
resultado de una consulta que utiliza DISTINCT no es actualizable y no refleja los
cambios subsiguientes realizados por otros usuarios.
DISTINCTROW.- Devuelve los registros diferentes de una tabla; a diferencia del
predicado anterior que sale se fijaba en el contenido de los campos seleccionados,
esta lo hace en el contenido de los campos seleccionados, esto 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 2 registros: Antonio Lpez y Martha 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 2 registros con el valor Lpez en el apellido ya que se buscan no
duplicados en el registro completo.
CRITERIOS DE SELECCIN
Cada vez que se desea establecer una condicin referida a un campo de
texto la condicin de bsqueda debe ir encerrada entre comillas simples; adems
de que no es posible establecer condiciones de bsqueda en los campos memo y
otro hacer referencia a las fechas. Las fechas se debe escribir siempre en formato
mm-dd-aa en donde: mm represente el mes, dd representa el da, aa representa el
ao, hay que prestar atencin a los separadores de guin ( - ), no sirve la
separacin habitual de la barra ( / ) y adems la fecha debe ir encerrada entre

almuadillas ( # ) por ejemplo: si deseamos referirnos a da 3 de septiembre de


1995 deberemos hacerlo de la siguiente forma #09-03-95# #9-3-95#.

OPERADORES LGICOS
Los operadores lgicos soportados por SQL son: AND, OR, XOR, Eqv, Imp, Is y
Not. A excepcin de los dos ltimos todos poseen la siguiente sintaxis:
<expresin1> operador <expresin2>
En donde expresin1 y expresin2 son las condiciones a evaluar, el resultado de
la operacin vara en funcin del operador lgico. La tabla adjunta muestra los
diferentes posibles resultados:
<expresin1>

Operador

<expresin2>

Resultado

Verdad

AND

Falso

Falso

Verdad

AND

Verdad

Verdad

Falso

AND

Verdad

Falso

Falso

AND

Falso

Falso

Verdad

OR

Falso

Verdad

Verdad

OR

Verdad

Verdad

Falso

OR

Verdad

Verdad

Falso

OR

Falso

Falso

Verdad

XOR

Verdad

Falso

Verdad

XOR

Falso

Verdad

Falso

XOR

Verdad

Verdad

Falso

XOR

Falso

Falso

Verdad

Eqv

Verdad

Verdad

Verdad

Eqv

Falso

Falso

Falso

Eqv

Verdad

Falso

Falso

Eqv

Falso

Verdad

Verdad

Imp

Verdad

Verdad

Verdad

Imp

Falso

Falso

Verdad

Imp

Null

Null

Falso

Imp

Verdad

Verdad

Falso

Imp

Falso

Verdad

Falso

Imp

Null

Verdad

Null

Imp

Verdad

Verdad

Null

Imp

Falso

Null

Null

Imp

Null

Null

Si a cualquiera de las anteriores condiciones le anteponemos el operador NOT el


resultado de la operacin ser el contrario al devuelto sin el operador NOT.
El ltimo operador denominado Is se emplea para comparar dos variables de tipo
objeto <Objeto1> Is <Objeto2>. este operador devuelve verdad si los dos objetos
son iguales.
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 = 'Madrid' AND Estado = 'Casado')
Intervalos de Valores
Para indicar que deseamos recuperar los registros segn el intervalo de valores de
un campo emplearemos el operador Between cuya sintaxis es:
campo [Not] Between valor1 And valor2 (la condicin Not es opcional)
En este caso la consulta devolvera los registros que contengan en "campo" un
valor incluido en el intervalo valor1, valor2 (ambos inclusive). Si anteponemos la
condicin Not devolver aquellos valores no incluidos en el intervalo.
SELECT * FROM Pedidos WHERE CodPostal Between 28000 And 28999
(Devuelve los pedidos realizados en la provincia de Madrid)

El Operador Like
Se utiliza para comparar una expresin de cadena con un modelo en una
expresin SQL. Su sintaxis es:

expresin Like modelo


En donde expresin es una cadena modelo o campo contra el que se compara
expresin. Se puede utilizar el operador Like para encontrar valores en los campos
que coincidan con el modelo especificado. Por modelo puede especificar un valor
completo (Ana Mara), o se puede utilizar una cadena de caracteres comodn
como los reconocidos por el sistema operativo para encontrar un rango de valores
(Like An*).
El operador Like se puede utilizar en una expresin para comparar un valor de un
campo con una expresin de cadena. Por ejemplo, si introduce Like C* en una
consulta SQL, la consulta devuelve todos los valores de campo que comiencen
por la letra C. En una consulta con parmetros, puede hacer que el usuario
escriba el modelo que se va a utilizar.
El ejemplo siguiente devuelve los datos que comienzan con la letra P seguido de
cualquier letra entre A y F y de tres dgitos:
Like 'P[A-F]###'
Este ejemplo devuelve los campos cuyo contenido empiece con una letra de la A a
la D seguidas de cualquier cadena.
Like '[A-D]*'
En la tabla siguiente se muestra cmo utilizar el operador Like para comprobar
expresiones con diferentes modelos.
ACCESS
Tipo de coincidencia

Modelo Planteado

Coincide

No coincide

Varios caracteres

'a%a'

'aa', 'aBa', 'aBBBa'

'aBC'

Carcter especial

'a[%]a'

'a%a'

'aaa'

Varios caracteres

'ab%'

'abcdefg', 'abc'

'cab', 'aab'

Un solo carcter

'a?a'

'aaa', 'a3a', 'aBa'

'aBBBa'

Un solo dgito

'a#a'

'a0a', 'a1a', 'a2a'

'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', 'az0', 'a99'

'abc', 'aj0'

SQL-SERVER
Ejemplo

Descripcin

LIKE 'A%'

Todo lo que comience por A

LIKE '_NG'

Todo lo que comience por cualquier carcter y luego siga NG

LIKE '[AF]%' Todo lo que comience por A F


LIKE
%'

'[A-F] Todo lo que comience por cualquier letra comprendida entre la


A y la F

LIKE '[A^B]
Todo lo que comience por A y la segunda letra no sea una B
%'
En determinado motores de bases de datos, esta clusula, no reconoce el
asterisco (*) como carcter comodn y hay que sustituirlo por el carcter tanto por
ciento (%).
El Operador In
Este operador devuelve aquellos registros cuyo campo indicado coincide con
alguno de los en una lista. Su sintaxis es:
expresin [Not] In(valor1, valor2, . . .)
SELECT * FROM Pedidos WHERE Provincia In ('Madrid', 'Barcelona', 'Sevilla')

La clusula WHERE
La clusula WHERE puede usarse para determinar qu registros de las tablas
enumeradas en la clusula FROM aparecern en los resultados de la instruccin
SELECT. Despus de escribir esta clusula se deben especificar las condiciones
expuestas en los apartados anteriores. 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 = 21000
SELECT IdProducto, Existencias FROM Productos WHERE
Existencias <= NuevoPedido
SELECT * FROM Pedidos WHERE FechaEnvio = #05-30-1994#
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 IdPedido, FechaPedido FROM Pedidos WHERE
FechaPedido Between #01-01-1994# And #12-31-1994#
SELECT Apellidos, Nombre, Ciudad FROM Empleados WHERE
Ciudad In ('Sevilla', 'Los Angeles', 'Barcelona')
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 a un grupo de registros.
Funci
n

Descripcin

AVG

Utilizada para calcular el promedio de los valores de un campo


determinado

COUN
T

Utilizada para devolver el nmero de registros de la seleccin

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 campo especificado

AVG
Calcula la media aritmtica de un conjunto de valores contenidos en un campo
especificado de una consulta. Su sintaxis es la siguiente
Avg(expr)
En donde expr representa el campo que contiene los datos numricos para los
que se desea calcular la media o una expresin que realiza un clculo utilizando
los datos de dicho campo. La media calculada por Avg es la media aritmtica (la
suma de los valores dividido por el nmero de valores). La funcin Avg no incluye
ningn campo Null en el clculo.
SELECT Avg(Gastos) AS Promedio FROM Pedidos WHERE
Gastos > 100

Count
Calcula el nmero de registros devueltos por una consulta. Su sintaxis es la
siguiente
Count(expr)
En donde expr contiene el nombre del campo que desea contar. Los operandos de
expr pueden incluir el nombre de un campo de una tabla, una constante o una
funcin (la cual puede ser intrnseca o definida por el usuario pero no otras de las
funciones agregadas de SQL). Puede contar cualquier tipo de datos incluso texto.
Aunque expr puede realizar un clculo sobre un campo, Count simplemente
cuenta el nmero de registros sin tener en cuenta qu valores se almacenan en
los registros. La funcin Count no cuenta los registros que tienen campos null a
menos que expr sea el carcter comodn asterisco (*). Si utiliza un asterisco,
Count calcula el nmero total de registros, incluyendo aquellos que contienen
campos null. Count(*) es considerablemente ms rpida que Count(Campo). No
se debe poner el asterisco entre dobles comillas ('*').
SELECT Count(*) AS Total FROM Pedidos
Si expr identifica a mltiples campos, la funcin Count cuenta un registro slo si al
menos uno de los campos no es Null. Si todos los campos especificados son Null,
no se cuenta el registro. Hay que separar los nombres de los campos con
ampersand (&).
SELECT Count(FechaEnvo & Transporte) AS Total FROM Pedidos
Podemos hacer que el gestor cuente los datos diferentes de un determinado
campo
SELECT Count(DISTINCT Localidad) AS Total FROM Pedidos
Max, Min
Devuelven el mnimo o el mximo de un conjunto de valores contenidos en un
campo especifico de una consulta. Su sintaxis es:
Min(expr)
Max(expr)
En donde expr es el campo sobre el que se desea realizar el clculo. Expr pueden
incluir el nombre de un campo de una tabla, una constante o una funcin (la cual
puede ser intrnseca o definida por el usuario pero no otras de las funciones
agregadas de SQL).
SELECT Min(Gastos) AS ElMin FROM Pedidos WHERE Pais = 'Espaa'
SELECT Max(Gastos) AS ElMax FROM Pedidos WHERE Pais = 'Espaa'

StDev, StDevP
Devuelve estimaciones de la desviacin estndar para la poblacin (el total de los
registros de la tabla) o una muestra de la poblacin representada (muestra
aleatoria). Su sintaxis es:
StDev(expr)
StDevP(expr)
En donde expr representa el nombre del campo que contiene los datos que
desean evaluarse o una expresin que realiza un clculo utilizando los datos de
dichos campos. Los operandos de expr pueden incluir el nombre de un campo de
una tabla, una constante o una funcin (la cual puede ser intrnseca o definida por
el usuario pero no otras de las funciones agregadas de SQL).
StDevP evala una poblacin, y StDev evala una muestra de la poblacin. Si la
consulta contiene menos de dos registros (o ningn registro para StDevP), estas
funciones devuelven un valor Null (el cual indica que la desviacin estndar no
puede calcularse).
SELECT StDev(Gastos) AS Desviacin FROM Pedidos WHERE Pas = 'Espaa'
SELECT StDevP(Gastos) AS Desviacin FROM Pedidos WHERE Pas = 'Espaa'
Sum
Devuelve la suma del conjunto de valores contenido en un campo especifico de
una consulta. Su sintaxis es:
Sum(expr)
En donde expr representa el nombre del campo que contiene los datos que
desean sumarse o una expresin que realiza un clculo utilizando los datos de
dichos campos. Los operandos de expr pueden incluir el nombre de un campo de
una tabla, una constante o una funcin (la cual puede ser intrnseca o definida por
el usuario pero no otras de las funciones agregadas de SQL).
SELECT Sum(PrecioUnidad * Cantidad) AS Total FROM DetallePedido

Agrupamiento de Registros
GROUP BY
Combina los registros con valores idnticos, en la lista de campos especificados,
en un nico registro. Para cada registro se crea un valor sumario si se incluye una
funcin SQL agregada, como por ejemplo Sum o Count, en la instruccin SELECT.
Su sintaxis es:

SELECT campos FROM tabla WHERE criterio GROUP BY campos del grupo
GROUP BY es opcional. Los valores de resumen se omiten si no existe una
funcin SQL agregada en la instruccin SELECT. Los valores Null en los campos
GROUP BY se agrupan y no se omiten. No obstante, los valores Null no se
evalan en ninguna de las funciones SQL agregadas.
Se utiliza la clusula WHERE para excluir aquellas filas que no desea agrupar, y la
clusula HAVING para filtrar los registros una vez agrupados.
A menos que contenga un dato Memo u Objeto OLE, un campo de la lista de
campos GROUP BY puede referirse a cualquier campo de las tablas que aparecen
en la clusula FROM, incluso si el campo no est incluido en la instruccin
SELECT, siempre y cuando la instruccin SELECT incluya al menos una funcin
SQL agregada.
Todos los campos de la lista de campos de SELECT deben o bien incluirse en la
clusula GROUP BY o como argumentos de una funcin SQL agregada.
SELECT IdFamilia, Sum(Stock) AS StockActual FROM Productos
GROUP BY IdFamilia
Una vez que GROUP BY ha combinado los registros, HAVING muestra
cualquier registro agrupado por la clusula GROUP BY que satisfaga las
condiciones de la clusula HAVING.
HAVING es similar a WHERE, determina qu registros se seleccionan. Una
vez que los registros se han agrupado utilizando GROUP BY, HAVING determina
cules de ellos se van a mostrar.
SELECT IdFamilia, Sum(Stock) AS StockActual FROM Productos
GROUP BY IdFamilia HAVING StockActual > 100
AND NombreProducto Like BOS*

You might also like