Вы находитесь на странице: 1из 20

Bases de Datos Captulo 2

Microsoft Access
Sistemas de Gestin de Bases de Datos

ndice de Contenidos
1.- Introduccin a Access.....................................................................................3
2.- Base de datos para Access.............................................................................3
3.-Tablas...............................................................................................................4
3.1.- Definicin de campos................................................................................4
3.1.1.-Tipos de datos......................................................................................5
3.1.2.- Propiedades de campo (lengeta General)........................................6
3.2.- Clave principal...........................................................................................6
3.3.- Relaciones entre tablas............................................................................7
3.3.1.- Relaciones uno a muchos (1 :N)........................................................7
3.3.2.- Relaciones muchos a muchos (N:N)..................................................7
3.3.3.- Relaciones uno a uno (1:1).................................................................8
4.- Operadores y expresiones..............................................................................8
5.- Consultas........................................................................................................9
5.1.- Introduccin a las consultas......................................................................9
5.2.- Introduccin al SQL.................................................................................10
5.2.1.- Consultas de seleccin simple..........................................................10
5.2.2.- Adicin de campos............................................................................11
5.2.3.- Valores repetidos..............................................................................12
5.2.4.- Ordenacin de registros....................................................................12
5.2.5.- Agrupamiento de datos.....................................................................13
5.2.6.- Filtrado de tuplas de salida...............................................................15
5.3.- Consultas sobre varias tablas.................................................................16
5.4.- Consultas de insercin............................................................................18
5.5.- Consultas de actualizacin.....................................................................19
5.6.- Consultas de borrado..............................................................................19

1.- Introduccin a Access


Access es un programa comercial de la empresa Microsoft Corporation. Se
trata de un sistema gestor de bases de datos diseado para ser utilizado en
computadores personales tipo PC. Aunque no est considerado como un
sistema de B.D. experto. Access puede funcionar en sistemas de bajo costo y
con pocos recursos computacionales, y es mucho ms barato que otros
sistemas de B.D. Adems, dispone de un entorno muy amigable. Por esta
razn, son muchas las empresas pequeas las que apuestan por este sistema.
La instalacin completa de Access proporciona una serie de herramientas de
apoyo al usuario y al programador que pueden facilitar la creacin y
administracin de una base de datos.

2.- Base de datos para Access


En Access una base de datos es un archivo que contiene datos (estructurados
e interrelacionados) y los objetos que definen y manejan esos datos: tablas,
consultas, formularios, informes, macros y mdulos. Adems, se pueden definir
estrategias de seguridad y de integridad. Pueden coexistir en un disco varias
bases de datos, en varios archivos, absolutamente independientes entre s. A
continuacin se enumeran los diferentes objetos que se permite crear en una
base de datos Access:

Tablas: son los almacenes de datos. Se trata de listas de registros. El


diseo de tablas consiste en la definicin de los campos necesarios
para almacenar correctamente la informacin de la base de datos.

Consultas: operaciones que pueden realizase sobre los datos de las


tablas: limitaciones de acceso, seleccin de datos, insercin,
modificacin y borrado, clculos...

Formularios: pantallas que se presentan a los usuarios de una base


de datos para que tengan un acceso amigable a los datos y
operaciones.

Informes: formatos de presentacin de los datos para generar copias


impresas de la informacin registrada en la base de datos.

Macros y mdulos: segmentos de cdigo en lenguaje de alto nivel


(Access Basic, Visual Basic, lenguaje de macros,...) que permiten
realizar operaciones complejas con los datos y objetos de la base de
datos.

Los objetos en Access deben estar identificados mediante un nombre.


Dentro de cada grupo de objetos (tablas, consultas, formularios, etc.) los
objetos se organizan como archivos dentro de un directorio. Referencias
posteriores a esos objetos se hacen a travs de su nombre que le identifica.
El archivo de una base de datos Access tiene extensin MDB (Microsoft Data
Base). Adems de este archivo, puede existir un archivo con extensin LDB.
Este archivo contiene informacin de bloqueo de registros, que permite el
acceso seguro de mltiples usuarios de forma concurrente. El archivo de la
base de datos permanece abierto mientras se trabaja con los datos, y
nicamente se cierra cuando se cierra la base de datos de forma explcita, con
la opcin correspondiente. Si por cualquier problema, no se realiza un cierre
ordenado, la base de datos puede daarse.

Al crear una base de datos en blanco aparece la ventana principal de


access para la creacin de cada uno de los objetos como son tablas, consultas,
etc. La figura 1 muestra esta ventana principal.

Figura 1 Aspecto de la ventana principal de una base de datos vaca.

3.-Tablas
Uno de los objetos ms importantes que se pueden crear en una base de datos
Access son las tablas. Las tablas son las estructuras que permiten almacenar los datos de
la base de datos.
Una tabla es un conjunto de tuplas o registros. En este sentido podemos
considerarla como una lista que contiene registros, tantos como se quiera. Cada registro
estar compuesto por una coleccin de campos. Cada campo tendr un tipo que indica
la clase de datos que puede almacenar dicho campo. Y cada tipo tendr unos atributos
de tipo que limitan el dominio de los valores permitidos, as como una serie de
restricciones y normas.

