Sei sulla pagina 1di 91

MANUAL DEL CURSO

ACCESS XP:
CONSULTAS AVANZADAS
Y SQL

Manual de Access XP: Consultas Avanzadas y SQL I
NDICE DE CONTENIDOS






CAPTULO 1: INTRODUCCIN A CONSULTAS EN MICROSOFT ACCESS................................1
1.1. INTRODUCCIN A CONSULTAS EN MICROSOFT ACCESS .......................................1
1.2. CREACIN DE UNA CONSULTA .........................................................................2
1.3. MODOS DE VISUALIZAR UNA CONSULTA............................................................8
1.4. GUARDAR UNA CONSULTA...............................................................................9
1.5. CERRAR UNA CONSULTA................................................................................ 10
1.6. ABRIR UNA CONSULTA.................................................................................. 11
1.7. DISEO DE UNA CONSULTA........................................................................... 13
1.7.1. AGREGAR TABLAS Y/O CONSULTAS................................................................. 14
1.7.2. ELIMINAR TABLAS Y/ CONSULTAS................................................................... 14
1.7.3. CREAR O ELIMINAR RELACIONES ENTRE TABLAS PARA UNA CONSULTA ................ 14
1.7.4. MOVER O ELIMINAR CAMPOS ......................................................................... 15
1.8. CRITERIOS DE SELECCIN ............................................................................ 16
1.8.1. OPERADORES PARA RESTABLECER CRITERIOS .................................................. 17
1.8.2. EJEMPLOS DE CRITERIOS DE SELECCIN......................................................... 19
1.8.3. CONDICIONES DE TIPO O Y CONDICIONES DE TIPO Y. .................................. 20
1.9. ORDENAR REGISTROS................................................................................... 21
CAPTULO 2: CONSULTAS CON CLCULOS PREDEFINIDOS Y PERSONALIZADOS ................ 22
2.1. CONSULTAS CON CLCULOS .......................................................................... 22
2.1.1. CREAR CLCULOS PREDEFINIDOS O TOTALES................................................... 22
2.1.2. CREAR CLCULOS PERSONALIZADOS .............................................................. 24
CAPTULO 3: CONSULTAS DE ACCIN......................................................................... 28
3.1. CONSULTAS DE ACTUALIZACIN .................................................................... 28
3.2. CONSULTAS DE ELIMINACIN ........................................................................ 30
3.3. CONSULTAS DE CREACIN DE TABLA .............................................................. 31
3.4. CONSULTA DE DATOS ANEXADOS ................................................................... 34
CAPTULO 4: CONSULTAS CON PARMETROS............................................................... 37
4.1. CONSULTAS DE PARAMTROS ........................................................................ 37
CAPTULO 5: CONSULTAS AVANZADAS CON ASISTENTE................................................ 40
5.1. INTRODUCCIN ........................................................................................... 40
5.2. CONSULTAS DE TABLAS DE REFERENCIAS CRUZADAS........................................ 40
5.3. CONSULTA DE BSQUEDA DE DUPLICADOS...................................................... 44
5.4. CONSULTAS DE BSQUEDA DE NO COINCIDENTES............................................ 47
CAPTULO 6: INTRODUCCIN A SQL........................................................................... 50
6.1. INTRODUCCIN ........................................................................................... 50
6.1.1. COMPONENTES DE SQL................................................................................. 50
Manual de Access XP: Consultas Avanzadas y SQL II
6.1.2. COMANDOS................................................................................................. 51
6.1.3. CLUSULAS................................................................................................. 51
6.1.4. OPERADORES LGICOS................................................................................. 51
6.1.5. OPERADORES DE COMPARACIN .................................................................... 52
6.1.6. FUNCIONES DE AGREGADO............................................................................ 52
6.2. CONSULTAS DE SELECCIN........................................................................... 52
6.2.1. CONSULTAS BSICAS ................................................................................... 52
6.2.2. ORDENAR LOS REGISTROS ............................................................................ 52
6.2.3. CONSULTAS DE PREDICADO .......................................................................... 53
6.2.4. ALIAS......................................................................................................... 54
6.2.5. RECUPERAR INFORMACIN DE UNA BASE DE DATOS EXTERNA............................ 54
CAPTULO 7: CRITERIOS DE SELECCIN EN SQL .......................................................... 56
7.1. CRITERIOS DE SELECCIN ............................................................................ 56
7.1.1. OPERADORES LGICOS................................................................................. 56
7.1.2. INTRVALOS DE VALORES ............................................................................. 57
7.1.3. EL OPERADOR LIKE....................................................................................... 58
7.1.4. EL OPERADOR IN.......................................................................................... 59
7.1.5. LA CLUSULA WHERE.................................................................................... 59
CAPTULO 8: CONSULTAS DE AGRUPACIN DE REGISTROS ........................................... 60
8.1. INTRODUCCIN A LA AGRUPACIN DE REGISTROS ........................................... 60
8.1.1. GROUP BY ................................................................................................... 60
8.1.2. AVG........................................................................................................... 61
8.1.3. COUNT ....................................................................................................... 61
8.1.4. MAX , MN................................................................................................... 61
8.1.5. STDEV, STDEVP ........................................................................................... 62
8.1.6. SUM........................................................................................................... 62
8.1.7. VAR, VARP .................................................................................................. 62
CAPTULO 9: CONSULTAS DE ACCIN CON SQL ........................................................... 64
9.1. CONSULTAS DE ACCIN ................................................................................ 64
9.2. DELETE....................................................................................................... 64
9.3. INSERT INTO............................................................................................... 64
9.3.1. PARA INSERTAR UN NICO REGISTRO ............................................................. 65
9.3.2. PARA INSERTAR REGISTROS DE OTRA TABLA ................................................... 65
9.4. UPDATE...................................................................................................... 66
CAPTULO 10: TIPOS DE DATOS ................................................................................ 67
10.1. TIPOS DE DATOS ......................................................................................... 67
CAPTULO 11: SUBCONSULTAS.................................................................................. 69
11.1. SUBCONSULTAS........................................................................................... 69
CAPTULO 12: CONSULTAS DE REFERENCIAS CRUZADAS EN SQL .................................... 71
12.1. CONSULTAS DE REFERENCIAS CRUZADAS........................................................ 71
CAPTULO 13: CONSULTAS DE UNIN......................................................................... 75
13.1. CONSULTAS DE UNIN.................................................................................. 75
13.2. CONSULTAS DE UNIN INTERNAS................................................................... 75
13.3. CONSULTAS DE UNIN EXTERNAS .................................................................. 76
Manual de Access XP: Consultas Avanzadas y SQL III
CAPTULO 14: ESTRUCTURAS DE TABLAS EN SQL......................................................... 77
14.1. ESTRUCTURA DE LAS TABLAS......................................................................... 78
14.1.1. CREACIN DE TABLAS NUEVAS ...................................................................... 78
14.1.2. LA CLUSULA CONSTRAINT............................................................................ 79
14.1.3. CREACIN DE NDICES ................................................................................. 80
14.1.4. MODIFICAR EL DISEO DE UNA TABLA ............................................................ 81
CAPTULO 15: CONSULTAS CON PARMETROS EN SQL .................................................. 83
15.1. CONSULTAS CON PARMETROS ...................................................................... 83
CAPTULO 16: ACCESO A BASES DE DATOS EXTERNAS CON SQL .................................... 84
16.1. BASES DE DATOS EXTERNAS ......................................................................... 84
16.1.1. ACCESO A UNA BASE DE DATOS EXTERNA DE MICROSOFT ACCESS...................... 84
16.1.2. ACCESO A UNA BASE DE DATOS EXTERNA DE DBASE III O IV ............................. 84
16.1.3. ACCESO A UNA BASE DE DATOS DE PARADOX 3.X O 4.X .................................... 84


Manual de Access XP: Consultas Avanzadas y SQL 1
CAPTULO 1: INTRODUCCIN A
CONSULTAS EN MICROSOFT ACCESS






1.1. INTRODUCCIN A CONSULTAS EN MICROSOFT ACCESS

Una consulta es una solicitud de informacin a la base de datos, mediante criterios que el
usuario establece. stas permiten seleccionar el conjunto de filas que cumplen una
determinada condicin o criterio, verla por pantalla e inclusive modificar los datos que
contienen. Podemos a travs de ellas, por ejemplo, acceder a un listado de productos vendidos
en el mes de diciembre de 2002, hallar el beneficio obtenido con la venta de los distintos
artculos, etc. Las consultas se pueden crear a partir de una o varias tablas o de otras
consultas, incluyendo cualquier campo de ellas o creando campos calculados. Cuando se trata
de un grupo de tablas, estas pueden tener una relacin entre ellas (vase el captulo 5: Crear
relaciones entre tablas).

La consulta se crea en la ventana de Vista Diseo mientras que su resultado se visualiza en
la ventana de Hoja de respuestas dinmica o vista Hoja de datos. En esta hoja se
encuentra la informacin extrada de las tablas (de una tabla o de un conjunto de ellas), pero
la informacin no se guarda en la hoja de respuestas sino que sigue estando almacenada en
las tablas.

La consulta muestra bsicamente campos de las tablas segn criterios establecidos en la
misma, algunas de las operaciones que se pueden efectuar en las consultas son:

Elegir tablas y/o consultas: en una consulta puede mostrarse informacin de una o ms
tablas, incluso de una o ms consultas previamente realizadas. La informacin mostrada
resuelve una pregunta a la base de datos. Por ejemplo, mostrar todos los clientes de Madrid.
En la consulta aparecern datos de la tabla: Clientes; las otras tablas existentes en el
sistema no tienen repercusin para efectos de esta consulta.

Seleccionar registros. Como se desprende del ejemplo anterior, no aparecern en la
consulta planteada ni todos los registros de la tabla Clientes, ni todos los registros de las
otras tres tablas, debido a los criterios aplicados.

Seleccionar campos de las tablas y/o consultas seleccionadas. Puede no ser necesario
mostrar todos los campos. Por ejemplo, en la consulta mencionada, no es necesario mostrar
campos como la fecha de nacimiento del abogado o el cdigo postal de su direccin.

Realizar clculos. Se pueden efectuar clculos con los campos mostrados en la consulta,
tales como contar el nmero de registros seleccionados, acumular totales, etc. Por ejemplo,
retomando la consulta planteada, una pregunta seria: Cuntos clientes son de Madrid? lo cual
implicara efectuar la funcin cuenta en el campo Poblacin de la tabla Clientes.
Manual de Access XP: Consultas Avanzadas y SQL 2
Ordenar registros. Los registros que finalmente son seleccionados para la consulta, pueden
ser sometidos a un proceso de ordenacin, que permita visualizar la informacin de una forma
ms clara. Por ejemplo, que los clientes aparezcan en orden ascendente.

Bsicamente, se realizan dos tipos de consultas:

Consultas de seleccin: estn diseadas para seleccionar los registros de una o varias tablas
que cumplen unas condiciones determinadas por los llamados criterios de seleccin.
Consultas de accin: estn diseadas para modificar los datos de una tabla y permiten
aadir datos, reemplazar datos o eliminar registros.

1.2. CREACIN DE UNA CONSULTA

Supongamos que deseamos visualizar la forma de pago de los pedidos realizados por los
clientes de Madrid. Para crear una nueva consulta, una vez abierta la base de datos con la que
vamos a trabajar seguiremos los pasos siguientes:

Nos posicionamos en la ventana de la base de datos, en la carpeta de Consultas y hacemos
clic en el botn Nuevo.





Aparece un cuadro de dilogo con cinco opciones diferentes:


Manual de Access XP: Consultas Avanzadas y SQL 3



Vista diseo. Permite realizar una consulta sin la ayuda del asistente a travs de la vista
Diseo.

Asistente para consultas sencillas. Facilita la creacin de una consulta sencilla, segn los
campos seleccionados.

Asistente para consultas de referencias cruzadas. Crea un consulta que muestra los
datos con un formato parecido al de una hoja de clculo. Es decir la informacin se muestra en
la interseccin de filas y columnas.

Asistente para consultas de buscar duplicados. Crea un consulta en la que se buscan
registros con valores duplicados en un campo.

Asistentes para consultas de buscar no-coincidentes. Crea un consulta que busca
registros que no tienen registros relacionados en otra tabla.

En este ejemplo, vamos a seleccionar la opcin Vista Diseo y pulsamos el botn Aceptar.

Aparecer la ventana de la consulta en vista Diseo y el cuadro de dilogo Mostrar tabla en el
que se muestran las tablas, las consultas o ambas juntas que se pueden agregar a la
cuadrcula de diseo, tal y como aparece en la siguiente figura:


Manual de Access XP: Consultas Avanzadas y SQL 4



En esta ventana, seleccionamos la tabla o tablas sobre las cuales queremos realizar la consulta
y pulsaremos el botn Agregar. Para realizar nuestro ejemplo escogeremos las tablas
Clientes y Pedidos. Una vez seleccionadas cerramos el cuadro de dilogo Mostrar tabla
pulsando el botn Cerrar.

Aparecer la ventana de Diseo de la consulta donde haremos las especificaciones necesarias.


La ventana de Diseo de consultas mostrar:

En la parte superior las listas de campos de las tablas agregadas a la consulta y en caso de
existir relaciones entre ellas, aparecern representadas mediante una lnea que las une.

Manual de Access XP: Consultas Avanzadas y SQL 5


Relaciones creadas desde el diseo de tablas o desde las consultas

En caso de que no exista con anterioridad ninguna relacin, es posible establecerla para
efectos de la consulta, al igual que tambin es posible eliminar una relacin ya creada.

Y en la parte inferior la ventana se muestra la cuadrcula QBE



Manual de Access XP: Consultas Avanzadas y SQL 6

La cuadrcula QBE est formada por una serie de filas que nos permiten:

Campo. Seleccionar los campos que constituyen la consulta, es decir, los que deseamos
posteriormente visualizar.

Tabla. Elegir la tabla a la que pertenece el campo previamente escogido.

Orden. Establecer un orden de clasificacin de tal manera que los registros se van a ordenar
en funcin de los datos de ese campo. El orden puede ser ascendente o descendente.

Mostrar. Ocultar campos a efectos de visualizacin (fila Mostrar). Podemos usar las casillas de
verificacin par especificar los campos que sern visualizados en la hoja de respuesta dinmica
de resultado de la consulta. Por defecto Access muestra todos los campos que hayan sido
seleccionados en la cuadrcula QBE.

Criterios. Establecer los criterios o condiciones que deben cumplir los registros a seleccionar.

Total. Introducir clculos de resumen.

Las filas Tabla y Total slo estarn visibles si se encuentran activadas las opciones Totales y
Nombres de tabla del men Ver.

Por otra parte, la cuadrcula QBE mostrar diferentes filas dependiendo del tipo de consulta
que se vaya a realizar. Cada columna de la cuadrcula representar un campo con el que
trabajar esa consulta, y, como ya veremos ms adelante, un campo puede ser un nico
campo de una de las tablas, un campo basado en varios campos de las tablas, o un campo de
totales que utiliza las funciones proporcionadas por Microsoft Access.

Seleccionar los campos que deseemos visualizar en la consulta. Deberemos incluir en la
cuadrcula QBE de la ventana diseo de consulta uno, varios o todos los campos de las tablas
agregadas a la consulta.

Un campo se puede agregar a la consulta de tres formas:

Arrastrando el campo desde la lista de campos hasta la fila Campo (el puntero se transforma
en un rectngulo).

Haciendo doble clic en el campo.

Colocando el puntero en la fila Campo, pulsando en la flecha del campo para desplegar una
lista con los posibles campos, seleccionando de esta lista el campo deseado.

Para llevar a cabo nuestro ejemplo seleccionaremos como campos: Empresa, Direccin y
Poblacin de la tabla Clientes y Forma de pago de la tabla Pedidos.

Manual de Access XP: Consultas Avanzadas y SQL 7