3.1.- Definicin de campos


Una vez que definimos los campos de informacin que necesitamos almacenar en
una tabla, se pasa a crear la tabla. Para ello seleccionaremos la opcin correspondiente
en el men o en la ventana principal de la base de datos. Access nos mostrar un
formulario para la definicin de los campos. Esta ventana se denomina de diseo de
tabla ver figura 2, frente a la de vista de tabla que permitir ms adelante introducir
los datos.

Figura 2 Formulario de definicin de campos (modo diseo de tabla)

3.1.1.-Tipos de datos.
Cada campo de una tabla de la B. de datos Access tendr un tipo que
indica la clase de datos que puede almacenar dicho campo. Los tipos de datos
que permite Access asociar a los campos de una tabla se nombran y explican
a continuacin.

Texto. Cualquier texto escrito entre 1 y 255 caracteres de longitud.


Se utiliza para representar nombre de productos, de clientes, de
proveedores y, en general, cualquier dato sobre el que no se vayan
a realizar operaciones matemticas ni aritmticas.

Memo. Son cadenas de hasta 64.000 caracteres. Utilizados


habitualmente en campos de tipo descriptivo u observaciones.

Numrico. Utilizado para representar cantidades. En las


propiedades de estos tipos de campo habr que definir el
formato y los decimales que tendr el nmero en cuestin.

Fecha/Hora. Representan fechas y horas. Al igual que en los


nmeros, en las propiedades hay que definir la apariencia de las
fechas.

Moneda. Representan cantidades de dinero. Las propiedades son las


mismas que las de los campos de tipo numrico.

Autonumrico. Nmeros que se signan automticamente y que


nunca cambian ni se reasignan al borrar. Un ejemplo de aplicacin
sera un nmero de factura o un nmero de expediente.

S/No. Slo representan valores Verdadero/Falso.

Objeto OLE. Imgenes, sonido o un documento de un


procesador de textos.

Hipervnculo. Enlace a una pgina Web.

3.1.2.- Propiedades de campo (lengeta General)


Cada uno de los campos creados para una tabla tienen propiedades
especiales como por ejemplo la longitud del campo, la negacin de
permitir valor puntuales, entre otros, a continuacin las propiedades ms
importantes definidas para los campos.

Permitir longitud cero. Si la opcin es S, se aceptar, para ese


campo, el valor vaco.

Ttulo. Permite definir un nombre alternativo para nombrar un


campo de modo que pueda utilizarse como etiqueta del mismo.

Lugares decimales. Permite especificar el nmero de dgitos que


aparecern a la derecha de la coma que separa los decimales.

Valor predeterminado. Representa el valor que, por defecto


aparecer como contenido del campo.

Tamao campo. Especifica la longitud mxima de texto permitido en


un campo o la cantidad de nmeros aceptable.

Formato. Define la apariencia de los datos de un campo.

Indexado. Permite elegir si el campo ser un ndice de la tabla y


si puede haber valores duplicados en dicho ndice.

Mscara de entrada. Define un patrn de entrada para introducir


valores en un campo.

Requerido. Con el valor S significa que es obligatorio introducir


un valor en el campo.

Regla de validacin. Expresa los lmites dentro de los cuales se


debe incluir el valor del campo.

Texto de validacin. Contenido del mensaje que aparecer en


pantalla cada vez que se introduzca un valor errneo en el
campo.

Nmero de columnas. Nmero de columnas de la tabla que se


vern al desplegar el cuadro de lista o el cuadro combinado.

3.2.- Clave principal


En toda tabla de una B. D. suele existir una clave principal (tambin
llamada clave primaria o clave maestra). Una clave principal es un campo o
conjunto de campos cuyos valores no se repiten y a travs de los cuales se
identifica de forma nica al registro completo. Es decir, que no hay dos
registros en una tabla con la misma clave. Una clave principal es un campo
(o un conjunto formado por varios campos) que identifican de forma
unvoca a cada uno de los registros que conforman una tabla. Es muy
importante definir claves en las tablas porque, de esta forma, no existirn
dos registros repetidos, siempre mantendremos ordenados los registros,

por defecto, con respecto a la clave y el proceso de bsqueda de datos se


acelera de forma considerable. La forma de asignar a un campo la
caracterstica de clave es seleccionando dicho campo o campos en la
pantalla de definicin de la tabla y, a continuacin seleccionar la opcin
Edicin / Clave principal.
Hay que ser cuidadosos a la hora de elegir la clave principal, y es
algo que debe hacerse antes de introducir valores en la tabla. Es cierto
que del mismo modo que podemos modificar la estructura de la tabla
tambin podemos modificar el campo clave. Pero esto puede acarrear
problemas si asignamos la caracterstica de campo clave a algn campo (o
campos) que tengan valores repetidos o valores nulos, ya que el sistema
nos lo impedira pero sin informarnos de dnde esta el duplicado o el valor
nulo.

3.3.- Relaciones entre tablas


Entre las tablas que conforman una base de datos, pueden crearse
relaciones en cualquier momento, siempre que las tablas cumplan
determinados requisitos para poder establecer la relacin. Si bien pueden
crearse en cualquier momento las relaciones, conviene hacer esto antes de
introducir datos en las tablas para evitar problemas posteriores. L as
relaciones que pueden establecerse entre dos tablas son de tres tipos:
1:1, 1:N, N:N.

3.3.1.- Relaciones uno a muchos (1 :N)


Para poder crear una relacin 1:N entre dos tablas, A y B Hemos de
proceder como sigue. En la tabla muchos, B, aadiremos un campo que
ser del mismo tipo que la clave principal de la tabla uno, A. Si la clave
principal de A est formada por ms de un campo, dos por ejemplo, habr
que aadir esos dos campos, del mismo tipo, a la tabla B. Existe una
excepcin a esta regla. Si la clave principal de la tabla A es de tipo
autonumrico, el campo que aadiremos en la tabla B ser de tipo
numrico.
Para crear una relacin hay que dirigirse al men Herramientas /
Relaciones y agregar todas las tablas que van a relacionarse entre si. A
continuacin se arrastra con el ratn la clave de la tabla uno (1) y se
suelta el botn sobre el campo de la tabla muchos (N) con el cual hay que
establecer la relacin. Si se quiere que se mantenga la integridad
referencial, se pulsa la casilla de verificacin indicada, indicando tambin
a Access cmo manejar las modificaciones y las eliminaciones de la tabla,
Si se quiere que las actualizaciones de una de las tablas se trasladen
automticamente a la tabla relacionada, activaremos la casilla que as lo
indica. Del mismo modo, si queremos que las eliminaciones producidas en
una tabla se realicen tambin en la tabla relacionada activaremos tambin
la casilla que as lo indica.

3.3.2.- Relaciones muchos a muchos (N:N)


Estas relaciones en Access se crean a partir de dos relaciones 1:N.
Para crear una relacin muchos a muchos entre A y B hay que proceder
como sigue. Se Crea una nueva tabla, C que contendr como atributos los
atributos clave de A, los de B y los atributos propios de la relacin entre A
y B. En C, habr que seleccionar tambin una clave. A continuacin se
establece entre A y C una relacin 1:N y otra relacin 1:N ente B y C de las
mismas caractersticas.

3.3.3.- Relaciones uno a uno (1:1)


Para establecer una relacin 1:1 entre dos entidades A y B hay que
relacionar los campos clave de ambas tablas entre si para lo cual deben cumplir
que sean del mismo tipo.

4.- Operadores y expresiones


Las expresiones en SQL son semejantes a las utilizadas en la mayora
de los lenguajes.
Operador Significado

Operador Significado

Suma aritmtica

"

Delimitador de cadenas

Resta aritmtica

&

Concatenacin
cadenas

Producto aritmtico

Comparador igual

Divisin aritmtica

<>

Comparador distinto

Mod

Mdulo

>

Comparador mayor

AND

AND lgico

<

Comparador menor

OR

OR lgico

>=

Comparador
igual

mayor

NOT

Negacin lgica

<=

Comparador
igual

menor

XOR

OR exclusivo lgico

( )

Delimitadores
precedencia

de

de

Sin embargo merecen destacar los siguientes:


Operador

Significado

IS NULL

Comparador con valor nulo. Indica si un campo se ha dejado en blanco.


Ejemplo: Alumnos cuya edad se desconoce:
SELECT * FROM Alumnos WHERE Edad IS NULL;

IS
NULL

NOT Comparador con valor no nulo. Indica si un campo contiene un valor, y no se


ha dejado en blanco. Ejemplo: Alumnos cuya edad no se desconoce:
SELECT * FROM Alumnos WHERE Edad IS NOT NULL;

LIKE

Comparador de semejanza. Permite realizar una comparacin de cadenas


utilizando
caracteres
comodines:
?
=
Un
carcter
cualquiera
* = Cualquier combinacin de caracteres (incluido ningn carcter)
Ejemplo: Alumnos cuyo apellido comienza por A:
SELECT * FROM Alumnos WHERE Nombre LIKE "A*";

BETWEEN...
AND

Comparador de pertenencia a rango. Por ejemplo, alumnos cuya edad est


comprendida entre 18 y 20:
SELECT * FROM Alumnos WHERE Edad BETWEEN 18 AND 20;

Operador

Significado

[ ]

Delimitadores de identificadores. Sirven para delimitar los nombres de


objetos (campos, tablas, etc.) cuando stos incluyen espacios. Ejemplo:
supongamos una tabla llamada Alumnos nuevos:
SELECT * FROM [Alumnos nuevos];

5.- Consultas
5.1.- Introduccin a las consultas
Las consultas son operaciones que se realizan sobre los datos de una
base de datos. Estas operaciones pueden ser de diversos tipos:

Consultas de seleccin de datos: permiten recuperar los datos