En la parte superior de cada lista de campos se encuentra un asterisco (*). Este smbolo es la
abreviatura de Todos los campos de la tabla o consulta, de tal forma que siempre que
deseemos incluir todos los campos, no tenemos que seleccionarlos uno por uno, simplemente
arrastraremos el asterisco hasta la cuadrcula QBE.

Introducir en la fila criterios en el campo Poblacin el texto Madrid.

Una vez que hemos realizado el diseo de la consulta debemos ejecutarla con el fin de
visualizar la informacin solicitada. Para ejecutar la consulta (si est abierta) podemos:

Pulsar el icono Ejecutar de la barra de herramientas Diseo de consulta.

Elegir la opcin Vista hoja de datos del men Ver.

Pulsar el icono Vista

de la barra de herramientas Diseo de consulta y escoger la opcin
Vista Hoja de datos.




De cualquiera de las tres formas obtendremos la ventana que se muestra a continuacin donde
podemos visualizar, modificar o eliminar los datos.

Manual de Access XP: Consultas Avanzadas y SQL 8


1.3. MODOS DE VISUALIZAR UNA CONSULTA

Cada consulta (al igual que las tablas) tiene dos presentaciones: Vista diseo y Vista hoja de
datos.

Vista diseo es la presentacin desde la que se establecen los criterios que han de cumplir
los registros que posteriormente sern seleccionados.





Si deseamos visualizar qu registros cumplen los criterios especificados en la consulta, o lo
que es lo mismo, si deseamos acceder a la Vista hoja de datos debemos:

Elegir la opcin Vista hoja de datos del men Ver.

Pulsar el icono Vista

de la barra de herramientas Diseo de consulta y escoger la opcin
Vista Hoja de datos.



Manual de Access XP: Consultas Avanzadas y SQL 9


Vista hoja de datos es el lugar donde se muestran los registros que cumplen las
especificaciones o criterios indicados en la Vista diseo. Adems en ella podemos aadir,
modificar y eliminar los datos existentes.

Una vez en la Vista hoja de datos si deseamos realizar algn cambio en los criterios de la
consulta, debemos cambiar la presentacin de la consulta a Vista Diseo, con el fin de poder
llevar a cabo dichas modificaciones.

Para ello debemos:

Elegir la opcin Vista Diseo del men Ver.

Pulsar el icono Vista

de la barra de herramientas Hoja de datos de la consulta y
elegir la opcin Vista Diseo.



1.4. GUARDAR UNA CONSULTA

Las consultas pueden guardarse (si deseamos usarla en el futro), desde la ventana de Diseo o
desde la ventana de Hoja de datos. En realidad, lo que se guarda es el diseo de la consulta
que, al abrirla, selecciona de nuevo los registros. ste es el motivo por el que una consulta no
dar siempre el mismo resultado; se pueden haber aadido nuevos registros que cumplan la
condicin de la consulta o haberse eliminado otros. Supongamos que deseamos guardar la
consulta realizada en el apartado anterior.

Para guardar una consulta debemos seguir los siguientes pasos:

Seleccionar la opcin Guardar del men Archivo, o bien, pulsar sobre el icono Guardar

de la barra de

herramientas Diseo de consulta. Access mostrar el cuadro de dilogo
Guardar como.

En el cuadro de texto Nombre de la consulta: debemos escribir el nombre de la consulta.
Siguiendo el ejemplo anterior podemos denominar la consulta creada: Forma de pago de los
clientes de Madrid.
Manual de Access XP: Consultas Avanzadas y SQL 10



Una vez que hemos establecido el nombre de la consulta, pulsamos el botn Aceptar.

Obsrvese como despus de guardar se sustituye en la barra de ttulo de la consulta el
nombre genrico Consulta 1 por la denominacin que acabamos de darle.



De este modo ya tenemos almacenada la consulta, de forma que podemos acceder a ella de
nuevo en cualquier momento desde la ventana de Base de datos.



1.5. CERRAR UNA CONSULTA

Cuando terminemos de trabajar con una consulta, podremos cerrarla despus de almacenar
cualquier cambio que hubiramos realizado en la estructura de la consulta.

Para cerrar una consulta, seguimos los pasos siguientes:
Elegimos la opcin Cerrar del men Archivo, o hacemos clic en el men Control de la
ventana de la consulta y pulsamos la alternativa Cerrar.

Manual de Access XP: Consultas Avanzadas y SQL 11


Tambin podemos pulsar el botn Cerrar

de la barra de Ttulo.

Si se ha realizado algn cambio en la estructura de la consulta, aparecer un cuadro de
dilogo preguntndonos si deseamos guardar los cambios.




Pulsamos el botn S para aceptar los cambios o el botn No en caso contrario.

1.6. ABRIR UNA CONSULTA

Una vez definido el diseo de una consulta nos interesar ver la respuesta o seleccin de
registros. Access crear para ello una Hoja de respuestas dinmica que est formada por el
conjunto de registros que responden a la consulta formulada. Despus de almacenar una
consulta, es posible que deseemos en un futuro, visualizar de nuevo su contenido.

Para abrir la consulta en vista Hoja de datos debemos realizar los siguientes pasos:

Nos posicionamos en la ventana de Base de datos, en la carpeta de Consultas.

Seleccionamos la consulta que deseamos visualizar y pulsamos el botn Abrir.

Manual de Access XP: Consultas Avanzadas y SQL 12



Otra forma de abrir la consulta, sera haciendo doble clic sobre ella, en la lista mostrada al
pulsar el botn Consultas de la ventana de Base de datos.
Hay que tener en cuenta que, las nicas consultas que se pueden abrir en vista Hoja de datos
son las consultas de seleccin.

A continuacin se abre la ventana de Hoja de datos, en la que se visualizan los registros que
cumplen las condiciones de la consulta.



Tambin es posible acceder a la ventana de diseo de la consulta y modificar el mismo.

Para abrir la consulta en vista Diseo debemos realizar los siguientes pasos:

Nos posicionamos en la ventana de Base de datos, en la carpeta de Consultas.

Seleccionar la consulta y pulsar el botn Diseo.


Manual de Access XP: Consultas Avanzadas y SQL 13



Se mostrar la siguiente ventana:





Cuando la consulta est abierta en Vista Diseo, se habilita la barra de herramientas de
Consultas desde la cual tenemos habilitado el botn Vista para poder acceder a los tipos
de visualizacin: Hoja de datos y Diseo.
Adems desde esta barra con el botn Ejecutar podemos ejecutar la consulta para
mostrar los resultados en la vista Hoja de datos.



1.7. DISEO DE UNA CONSULTA

Una vez que tenemos creada una consulta podemos completarla o reestructurarla a travs de
la Vista Diseo (abrir la consulta en modo Diseo a travs del botn Diseo de la ventana
Consultas de la base de datos). De tal forma que podremos realizar cualquiera de las
siguientes operaciones:
Manual de Access XP: Consultas Avanzadas y SQL 14

1.7.1. AGREGAR TABLAS Y/O CONSULTAS

Hay dos formas de agregar tablas y/o consultas a una consulta ya existente o una consulta
efectuada sin el asistente, que son:

Ir al men Consulta y seleccionar la opcin Mostrar Tabla.

Pulsar el botn Mostrar Tabla

de la barra de herramientas Diseo de consulta.

Se muestra una pantalla en la que se visualizan las tablas y las consultas y para agregar
alguna a la consulta solo deberemos seleccionarla y hacer clic en el botn Agregar.





1.7.2. ELIMINAR TABLAS Y/ CONSULTAS

Para eliminar las tablas y/o consultas de una consulta, solo hay que seguir los siguientes
pasos:

Seleccionar la tabla o consulta que deseamos suprimir haciendo clic en cualquier parte de su
lista de campos.

Pulsar la tecla Supr o elegir la opcin Eliminar del men Edicin.

Automticamente, las posibles relaciones y los campos de esa tabla desaparecern. Si, por
error, se hacen cambios no deseados, bastar con salir de la vista diseo de consulta sin
guardar las modificaciones realizadas.



1.7.3. CREAR O ELIMINAR RELACIONES ENTRE TABLAS PARA UNA CONSULTA
Manual de Access XP: Consultas Avanzadas y SQL 15

Si no se han creado relaciones entre tablas, stas no estarn conectadas con lneas de unin
en la ventana de consulta. Sin embargo, es posible realizar dichas uniones en las propias
consultas, para poder as usar los datos relacionados de dos o ms tablas.

Para que la relacin entre ambas tablas funcione, los campos relacionados deben estar
presentes en ambas tablas y los campos deben contener datos del mismo tipo.
Para establecer esa relacin, solo es necesario posicionarse sobre el campo a relacionar y
arrastrarlo hasta el campo de la otra tabla. Una lnea de unin conectar las dos tablas slo
para esa consulta, no a nivel relaciones de tablas de la base de datos.

Las relaciones tienen tres propiedades de combinacin, para editarlas slo es necesario
posicionarse sobre la lnea de la relacin y hacer doble clic con el botn izquierdo del ratn.
Estas propiedades son para decidir que registros de la relacin aparecern en la consulta.

Si lo que se desea es eliminar una relacin, hay que borrar la lnea de unin entre las tablas,
para lo cual simplemente es necesario posicionarse sobre dicha lnea: presionar la tecla Supr o
abrir el men Edicin y seleccionar la opcin Eliminar.

1.7.4. MOVER O ELIMINAR CAMPOS

La consulta est formada por un conjunto de columnas, cada una de las cuales representa un
campo, los criterios de seleccin o las funciones (suma, promedio, mximo, etc.) efectuada
sobre el campo.

A continuacin se vern algunas operaciones bsicas para manipular dichas columnas:

Cambiar el orden de los campos en una consulta. Es evidente que es muy importante el
orden relativo de los campos en la casilla QBE de una consulta, pues de ello depende el orden
en que aparezcan los campos.

Para modificar el orden en que aparecen los campos en una consulta solo tenemos que realizar
una sencilla operacin de arrastrar y soltar.
Relaciones entre
tablas representadas
por las lneas de
unin
Manual de Access XP: Consultas Avanzadas y SQL 16

Llevamos el puntero al selector de la columna (la franja gris de la parte superior de la
columna) que deseamos mover y cuando se transforme en una flecha hacer clic, toda la
columna quedar resaltada en negro.



Arrastramos el puntero del ratn hacia la derecha o la izquierda hasta situar el campo en la
posicin deseada.



Borrar campos. Del mismo modo que agregamos un o varios campos a la consulta, los
campos tambin se pueden eliminar haciendo uso del teclado o de las opciones contenidos en
el men Edicin.

Si deseamos eliminar un campo:

Seleccionamos la columna a eliminar.

Abrimos el men Edicin y seleccionamos la opcin Eliminar columna (o pulsamos la tecla
Supr).

Ampliar o disminuir una columna. Para ampliar o disminuir el tamao en cuanto a la
anchura, se lleva el puntero del ratn a la lnea que separa los rectngulos grises que
encabezan las dos columnas (veremos que el ratn se convierte en un puntero de doble
flecha) y arrastrar el puntero a la derecha o a la izquierda para modificar el ancho.



1.8. CRITERIOS DE SELECCIN

Para especificar o seleccionar el conjunto de datos que deseamos obtener debemos introducir
los criterios de seleccin correspondientes.
Manual de Access XP: Consultas Avanzadas y SQL 17

Un criterio es una condicin aplicada a los registros para hacer un filtrado de la consulta. Por
ejemplo, para visualizar todos aquellos clientes de Barcelona tendremos que establecer un
criterio.

Para especificar criterios en una consulta slo es necesario seguir estos pasos:

Situarnos en la parte inferior de la ventana de diseo, seleccionar el campo sobre el cual se
desea aplicar un criterio (en este caso Poblacin) y posicionarnos en la fila Criterios.

A continuacin establecer el criterio. Escribimos el texto: Barcelona



En una misma consulta podemos establecer varios criterios en distintos campos, para ello solo
debemos repetir los pasos arriba indicados para cada uno de los campos en los que deseemos
establecer criterios de seleccin.

1.8.1. OPERADORES PARA RESTABLECER CRITERIOS

Para especificar los criterios se introduce una frase o una expresin en la celda Criterios de un
campo. A la hora de ejecutar la consulta se evala la expresin y se busca en el campo los
valores que coinciden con el criterio especificado. Es decir, slo se muestran los registros que
contienen los valores coincidentes.

Los criterios pueden introducirse en uno o ms campos de una consulta.

En cualquiera de los campos, sean del tipo que sean, las condiciones tienen la siguiente
estructura que debemos seguir:

Operadores vlidos para establecer criterios

Operadores Significado
= Igual que
Manual de Access XP: Consultas Avanzadas y SQL 18
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
NO Distinto que
Si el campo donde queremos hacer las bsquedas es de tipo texto y el valor
que estamos buscando incluye espacios en blanco, debemos encerrarlo entre
comillas
Entre Es til para especificar rangos de valores. La clusula Entre 10 y 20 es la
misma que la especificacin >=10 Y <=20
En Para los casos en los que el valor de un campo est dentro de una lista de
valores: Se usa la funcin En(). Ejemplo: En (Valencia, Orense, Pontevedra),
listar todo los campos que tuvieran los valores Valencia, Orense y
Pontevedra
* ? Se pueden usar los comodines * y ? en una expresin para seleccionar nicamente los
registros que tengan un patrn especfico:
* Representa cualquier nmero de caracteres
? Representa un solo carcter
Como Comparacin de cadenas (se usa con los caracteres comodn ? y *)

En los campos de tipo Fecha, al realizar los criterios, deberemos incluir la fecha entre los
smbolos de #. Por ejemplo, si deseamos visualizar los pedidos realizados en el ao 2002,
estableceramos en el criterio del campo Fecha de Pedido de la tabla Pedidos la expresin
>01/01/2002, tal como se ilustra en la siguiente figura:



Si el campo donde queremos hacer las bsquedas es de tipo texto y el valor que estamos
buscando incluye espacios en blanco, debemos encerrarlo entre comillas. Por ejemplo
supongamos que deseamos acceder a los datos de la empresa Beltrn e Hijos. En este caso en
el criterio del campo Nombre de Empresa de la tabla Clientes estableceramos Beltrn e
Hijos tal como se aprecia en la figura siguiente.

Manual de Access XP: Consultas Avanzadas y SQL 19


A los campos de tipo texto, en las bsquedas sencillas, Access aade por defecto las comillas a
los valores.

1.8.2. EJEMPLOS DE CRITERIOS DE SELECCIN

En la siguiente tabla vamos a mostrar diferentes ejemplos de lo explicado en el apartado
anterior:

Campo Criterio Registros encontrados
Ciudad Madrid Muestra los clientes de Madrid
Ciudad Madrid o La Corua Muestra los clientes de Madrid o los de La Corua
Ciudad
En (Madrid, La
Corua)
Muestra los clientes de Madrid o los de La Corua
Ciudad No Madrid
Muestra la informacin de cualquier cliente menos
los de Madrid
Ciudad Como M* Muestra los clientes cuya ciudad empieza por M
Cdigo
Postal
Como *80"
Muestra los clientes cuyo cdigo postal termine en
80
Nombre Como [C-F]*
Muestra los clientes cuyo nombre comienza por
cualquier letra comprendida entre la letra C y la F
NIF/CIF Como 32?22*
Muestra la informacin de los clientes cuyo NIF/CIF
comience por 32, a continuacin tiene un carcter
cualquiera, le siguen los dgitos 22 y a stos, le
siguen otros caracteres, inluso puede que ningn
otro carcter
Fecha =#30/06/00# Muestra las ventas realizadas en el da 30/06/00
Fecha
Entre #30/06/98# Y
#01/01/99#
Muestra las ventas realizadas en el segundo semestre del
ao 98
Fecha >Fecha ()-30 Muestra las ventas realizadas hace menos de 30 das