almacenados en las tablas en el formato y orden adecuados. Adems
permiten filtrar y agrupar la informacin. El resultado de estas consultas
consiste en una tabla virtual: una tabla que fsicamente no ocupa
espacio (porque trabaja sobre los datos originales de las tablas sobre
las que se define), pero que permite ser manejada de la misma forma
que una tabla real.

Consultas de insercin de datos: permiten agregar registros a una


tabla.

Consultas de modificacin: permiten modificar los valores de los


campos de los registros de una tabla.

Consultas de borrado: permiten eliminar registros de una tabla.


Consultas de creacin de tabla: permiten crear nuevas tablas cuyos
campos y registros se obtienen a partir de los almacenados en otras
tablas.

Dentro de las consultas de seleccin podemos resaltar algunos grupos


importantes:
Consultas de seleccin simple: permite filtrar tuplas y aadir o
descartar campos de los registros. Se utilizan para crear vistas:
consultas que se utilizan como tablas para restringir el acceso a los
datos a determinados usuarios.

Consultas de unin: permiten relacionar los datos de distintas tablas


a travs de campos clave.

Consultas de agrupamiento: permiten obtener resultados


estadsticos de conjuntos de registros, como medias de un campo,
totales, etc.

Las consultas a los datos de las bases de datos se hacen a travs de los
denominados lenguajes de consulta. El ms utilizado en B. de Datos
relacionales es el SQL (Standard Query Language). Access permite realizar
consultas en SQL. Pero, dada la filosofa visual seguida en Access, tambin se
permite la definicin de consultas a travs de una interfaz visual propia de
access. Ambos mtodos son compatibles e intercambiables: se puede pasar de

uno a otro sin problemas. Sin embargo, SQL es un estndar que aparece en
multitud de sistemas sin variaciones, mientras que el desarrollo visual depende
del fabricante.

5.2.- Introduccin al SQL


Una consulta SQL est compuesta por una instruccin SQL que define
esa consulta. Se trata de un comando que puede ocupar cuantas lneas de
texto se desee, terminado en punto y coma (;). SQL es un lenguaje sencillo e
intuitivo, las consultas se asemejan al lenguaje natural.
Existen algunas palabras reservadas, como en cualquier lenguaje:
SELECT, INSERT, DELETE, UPDATE, SET, WHERE, IN, DISTICT, GROUP,
ORDER, BY, etc.

5.2.1.- Consultas de seleccin simple


La consulta ms simple posible consiste en la seleccin de campos y
registros de una sola tabla. Se identifican los campos que nos interesan y una
condicin que deben cumplir los registros seleccionados. El resultado es una
tabla que es un subconjunto de la original.
El formato genrico de este tipo de consultas es:
SELECT <lista de campos> FROM <tabla> WHERE <condicin>;
Esta instruccin recupera ciertos campos de los registros de una tabla
que verifican una condicin. La clusula WHERE es opcional. Si se omite, se
seleccionan todos los registros (se supone que la condicin es siempre
verdadera).
SELECT <lista de campos> FROM <tabla>;
Si nos interesan todos los campos podemos utilizar el smbolo * para
identificar a la lista completa:
SELECT * FROM <tabla> WHERE <condicin>;
Si no, podemos especificar varios campos identificndolos por sus
nombres y separndolos por comas (,).
SELECT campo1,
<condicin>;

campo2,

...,

campoN

FROM

<tabla>

WHERE

Supongamos una tabla llamada Alumnos definida con los campos que
se muestran el la figura 3.
Campo

Descripcin

Rut

Rut alumno

Nombre

Nombre completo

Apellido Primer apellido


1
Apellido Segundo apellido
2
Edad

Edad

Parcial1

Nota obtenida en el primer parcial

Parcial2

Nota obtenida en el segundo parcial

Prcticas Nota obtenida en las prcticas


Figura 3 Campos tabla alumnos
Podemos definir las siguientes consultas de ejemplo:
Consulta
Seleccionar los alumnos mayores de
25 aos.
Seleccionar los apellidos y nombre de
los que han aprobado los dos parciales.
Generar un listado con los nombres y
apellidos de los alumnos y sus notas.

SQL
SELECT
*
FROM
Alumnos
WHERE Edad>=25;
SELECT Apellido1, Apellido2, Nombre
FROM
Alumnos
WHERE (Parcial1>=5) AND (Parcial2>=5);
SELECT Nombre, Apellido1, Apellido2,
Parcial1,
Parcial2,
Prcticas
FROM Alumnos;

Es posible consultar, desde una base de datos, una tabla que


pertenezca a otra base de datos.
En este caso utilizaremos la sintaxis:
SELECT <lista de campos> FROM <tabla> IN <base de datos>;
La clusula IN permite especificar otra base de datos como origen de la
tabla. Ejemplo:
Consulta

SQL

Seleccionar los alumnos mayores de


25 aos, suponiendo que la tabla
Alumnos est en otra base de datos que
se
llama
C:\COLEGIO\REGITSRO.MDB.

SELECT
FROM
Alumnos
"C:\COLEGIO\REGITSRO.MDB"
WHERE Edad>=25;

Esta estructura permite tambin acceder a datos que se encuentren

*
IN

almacenados en otras bases de datos que no sean Microsoft Access, siempre y


cuando Access se encuentre correctamente instalado y configurado.

5.2.2.- Adicin de campos


Podemos generar consultas en las que aparezcan nuevos campos. Por
ejemplo nos puede interesar una consulta en la que se muestre la nota
promedio obtenida por los alumnos. En tal caso podemos utilizar la sintaxis
<expresin> AS <nombre campo> para cada columna aadida como si se
tratara de un campo ms de la tabla:
SELECT <lista campos>, <expresin> AS <nombre campo>
FROM <tabla> WHERE <condicin>;
Algunos ejemplos:
Consulta

SQL

SELECT
Apellido1,
Apellido2,
((Parcial1 + Parcial2) /2) * 0.8 +
Prcticas AS Media
FROM Alumnos;
SELECT Nombre & " " & Apellido1 & " "
Obtener los nombres completos de los & Apellido2 AS NombreCompleto, Rut
alumnos junto a su Rut.
FROM Alumnos;
Obtener los apellidos junto a la nota
media, suponiendo que la media de los
parciales es el 80% y el resto se
obtiene con las prcticas.

5.2.3.- Valores repetidos


Una consulta de seleccin puede
Supongamos la siguiente tabla Alumnos:

recuperar

tuplas

idnticas.

Rut

Nombr Apellido Apellido Eda Parcial Parcial Prctic


e
1
2
d
1
2
as

11.486.6912

Juan

Gmez

Jurado

23

5,0

6,8

2,7

8.353.842-3 Alberto Garca

Daz

22

7,0

5,7

6,2

13.786.354- Juan
4

Izquierd
o

Donoso

23

5,0

5,3

1,5

14.753.485- Jos
1

Lpez

Lpez

19

3,4

4,9

4,2

...
La siguiente consulta de seleccin:
SELECT Nombre, Edad, Parcial1 FROM Alumnos;
Generar dos tuplas con los datos: Juan, 23, 5,0. Para evitar obtener
tuplas (lista de campos mostrados en una consulta) repetidas, podemos utilizar
el modificador DISTINCT:
SELECT DISTINCT Nombre, Edad, Parcial1 FROM Alumnos;
Ahora la consulta no devolver tuplas repetidas. Existe otro modificador,

DISTINCTROW. A diferencia del anterior, DISTINCTROW no tiene en cuenta


tuplas que estn completamente duplicadas en la tabla de origen (y no slo
para los campos seleccionados).

5.2.4.- Ordenacin de registros


SQL permite especificar que las tuplas seleccionadas se muestren
ordenadas por alguno o algunos de los campos seleccionados, ascendente o
descendentemente. Para ello se dispone de la palabra reservada ORDER BY,
con el siguiente formato:
SELECT <lista de campos seleccionados> FROM <tabla>
WHERE <condicin> ORDER BY <lista de campos para ordenar>;
La lista de campos para ordenar debe ser un subconjunto de la lista de
campos seleccionados. Para especificar un orden inverso (decreciente) se
emplea la clusula DESC que puede ser incluida tras el nombre del campo por
el que se ordena de forma descendente. De la misma forma la clusula ASC
ordena de forma ascendente, aunque no es necesario especificarla, ya que es
la opcin por defecto. Ejemplos:
Consulta

SQL

Obtener un listado de
ordenados por apellidos.

alumnos SELECT * FROM Alumnos


ORDER BY Apellido1, Apellido2, Nombre;

Obtener los alumnos con el primer SELECT * FROM Alumnos


parcial aprobado, comenzando por las WHERE Parcial1 >= 5
ORDER BY Parcial1 DESC;
mejores notas.
Obtener los apellidos y las notas de los
parciales de los alumnos que han
sacado mejor nota en el primer parcial
que en el segundo, ordenando segn la
diferencia entre ambas notas (las
mayores diferencias primero). En caso
de empate, ordenar por apellidos de
forma ascendente.

SELECT Apellido1, Apellido2, Parcial1,


Parcial2
FROM Alumnos
WHERE Parcial1 > Parcial2
ORDER BY (Parcial1-Parcial2) DESC,
Apellido1, Apellido2;

5.2.5.- Agrupamiento de datos


SQL permite definir consultas en la que se ofrecen tuplas que se
obtengan como resultado del agrupamiento de varias tuplas. Por ejemplo, valor
promedio de un campo, mximo, mnimo, cuenta, etc.
Para este tipo de consultas se proporcionan los siguientes operadores, que se
denominan funciones de agregado:
Operador

Significado

COUNT(<cam
po>)

Nmero de tuplas seleccionadas (excepto las que contienen


valor nulo para el campo). Si <campo> es una lista de campos
(separados por &) o *, la tupla se cuenta si alguno de los
campos que intervienen es no nulo.

SUM(<campo
>)

Suma del conjunto de valores contenidos en el campo


especificado. Las tuplas con valor nulo no se cuentan.