Manual de Access XP: Consultas Avanzadas y SQL 20
1.8.3. CONDICIONES DE TIPO O Y CONDICIONES DE TIPO Y.

Cuando se introducen varios criterios de seleccin, tendremos que tener en cuenta que vamos
a tener dos tipos diferentes de consultas.

Tendremos las consultas de tipo Y, que son aquellas en las que un registro queda seleccionado
cuando se cumplen todas las condiciones especificadas, en cuanto que una de ellas no se
cumpla el registro no ser seleccionado.

Como ejemplo, supongamos que deseamos visualizar los clientes de Madrid, que hallan
efectuadopedidos en el ao 2002. En este caso, tal como se ilustra en la imagen siguiente,
tiene que cumplirse ala vez que la Poblacin (campo de la tabla Clientes) sea Madrid y que
la Fecha de Pedido (campo de la tabla Pedidos) sea superior a 01/01/2002. De no cumplirse
esas dos condiciones a la vez la consulta no mostrar ningn registro.




En cambio, las consultas de tipo O, si tenemos varias condiciones o criterios de bsqueda, solo
con que una de las condiciones se cumpla, el registro quedar seleccionado.

En la ltima fila de la cuadrcula QBE de una consulta, denominada Criterios, se especifican
las condiciones que deben cumplir los datos de ese campo para que los registros aparezcan en
el resultado de una consulta. Observamos que debajo de esa fila, hay otra denominada O
que la utilizaremos para especificar otros criterios que se considerarn de tipo O.

A modo de ejemplo, supongamos que deseamos visualizar los datos de los clientes de Madrid o
de Barcelona. En este caso en el campo Poblacin de la tabla Clientes en la fila de criterios
estableceremos Madrid. Tambin usaremos la fila o del mismo campo para introducir
Barcelona.

De este modo visualizaremos los clientes de Madrid o los de Barcelona o bien ambos si existen
en la base de datos.

La siguiente imagen muestra el modo de realizacin de la consulta planteada.

Manual de Access XP: Consultas Avanzadas y SQL 21


En una consulta se pueden especificar criterios en ms de un campo (columnas) tal y como
hemos comentado anteriormente. Access determina que deben cumplir conjuntamente todos
los criterios que se especifican en una fila, aunque sean en distintos campos, corresponden a
las consultas de tipo Y, mientras que se pueden cumplir alternativamente los criterios que se
encuentren en distintas filas, corresponden a las condiciones de tipo O (los criterios
especificados en la fila O).

Se pueden usar todas las filas de criterios necesarias. Al hacer clic sobre el botn de flecha
abajo en la barra de desplazamiento vertical de la cuadrcula QBE se descubrir una nueva fila.

1.9. ORDENAR REGISTROS

Si se desea que los registros de una consulta aparezcan en un cierto orden, como podra ser
un listado alfabtico, se proceder con los siguientes pasos:

Ir a la consulta en modo Diseo y colocar los campos en la posicin en la que se desee que
aparezcan. Podemos abrir en modo Diseo la consulta planteada en el apartado anterior
correspondiente a los clientes de Madrid o Barcelona, con el fin de ordenar en sentido
ascendente segn el nombre de los clientes.

Hacemos clic en la fila Orden del campo por el cual se desea ordenar y se indica la manera
(ascendente o descendente) en que se har.



Manual de Access XP: Consultas Avanzadas y SQL 22
Si existen dos campos por los que se quiere ordenar, Access ordena por el campo situado ms
a la izquierda en la consulta y, en caso de que se repita un valor, se ir al siguiente campo que
se le indique como segundo criterio de ordenacin.
CAPTULO 2: CONSULTAS CON
CLCULOS PREDEFINIDOS Y
PERSONALIZADOS






2.1. CONSULTAS CON CLCULOS

Existen muchos tipos de clculos que se pueden llevar a cabo en una consulta. Por ejemplo,
podemos calcular la suma o el promedio de los valores de un campo, multiplicar los valores de
dos campos o calcular la fecha de tres meses a partir de la fecha actual.

En Access tenemos dos tipos de clculos:

Clculos predefinidos, llamados Totales, para calcular las siguientes cantidades a partir de
grupos de registros o a partir de todos los registros combinados en la consulta: suma,
promedio, cuenta, mnimo, mximo, desviacin estndar o varianza. Se elige un clculo de
totales para cada uno de los campos que deseamos calcular.
Clculos personalizados, para llevar a cabo en cada registro clculos numricos, de fechas y
de texto utilizando los datos de uno o ms campos. Por ejemplo, un clculo personalizado
puede multiplicar los valores de un campo por una determinada cantidad, encontrar la
diferencia entre dos fechas almacenadas en distintos campos, etc.

En este caso, necesitamos crear un nuevo campo calculado directamente en la cuadrcula de
diseo. Para crear campos calculados debemos escribir una expresin en una columna en
blanco.

2.1.1. CREAR CLCULOS PREDEFINIDOS O TOTALES.

Sin duda, una de las tareas que tendremos que realizar en algn momento de nuestra gestin
ser calcular algn valor sobre ciertos campos, como por ejemplo, valores promedio de un
campo.

Estos clculos se pueden realizar sobre todos los registros de la tabla o sobre un grupo de
ellos.

En primer lugar este tipo de operaciones implican agrupar los registros por el campo deseado,
a continuacin aplicarle al conjunto de registros una funcin de tipo estadstico en la fila Total.
Los totales que Microsoft Access permite son los siguientes:

Funciones Utilizacin Utilizar con estos tipos de datos
Suma
Total de los valores de un
campo
Nmero, Fecha/Hora, Moneda y
Autonumrico
Prom
Promedio de los valores de
un campo (media
Nmero, Fecha/Hora, Moneda y
Autonumrico
Manual de Access XP: Consultas Avanzadas y SQL 23
aritmtica)
Min Menos valor de un campo
Texto, Nmero, Fecha/Hora, Moneda y
Autonumrico
Mx Mayor valor de un campo
Texto, Nmero, Fecha/Hora, Moneda y
Autonumrico
Cuenta
Nmero de valores de un
campo, sin contar los valore
Null (en blanco)
Texto, Memo, Nmero, Fecha/Hora,
Moneda, Autonumrico, S/No y Objeto OLE
DesvEst
Desviacin estndar de los
valores de un campo
Nmero, Fecha/Hora, Moneda y
Autonumrico
Var
Varianza de los valores de
un campo
Nmero, Fecha/Hora, Moneda y
Autonumrico

Como se puede observar en la tabla, las funciones disponibles para un campo dependen del
tipo de datos del campo. Por ejemplo, si un campo contiene fechas, no podr utilizar la funcin
Suma para resumir dicho campo. Si un campo tiene texto, no se podr utilizar Suma, Min ni
Mx.

Adems de las funciones de la fila Total tenemos otras tres opciones que son:

Agrupar por: para definir los grupos para los que deseamos realizar los clculos. Por ejemplo,
para mostrar las ventas totales por categora, seleccionaramos Agrupar por el campo Nombre
Categora.

Expresin: para crear un campo calculado que incluya una funcin en su expresin.
Normalmente, crearemos un campo calculado cuando deseamos utilizar mltiples funciones en
una expresin.

Donde: para especificar los criterios de un campo que no est utilizando para definir los
grupos. Si seleccionamos esta opcin para un campo, Access ocultar el campo en los
resultados de la consulta desactivando la casilla de verificacin Mostrar.

Para realizar un clculo predefinido o Total es necesario realizar los pasos siguientes:

Disponer de la fila Total en la cuadrcula QBE, para ello pulsamos el botn Totales

de la
barra de herramientas Diseo de Consulta o a travs de la opcin Totales del men Ver.
Automticamente, en la cuadrcula de la consulta, se agrega una fila ms llamada Total, bajo
cada una de las columnas, con la opcin Agrupar por.

En el campo o campos por los que deseemos agrupar, dejamos activada la opcin Agrupar
por en la fila Total.

Se selecciona el campo sobre el cual se requiere efectuar un clculo y se hace clic en la fila
Total que aparece al final del campo, con lo cual se despliega una lista con todas las funciones
que se pueden realizar y se elige una de ellas.

Supongamos que deseamos visualizar el precio medio de los productos por seccin. En este
caso:

Elegimos los campos Seccin y Precios de la tabla Artculos.

Pulsamos el botn Totales

de la barra de herramientas Diseo de consulta.
Manual de Access XP: Consultas Avanzadas y SQL 24

En la cuadrcula QBE elegimos la funcin Promedio, en la lista desplegable de la fila Total, en
el campo Precio, tal como se muestra en la siguiente imagen:



Para visualizar los resultados de la consulta:

Hacemos clic en el botn Vista

bien, en el botn Ejecutar y podremos ver el resultado en una hoja de respuesta
dinmica como la que se muestra a continuacin, basada en el ejemplo que estbamos
realizando.




2.1.2. CREAR CLCULOS PERSONALIZADOS

Access nos permite realizar clculos en las tablas y posicionar el resultado del clculo en un
nuevo campo dentro de la hoja dinmica que nos da como resultado al abrir la consulta.
Manual de Access XP: Consultas Avanzadas y SQL 25
Tambin podemos crear un campo en una consulta utilizando los operadores aritmticos sobre
los campos de la tabla para calcular un valor.

Los campos calculados se definen utilizando una expresin que haga referencia a datos de
otros campos, o incluyendo las funciones u operadores disponibles en Microsoft Access.

Se pueden definir campos calculados para realizar clculos de totales, para combinar valores
en una campo de tipo Texto, o para realizar operaciones aritmticas con valores numricos o
de fechas. Por ejemplo, en una factura para calcular el total a pagar en base al campo precio
de los artculos vendidos.

Los pasos a seguir son:

Crear una nueva consulta con la tabla sobre la que se van a realizar las operaciones.

Nos posicionamos sobre la columna vaca, haciendo clic en la celda y escribimos la expresin a
calcular. En este caso, para la operacin planteada (calcular el iva) escribimos
[PRECIO]*16/100 y movemos el puntero fuera de la celda. Obsrvese que el nombre de
campo se escribe tal como lo est en la lista de campos, es decir en maysculas.

Aparecer en la expresin: Expr1: [Precio]*16/100, lo que significa que el nombre con el que
se mostrar este campo ser Expr1. Para cambiarlo, simplemente sustituiramos Expr1 por el
nombre que deseemos, en este caso IVA. Tambin en su defecto podramos haber introducido
directamente la expresin IVA:[PRECIO]*16/100. En la siguiente figura se ilustra lo explicado
anteriormente:





Por lo tanto, los pasos necesarios para crear un campo calculado en una consulta son los
siguientes:

Introducimos la expresin del campo calculado en una celda vaca de la fila Campo. Si el
campo calculado hace referencia a otros campos, stos debern estar en una de las tablas
agregadas a la consulta.

Manual de Access XP: Consultas Avanzadas y SQL 26
Al presionar la tecla Intro o moverse a otra celda, Access introducir el rtulo Expr1" para el
primer campo calculado, Expr2" para el segundo, y as sucesivamente. El nombre aparecer
en la expresin despus de dos puntos.

Y camb iamos el nombre del campo ExprN, si deseamos que aparezca otro nombre ms
descriptivo.

Los operadores aritmticos son los que se muestran a continuacin:

OPERADOR RESULTADO EJEMPLO
+ Suma dos expresiones numricas [EDAD]+10
- Resta dos expresiones numricas [INGRESOS]-[GASTOS]
*
Multiplica dos expresiones
numricas
[PRECIO]*10%
/
Divide dos expresiones numricas [COSTE]/[N_PARTICIPANTES
]
^ Eleva al exponente [PRECIO]^2
& Enlaza expresiones alfabticas [APELLIDOS]&&[NOMBRE]

Tambin podemos crear expresiones de clculo desde el Generador de Expresiones. Para
ello:

Para activarlo pulsamos en la barra de herramientas Diseo de consulta el botn Generar.


Desde el cuadro de dilogo Generador de Expresiones debemos seleccionar la carpeta donde
se encuentra el elemento que queremos utilizar para la expresin, pudiendo observar como
aparecen todos los elementos que esta contiene en la columna del centro.



Seleccionaremos el elemento que queremos incluir dentro de la expresin aritmtica, haciendo
doble clic sobre l.

Manual de Access XP: Consultas Avanzadas y SQL 27
Indicaremos ahora el operador y el otro elemento o bien escribimos el nmero con el que
queremos calcular.

Al Aceptar aparecer en la fila Campo la expresin resultante tal y como podemos observar
en la siguiente figura.


Al igual que sucede con cualquier otro campo, es posible aplicar un criterio de ordenacin a los
campos calculados e incluso calcular totales.

Si ejecutamos la consulta el resultado aparecer en la Hoja de datos:



Access actualiza de forma automtica los valores del campo calculado cuando se actualizan los
valores de los campos utilizados en la expresin.

Manual de Access XP: Consultas Avanzadas y SQL 28
CAPTULO 3: CONSULTAS DE ACCIN






Hasta ahora las consultas que hemos explicado no implicaban ningn cambio en las tablas que
contenan los datos. Las consultas que vamos a ver en este apartado van a realizar cambios en
las tablas origen de los datos.

Las consultas de accin estn diseadas para agregar, eliminar, modificar o actualizar los
datos contenidos en las tablas, o incluso para crear nuevas tablas con los resultados obtenidos
al ejecutarlas.

Microsoft Access indica una consulta de accin colocando un signo de admiracin (!) junto al
nombre de la consulta en la ventana de la base de datos.

Esto puede dar lugar a situaciones conflictivas, ya que podramos perder nuestros datos y, en
consecuencia muchas horas de trabajo. Por tanto, antes de ejecutar una consulta de accin, es
conveniente realizar copias de seguridad de los datos y comprobar, una vez ejecutadas, que se
ha obtenido la accin deseada.

Para verificar de antemano los resultados que producir una consulta de accin antes de
ejecutarla, podramos crear en primer lugar un consulta de seleccin similar y examinar la hoja
de respuestas dinmica que produce. Si el resultado es satisfactorio, podramos proceder con
las consulta de accin.

A continuacin, describiremos las consultas que permiten actualizar los registros, las consultas
de actualizacin y las consultas que permiten eliminarlos, las consultas de eliminacin.

3.1. CONSULTAS DE ACTUALIZACIN

Este tipo de consultas se utilizan para modificar de forma global un grupo de registros
especificados y nos sern muy tiles cuando queramos realizar cambios en uno o varios de los
campos.

Los pasos para la creacin de una consulta de actualizacin son los siguientes:

Definir la consulta con el campo o campos que queramos actualizar.

En el caso de establecer criterios de seleccin, podemos pulsar el botn Vista para ver la
Hoja de respuestas dinmica y comprobar que se han seleccionado los registros correctos.

Elegir la opcin Consulta de Actualizacin del men Consulta.

Manual de Access XP: Consultas Avanzadas y SQL 29


Podemos observar como aparece la fila Actualizar a en la cuadrcula QBE, desapareciendo las
filas Orden y Mostrar, puesto que no influyen en nada.

En la fila Actualizar a: del campo que se desea actualizar, escribimos la expresin apropiada
para actualizar los datos (puede ser un literal o un clculo). Por ejemplo: para incrementar los
precios un 20 por ciento habra que escribir [Nombre del campo]*1,2.



Guardamos la consulta y a continuacin la ejecutamos:

Bien desde el botn Ejecutar

(si la consulta est abierta).

Desde la ventana de base de datos haciendo doble clic sobre la consulta (si est cerrada).


Manual de Access XP: Consultas Avanzadas y SQL 30
Al ejecutar la consulta aparecer el siguiente mensaje:



Haremos clic en el botn S en el caso de que realmente queremos modificar los precios de la
tabla.

Microsoft Access mostrar un cuadro de confirmacin indicando el nmero de registros que se
actualizarn en la tabla. Pulsaremos en el botn S.