Operador

Significado

AVG(<campo
>)

Media aritmtica del conjunto de valores contenidos en el


campo especificado. Las tuplas con valor nulo no se cuentan.

MAX(<campo
>)

Valor mximo del conjunto de valores contenidos en el


campo especificado. Las tuplas con valor nulo no se cuentan.

MIN(<campo
>)

Valor mnimo del conjunto de valores contenidos en el campo


especificado. Las tuplas con valor nulo no se cuentan.

El formato de este tipo de consultas es:


SELECT COUNT/SUM/AVG/MAX/MIN (<campo>) AS <nombre>
FROM <tabla>
WHERE <condicin>;
Se pueden incluir varias funciones de agregado en la misma consulta.
Ejemplos:
Consulta

SQL

Obtener la nota media de la clase para SELECT AVG(Parcial1) AS MediaP1


FROM Alumnos;
el primer parcial.
SELECT
MAX(Parcial1+Parcial2)/2
AS
MedMax,
Obtener la mxima y mnima nota
MIN(Parcial1+Parcial2)/2 AS
media de los 2 parciales..
MedMin
FROM Alumnos;
Obtener la mxima nota del primer SELECT MAX(Parcial1) AS MaxP1
parcial de entre los alumnos que no FROM ALUMNOS
WHERE Practicas <> 0;
tengan 0 en las prcticas.
SELECT COUNT(*) AS Numero
Obtener el nmero de alumnos que FROM ALUMNOS
han aprobado el primer parcial.
WHERE Parcial1 >= 5;
En todas las consultas vistas hasta ahora, las funciones de agregado se
aplican sobre el conjunto total de registros de una tabla (excepto lo que no
cumplen la clusula WHERE, que son descartados), y el resultado de tales
consultas es un nico valor. SQL permite crear grupos de registros sobre los
cuales aplicar las funciones de agregado, de manera que el resultado es un
conjunto de tuplas para cada una de las cuales se ha calculado el valor
agregado. Los grupos se componen de varios registros que contienen el mismo
valor para un campo o conjunto de campos. El formato es:
SELECT <agregado> AS <nombre>
FROM <tabla>
WHERE <condicin>
GROUP BY <lista de campos>;
De esta forma, para cada valor distinto de la <lista de campos>
suministrada, se calcula la funcin de agregado correspondiente, slo con el
conjunto de registros con dicho valor en los campos (los registros que no
verifiquen la condicin WHERE no se tienen en cuenta). Ejemplos:

Consulta

SQL

Obtener el nmero de alumnos que SELECT Nombre, COUNT(*) AS Cuantos


hay con el mismo nombre (sin FROM Alumnos
apellidos) para cada nombre diferente GROUP BY Nombre;
(Cuntos Carlos, Pedros,... hay?)
Obtener el nmero de personas que
han obtenido 0, 1, 2...10 en el primer
parcial (despreciando la parte decimal
de las notas). Ordenar el resultado por
el nmero de alumnos de forma
descendiente.

SELECT INT(Parcial1) AS Nota,


COUNT(*) AS Cuantos
FROM Alumnos
GROUP BY INT(Parcial1)
ORDER BY COUNT(*) DESC;

El agrupamiento de filas impone limitaciones obvias sobre los campos


que pueden ser seleccionados, de manera que slo pueden obtenerse campos
resultado de una funcin de agregado o la combinacin de campos que
aparezca en la clusula GROUP BY, y nunca otros campos de la tabla de
origen. Por ejemplo la siguiente consulta sera incorrecta:
SELECT Nombre FROM Alumnos GROUP BY Apellido1;
La razn de que sea incorrecta es trivial: qu Nombre (de los varios
posibles) se seleccionara para cada grupo de Apellido1? (Para cada grupo
generado con GROUP BY slo se muestra una fila como resultado de la
consulta.)

5.2.6.- Filtrado de tuplas de salida


En estas consultas puede aparecer una condicin WHERE que permite
descartar las tuplas que no deben ser tenidas en cuenta a la hora de calculas
las funciones de agregado. Sin embargo WHERE no permite descartar tuplas
utilizando como condicin el resultado de la funcin de agregado. Por ejemplo,
supongamos la siguiente consulta: seleccionar los nombres de alumnos para
los que haya ms de 2 alumnos con el mismo nombre (3 Pedros, 4 Juanes,...).
Intuitivamente podramos hacer:
SELECT Nombre, COUNT(*) FROM Alumnos WHERE COUNT(*)>2 GROUP BY
Nombre;
Sin embargo esto no es correcto. La clusula WHERE no puede
contener funciones de agregado. Para este cometido existe otra clusula
semejante a WHERE, HAVING, que tiene el siguiente formato:
SELECT <agregado> AS <nombre>
FROM <tabla>
WHERE <condicin>
GROUP BY <lista de campos>
HAVING <condicin de agregado>;
Para el ejemplo anterior la instruccin SQL adecuada es:
SELECT Nombre, COUNT(*) FROM Alumnos GROUP BY Nombre HAVING
COUNT(*)>2;