Si es necesario, podremos cancelar la operacin en ese momento pulsando el botn No.

Por ltimo, debemos situarnos en el botn Tablas de la ventana de Base de datos, con el fin
de comprobar que en la tabla de los Productos los precios han sido actualizados
correctamente.

3.2. CONSULTAS DE ELIMINACIN

Normalmente, las consultas de eliminacin se utilizan para eliminar algunos o todos los
registros que cumplen determinadas condiciones. Estas consultas se llevan a cabo con la orden
Consulta de Eliminacin del men Consulta.


Manual de Access XP: Consultas Avanzadas y SQL 31


Antes de ejecutar cualquier consulta de eliminacin, es importante comprobar que los registros
implicados son los correctos, ya que una vez que se ejecute la consulta y confirmemos la
eliminacin, NO PODREMOS RECUPERARLOS.

Los pasos necesarios para llevar a cabo una consulta de eliminacin son los mismos del
apartado anterior, salvo que en este caso se debe seleccionar (en el paso 2) la opcin
Consulta de eliminacin del men Consulta. Cuando seleccionamos esta opcin, Access
aadir la fila Eliminar a la cuadrcula QBE.

Para las tablas de las que deseamos eliminar registros arrastramos el asterisco (*) desde la
lista de campos hasta la cuadrcula de diseo de la consulta. Aparecer Desde en la celda
Eliminar situada bajo estos campos, como muestra la figura.

Para especificar criterios para eliminar registros, arrastramos a la cuadrcula de diseo los
campos en los que deseamos establecer los criterios. Aparecer Dnde en la celda Eliminar
situada bajo estos campos.

3.3. CONSULTAS DE CREACIN DE TABLA

Crea una tabla nueva a partir de todos o de parte de los datos de una o ms tablas. Las
consultas de creacin de tabla son tiles cuando necesitamos crear una tabla con los datos de
una consulta a fin de independizarlos de la tabla o tablas que los originaron para exportar la
tabla a otras bases de datos, realizar una copia de seguridad de una tabla, crear una tabla
histrica que contenga registros antiguos, etc.

Si deseamos crear una tabla nueva con los campos de la tabla Productos incluyendo el campo
IVA creado a travs de una consulta de campo calculado (ver apartado 6.7.2) seguiremos los
siguientes pasos:

Creamos una consulta, para lo cual deberemos seleccionar las tablas o consultas que contienen
los registros que deseamos incluir en la nueva tabla.

Manual de Access XP: Consultas Avanzadas y SQL 32


Una vez diseada la consulta la ejecutamos para comprobar que esos son realmente los datos
que deseamos incluir en la nueva tabla.


Desde la ventana de Diseo de la Consulta abrimos el men Consulta y seleccionamos la
opcin Creacin de tabla. Tambin podemos hacer clic en la fecha situada junto al botn
Tipo de Consulta en la barra de herramientas, y elegir la opcin Consulta de creacin
de tabla.

Aparecer el cuadro de dilogo Crear tabla, donde deberemos indicar el nombre de la nueva
tabla, as como si queremos que esta se cree en la base de datos activa o en otra existente.
Una vez realizada esta tarea pulsamos el botn Aceptar.



Manual de Access XP: Consultas Avanzadas y SQL 33
Guardamos la consulta. A continuacin la ejecutamos:

Bien desde el botn Ejecutar

(si la consulta est abierta).

Desde la ventana de base de datos haciendo doble clic sobre la consulta (si est cerrada).


Al ejecutar la consulta aparecer el siguiente mensaje:



Haremos clic en el botn S en el caso de que realmente queramos crear la nueva tabla.

Se mostrar un segundo mensaje, en el que debemos tambin pulsar el botn S en el caso de
que deseemos continuar con el proceso de crear la nueva tabla.



Por ltimo en la ventana de Base de datos debemos situarnos en el botn Tablas con la
finalidad de comprobar que la nueva tabla ha sido creada.

Manual de Access XP: Consultas Avanzadas y SQL 34



3.4. CONSULTA DE DATOS ANEXADOS

Este tipo de consultas agregan un grupo de registros de una o ms tablas al final de otra tabla
que tenga misma estructura. Por ejemplo, supongamos que una delegacin de la organizacin
nos enva una tabla con informacin sobre los clientes de Barcelona y deseamos incorporar los
datos (registros) a la tabla de Clientes. Para evitar tener que reescribir toda esa informacin,
podemos anexarla a la tabla CLIENTES.

Las consultas de datos anexados tambin son tiles para:

Anexar campos basados en criterios. Por ejemplo, es posible que desee anexar solo los
nombres y las direcciones de los clientes con pedidos de un tamao considerable.

Anexar registros cuando algunos de los campos de una tabla no existen en la otra tabla.

Los pasos a seguir para crear una consulta de este tipo son:

Diseamos la consulta (nos basaremos en el ejemplo propuesto sobre los clientes de
Barcelona). Para ello seleccionamos la tabla (Clientes de Barcelona) origen de los datos y los
campos adecuados (en este caso introducimos todos), as como los criterios, en el caso de que
sean necesarios.

Manual de Access XP: Consultas Avanzadas y SQL 35


Desde el men Consulta escogemos la opcin Consulta de datos anexados.



Tambin podemos hacer clic en la fecha situada junto al botn Tipo de Consulta en la
barra de herramientas, y elegir la opcin Consulta de creacin de tabla.

Aparece un cuadro de dilogo similar al que apareca en las Consultas de Creacin de Tabla, en
el que indicaremos el nombre de la tabla (CLIENTES) a la que vamos a aadir los datos. A
continuacin pulsamos el botn Aceptar.





Manual de Access XP: Consultas Avanzadas y SQL 36
Podemos observar como aparece la fila Anexar a en la cuadrcula QBE. Esta fila muestra para
cada campo de la tabla Clientes de Barcelona, el campo al que se aadirn los datos en la
tabla Clientes.



Guardamos la consulta y la ejecutamos:
Bien desde el botn Ejecutar

(si la consulta est abierta).
desde la ventana de base de datos haciendo doble clic sobre la consulta (si est cerrada).


Al ejecutar la consulta aparecer el siguiente mensaje:



Haremos clic en el botn S en el caso de que realmente queramos aadir los datos a la tabla
Clientes.
Manual de Access XP: Consultas Avanzadas y SQL 37

Se mostrar un segundo mensaje, en el que debemos tambin pulsar el botn S en el caso de
que deseemos continuar con el proceso de aadir los datos de la tabla Clientes de Barcelona.



Por ltimo en la ventana de base de datos debemos situarnos en el botn Tablas con la
finalidad de comprobar que los registros han sido anexados a la tabla Clientes de forma
correcta.




















CAPTULO 4: CONSULTAS CON
PARMETROS






4.1. CONSULTAS DE PARAMTROS

Manual de Access XP: Consultas Avanzadas y SQL 38
Cuando se desea realizar una serie de consultas sobre diferentes valores, por ejemplo, todos
los clientes de Vigo, todos los clientes de Orense, etc., una solucin sera crear tantas
consultas como localidades a buscar; la otra, sera realizar una consulta que al abrirla
permitiera introducir la ciudad de la que se quieren obtener los datos. Para ello:

Disear la consulta. En este caso la basamos en la tabla de los Clientes. En ella introducimos
los campos que sean necesarios.

A continuacin nos situamos en el campo del cual deseamos obtener informacin. En este caso
lo haremos en el campo Poblacin. En la fila Criterios, colocamos la pregunta entre corchetes
[ ], de la siguiente manera:



En nuestro caso deseamos segn el caso localizar los datos de un cliente proporcionando al
programa informacin relativa a su poblacin.

En la definicin del criterio para las consultas paramtricas podemos utilizar operadores, as
como combinar ms de un criterio en diferentes campos.

Guardamos la consulta, por ejemplo con el nombre Buscar clientes segn su poblacin.

A continuacin debemos ejecutar la consulta, pulsando el botn Abrir o al haciendo doble clic
sobre la consulta en la ventana de Base de datos.

Manual de Access XP: Consultas Avanzadas y SQL 39


Si la consulta est abierta, podemos pulsar el botn Ejecutar

de la barra de herramientas.

Aparecer un cuadro de dilogo pidindonos el valor del criterio. En este caso deseamos
visualizar los clientes de Zaragoza, por lo que en el cuadro de texto escribimos dicha poblacin
tal como se muestra en la figura siguiente. Por ltimo pulsamos el botn Aceptar para que se
lleve a cabo la consulta.



Despus de aceptar aparece la Hoja de datos la informacin de los clientes de la poblacin
indicada en la ventana anterior.




Manual de Access XP: Consultas Avanzadas y SQL 40
CAPTULO 5: CONSULTAS AVANZADAS
CON ASISTENTE






5.1. INTRODUCCIN

Podemos realizar consultas avanzadas a partir de un asistente. Con este mtodo podemos
obtener tablas de referencias cruzadas, consultas de bsqueda de no coincidentes y consultas
de bsqueda de duplicados.

Para crear este tipo de consultas utilizamos en la ventana de la Base de Datos en botn Nuevo
y a partir de ese momento debemos seguir paso a paso el asistente que se propone
para cada tipo de consulta.

5.2. CONSULTAS DE TABLAS DE REFERENCIAS CRUZADAS

Las consultas de tablas de referencias cruzadas calculan una suma, una media, un recuento u
otros tipos de totales de los datos, que se agrupan en dos tipos de informacin: uno hacia
abajo, en el lado izquierdo de la hoja de datos y otro a lo largo de la parte superior.

Una consulta de tabla de referencias cruzadas se crea con un asistente o desde el principio en
la cuadrcula de diseo de consulta.

En la cuadrcula de diseo, se especifican los valores de los campos que van a convertirse en
ttulos de columna y en ttulos de fila, as como los valores de los campos en los que se va a
realizar una suma, promedio, recuento u otro tipo de clculo.

Para crear una consulta de tabla de referencias cruzadas se deben seguir los siguientes pasos:

En la ventana Base de datos, haga clic en Consultas y, a continuacin, bajo Objetos, haga
clic en Nueva en la barra de herramientas de la ventana Base de datos.

En el cuadro de dilogo Nueva consulta, haga clic en Asistente para consultas de tablas de
referencias cruzadas.
Manual de Access XP: Consultas Avanzadas y SQL 41


Elija Aceptar.

Siga las instrucciones de los cuadros de dilogo del asistente. En el ltimo cuadro de dilogo,
puede seleccionar si desea ejecutar la consulta o si desea ver la estructura de la consulta en la
vista Diseo.

Si la consulta resultante no es exactamente como desea, puede volver a ejecutar el asistente o
cambiar la consulta en la vista Diseo.

Vamos a describir un ejemplo paso a paso:

Despus de seleccionar la opcin Asistente para consultas de tabla de referencias cruzadas y
pulsamos el botn Aceptar.

En el siguiente paso del Asistente elegimos la tabla que contiene los campos que queremos
utilizar en los resultados de la consulta:

Manual de Access XP: Consultas Avanzadas y SQL 42


Despus de incluir la tabla Pedidos, pulsamos sobre el botn Siguiente. En este paso del
Asistente debemos seleccionar que campo o campos se van a utilizar como ttulo en la fila de
la consulta. Para el ejemplo, seleccionamos el campo Pas de origen y pulsamos sobre el botn
Siguiente:

En este paso del Asistente seleccionamos que campo o campos queremos como columnas para
la consulta. Para este ejemplo, elegimos el campo Seccin y pulsamos el botn Siguiente.

Manual de Access XP: Consultas Avanzadas y SQL 43


Debemos activar en este paso del Asistente qu nmero deseamos que se calcule para cada
interseccin entre las filas y las columnas. Si se desea se puede activar una columna en la
que se resuma cada fila. Para este ejemplo, elegimos la funcin Cuenta sobre el campo
Cdigo Artculo. Pulsamos sobre el botn Siguiente.

En el ltimo paso debemos decidir que nombre le ponemos a este objeto y pulsamos sobre el
botn Finalizar.
Manual de Access XP: Consultas Avanzadas y SQL 44

El resultado de la consulta es el que se muestra a continuacin :


5.3. CONSULTA DE BSQUEDA DE DUPLICADOS

Las consultas de Bsqueda de duplicados consisten en encontrar registros o valores de campo
duplicados en una tabla mediante un asistente. A partir de los resultados de una Consulta de
buscar duplicados, podemos determinar si existen registros duplicados en una tabla o
determinar qu registros de una tabla comparten el mismo valor. Por ejemplo, puede buscar
valores duplicados en un campo de direccin para determinar si existen registros duplicados
para el mismo proveedor, o bien puede buscar valores duplicados en un campo de ciudad para
ver qu proveedores se encuentran en la misma ciudad.

En la ventana Base de datos, hacemos clic en Consultas , bajo Objetos, y, a continuacin,
hacemos clic en Nuevo en la barra de herramientas de la ventana Base de datos.

En el cuadro de dilogo Nueva consulta, hacemos clic en Asistente para consultas de
buscar duplicados y pulsamos sobre el botn Aceptar.

En el primer paso del Asistente elegimos la tabla o consulta sobre la que queremos disear la
consulta para buscar valores repetidos:
Manual de Access XP: Consultas Avanzadas y SQL 45


Pulsamos el botn Siguiente. En el segundo paso del Asistente debemos seleccionar el campo
o campos que pueden contener informacin duplicada y pulsamos el botn Siguiente.



En el siguiente paso del Asistente debemos definir que campo o campos debemos mostrar
adems de los que contienen los valores duplicados. Para el ejemplo, elegimos los campos
Seccin y Precio. Pulsamos el botn Siguiente.

Manual de Access XP: Consultas Avanzadas y SQL 46


En este ltimo paso nombramos la consulta.



Pulsamos el botn Finalizar y visualizaremos el resultado de la consulta. Para nuestro
ejemplo, podra ser el siguiente:


Manual de Access XP: Consultas Avanzadas y SQL 47



5.4. CONSULTAS DE BSQUEDA DE NO COINCIDENTES

Las consultas de bsqueda de no coincidentes son muy tiles para buscar registros no
coincidentes entre tablas mediante un asistente .

Mediante el Asistente para consultas de buscar no-coincidentes, podemos buscar registros en
una tabla que no tenga registros relacionados en otra tabla. Por ejemplo, puede buscar
clientes que no tienen pedidos.

En la ventana Base de datos, bajo Objetos, haga clic en Consultas y, a continuacin, en
Nueva en la barra de herramientas de la ventana Base de datos.

En el cuadro de dilogo Nueva consulta, haga clic en Asistente para consultas de buscar no-
coincidentes y pulsamos el botn Aceptar.





Vamos a seguir un ejemplo paso a paso:

Despus de seleccionar Asistente para bsqueda de no coincidentes, pulsamos sobre el
botn Aceptar.

En el primer paso del Asistente elegimos la primera tabla o consulta sobre la que se va a
valorar la coincidencia. Para el ejemplo, elegimos la tabla Clientes y pulsamos sobre el botn
Siguiente.

Manual de Access XP: Consultas Avanzadas y SQL 48


En el segundo paso del Asistente, debemos definir que tabla o consulta contiene los registros
relacionados:


Pulsamos el botn Siguiente. En este paso del Asistente debemos comprobar que existe una
relacin entre las dos tablas:

Manual de Access XP: Consultas Avanzadas y SQL 49


Pulsamos el botn Siguiente. En este paso del Asistente debemos definir que campos
queremos ver en el resultado de la consulta.



Pulsamos el botn Siguiente. En el ltimo paso del Asistente nombramos la consulta:

Manual de Access XP: Consultas Avanzadas y SQL 50


Pulsamos sobre el botn Finalizar. Comprobamos que los registros obtenidos resuelvan
correctamente la consulta.




CAPTULO 6: INTRODUCCIN A SQL






6.1. INTRODUCCIN

El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado,
utilizado por el motor de base de datos de Microsoft Jet. SQL se utiliza para crear objetos
QueryDef, como el argumento de origen del mtodo OpenRecordSet y como la propiedad
RecordSource del control de datos. Tambin se puede utilizar con el mtodo Execute para
crear y manipular directamente las bases de datos Jet y crear consultas SQL de paso a travs
para manipular bases de datos remotas cliente - servidor.

6.1.1. COMPONENTES DE 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.

Manual de Access XP: Consultas Avanzadas y SQL 51
6.1.2. COMANDOS

Existen dos tipos de comandos SQL:

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

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

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


6.1.3. CLUSULAS

Las clusulas son condiciones de modificacin utilizadas para definir los datos que desea
seleccionar o manipular.

Clusula Descripcin
FROM Utilizada para especificar la tabla de la cual se van a seleccionar los registros
WHERE
Utilizada para especificar las condiciones que deben reunir los registros que
se van a seleccionar
GROUP BY Utilizada para separar los registros seleccionados en grupos especficos
HAVING Utilizada para expresar la condicin que debe satisfacer cada grupo
ORDER BY
Utilizada para ordenar los registros seleccionados de acuerdo con un orden
especfico

6.1.4. OPERADORES LGICOS

Operador Uso
AND
Es el "y" lgico. Evalua dos condiciones y devuelve un valor de verdad slo si
ambas son ciertas.
OR
Es el "o" lgico. Evala dos condiciones y devuelve un valor de verdar si
alguna de las dos es cierta.
Manual de Access XP: Consultas Avanzadas y SQL 52
NOT Negacin lgica. Devuelve el valor contrario de la expresin.

6.1.5. OPERADORES DE COMPARACIN

Operador Uso
< Menor que
> Mayor que
<> Distinto de
<= Menor Igual que
>= Mayor Igual que
= Igual que
BETWEEN Utilizado para especificar un intervalo de valores.
LIKE Utilizado en la comparacin de un modelo
In
Utilizado para especificar registros de una base de datos


6.1.6. 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.

Funcin Descripcin
AVG Utilizada para calcular el promedio de los valores de un campo determinado
COUNT 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

6.2. CONSULTAS DE SELECCIN

Las consultas de seleccin se utilizan para indicar al motor de datos que devuelva informacin
de las bases de datos, esta informacin es devuelta en forma de conjunto de registros que se
pueden almacenar en un objeto recordset. Este conjunto de registros es modificable.

6.2.1. CONSULTAS BSICAS

La sintaxis bsica de una consulta de seleccin es la siguiente:

SELECT Campos FROM Tabla;

En donde campos es la lista de campos que se deseen recuperar y tabla es el origen de los
mismos, por ejemplo:

SELECT Nombre, Telefono FROM Clientes;

Esta consulta devuelve un recordset con el campo nombre y telfono de la tabla clientes.

6.2.2. ORDENAR LOS REGISTROS
Manual de Access XP: Consultas Avanzadas y SQL 53

Adicionalmente se puede especificar el orden en que se desean recuperar los registros de las
tablas mediante la clasula 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;

Esta consulta devuelve los campos CodigoPostal, Nombre, Telefono de la tabla Clientes
ordenados por el campo Nombre.

Se pueden ordenar los registros por mas 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 clasula (ASC -
se toma este valor por defecto) descendente (DESC)

SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY CodigoPostal DESC ,
Nombre ASC;

6.2.3. CONSULTAS DE PREDICADO

El predicado se incluye entre la clasula y el primer nombre del campo a recuperar, los
posibles predicados son:

Predicado Descripcin
ALL Devuelve todos los campos de la tabla
TOP Devuelve un determinado nmero de registros de la tabla
DISTINCT Omite los registros cuyos campos seleccionados coincidan totalmente
DISTINCTROW
Omite los registros duplicados basandose en la totalidad del registro y no
slo en los campos seleccionados.

ALL

Si no se incluye ninguno 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 se
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.

SELECT ALL FROM Empleados;
SELECT * FROM Empleados;

TOP

Devuelve un cierto nmero de registros que entran entre al principio o al final de un rango
especificado por una clusula ORDER BY. Supongamos que queremos recuperar los nombres
de los 25 primeros estudiantes del curso 1994:

SELECT TOP 25 Nombre, Apellido FROM Estudiantes
ORDER BY Nota DESC;
Manual de Access XP: Consultas Avanzadas y SQL 54

Si no se incluye la clusula ORDER BY, la consulta devolver un conjunto arbitrario de 25
registros de la tabla Estudiantes .El predicado TOP no elige entre valores iguales. En el ejemplo
anterior, si la nota media nmero 25 y la 26 son iguales, la consulta devolver 26 registros. Se
puede utilizar la palabra reservada PERCENT 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 25 primeros estudiantes deseamos el 10 por ciento del curso:

SELECT TOP 10 PERCENT Nombre, Apellido FROM Estudiantes
ORDER BY Nota DESC;

El valor que va a continuacin de TOP debe ser un Integer sin signo.TOP no afecta a la posible
actualizacin de la consulta.

DISTINCT

Omite los registros que contienen datos duplicados en los campos seleccionados. Para que los
valores de cada campo listado en la instruccin SELECT se incluyan en la consulta deben ser
nicos.
Por ejemplo, varios empleados 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 Empleados;

Con otras palabras el predicado DISTINCT devuelve aquellos registros cuyos campos
indicados en la clusula SELECT posean un contenido 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 slo se
fijaba en el contenido de los campos seleccionados, ste 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 dos registros: Antonio Lpez y Marta Lpez el ejemplo del
predicado DISTINCT devuleve un nico registro con el valor Lpez en el campo Apellido ya que
busca no duplicados en dicho campo. Este ltimo ejemplo devuelve dos registros con el valor
Lpez en el apellido ya que se buscan no duplicados en el registro completo.

6.2.4. ALIAS

En determinadas circunstancias es necesario asignar un nombre a alguna columna
determinada de un conjunto devuelto, otras veces por simple capricho o por otras
circunstancias. Para resolver todas ellas tenemos la palabra reservada AS que se encarga de
asignar el nombre que deseamos a la columna deseada. Tomado como referencia el ejemplo
anterior podemos hacer que la columna devuelta por la consulta, en lugar de llamarse apellido
(igual que el campo devuelto) se llame Empleado. En este caso procederamos de la siguiente
forma:

SELECT DISTINCTROW Apellido AS Empleado FROM Empleados;

6.2.5. RECUPERAR INFORMACIN DE UNA BASE DE DATOS EXTERNA
Manual de Access XP: Consultas Avanzadas y SQL 55

Para concluir este captulo se debe hacer referencia a la recuperacin de registros de bases de
datos externa. Es ocasiones es necesario la recuperacin de informacin que se encuentra
contenida en una tabla que no se encuentra en la base de datos que ejecutar la consulta o
que en ese momento no se encuentra abierta, esta situacin la podemos salvar con la palabra
reservada IN de la siguiente forma:

SELECT DISTINCTROW Apellido AS Empleado FROM Empleados IN
c:\databases\gestion.mdb';

En donde c:\databases\gestion.mdb es la base de datos que contiene la tabla Empleados.

Manual de Access XP: Consultas Avanzadas y SQL 56
CAPTULO 7: CRITERIOS DE
SELECCIN EN SQL






7.1. CRITERIOS DE SELECCIN

En el captulo anterior se vio la forma de recuperar los registros de las tablas, las formas
empleadas devolvan todos los registros de la mencionada tabla. A lo largo de este captulo se
estudiarn las posibilidades de filtrar los registros con el fin de recuperar solamente aquellos
que cumplan una condiciones preestablecidas.

Antes de comenzar el desarrollo de este captulo hay que recalcar tres detalles de vital
importancia. El primero de ellos es que cada vez que se desee establecer una condicin
referida a un campo de texto la condicin de bsqueda debe ir encerrada entre comillas
simples; la segunda es que no se posible establecer condiciones de bsqueda en los campos
memo y; la tercera y ltima hace referencia a las fechas. Las fechas se deben escribir siempre
en formato mm-dd-aa en donde mm representa el mes, dd el da y aa el ao, hay que prestar
atencin a los separadores -no sirve la separacin habitual de la barra (/), hay que utilizar el
guin (-) y adems la fecha debe ir encerrada entre almohadillas (#). Por ejemplo si deseamos
referirnos al da 3 de Septiembre de 1995 deberemos hacerlo de la siguente forma; #09-03-
95# #9-3-95#.

7.1.1. 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
Manual de Access XP: Consultas Avanzadas y SQL 57
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');

7.1.2. INTRVALOS 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)
Manual de Access XP: Consultas Avanzadas y SQL 58
SELECT IIf(CodPostal Between 28000 And 28999, 'Provincial', 'Nacional')
FROM Editores;
(Devuelve el valor 'Provincial' si el cdigo postal se encuentra en el intervalo,
'Nacional' en caso contrario)

7.1.3. 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 pueden
utilizar 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.

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'




Manual de Access XP: Consultas Avanzadas y SQL 59
7.1.4. 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');

7.1.5. 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. Depus de escribir
esta clusula se deben especificar las condiciones expuestas en los partados 3.1 y 3.2. 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 Id_Producto, Existencias FROM Productos
WHERE Existencias <= Nuevo_Pedido;
SELECT * FROM Pedidos WHERE Fecha_Envio = #5/10/94#;
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 Empl WHERE Apellidos Between 'Lon' And 'Tol';
SELECT Id_Pedido, Fecha_Pedido FROM Pedidos WHERE Fecha_Pedido
Between #1-1-94# And #30-6-94#;
SELECT Apellidos, Nombre, Ciudad FROM Empleados WHERE Ciudad
In ('Sevilla', 'Los Angeles', 'Barcelona');




















Manual de Access XP: Consultas Avanzadas y SQL 60
CAPTULO 8: CONSULTAS DE
AGRUPACIN DE REGISTROS






8.1. INTRODUCCIN A LA AGRUPACIN DE REGISTROS

En este captulo podemos aprender a realizar consultas del tipo resumen o agrupacin a partir
del lenguaje SQL , utilizando funciones agregadas, que describimos a continuacin.

8.1.1. 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 esta 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 Id_Familia, Sum(Stock) FROM Productos GROUP BY Id_Familia;

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 cuales
de ellos se van a mostrar.

SELECT Id_Familia Sum(Stock) FROM Productos GROUP BY Id_Familia
HAVING Sum(Stock) > 100 AND NombreProducto Like BOS*;


Manual de Access XP: Consultas Avanzadas y SQL 61
8.1.2. 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;

8.1.3. 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;

8.1.4. MAX , MN

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';

Manual de Access XP: Consultas Avanzadas y SQL 62
8.1.5. 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 Desviacion FROM Pedidos WHERE Pais = 'Espaa';
SELECT StDevP(Gastos) AS Desviacion FROM Pedidos WHERE Pais= 'Espaa';

8.1.6. SUM

Devuelve la suma del conjunto de valores contenido en un campo especifico de una consulta.

Su sintaxis es:

Sum(expr)

En donde expr respresenta 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;

8.1.7. VAR, VARP

Devuelve una estimacin de la varianza de una poblacin (sobre el total de los registros) o una
muestra de la poblacin (muestra aleatoria de registros) sobre los valores de un campo.

Su sintaxis es:
Var(expr)
VarP(expr)

VarP evala una poblacin, y Var evala una muestra de la poblacin.

Expr 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)

Si la consulta contiene menos de dos registros, Var y VarP devuelven Null (esto indica que la
varianza no puede calcularse). Puede utilizar Var y VarP en una expresin de consulta o en una
Instruccin SQL.
Manual de Access XP: Consultas Avanzadas y SQL 63

SELECT Var(Gastos) AS Varianza FROM Pedidos WHERE Pais = 'Espaa';
SELECT VarP(Gastos) AS Varianza FROM Pedidos WHERE Pais = 'Espaa';








































Manual de Access XP: Consultas Avanzadas y SQL 64
CAPTULO 9: CONSULTAS DE ACCIN
CON SQL






9.1. CONSULTAS DE ACCIN

Las consultas de accin son aquellas que no devuelven ningn registro, son las encargadas de
acciones como aadir y borrar y modificar registros.

9.2. DELETE

Crea una consulta de eliminacin que elimina los registros de una o ms de las tablas listadas
en la clusula FROM que satisfagan la clusula WHERE. Esta consulta elimina los registros
completos, no es posible eliminar el contenido de algn campo en concreto.

Su sintaxis es:

DELETE Tabla.* FROM Tabla WHERE criterio

DELETE es especialmente til cuando se desea eliminar varios registros. En una instruccin
DELETE con mltiples tablas, debe incluir el nombre de tabla (Tabla.*). Si especifica ms de
una tabla desde la que eliminar registros, todas deben ser tablas de muchos a uno. Si desea
eliminar todos los registros de una tabla, eliminar la propia tabla es ms eficiente que ejecutar
una consulta de borrado.

Se puede utilizar DELETE para eliminar registros de una nica tabla o desde varios lados de
una relacin uno a muchos. Las operaciones de eliminacin en cascada en una consulta
nicamente eliminan desde varios lados de una relacin. Por ejemplo, en la relacin entre las
tablas Clientes y Pedidos, la tabla Pedidos es la parte de muchos por lo que las operaciones en
cascada solo afectaran a la tabla Pedidos. Una consulta de borrado elimina los registros
completos, no nicamente los datos en campos especficos. Si desea eliminar valores en un
campo especificado, crear una consulta de actualizacin que cambie los valores a Null.

Una vez que se han eliminado los registros utilizando una consulta de borrado, no puede
deshacer la operacin. Si desea saber qu registros se eliminarn, primero examine los
resultados de una consulta de seleccin que utilice el mismo criterio y despus ejecute la
consulta de borrado. Mantenga copias de seguridad de sus datos en todo momento. Si elimina
los registros equivocados podr recuperarlos desde las copias de seguridad.

DELETE * FROM Empleados WHERE Cargo = 'Vendedor';

9.3. INSERT INTO

Agrega un registro en una tabla. Se la conoce como una consulta de datos aadidos. Esta
consulta puede ser de dos tipo: Insertar un nico registro Insertar en una tabla los registros
contenidos en otra tabla.


Manual de Access XP: Consultas Avanzadas y SQL 65
9.3.1. PARA INSERTAR UN NICO REGISTRO

En este caso la sintaxis es la siguiente:

INSERT INTO Tabla (campo1, campo2, .., campoN)
VALUES (valor1, valor2, ..., valorN)