En resumen:
WHERE selecciona las tuplas que intervienen para calcular las funciones
de agregado y HAVING selecciona las tuplas que se muestran teniendo en
cuenta los resultados de las funciones de agregado.
En todos los casos, la clusula ORDER BY puede ser incluida.
Evidentemente esta clusula afectar nicamente al orden en que se muestran
las tuplas resultado, y no al clculo de las funciones de agregado. Los campos
por los cuales puede efectuarse la ordenacin slo pueden ser aqullos
susceptibles de ser tambin mostrados, es decir, que los campos admisibles en
la clusula ORDER BY son los mismos que sean admisibles en la clusula
SELECT: funciones de agregado y la combinacin de campos que aparezca en
GROUP BY.
Recordemos el formato de una instruccin SQL de seleccin con todas
las opciones vistas hasta ahora:
SELECT <lista de campos>
FROM <tabla>
WHERE <condicin>
GROUP BY <lista de campos>
HAVING <condicin de agregado>
ORDER BY <lista de campos>;

5.3.- Consultas sobre varias tablas


Las consultas sobre varias tablas utilizan la informacin almacenada en
mas de una tabla para mostrar un listado de tuplas que cumplan con las
condiciones indicadas en la consulta SQL.
Por ejemplo si en nuestra base de datos tenemos tres tablas (Tabla
almacenes, existencias y piezas) relacionadas entre si a travs de los campos
mostrados por las flechas en la figura 3.
Almacen
es

Existenci
as

Piezas

ID

Almacn

Tipo

Ciudad

Tipo

Nombr
e

Cantidad
Figura 3 Relaciones entre tablas
Podemos intuir lo siguiente:
Existencias.Almacn contiene un identificador del almacn al que se
refieren las existencias (requiere integridad referencial de algn tipo con el
campo Almacenes.ID), y Existencias.Tipo contiene un identificador del tipo al
que se refieren el registro de existencias (requiere integridad referencial con el
campo Piezas.Tipo).
Adems se puede intuir la siguiente informacin:
Almacenes.ID es la clave principal de Almacenes.

Piezas.Tipo es la clave principal de Piezas.

(Exitencias.Almacn, Exitencias.Tipo) es la clave principal de Existencias.

Exitencias.Almacn es una clave externa de Existencias sobre Almacenes.

Exitencias.Tipo es una clave externa de Existencias sobre Piezas.

Por ejemplo, si queremos relacionar las existencias en un almacn con


el nombre de la ciudad donde se ubica ese almacn, debemos crear la
siguiente consulta en lenguaje SQL.
SELECT Almacenes.Ciudad, Existencias.Tipo, Existencias.Cantidad
FROM Almacenes, Existencias
WHERE Almacenes.ID = Existencias.Almacn;
Notar que al ser una consulta de seleccin que utiliza informacin de
ms de una tabla, debe indicarse en las instrucciones sql de la consulta, la
referencia de el (nombredelatabla).(nombredecampo) a utilizar.
Esta consulta nos proporcionara la siguiente tabla:
Almacenes.Ciud Existencias.Ti Existencias.Canti
ad
po
dad
Valdivia

100

Valdivia

30

Osorno

50

Temuco

200

PMontt

10

PMontt

200

PMontt

100

De la misma forma podramos enlazar las tres tablas mediante una


consulta que nos muestre informacin referente a la ciudad donde se
encuentra un almacn, junto a la cantidad de piezas existentes en el almacn y
el nombre de dicha pieza con la siguiente consulta SQL:
SELECT Almacenes.Ciudad, Existencias.Cantidad, pieza.nombre
FROM Almacenes, Existencias, Piezas
WHERE (Almacenes.ID = Existencias.Almacen) AND
(Existencias.Tipo = Piezas.Tipo);
El resultado de tal consulta es la siguiente tabla:
Almacenes.Ciud Existencia.can Pieza.Nombre
ad
tidad
Valdivia

10

Circuitera

Valdivia

23

Pantalla

Osorno

Circuitera

Temuco

Carcasa

Almacenes.Ciud Existencia.can Pieza.Nombre


ad
tidad
PMontt

Circuitera

PMontt

Pantalla

PMontt

13

Altavoz

5.4.- Consultas de insercin


Las consultas de insercin permiten aadir registros a una tabla. para
este tipo de consultas se requiere:
1) Una tabla a la que aadir los datos.
2) Una consulta de seleccin de la que obtener los datos que se aaden,
o bien una lista de los valores a insertar.
El formato SQL de una consulta de insercin de datos utilizando una
consulta de seleccin como origen de los datos es:
INSERT INTO <tabla destino> ( <lista campos destino> )
SELECT <lista campos origen>
FROM <tabla origen>;
La lista de campos destino es una lista de campos separados por
comas; la lista de campos origen es una lista al estilo de la empleada en una
consulta de seleccin cualquiera. Cada campo de la lista de origen debe
corresponderse con otro en la lista de destino, en el mismo orden, de manera
que las tuplas obtenidas en la consulta se aaden a la tabla de destino. Los
campos no especificados sern llenados con los valores por defecto, a menos
que no tengan ningn valor predeterminado, en cuyo caso quedarn vacos
(con valores nulos).
La parte de la consulta de seleccin puede contener todas las opciones
estudiadas: agrupamiento, funciones de agregado, ordenamiento de tuplas,
condiciones de filtrado, etc.
Para aadir datos a una tabla sin utilizar otra tabla o consulta como origen
de datos, se puede utilizar la siguiente sintaxis:
INSERT INTO <tabla destino> ( <lista campos destino> )
VALUES <lista campos origen>;
Como en el caso anterior, debe existir una correspondencia y
compatibilidad exacta entre la lista de campos de origen y la lista de campos de
destino
Ejemplos de consultas de insercin:

Consulta

SQL

Supongamos una tabla Personas en la


que se almacena informacin sobre el
nombre, apellidos y cargo (en campos
Nombre, Apellidos, Cargo) de todas
las personas de la universidad. Aadir
a esta tabla todos los alumnos de la
tabla Alumnos.

INSERT INTO Personas ( Nombre,


Apellidos, Cargo )
SELECT Nombre,
Apellido1 & " " & Apellido2 AS
ApellidosA,
"Alumno" AS CargoA
FROM Alumnos;

Supongamos una tabla Historia en la


que se almacena informacin sobre el
nmero de alumnos matriculados cada
ao. Esta tabla tiene los campos: Ao
(tipo fecha) y Nmero (Entero largo).
Aadir a esta tabla el nmero de
alumnos actual con la fecha de este
ao.

INSERT INTO Historia ( Ao, Nmero )


SELECT Year(Date()) AS EsteAo, COUNT
(*) As Total
FROM Alumnos;

INSERT INTO Alumnos (Nombre,


Aadir el alumno Francisco Prez Apellido1, Apellido2,
Sols , con Rut 13.123.2342 a la Rut)
VALUES ("Francisco", "Prez", "Prez",
lista de alumnos.
"13.123.2342");

5.5.- Consultas de actualizacin


Las consultas de actualizacin de datos permiten modificar los datos
almacenados en una tabla. Se trata de modificar los valores de determinados
campos en los registros que cumplan una determinada condicin. La sintaxis
de este tipo de consultas es:
UPDATE <tabla>
SET <campo> = <nuevo valor>, <campo> = <nuevo valor>, <campo> =
<nuevo valor>
WHERE <condicin>;
Veamos algunos ejemplos:
Consulta
Aprobar el primer parcial a todos los
alumnos que tengan una nota entre 4,5
y 5.
Poner un 1 en las prcticas a todos los
alumnos que no tengan ninguna nota
en prcticas y tengan los dos parciales
aprobados y con una nota media entre
ambos mayor que 7.
Redondear las notas de los alumnos
quitando los decimales.
Poner un 0 en prcticas al alumnos con
Rut 14.753.485-4

SQL
UPDATE Alumnos
SET Parcial1 = 5
WHERE (Parcial1 >= 4.5) AND (Parcial1
< 5);
UPDATE Alumnos
SET Practicas = 1
WHERE (Parcial >= 5) AND (Parcial2 >=
5) AND
(Parcial1+Parcial2 > 7) AND
(Practicas IS NULL);
UPDATE Alumnos
SET Parcial1 = INT (Parcial1),
Parcial2 = INT (Parcial2),
Practicas = INT (Practicas);
UPDATE Alumnos
SET Practicas = 0
WHERE Rut="14.753.485-4";

Consulta

SQL
UPDATE Alumnos
Olvidar el Rut de los alumnos que se SET Rut = NULL
han presentado al segundo parcial.
WHERE Parcial2 IS NOT NULL;

5.6.- Consultas de borrado


Las consultas de actualizacin de datos permiten eliminas tuplas de una
tabla de forma selectiva: los registros que cumplan una determinada condicin.
La sintaxis de este tipo de consultas es:
DELETE [<tabla>.*]
FROM tabla
WHERE <condicin>;
Las consultas de borrado no permiten borrar campos; slo tuplas
completas. Por eso la parte <tabla>.* es opcional. Para eliminar el valor de
los campos debe utilizarse una consultas de actualizacin, cambiando el valor
de los campos a NULL.
Si no se especifica ninguna condicin, se eliminan todas las tuplas. No se
elimina la tabla, ya que la estructura sigue existiendo, aunque no contenga
ningn registro.
Algunos ejemplos de consultas de borrado:
Consulta

SQL
DELETE FROM ALUMNOS
Eliminar a los alumnos que hayan WHERE (Parcial1 >= 5) AND (Parcial2 >=
aprobado todo.
5) AND (Practicas >=1);
DELETE FROM ALUMNOS
Eliminar a los alumnos cuyo apellido WHERE
(Apellido1
IS
NULL)
OR
se desconozca total o parcialmente.
(Apellido2 IS NULL);
DELETE FROM ALUMNOS;
Eliminar a todos los alumnos.

Вам также может понравиться