Esta consulta graba en el campo1 el valor1, en el campo2 y valor2 y as sucesivamente. Hay
que prestar especial atencin a acotar entre comillas simples (') los valores literales (cadenas
de caracteres) y las fechas indicarlas en formato mm- dd-aa y entre caracteres de almohadillas
(#).

9.3.2. PARA INSERTAR REGISTROS DE OTRA TABLA

En este caso la sintaxis es:

INSERT INTO Tabla [IN base_externa] (campo1, campo2, ..., campoN)
SELECT TablaOrigen.campo1, TablaOrigen.campo2, ..., TablaOrigen.campoN
FROM TablaOrigen

En este caso se seleccionarn los campos 1,2, ..., n dela tabla origen y se grabarn en los
campos 1,2,.., n de la Tabla. La condicin SELECT puede incluir la clusula WHERE para filtrar
los registros a copiar.

Si Tabla y TablaOrigen poseen la misma estrucutra podemos simplificar la sintaxis a:

INSERT INTO Tabla SELECT TablaOrigen.* FROM TablaOrigen

De esta forma los campos de TablaOrigen se grabarn en Tabla, para realizar esta operacin
es necesario que todos los campos de TablaOrigen estn contenidos con igual nombre en
Tabla. Con otras palabras que Tabla posea todos los campos de TablaOrigen (igual nombre e
igual tipo).

En este tipo de consulta hay que tener especial atencin con los campos contadores o
autonumricos puesto que al insertar un valor en un campo de este tipo se escribe el valor que
contenga su campo homlogo en la tabla origen, no incrementandose como le corresponde.
Se puede utilizar la instruccin INSERT INTO para agregar un registro nico a una tabla,
utilizando la sintaxis de la consulta de adicin de registro nico tal y como se mostr
anteriormente. En este caso, su cdigo especfica el nombre y el valor de cada campo del
registro. Debe especificar cada uno de los campos del registro al que se le va a asignar un
valor as como el valor para dicho campo. Cuando no se especifica dicho campo, se inserta el
valor predeterminado o Null. Los registros se agregan al final de la tabla.

Tambin se puede utilizar INSERT INTO para agregar un conjunto de registros pertenecientes
a otra tabla o consulta utilizando la clusula SELECT ... FROM como se mostr anteriormente
en la sintaxis de la consulta de adicin de mltiples registros. En este caso la clusula SELECT
especifica los campos que se van a agregar en la tabla destino especificada.

La tabla destino u origen puede especificar una tabla o una consulta.

Si la tabla destino contiene una clave principal, hay que segurarse que es nica, y con valores
no-Null ; si no es as, no se agregarn los registros. Si se agregan registros a una tabla con un
campo Contador , no se debe incluir el campo Contador en la consulta. Se puede emplear la
clusula IN para agregar registros a una tabla en otra base de datos.

Se pueden averiguar los registros que se agregarn en la consulta ejecutando primero una
consulta de seleccin que utilice el mismo criterio de seleccin y ver el resultado. Una consulta
Manual de Access XP: Consultas Avanzadas y SQL 66
de adicin copia los registros de una o ms tablas en otra. Las tablas que contienen los
registros que se van a agregar no se vern afectadas por la consulta de adicin. En lugar de
agregar registros existentes en otra tabla, se puede especificar los valores de cada campo en
un nuevo registro utilizando la clusula VALUES.

Si se omite la lista de campos, la clusula VALUES debe incluir un valor para cada campo de la
tabla, de otra forma fallar INSERT.

INSERT INTO Clientes SELECT Clientes_Viejos.* FROM Clientes_Nuevos;
INSERT INTO Empleados (Nombre, Apellido, Cargo)
VALUES ('Luis', 'Snchez', 'Becario');
INSERT INTO Empleados SELECT Vendedores.* FROM Vendedores
WHERE Fecha_Contratacion < Now() - 30;

9.4. UPDATE

Crea una consulta de actualizacin que cambia los valores de los campos de una tabla
especificada basndose en un criterio especfico.

Su sintaxis es:

UPDATE Tabla SET Campo1=Valor1, Campo2=Valor2, ... CampoN=ValorN
WHERE Criterio;

UPDATE es especialmente til cuando se desea cambiar un gran nmero de registros o
cuando stos se encuentran en mltiples tablas. Puede cambiar varios campos a la vez. El
ejemplo siguiente incrementa los valores Cantidad pedidos en un 10 por ciento y los valores
Transporte en un 3 por ciento para aquellos que se hayan enviado al Reino Unido.:

UPDATE Pedidos SET Pedido = Pedidos * 1.1, Transporte = Transporte * 1.03
WHERE PaisEnvo = 'ES';

UPDATE no genera ningn resultado. Para saber qu registros se van a cambiar, hay que
examinar primero el resultado de una consulta de seleccin que utilice el mismo criterio y
despus ejecutar la consulta de actualizacin.

UPDATE Empleados SET Grado = 5 WHERE Grado = 2;
UPDATE Productos SET Precio = Precio * 1.1 WHERE Proveedor = 8 AND Familia = 3;

Si en una consulta de actualizacin suprimimos la clusula WHERE todos los registros de la
tabla sealada sern actualizados.

UPDATE Empleados SET Salario = Salario * 1.1








Manual de Access XP: Consultas Avanzadas y SQL 67
CAPTULO 10: TIPOS DE DATOS






10.1. TIPOS DE DATOS

Los tipos de datos SQL se clasifican en 13 tipos de datos primarios y de varios sinnimos
vlidos reconocidos por dichos tipos de datos.

Tipos de datos primarios:

Tipo de
Datos
Longitud Descripcin
BINARY 1 byte
Para consultas sobre tabla adjunta de productos de bases de datos
que definen un tipo de datos Binario.
BIT 1 byte Valores Si/No True/False
BYTE 1 byte Un valor entero entre 0 y 255.
COUNTER 4 bytes Un nmero incrementado automticamente (de tipo Long)
CURRENCY 8 bytes
Un entero escalable entre 922.337.203.685.477,5808 y
922.337.203.685.477,5807.
DATETIME 8 bytes Un valor de fecha u hora entre los aos 100 y 9999.
SINGLE 4 bytes
Un valor en punto flotante de precisin simple con un rango de -
3.402823*10
38
a -1.401298*10
-45
para valores negativos,
1.401298*10
-45
a 3.402823*10
38
para valores positivos, y 0.
DOUBLE 8 bytes
Un valor en punto flotante de doble precisin con un rango de -
1.79769313486232*10
308
a -4.94065645841247*10
-324
para
valores negativos, 4.94065645841247*10
-324
a
1.79769313486232*10
308
para valores positivos, y 0.
SHORT 2 bytes Un entero corto entre -32,768 y 32,767.
LONG 4 bytes Un entero largo entre -2,147,483,648 y 2,147,483,647.
LONGTEXT
1 byte por
carcter
De cero a un mximo de 1.2 gigabytes.
LONGBINARY
Segn se
necesite
De cero 1 gigabyte. Utilizado para objetos OLE.
TEXT
1 byte por
caracter
De cero a 255 caracteres.

La siguiente tabla recoge los sinonimos de los tipos de datos definidos:

Manual de Access XP: Consultas Avanzadas y SQL 68
Tipo de Dato Sinnimos
BINARY VARBINARY
BIT
BOOLEAN
LOGICAL
LOGICAL1
YESNO
BYTE INTEGER1
COUNTER AUTOINCREMENT
CURRENCY MONEY
DATETIME
DATE
TIME
TIMESTAMP
SINGLE
FLOAT4
IEEESINGLE
REAL
DOUBLE
FLOAT
FLOAT8
IEEEDOUBLE
NUMBER
NUMERIC
SHORT
INTEGER2
SMALLINT
LONG
INT
INTEGER
INTEGER4
LONGBINARY
GENERAL
OLEOBJECT
LONGTEXT
LONGCHAR
MEMO
NOTE
TEXT
ALPHANUMERIC
CHAR
CHARACTER
STRING
VARCHAR
VARIANT (No
Admitido)
VALUE

Manual de Access XP: Consultas Avanzadas y SQL 69
CAPTULO 11: SUBCONSULTAS






11.1. SUBCONSULTAS

Una subconsulta es una instruccin SELECT anidada dentro de una instruccin SELECT,
SELECT...INTO, INSERT...INTO, DELETE, o UPDATE o dentro de otra subconsulta.

Puede utilizar tres formas de sintaxis para crear una subconsulta:

comparacin [ANY | ALL | SOME] (instruccin sql)
expresin [NOT] IN (instruccin sql)
[NOT] EXISTS (instruccin sql)

En donde:

comparacin : Es una expresin y un operador de comparacin que compara la expresin con
el resultado de la subconsulta.
expresin : Es una expresin por la que se busca el conjunto resultante de la subconsulta.
instruccin sql :Es una instruccin SELECT, que sigue el mismo formato y reglas que
cualquier otra instruccin SELECT. Debe ir entre parntesis.

Se puede utilizar una subconsulta en lugar de una expresin en la lista de campos de una
instruccin SELECT o en una clusula WHERE o HAVING. En una subconsulta, se utiliza una
instruccin SELECT para proporcionar un conjunto de uno o ms valores especificados para
evaluar en la expresin de la clusula WHERE o HAVING.

Se puede utilizar el predicado ANY o SOME, los cuales son sinnimos, para recuperar registros
de la consulta principal, que satisfagan la comparacin con cualquier otro registro recuperado
en la subconsulta. El ejemplo siguiente devuelve todos los productos cuyo precio unitario es
mayor que el de cualquier producto vendido con un descuento igual o mayor al 25 por ciento.:

SELECT * FROM Productos WHERE PrecioUnidad > ANY
(SELECT PrecioUnidad FROM DetallePedido WHERE Descuento >= 0 .25);

El predicado ALL se utiliza para recuperar nicamente aquellos registros de la consulta
principal que satisfacen la comparacin con todos los registros recuperados en la subconsulta.
Si se cambia ANY por ALL en el ejemplo anterior, la consulta devolver nicamente aquellos
productos cuyo precio unitario sea mayor que el de todos los productos vendidos con un
descuento igual o mayor al 25 por ciento. Esto es mucho ms restrictivo.

El predicado IN se emplea para recuperar nicamente aquellos registros de la consulta
principal para los que algunos registros de la subconsulta contienen un valor igual. El ejemplo
siguiente devuelve todos los productos vendidos con un descuento igual o mayor al 25 por
ciento.:

SELECT * FROM Productos WHERE IDProducto IN
(SELECT IDProducto FROM DetallePedido WHERE Descuento >= 0.25);
Manual de Access XP: Consultas Avanzadas y SQL 70
Inversamente se puede utilizar NOT IN para recuperar nicamente aquellos registros de la
consulta principal para los que no hay ningn registro de la subconsulta que contenga un valor
igual.

El predicado EXISTS (con la palabra reservada NOT opcional) se utiliza en comparaciones de
verdad/falso para determinar si la subconsulta devuelve algn registro.
Se puede utilizar tambin alias del nombre de la tabla en una subconsulta para referirse a
tablas listadas en la clusula FROM fuera de la subconsulta. El ejemplo siguiente devuelve los
nombres de los empleados cuyo salario es igual o mayor que el salario medio de todos los
empleados con el mismo ttulo. A la tabla Empleados se le ha dado el alias T1::

SELECT Apellido, Nombre, Titulo, Salario FROM Empleados AS T1
WHERE Salario >= (SELECT Avg(Salario) FROM Empleados
WHERE T1.Titulo = Empleados.Titulo) ORDER BY Titulo;

En el ejemplo anterior , la palabra reservada AS es opcional.

SELECT Apellidos, Nombre, Cargo, Salario FROM Empleados
WHERE Cargo LIKE "Agente Ven*" AND Salario > ALL (SELECT Salario FROM
Empleados WHERE (Cargo LIKE "*Jefe*") OR (Cargo LIKE "*Director*"));

Obtiene una lista con el nombre, cargo y salario de todos los agentes de ventas cuyo salario es
mayor que el de todos los jefes y directores.

SELECT DISTINCTROW NombreProducto, Precio_Unidad FROM Productos
WHERE (Precio_Unidad = (SELECT Precio_Unidad FROM Productos WHERE
Nombre_Producto = "Almbar anisado");

Obtiene una lista con el nombre y el precio unitario de todos los productos con el mismo precio
que el almbar anisado.

SELECT DISTINCTROW Nombre_Contacto, Nombre_Compaia, Cargo_Contacto,
Telefono FROM Clientes WHERE (ID_Cliente IN (SELECT DISTINCTROW
ID_Cliente FROM Pedidos WHERE Fecha_Pedido >= #04/1/93# <#07/1/93#);

Obtiene una lista de las compaas y los contactos de todos los clientes que han realizado un
pedido en el segundo trimestre de 1993.

SELECT Nombre, Apellidos FROM Empleados AS E WHERE EXISTS
(SELECT * FROM Pedidos AS O WHERE O.ID_Empleado = E.ID_Empleado);

Selecciona el nombre de todos los empleados que han reservado al menos un pedido.

SELECT DISTINCTROW Pedidos.Id_Producto, Pedidos.Cantidad,
(SELECT DISTINCTROW Productos.Nombre FROM Productos WHERE
Productos.Id_Producto = Pedidos.Id_Producto) AS ElProducto FROM
Pedidos WHERE Pedidos.Cantidad > 150 ORDER BY Pedidos.Id_Producto;

Recupera el Cdigo del Producto y la Cantidad pedida de la tabla pedidos, extrayendo el
nombre del producto de la tabla de productos.






Manual de Access XP: Consultas Avanzadas y SQL 71
CAPTULO 12: CONSULTAS DE
REFERENCIAS CRUZADAS EN SQL






12.1. CONSULTAS DE REFERENCIAS CRUZADAS

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

Producto / Ao 1996 1997
Pantalones 1.250 3.000
Camisas 8.560 1.253
Zapatos 4.369 2.563

Si tenemos una tabla de productos y otra tabla de pedidos, podemos visualizar en total de
productos pedidos por ao para un artculo determinado, tal y como se visualiza en la tabla
anterior.

La sintaxis para este tipo de consulta es la siguiente:

TRANSFORM funcin agregada instruccin select PIVOT campo pivot
[IN (valor1[, valor2[, ...]])]

En donde:

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

Para resumir datos utilizando una consulta de referencia cruzada, se seleccionan los valores de
los campos o expresiones especificadas como cabeceras de columnas de tal forma que pueden
verse los datos en un formato ms compacto que con una consulta de seleccin.

TRANSFORM es opcional pero si se incluye es la primera instruccin de una cadena SQL.
Precede a la instruccin SELECT que especifica los campos utilizados como encabezados de fila
y una clusula GROUP BY que especifica el agrupamiento de las filas. Opcionalmente puede
incluir otras clusulas como por ejemplo WHERE, que especifica una seleccin adicional o un
criterio de ordenacin .

Manual de Access XP: Consultas Avanzadas y SQL 72
Los valores devueltos en campo pivot se utilizan como encabezados de columna en el
resultado de la consulta. Por ejemplo, al utilizar las cifras de ventas en el mes de la venta
como pivot en una consulta de referencia cruzada se crearan 12 columnas. Puede restringir el
campo pivot para crear encabezados a partir de los valores fijos (valor1, valor2) listados en la
clusula opcional IN.

Tambin puede incluir valores fijos, para los que no existen datos, para crear columnas
adicionales.

Ejemplos

TRANSFORM Sum(Cantidad) AS Ventas SELECT Producto, Cantidad FROM
Pedidos WHERE Fecha Between #01-01-98# And #12-31-98# GROUP BY Producto
ORDER BY Producto PIVOT DatePart("m", Fecha);

Crea una consulta de tabla de referencias cruzadas que muestra las ventas de productos por
mes para un ao especfico. Los meses aparecen de izquierda a derecha como columnas y los
nombres de los productos aparecen de arriba hacia abajo como filas.

TRANSFORM Sum(Cantidad) AS Ventas SELECT Compania FROM Pedidos
WHERE Fecha Between #01-01-98# And #12-31-98# GROUP BY Compania
ORDER BY Compania PIVOT "Trimestre " & DatePart("q", Fecha) In ('Trimestre1',
'Trimestre2', 'Trimestre 3', 'Trimestre 4');

Crea una consulta de tabla de referencias cruzadas que muestra las ventas de productos por
trimestre de cada proveedor en el ao indicado. Los trimestres aparecen de izquierda a
derecha como columnas y los nombres de los proveedores aparecen de arriba hacia abajo
como filas.

Un caso prctico:

Se trata de resolver el siguiente problema: tenemos una tabla de productos con dos campos,
el cdigo y el nombre del producto, tenemos otra tabla de pedidos en la que anotamos el
cdigo del producto, la fecha del pedido y la cantidad pedida. Deseamos consultar los totales
de producto por ao, calculando la media anual de ventas.

Estructura y datos de las tablas:

Artculos:

ID Nombre
1 Zapatos
2 Pantalones
3 Blusas

Pedidos:

Id Fecha Cantidad
1 11/11/1996 250
2 11/11/1996 125
3 11/11/1996 520
1 12/10/1996 50
Manual de Access XP: Consultas Avanzadas y SQL 73
2 04/05/1996 250
3 05/08/1996 100
1 01/01/1997 40
2 02/08/1997 60
3 05/10/1997 70
1 12/12/1997 8
2 15/12/1997 520
3 17/10/1997 1250

Para resolver la consulta planteamos la siguiente consulta:

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

y obtenemos el siguiente resultado:

Producto Cdigo TOTAL Media 1996 1997
Zapatatos 1 348 87 300 48
Pantalones 2 955 238,75 375 580
Blusas 3 1940 485 620 1320

Comentarios a la consulta:

La clsula TRANSFORM indica el valor que deseamos visualizar en las columnas que
realmente pertenecen a la consulta, en este caso 1996 y 1997, puesto que las dems
columnas son opcionales.

SELECT especifica el nombre de las columnas opcionales que deseamos visualizar, en este
caso Producto, Cdigo, Total y Media, indicando el nombre del campo que deseamos mostrar
en cada columna o el valor de la misma. Si incluimos una funcin de clculo el resultado se
har en base a los datos de la fila actual y no al total de los datos.

FROM especifica el origen de los datos. La primera tabla que debe figurar es aquella de donde
deseamos extraer los datos, esta tabla debe contener al menos tres campos, uno para los
ttulos de la fila, otros para los ttulos de la columna y otro para calcular el valor de las celdas.
En este caso en concreto se deseaba visualizar el nombre del producto, como el tabla de
pedidos slo figuraba el cdigo del mismo se aadi una nueva columna en la clusula select
llamada Producto que se corresponda con el campo Nombre de la tabla de artculos.

Para vincular el cdigo del artculo de la tabla de pedidos con el nombre del misma de la tabla
artculos se insert la clusula INNER JOIN.

La clusula GROUP BY especifica el agrupamiento de los registros, contrariamente a los
manuales de instruccin esta clusula no es opcional ya que debe figurar siempre y debemos
agrupar los registros por el campo del cual extraemos la informacin. En este caso existen dos
Manual de Access XP: Consultas Avanzadas y SQL 74
campos del cual extraemos la informacin: pedidos.cantidad y artculos.nombre, por ellos
agrupamos por los campos.

Para finalizar la clusula PIVOT indica el nombre de las columnas no opcionales, en este caso
1996 y 1997 y como vamos a el dato que aparecer en las columnas, en este caso empleamos
el ao en que se produjo el pedido, extrayndolo del campo pedidos.fecha.

Otras posibilidades de fecha de la clusula pivot son las siguientes:

Para agrupamiento por Trimestres PIVOT "Tri " & DatePart("q",[Fecha]);
Para agrupamiento por meses (sin tener en cuenta el ao) PIVOT Format([Fecha],"mmm") In
("Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic");
Para agrupar por das PIVOT Format([Fecha],"Short Date");














Manual de Access XP: Consultas Avanzadas y SQL 75
CAPTULO 13: CONSULTAS DE UNIN






13.1. CONSULTAS DE UNIN

Las consultas de unin se dividen en dos tipos : consultas de unin internas y consultas de
unin externas. Estas consultas sirven para vincular tablas y combinar registros siempre que
haya concordancia entre valores de una campo comn o si las tablas son independientes.

13.2. CONSULTAS DE UNIN INTERNAS

Las vinculaciones entre tablas se realiza mediante la clusula INNER que combina registros de
dos tablas siempre que haya concordancia de valores en un campo comn.

Su sintaxis es:

SELECT campos FROM tb1 INNER JOIN tb2 ON tb1.campo1 comp tb2.campo2

En donde:

tb1, tb2: Son los nombres de las tablas desde las que se combinan los registros.
campo1, campo2: Son los nombres de los campos que se combinan. Si no son numricos, los
campos deben ser del mismo tipo de datos y contener el mismo tipo de datos, pero no tienen
que tener el mismo nombre.
Comp: Es cualquier operador de comparacin relacional : =, <, >, <=, >=, o <>.

Se puede utilizar una operacin INNER JOIN en cualquier clusula FROM. Esto crea una
combinacin por equivalencia, conocida tambin como unin interna. Las combinaciones Equi
son las ms comunes; stas combinan los registros de dos tablas siempre que haya
concordancia de valores en un campo comn a ambas tablas. Se puede utilizar INNER JOIN
con las tablas Departamentos y Empleados para seleccionar todos los empleados de cada
departamento. Por el contrario, para seleccionar todos los departamentos (incluso si alguno de
ellos no tiene ningn empleado asignado) se emplea LEFT JOIN o todos los empleados
(incluso si alguno no est asignado a ningn departamento), en este caso RIGHT JOIN.

Si se intenta combinar campos que contengan datos Memo u Objeto OLE, se produce un error.
Se pueden combinar dos campos numricos cualesquiera, incluso si son de diferente tipo de
datos. Por ejemplo, puede combinar un campo Numrico para el que la propiedad Size de su
objeto Field est establecida como Entero, y un campo Contador.

El ejemplo siguiente muestra cmo podra combinar las tablas Categoras y Productos
basndose en el campo IDCategoria:

SELECT Nombre_Categora, NombreProducto
FROM Categorias INNER JOIN Productos
ON Categorias.IDCategoria = Productos.IDCategoria;

En el ejemplo anterior, IDCategoria es el campo combinado, pero no est incluido en la salida
de la consulta ya que no est incluido en la instruccin SELECT. Para incluir el campo
Manual de Access XP: Consultas Avanzadas y SQL 76
combinado, incluir el nombre del campo en la instruccin SELECT, en este caso,
Categorias.IDCategoria.
Tambin se pueden enlazar varias clusulas ON en una instruccin JOIN, utilizando la sintaxis
siguiente:

SELECT campos
FROM tabla1 INNER JOIN tabla2
ON tb1.campo1 comp tb2.campo1 AND
ON tb1.campo2 comp tb2.campo2) OR
ON tb1.campo3 comp tb2.campo3)];

Tambin puede anidar instrucciones JOIN utilizando la siguiente sintaxis:

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

Un LEFT JOIN o un RIGHT JOIN puede anidarse dentro de un INNER JOIN, pero un INNER
JOIN no puede anidarse dentro de un LEFT JOIN o un RIGHT JOIN.

Ejemplo

SELECT DISTINCTROW Sum([Precio unidad] * [Cantidad]) AS [Ventas],
[Nombre] & " " & [Apellidos] AS [Nombre completo] FROM [Detalles de pedidos],
Pedidos, Empleados, Pedidos INNER JOIN [Detalles de pedidos] ON Pedidos.
[ID de pedido] = [Detalles de pedidos].[ID de pedido], Empleados INNER JOIN
Pedidos ON Empleados.[ID de empleado] = Pedidos.[ID de empleado] GROUP BY
[Nombre] & " " & [Apellidos];

Crea dos combinaciones equivalentes: una entre las tablas Detalles de pedidos y Pedidos, y la
otra entre las tablas Pedidos y Empleados. Esto es necesario ya que la tabla Empleados no
contiene datos de ventas y la tabla Detalles de pedidos no contiene datos de los empleados. La
consulta produce una lista de empleados y sus ventas totales.

Si empleamos la clusula INNER en la consulta se seleccionarn slo aquellos registros de la
tabla de la que hayamos escrito a la izquierda de INNER JOIN que contengan al menos un
registro de la tabla que hayamos escrito a la derecha.

Para solucionar esto tenemos dos clusulas que sustituyen a la palabra clave INNER, estas
clusulas son LEFT y RIGHT. LEFT toma todos los registros de la tabla de la izquierda aunque
no tengan ningn registro en la tabla de la izquierda. RIGHT realiza la misma operacin pero
al contrario, toma todos los registros de la tabla de la derecha aunque no tenga ningn
registro en la tabla de la izquierda.

13.3. CONSULTAS DE UNIN EXTERNAS

Se utiliza la operacin UNION para crear una consulta de unin, combinando los resultados de
dos o ms consultas o tablas independientes. Su sintaxis es:

[TABLE] consulta1 UNION [ALL] [TABLE]
consulta2 [UNION [ALL] [TABLE] consultan [ ... ]]

En donde:

Manual de Access XP: Consultas Avanzadas y SQL 77
consulta1, consulta2, consultan: Son instrucciones SELECT, el nombre de una consulta
almacenada o el nombre de una tabla almacenada precedido por la palabra clave TABLE.

Puede combinar los resultados de dos o ms consultas, tablas e instrucciones SELECT, en
cualquier orden, en una nica operacin UNION. El ejemplo siguiente combina una tabla
existente llamada Nuevas Cuentas y una instruccin SELECT:

TABLE [Nuevas Cuentas] UNION ALL SELECT * FROM Clientes
WHERE [Cantidad pedidos] > 1000;

Si no se indica lo contrario, no se devuelven registros duplicados cuando se utiliza la operacin
UNION, no obstante puede incluir el predicado ALL para asegurar que se devuelven todos los
registros. Esto hace que la consulta se ejecute ms rpidamente. Todas las consultas en una
operacin UNION deben pedir el mismo nmero de campos, no obstante los campos no tienen
porqu tener el mismo tamao o el mismo tipo de datos.

Se puede utilizar una clusula GROUP BY y/o HAVING en cada argumento consulta para
agrupar los datos devueltos. Puede utilizar una clusula ORDER BY al final del ltimo
argumento consulta para visualizar los datos devueltos en un orden especfico.

SELECT [Nombre de compaa], Ciudad FROM Proveedores WHERE
Pas = 'Brasil' UNION SELECT [Nombre de compaa], Ciudad FROM Clientes
WHERE Pas = "Brasil"

Recupera los nombres y las ciudades de todos proveedores y clientes de Brasil

SELECT [Nombre de compaa], Ciudad FROM Proveedores WHERE Pas = 'Brasil'
UNION SELECT [Nombre de compaa], Ciudad FROM Clientes WHERE Pas =
'Brasil' ORDER BY Ciudad

Recupera los nombres y las ciudades de todos proveedores y clientes radicados en Brasil,
ordenados por el nombre de la ciudad

SELECT [Nombre de compaa], Ciudad FROM Proveedores WHERE Pas = 'Brasil'
UNION SELECT [Nombre de compaa], Ciudad FROM Clientes WHERE Pas =
'Brasil' UNION SELECT [Apellidos], Ciudad FROM Empleados WHERE Regin =
'Amrica del Sur'

Recupera los nombres y las ciudades de todos los proveedores y clientes de brasil y los
apellidos y las ciudades de todos los empleados de Amrica del Sur

TABLE [Lista de clientes] UNION TABLE [Lista de proveedores]

Recupera los nombres y cdigos de todos los proveedores y cliente









CAPTULO 14: ESTRUCTURAS DE
TABLAS EN SQL
Manual de Access XP: Consultas Avanzadas y SQL 78







14.1. ESTRUCTURA DE LAS TABLAS

En este captulo resumimos consultas en sql que tienen como objetivo principal crear o
modificar la estructura de tablas.

14.1.1. CREACIN DE TABLAS NUEVAS

Si se est utilizando el motor de datos de Microsoft para acceder a bases de datos access, slo
se puede emplear esta instruccin para crear bases de datos propias de access.

Su sintaxis es:

CREATE TABLE tabla (campo1 tipo (tamao) ndice1 ,
campo2 tipo (tamao) ndice2 , ...,
ndice multicampo , ... )

En donde:

Parte Descripcin
tabla Es el nombre de la tabla que se va a crear.
campo1
campo2
Es el nombre del campo o de los campos que se van a crear en la nueva
tabla. La nueva tabla debe contener, al menos, un campo.
tipo Es el tipo de datos de campo en la nueva tabla. (Ver Tipos de Datos)
tamao Es el tamao del campo slo se aplica para campos de tipo texto.
ndice1
ndice2
Es una clusula CONSTRAINT que define el tipo de indice a crear. Esta
clusula en opcional.
ndice
multicampos
Es una clusula CONSTRAINT que define el tipo de indice multicampos a
crear. Un ndice multi campo es aquel que est indexado por el contenido de
varios campos. Esta clusula en opcional.

CREATE TABLE Empleados (Nombre TEXT (25) , Apellidos TEXT (50));

Crea una nueva tabla llamada Empleados con dos campos, uno llamado Nombre de tipo texto
y longutid 25 y otro llamado apellidos con longitud 50.

CREATE TABLE Empleados (Nombre TEXT (10), Apellidos TEXT, Fecha_Nacimiento
DATETIME) CONSTRAINT IndiceGeneral UNIQUE ([Nombre], [Apellidos],
[Fecha_Nacimiento]);

Crea una nueva tabla llamada Empleados con un campo Nombre de tipo texto y longitud 10,
otro con llamado Apellidos de tipo texto y longitud predeterminada (50) y uno ms llamado
Fecha_Nacimiento de tipo Fecha/Hora. Tambin crea un ndice nico (no permite valores
repetidos) formado por los tres campos.

Manual de Access XP: Consultas Avanzadas y SQL 79
CREATE TABLE Empleados (ID INTEGER CONSTRAINT IndicePrimario PRIMARY,
Nombre TEXT, Apellidos TEXT, Fecha_Nacimiento DATETIME);

Crea una tabla llamada Empleados con un campo Texto de longitud predeterminada (50)
llamado Nombre y otro igual llamado Apellidos, crea otro campo llamado Fecha_Nacimiento de
tipo Fecha/Hora y el campo ID de tipo entero el que establece como clave principal.

14.1.2. LA CLUSULA CONSTRAINT

Se utiliza la clusula CONSTRAINT en las instrucciones ALTER TABLE y CREATE TABLE para
crear o eliminar ndices. Existen dos sintaxis para esta clusula dependiendo si desea Crear
Eliminar un ndice de un nico campo o si se trata de un campo multindice. Si se utiliza el
motor de datos de Microsoft, slo podr utilizar esta clusula con las bases de datos propias de
dicho motor.

Para los ndices de campos nicos:

CONSTRAINT nombre {PRIMARY KEY | UNIQUE | REFERENCES tabla externa
[(campo externo1, campo externo2)]}

Para los ndices de campos mltiples:

CONSTRAINT nombre {PRIMARY KEY (primario1[, primario2 [, ...]]) |
UNIQUE (nico1[, nico2 [, ...]]) |
FOREIGN KEY (ref1[, ref2 [, ...]]) REFERENCES tabla externa [(campo externo1
[,campo externo2 [, ...]])]}

Parte Descripcin
nombre Es el nombre del ndice que se va a crear.
primarioN Es el nombre del campo o de los campos que forman el ndice primario.
nicoN Es el nombre del campo o de los campos que forman el ndice de clave nica.
refN
Es el nombre del campo o de los campos que forman el ndice externo (hacen
referencia a campos de otra tabla).
tabla externa
Es el nombre de la tabla que contiene el campo o los campos referenciados en
refN
campos
externos
Es el nombre del campo o de los campos de la tabla externa especificados por
ref1, ref2, ..., refN

Si se desea crear un ndice para un campo cuando se esta utilizando las instrucciones ALTER
TABLE o CREATE TABLE la clusula CONTRAINT debe aparecer inmediatamente despus de
la especificacin del campo indexeado.

Si se desea crear un ndice con mltiples campos cuando se est utilizando las instrucciones
ALTER TABLE o CREATE TABLE la clusula CONSTRAINT debe aparecer fuera de la clusula
de creacin de tabla.

Tipo de
Indice
Descripcin
UNIQUE
Genera un ndece de clave nica. Lo que implica que los registros de la tabla no
pueden contener el mismo valor en los campos indexados.
PRIMARY Genera un ndice primario el campo o los campos especificados. Todos los
Manual de Access XP: Consultas Avanzadas y SQL 80
KEY campos de la clave principal deben ser nicos y no nulos, cada tabla slo puede
contener una nica clave principal.
FOREIGN
KEY
Genera un ndice externo (toma como valor del ndice campos contenidos en
otras tablas). Si la clave principal de la tabla externa consta de ms de un
campo, se debe utilizar una definicin de ndice de mltiples campos, listando
todos los campos de referencia, el nombre de la tabla externa, y los nombres
de los campos referenciados en la tabla externa en el mismo orden que los
campos de referencia listados. Si los campos referenciados son la clave
principal de la tabla externa, no tiene que especificar los campos referenciados,
predeterminado por valor, el motor Jet se comporta como si la clave principal
de la tabla externa fueran los campos referenciados .

14.1.3. CREACIN DE NDICES

Si se utiliza el motor de datos Jet de Microsoft slo se pueden crear ndices en bases de datos
del mismo motor. La sintaxis para crear un ndice en ua tabla ya definida en la siguiente:

CREATE [ UNIQUE ] INDEX ndice
ON tabla (campo [ASC|DESC][, campo [ASC|DESC], ...])
[WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]

En donde:

Parte Descripcin
ndice Es el nombre del ndice a crear.
tabla Es el nombre de una tabla existentes en la que se crear el ndice.
campo Es el nombre del campo o lista de campos que consituyen el ndice.
ASC|DESC
Indica el orden de los valores de lso campos ASC indica un orden ascendente
(valor predeterminado) y DESC un orden descendente.
UNIQUE Indica que el indice no puede contener valores duplicados.
DISALLOW
NULL
Prohibe valores nulos en el ndice
IGNORE
NULL
Excluye del ndice los valores nulos incluidos en los campos que lo componen.
PRIMARY
Asigna al ndice la categora de clave principal, en cada tabla slo puede existir
un nico indice que sea "Clave Principal". Si un ndice es clave principal implica
que que no puede contener valores nulos ni duplicados.

Se puede utilizar CREATE INDEX para crear un pseudo ndice sobre una tabla adjunta en una
fuente de datos ODBC tal como SQL Server que no tenga todava un ndice. No necesita
permiso o tener acceso a un servidor remoto para crear un pseudo ndice, adems la base de
datos remota no es consciente y no es afectada por el pseudo ndice. Se utiliza la misma
sintaxis para las tabla adjunta que para las originales. Esto es especialmente til para crear un
ndice en una tabla que sera de slo lectura debido a la falta de un ndice.

CREATE INDEX MiIndice ON Empleados (Prefijo, Telefono);

Crea un ndice llamado MiIndice en la tabla empleados con los campos Prefijo y Telefono.

CREATE UNIQUE INDEX MiIndice ON Empleados (ID) WITH DISALLOW NULL;
Manual de Access XP: Consultas Avanzadas y SQL 81

Crea un ndice en la tabla Empleados utilizando el campo ID, obligando que que el campo ID
no contenga valores nulos ni repetidos.

14.1.4. MODIFICAR EL DISEO DE UNA TABLA

Modifica el diseo de una tabla ya existente, se puden modificar los campos o los ndices
existentes. Su sintaxis es:

ALTER TABLE tabla {ADD {COLUMN tipo de campo[(tamao)] [CONSTRAINT ndice]
CONSTRAINT ndice multicampo} |
DROP {COLUMN campo I CONSTRAINT nombre del ndice} }

En donde:

Parte Descripcin
tabla Es el nombre de la tabla que se desea modificar.
campo Es el nombre del campo que se va a aadir o eliminar.
tipo Es el tipo de campo que se va a aadir.
tamao El el tamao del campo que se va a aadir (slo para campos de texto).
ndice
Es el nombre del ndice del campo (cuando se crean campos) o el nombre
del ndice de la tabla que se desea eliminar.
ndice
multicampo
Es el nombre del ndice del campo multicampo (cuando se crean campos) o
el nombre del ndice de la tabla que se desea eliminar.


Operacin Descripcin
ADD
COLUMN
Se utiliza para aadir un nuevo campo a la tabla, indicando el nombre, el tipo
de campo y opcionalmente el tamao (para campos de tipo texto).
ADD Se utliza para agregar un ndice de multicampos o de un nico campo.
DROP
COLUMN
Se utliza para borrar un campo. Se especifica nicamente el nombre del
campo.
DROP
Se utiliza para eliminar un ndice. Se especifica nicamente el nombre del ndice
a continuacin de la palabra reservada CONSTRAINT.

ALTER TABLE Empleados ADD COLUMN Salario CURRENCY;

Agrega un campo Salario de tipo Moneda a la tabla Empleados.

ALTER TABLE Empleados DROP COLUMN Salario;

Elimina el campo Salario de la tabla Empleados.

ALTER TABLE Pedidos ADD CONSTRAINT RelacionPedidos FOREIGN KEY
(ID_Empleado) REFERENCES Empleados (ID_Empleado);

Manual de Access XP: Consultas Avanzadas y SQL 82
Agrega un indice externo a la tabla Pedidos. El ndice externo se basa en el campo
ID_Empleado y se refiere al campo ID_Empleado de la tabla Empleados. En este ejemplo no es
necesario indicar el campo junto al nombre de la tabla en la clusula REFERENCES, pues
ID_Empleado es la clave principal de la tabla Empleados.

ALTER TABLE Pedidos DROP CONSTRAINT RelacionPedidos;

Elimina el ndide de la tabla Pedidos.
Manual de Access XP: Consultas Avanzadas y SQL 83
CAPTULO 15: CONSULTAS CON
PARMETROS EN SQL






15.1. CONSULTAS CON PARMETROS

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

Su sintaxis es la siguiente:

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

En donde:

Parte Descripcin
nombre Es el nombre del parmetro
tipo Es el tipo de datos del parmetro
consulta Una consulta SQL

Puede utilizar nombre pero no tipo de datos en una clusula WHERE o HAVING.

PARAMETERS Precio_Minimo Currency, Fecha_Inicio DateTime;
SELECT IDPedido, Cantidad FROM Pedidos WHERE Precio > Precio_Minimo
AND FechaPedido >= Fecha_Inicio;

Ejemplo:

PARAMETERS [Escriba los Apellidos:] Text; SELECT * FROM Empleados
WHERE [Escriba los Apellidos:] = [Apellidos];

La ejecucin desde la base de datos solicita al usuario los apellidos del empleado y despus
muestra los resultados.
Manual de Access XP: Consultas Avanzadas y SQL 84
CAPTULO 16: ACCESO A BASES DE
DATOS EXTERNAS CON SQL






16.1. BASES DE DATOS EXTERNAS

Para el acceso a bases de datos externas se utiliza la clusula IN. Se puede acceder a base de
datos dBase, Paradox o Btrieve. Esta clusula slo permite la conexin de una base de datos
externa a la vez. Una base de datos externa es una base de datos que no sea la activa.
Aunque para mejorar los rendimientos es mejor adjuntarlas a la base de datos actual y
trabajar con ellas.

Para especificar una base de datos que no pertenece a Access Basic, se agrega un punto y
coma (;) al nombre y se encierra entre comillas simples. Tambin puede utilizar la palabra
reservada DATABASE para especificar la base de datos externa. Por ejemplo, las lneas
siguientes especifican la misma tabla:

FROM Tabla IN '[dBASE IV; DATABASE=C:\DBASE\DATOS\VENTAS;]';
FROM Tabla IN 'C:\DBASE\DATOS\VENTAS' 'dBASE IV;'

16.1.1. ACCESO A UNA BASE DE DATOS EXTERNA DE MICROSOFT ACCESS

SELECT IDCliente FROM Clientes IN MISDATOS.MDB WHERE IDCliente Like 'A*';

En donde MISDATOS.MDB es el nombre de una base de datos de Microsoft Access que
contiene la tabla Clientes.

16.1.2. ACCESO A UNA BASE DE DATOS EXTERNA DE DBASE III O IV

SELECT IDCliente FROM Clientes IN 'C:\DBASE\DATOS\VENTAS' 'dBASE IV';
WHERE IDCliente Like 'A*';

Para recuperar datos de una tabla de dBASE III+ hay que utilizar 'dBASE III+;' en lugar de
'dBASE IV;'.

16.1.3. ACCESO A UNA BASE DE DATOS DE PARADOX 3.X O 4.X

SELECT IDCliente FROM Clientes IN 'C:\PARADOX\DATOS\VENTAS'
'Paradox 4.x;' WHERE IDCliente Like 'A*';

Para recuperar datos de una tabla de Paradox versin 3.x, hay que sustituir 'Paradox 4.x;' por
'Paradox 3.x;'.

Manual de Access XP: Consultas Avanzadas y SQL I
NDICE DE CONTENIDOS






CAPTULO 1: INTRODUCCIN A CONSULTAS EN MICROSOFT ACCESS................................1
1.1. INTRODUCCIN A CONSULTAS EN MICROSOFT ACCESS .......................................1
1.2. CREACIN DE UNA CONSULTA .........................................................................2
1.3. MODOS DE VISUALIZAR UNA CONSULTA............................................................8
1.4. GUARDAR UNA CONSULTA...............................................................................9
1.5. CERRAR UNA CONSULTA................................................................................ 10
1.6. ABRIR UNA CONSULTA.................................................................................. 11
1.7. DISEO DE UNA CONSULTA........................................................................... 13
1.7.1. AGREGAR TABLAS Y/O CONSULTAS................................................................. 14
1.7.2. ELIMINAR TABLAS Y/ CONSULTAS................................................................... 14
1.7.3. CREAR O ELIMINAR RELACIONES ENTRE TABLAS PARA UNA CONSULTA ................ 14
1.7.4. MOVER O ELIMINAR CAMPOS ......................................................................... 15
1.8. CRITERIOS DE SELECCIN ............................................................................ 16
1.8.1. OPERADORES PARA RESTABLECER CRITERIOS .................................................. 17
1.8.2. EJEMPLOS DE CRITERIOS DE SELECCIN......................................................... 19
1.8.3. CONDICIONES DE TIPO O Y CONDICIONES DE TIPO Y. .................................. 20
1.9. ORDENAR REGISTROS................................................................................... 21
CAPTULO 2: CONSULTAS CON CLCULOS PREDEFINIDOS Y PERSONALIZADOS ................ 22
2.1. CONSULTAS CON CLCULOS .......................................................................... 22
2.1.1. CREAR CLCULOS PREDEFINIDOS O TOTALES................................................... 22
2.1.2. CREAR CLCULOS PERSONALIZADOS .............................................................. 24
CAPTULO 3: CONSULTAS DE ACCIN......................................................................... 28
3.1. CONSULTAS DE ACTUALIZACIN .................................................................... 28
3.2. CONSULTAS DE ELIMINACIN ........................................................................ 30
3.3. CONSULTAS DE CREACIN DE TABLA .............................................................. 31
3.4. CONSULTA DE DATOS ANEXADOS ................................................................... 34
CAPTULO 4: CONSULTAS CON PARMETROS............................................................... 37
4.1. CONSULTAS DE PARAMTROS ........................................................................ 37
CAPTULO 5: CONSULTAS AVANZADAS CON ASISTENTE................................................ 40
5.1. INTRODUCCIN ........................................................................................... 40
5.2. CONSULTAS DE TABLAS DE REFERENCIAS CRUZADAS........................................ 40
5.3. CONSULTA DE BSQUEDA DE DUPLICADOS...................................................... 44
5.4. CONSULTAS DE BSQUEDA DE NO COINCIDENTES............................................ 47
CAPTULO 6: INTRODUCCIN A SQL........................................................................... 50
6.1. INTRODUCCIN ........................................................................................... 50
6.1.1. COMPONENTES DE SQL................................................................................. 50
Manual de Access XP: Consultas Avanzadas y SQL II
6.1.2. COMANDOS................................................................................................. 51
6.1.3. CLUSULAS................................................................................................. 51
6.1.4. OPERADORES LGICOS................................................................................. 51
6.1.5. OPERADORES DE COMPARACIN .................................................................... 52
6.1.6. FUNCIONES DE AGREGADO............................................................................ 52
6.2. CONSULTAS DE SELECCIN........................................................................... 52
6.2.1. CONSULTAS BSICAS ................................................................................... 52
6.2.2. ORDENAR LOS REGISTROS ............................................................................ 52
6.2.3. CONSULTAS DE PREDICADO .......................................................................... 53
6.2.4. ALIAS......................................................................................................... 54
6.2.5. RECUPERAR INFORMACIN DE UNA BASE DE DATOS EXTERNA............................ 54
CAPTULO 7: CRITERIOS DE SELECCIN EN SQL .......................................................... 56
7.1. CRITERIOS DE SELECCIN ............................................................................ 56
7.1.1. OPERADORES LGICOS................................................................................. 56
7.1.2. INTRVALOS DE VALORES ............................................................................. 57
7.1.3. EL OPERADOR LIKE....................................................................................... 58
7.1.4. EL OPERADOR IN.......................................................................................... 59
7.1.5. LA CLUSULA WHERE.................................................................................... 59
CAPTULO 8: CONSULTAS DE AGRUPACIN DE REGISTROS ........................................... 60
8.1. INTRODUCCIN A LA AGRUPACIN DE REGISTROS ........................................... 60
8.1.1. GROUP BY ................................................................................................... 60
8.1.2. AVG........................................................................................................... 61
8.1.3. COUNT ....................................................................................................... 61
8.1.4. MAX , MN................................................................................................... 61
8.1.5. STDEV, STDEVP ........................................................................................... 62
8.1.6. SUM........................................................................................................... 62
8.1.7. VAR, VARP .................................................................................................. 62
CAPTULO 9: CONSULTAS DE ACCIN CON SQL ........................................................... 64
9.1. CONSULTAS DE ACCIN ................................................................................ 64
9.2. DELETE....................................................................................................... 64
9.3. INSERT INTO............................................................................................... 64
9.3.1. PARA INSERTAR UN NICO REGISTRO ............................................................. 65
9.3.2. PARA INSERTAR REGISTROS DE OTRA TABLA ................................................... 65
9.4. UPDATE...................................................................................................... 66
CAPTULO 10: TIPOS DE DATOS ................................................................................ 67
10.1. TIPOS DE DATOS ......................................................................................... 67
CAPTULO 11: SUBCONSULTAS.................................................................................. 69
11.1. SUBCONSULTAS........................................................................................... 69
CAPTULO 12: CONSULTAS DE REFERENCIAS CRUZADAS EN SQL .................................... 71
12.1. CONSULTAS DE REFERENCIAS CRUZADAS........................................................ 71
CAPTULO 13: CONSULTAS DE UNIN......................................................................... 75
13.1. CONSULTAS DE UNIN.................................................................................. 75
13.2. CONSULTAS DE UNIN INTERNAS................................................................... 75
13.3. CONSULTAS DE UNIN EXTERNAS .................................................................. 76
Manual de Access XP: Consultas Avanzadas y SQL III
CAPTULO 14: ESTRUCTURAS DE TABLAS EN SQL......................................................... 77
14.1. ESTRUCTURA DE LAS TABLAS......................................................................... 78
14.1.1. CREACIN DE TABLAS NUEVAS ...................................................................... 78
14.1.2. LA CLUSULA CONSTRAINT............................................................................ 79
14.1.3. CREACIN DE NDICES ................................................................................. 80
14.1.4. MODIFICAR EL DISEO DE UNA TABLA ............................................................ 81
CAPTULO 15: CONSULTAS CON PARMETROS EN SQL .................................................. 83
15.1. CONSULTAS CON PARMETROS ...................................................................... 83
CAPTULO 16: ACCESO A BASES DE DATOS EXTERNAS CON SQL .................................... 84
16.1. BASES DE DATOS EXTERNAS ......................................................................... 84
16.1.1. ACCESO A UNA BASE DE DATOS EXTERNA DE MICROSOFT ACCESS...................... 84
16.1.2. ACCESO A UNA BASE DE DATOS EXTERNA DE DBASE III O IV ............................. 84
16.1.3. ACCESO A UNA BASE DE DATOS DE PARADOX 3.X O 4.X .................................... 84

Potrebbero piacerti anche