Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manejo de Datos
PREPARATORIA TÉCNICA
“GENERAL EMILIANO ZAPATA”
“CIENCIA, CULTURA Y HUMANISMO”
ACCESS II
MICROSOFT ACCESS
BACHILLERATO TÉCNICO EN
SISTEMAS COMPUTACIONALES
CUARTO SEMESTRE
1
ACCESS II
Índice
1.1 Exportar
En informática, exportar significa "forzar" a una aplicación crear un documento que la misma
aplicación no podrá editar luego, o bien, podrá editar solo a través de la importación. En algunos
casos, el archivo exportado no puede ser ni siquiera leído por la misma aplicación que lo exportó.
La opción de exportar se encuentra presente en el menú de Archivo, y comúnmente está presente
en los editores sofisticados de texto tales como OpenOffice.org Writer. La mayoría de los editores
de texto sofisticados poseen esta opción para exportar sus documentos al formato PDF, o al
formato de la competencia. Esta opción también está presente en los editores gráficos, que
aunque la mayoría de ellos puedan editar sus gráficos exportados, el usuario no tendrá las
ventajas de haber utilizado el archivo nativo de la aplicación, como por ejemplo, manejar capas;
este es el caso de los aplicaciones como GIMP y Photoshop.
No se debe confundir la opción de Exportar (export) con la opción de Guardar Como...(Save as...),
ya que la exportación es la creación de un archivo no-nativo, y la opción de guardar como... es
para guardar un archivo en un formato que la misma aplicación que lo creó, lo pueda leer y editar
luego.
Con el paso del tiempo, la opción de Exportar, está desapareciendo de numerosas aplicaciones,
especialmente de los Procesadores de texto, pues estas aplicaciones cada vez son más capaces de
manejar archivos no nativos; como es el caso de OpenOffice.org Writer. No obstante, esta opción
permanece especialmente para exportar documentos de formato PDF; aunque algunos
desarrolladores afirman que pronto será posible editar fácilmente documentos PDF. La opción de
exportar probablemente permanecerá también en aplicaciones de diseño gráfico, pues se
considera muy útil en dichas aplicaciones.
Un ejemplo de exportar un archivo es el programa Inkscape que puede exportar sus gráficos
vectoriales a un mapa de bits (imágen de píxeles). Gimp es una aplicación de retoque fotográfico y
dibujo, la cual es capaz de manejar íntegramente su formato nativo (.xcf), pero para poder
visualizar estas imágenes en internet, se necesitan exportar a un formato de imagen más estándar
en internet, como PNG o JPG. La desventaja de estos formatos es que no soportan algunas
ventajas del archivo nativo de GIMP, como el manejo de capas. Para resolver este problema, es
recomendado guardar la imagen en el archivo nativo de GIMP y luego exportar el archivo a un
formato gráfico conocido. De esta forma, la imagen puede editarse con todas las ventajas del
formato nativo. Un caso muy similar ocurre en PhotoShop.
Se puede realizar 5 tipos de exportación, cada uno la forma de realizarlo no cambia mucho.
Access proporciona varias formas de copiar un objeto, como una tabla o formulario, de una base
de datos a otra. Lo más sencillo es copiar y pegar, pero exportar un objeto permite más opciones.
Por ejemplo, puede exportar la definición de la tabla y los datos de la tabla, o exportar sólo la
definición de la tabla (una copia en blanco de la tabla). También puede guardar los detalles de la
operación como una especificación de exportación para uso futuro.
En este tema se explica cómo exportar un objeto utilizando un asistente y, a continuación, cómo
guardar los detalles de la operación como una especificación.
Puede exportar una tabla, una consulta, un formulario, un informe, una macro o un módulo de
una base de datos de Access a otra. Al exportar un objeto, Access crea una copia de él en la base
de datos de destino.
Exporta objetos de bases de datos cuando deba efectuar alguna de las siguientes tareas:
Copiar la versión más reciente de una tabla o formulario a otra base de datos a intervalos
regulares. Para ello, puede crear una especificación de exportación la primera vez que
exporta el objeto y, a continuación, utilizarla para repetir la operación posteriormente.
Copiar la estructura de una tabla a otra base de datos como un acceso directo para crear
una tabla nueva.
1. Abra la base de datos de origen, si no está abierta. El formato de archivo puede ser MDB o
ACCDB. Si el archivo está en formato MDE o ACCDE, el objeto de origen debe ser una tabla,
una consulta o una macro. No puede exportar formularios, informes o módulos desde un
archivo MDE o ACCDE.
2. Identifique el objeto que desea exportar. Si es la primera vez que exporta datos a una base de
datos de Access, recuerde lo siguiente:
Elemento Descripción
Un objeto por Puede exportar sólo un objeto a la vez. Para exportar varios objetos, repita la
operación operación de exportación para cada objeto o realice una operación de
importación desde la base de datos de destino.
Nueva tabla Cada operación de exportación crea un objeto nuevo en la base de datos de
destino. Si ya existe un objeto con el mismo nombre, puede elegir
sobrescribir el objeto existente o especificar otro nombre para el objeto
nuevo.
Nota Una operación de exportación no puede agregar registros a una
tabla existente. Para agregar registros, considere una consulta de datos
anexados. Para obtener más información, vea el artículo Crear una consulta
de datos anexados.
Exportar una Si la tabla que desea exportar es una tabla vinculada, la operación de
tabla vinculada exportación crea una tabla vinculada en la base de datos de destino. La
nueva tabla vinculada se vincula a la tabla original de origen.
Por ejemplo, si exporta una tabla vinculada denominada Empleados1 en la
base de datos Ventas, vinculada a la tabla Empleados de la base de datos
Relaciones Como sólo puede exportar una tabla a la vez, la operación de exportación no
copia las relaciones. Si desea importar varias tablas y sus relaciones, abra la
base de datos de destino e importe los objetos.
Definición de Puede elegir exportar toda una tabla o sólo la definición de tabla. Al exportar
tabla la definición, se crea una copia en blanco de la tabla en la base de datos de
destino.
3. Abra la base de datos de destino. El formato de archivo puede ser MDB o ACCDB. También
puede ser un archivo MDE ACCDE. Asegúrese de que no es de sólo lectura y de que tiene
permisos para modificarlo.
4. Si ya existe un objeto con el mismo nombre que el objeto de origen en la base de datos de
destino, debe decidir si desea sobrescribir la versión existente o especificar otro nombre para
el objeto nuevo.
Ya está listo para iniciar la operación de exportación. Vaya a la serie de pasos siguientes.
1. En la ficha Datos externos, en el grupo Exportar, haga clic en Más y, a continuación, haga
Si en la base de datos de destino ya existe un objeto con ese nombre, se le solicitará que lo
sobrescriba o que especifique otro nombre. Haga clic en Sí para sobrescribir o en No para
volver al cuadro de diálogo Exportar. Especifique un nombre que no se haya utilizado en la
base de datos de destino y haga clic en Aceptar.
Access exporta los objetos. Si se produce un error, Access muestra un mensaje de error.
En caso contrario, aparece la pantalla final del asistente y esta pantalla se utiliza para crear
una especificación que guarde los detalles de la operación de exportación.
1. Haga clic en Guardar los pasos de la exportación para guardar los detalles de la operación
para un uso futuro. Guarde los detalles para cuando necesite repetir la operación sin tener
que recorrer los pasos del asistente cada vez.
8. En Access, abra la base de datos de destino y revise el objeto exportado para asegurarse
de que la operación se realizó correctamente.
También es posible copiar los datos de una base de datos de Microsoft Office Access 2007 a una
hoja de cálculo exportando un objeto de base de datos a una hoja de cálculo de Microsoft Office
Excel 2007. Esto se hace mediante el Asistente para exportación en Office Access 2007.
Puntos a considerar para decidir si es conveniente exportar los datos a una hoja de cálculo.
Su departamento o grupo de trabajo utiliza Access y Excel para trabajar con datos. Guarda
los datos en las bases de datos de Access pero utiliza Excel para analizar los datos y
distribuir los resultados de sus análisis. Su equipo exporta actualmente datos a Excel
cuando y como lo necesita pero desea aumentar la eficacia de este proceso.
Es usuario de Access desde hace tiempo pero su administrador prefiere ver los datos en
Excel. A intervalos regulares, suele copiar los datos en Excel pero desea automatizar este
proceso para ahorrar tiempo.
Para exportar datos de Access a Excel, debe estar trabajando en Access (Excel no
proporciona ningún mecanismo para importar datos de una base de datos de Access).
Tampoco puede guardar una base de datos o una tabla de Access como libro de Excel
utilizando el comando Guardar como de Access. Es importante tener en cuenta que el
comando Guardar como de Access permite guardar un objeto de Access en la base de
datos actual sólo como otro objeto de base de datos de Access.
Puede exportar una tabla, una consulta o un formulario. También puede exportar los
registros seleccionados en una vista.
1. En la base de datos de origen, si desea exportar sólo una parte de una tabla, consulta o
formulario, abra el objeto y seleccione los registros que desea.
Los datos de Office Access 2007 se pueden exportar en muy diversos formatos, incluidas listas de
Microsoft Office Excel 2007, Microsoft Office Word 2007 y Microsoft Windows SharePoint Services
3.0. No obstante, es posible que necesite exportar datos a un programa que usa un formato de
archivo que Access no admite. En este caso, si el programa de destino puede usar archivos de
texto (.txt), puede exportar los datos en ese formato y abrir el archivo resultante con el segundo
programa.
Puede exportar tablas, consultas, formularios e informes como archivos de texto. También puede
exportar una parte seleccionada de una vista de hoja de datos. Si exporta tablas o consultas, tiene
la opción de exportar el objeto entero o sólo los datos sin formato.
Al final de la operación, Access crea un archivo de texto (*.txt). Si decide omitir el formato, tiene la
opción de crear un archivo de texto delimitado o un archivo de texto de ancho fijo. Si elige
exportar datos con formato, Access intenta aproximarse al diseño del objeto de origen.
Archivos delimitados En un archivo delimitado, cada registro aparece en su propia línea y los
campos están separados por un carácter denominado delimitador. El delimitador puede ser
cualquier carácter que no aparezca en los valores de campo, como una coma o un punto y coma.
1,Company A,Anna,Bedecs,Owner
2,Company C,Thomas,Axen,Purchasing Rep
3,Company D,Christina,Lee,Purchasing Mgr.
4,Company E,Martin,O’Donnell,Owner
5,Company F,Francisco,Pérez-Olaeta,Purchasing Mgr.
6,Company G,Ming-Yang,Xie,Owner
7,Company H,Elizabeth,Andersen,Purchasing Rep
8,Company I,Sven,Mortensen,Purchasing Mgr.
9,Company J,Roland,Wacker,Purchasing Mgr.
Sólo se tiene la opción de crear un archivo delimitado cuando se exporta el contenido de una tabla
o una consulta sin formato. Un archivo delimitado contiene todos los registros y los campos del
objeto subyacente. Las columnas ocultas y las filas filtradas se exportan junto con el resto de
datos.
Archivos de ancho fijo En un archivo de ancho fijo, cada registro aparece en una línea aparte y el
ancho de cada campo se mantiene constante en todos los registros. Dicho de otro modo, la
longitud del primer campo de cada registro podría ser siempre de siete caracteres, la longitud del
segundo campo de cada registro podría ser siempre de doce caracteres, y así sucesivamente. Si los
valores reales de un campo varían de un registro a otro, los valores con menos caracteres que el
ancho requerido se rellenan con espacios al final.
Sólo se tiene la opción de crear un archivo de ancho fijo cuando se exporta el contenido de una
tabla o una consulta sin formato. Un archivo de ancho fijo contiene todos los registros y los
campos del objeto subyacente. Las columnas ocultas y las filas filtradas se exportan junto con el
resto de datos.
Archivos con formato En un archivo con formato, se utilizan los guiones (-) y los caracteres de
barra vertical (|) para organizar el contenido en una cuadrícula. Los registros aparecen como filas y
los campos aparecen como columnas. Los nombres de campo aparecen en la primera fila.
--------------------------------------------
| ID | E-mail Address |
--------------------------------------------
| 1 | nancy@northwindtraders.com |
--------------------------------------------
| 2 | andrew@northwindtraders.com |
--------------------------------------------
| 3 | jan@northwindtraders.com |
--------------------------------------------
| 4 | mariya@northwindtraders.com |
--------------------------------------------
| 5 | steven@northwindtraders.com |
--------------------------------------------
| 6 | michael@northwindtraders.com |
--------------------------------------------
| 7 | robert@northwindtraders.com |
--------------------------------------------
| 8 | laura@northwindtraders.com |
--------------------------------------------
| 9 | anne@northwindtraders.com |
--------------------------------------------
Si se decide exportar los datos de una tabla, una consulta, un formulario o un informe junto con el
formato, sólo es posible crear un archivo con formato. Un archivo con formato incluye solamente
los registros y los campos que se incluyen en el objeto de origen o se presentan en la vista abierta.
Las columnas ocultas y las filas filtradas no se exportan.
O bien,
Haga doble clic en el objeto de origen para abrirlo (en la vista Hoja de datos o en la de Formulario,
por ejemplo) y, en la ficha Datos externos, en el grupo Exportar, haga clic en Archivo de texto.
2. En el cuadro de diálogo Exportar - Archivo de texto, acepte o cambie el nombre que sugiere
Access para el archivo de texto.
3. Si está exportando una tabla o una consulta y desea exportar datos con formato y con diseño,
active la casilla de verificación Exportar datos con formato y diseño. Si está exportando un
formulario o un informe, la opción siempre está activada, pero aparece atenuada.
4. Para ver el archivo de texto de destino una vez completada la operación de exportación, active
la casilla de verificación Abrir el archivo de destino al finalizar la operación de exportación.
8. Si está exportando datos con formato y con diseño, tendrá que elegir la codificación que se
utilizará para guardar el archivo. Acepte la opción predeterminada o seleccione la que desee y,
a continuación, haga clic en Aceptar.
Access exporta los datos y muestra el estado en la página final del asistente. Vaya a la sección
siguiente (Guardar las especificaciones y revisar el archivo de texto) para continuar.
9. Si decide exportar los datos sin ningún formato ni diseño, se inicia el Asistente para
exportación de texto que le pide que seleccione el tipo de archivo de texto que desea crear.
Haga clic en Delimitado o en Ancho fijo y, a continuación, haga clic en Siguiente.
La elección que hace suele depender del sistema que funciona con los archivos exportados.
Algunos programas funcionan con archivos delimitados y otros con delimitados o de ancho fijo. Si
los usuarios deben ver los datos, un archivo de ancho fijo puede ser muy fácil de leer que un
archivo delimitado.
10. Siga uno de los procedimientos que se describen a continuación, dependiendo de la opción
que haya elegido en el paso anterior:
Delimitado
En Elija el delimitador que separa los campos, seleccione o especifique el carácter que
delimita los campos.
Para incluir los nombres de campo en el archivo de texto, active la casilla de verificación
Incluir nombres de campo en la primera fila.
En la lista Cualificador de texto, seleccione el cualificador de texto (el carácter que se usa
para delimitar valores de texto). Si los datos de origen incluyen campos multivalor y elige
el punto y coma como carácter delimitador, la selección del cualificador de texto es muy
importante, porque incluir la lista de valores entre comillas sencillas o dobles ayuda a
mantener juntos los valores de la lista.
Ancho fijo
Revise y coloque las líneas verticales que separan los campos. Si es necesario, desplácese a
la derecha para ver todos los campos.
11. En la última página del asistente, puede modificar el nombre del archivo de texto y la ruta de
acceso, o simplemente dejarlos como están y hacer clic en Siguiente.
12. Haga clic en Finalizar. Access exporta los datos y muestra el estado de la operación de
exportación en la página final del asistente.
1. En la última página del Asistente para exportación, active la casilla de verificación Guardar
los pasos de la exportación.
Aparece un conjunto de controles adicionales.
O bien,
Para ejecutar la operación de exportación a intervalos fijos (como semanal o
mensualmente), active la casilla de verificación Crear tarea de Outlook y luego haga clic en
Guardar exportación. De este modo, se creará una tarea de Microsoft Office Outlook 2007
que le permitirá ejecutar la especificación en el futuro.
Problema Descripción
Faltan nombres de En un archivo de ancho fijo, los nombres de campo no están. Agréguelos
campos manualmente al archivo de texto. En un archivo delimitado, los nombres
de campo se incluyen si se activa la casilla de verificación Incluir nombres
de campo en la primera fila en el asistente.
Faltan imágenes, Los elementos gráficos (como logotipos, los contenidos de campos de
objetos y datos objetos OLE y los datos adjuntos que son parte del origen de datos) no se
adjuntos exportan.
Faltan expresiones La expresión que se utiliza para calcular los valores no se exporta al
archivo de texto. Sólo se exportan los resultados de las expresiones.
Agregue manualmente la fórmula al archivo de texto una vez finalizada la
operación de exportación.
Aparecen valores 1 y Cuando se exportan datos a un archivo delimitado o de ancho fijo, los
0 en campos Sí/No valores de los campos Sí/No aparecen como 1 (Verdadero o Sí) y 0 (Falso
o No). En el archivo de texto, realice una operación de buscar y
Puede exportar datos desde su base de datos de Microsoft Office Access 2007 a un documento de
Microsoft Office Word 2007 utilizando el Asistente para exportación
Preparar los datos de origen para la exportación. Como parte de este paso, hay que
asegurarse de que los datos no contengan errores y decidir si se desea exportar parte o
todos los datos de la tabla de origen.
3. El Asistente siempre exporta datos con formato. Si desea ver el documento de Word tras
completar la operación de exportación, active la casilla de verificación Abrir el archivo de
destino al finalizar la operación de exportación.
4. Si ha seleccionado los registros que desea exportar antes de que inicie la operación de
exportación, puede activar la casilla de verificación Exportar sólo los registros seleccionados.
No obstante, si desea exportar todos los registros de la vista, deje la casilla de verificación
desactivada.
6. Si existe el documento de destino, se le pide que haga clic en Sí para sobrescribir el archivo.
Haga clic en No para cambiar el nombre del archivo de destino y vuelva a hacer clic en
Aceptar.
Access exporta los datos y abre el documento de destino en Word, en función de las opciones de
exportación especificadas en el Asistente. Access también muestra el estado de la operación en la
última página del Asistente.
1.2 Importar
Desea combinar dos bases de datos copiando todos los objetos de una base de datos a la otra.
Si realiza una importación, puede copiar a otra base de datos todas las tablas, las consultas, los
formularios, los informes, las macros y los módulos, así como las relaciones entre las tablas, en
una única operación.
Necesita crear algunas tablas similares a otras tablas que ya existen en otra base de datos.
Podría copiar una tabla en su totalidad, o simplemente las definiciones de tabla, para no tener
que diseñar manualmente cada una de las tablas. Si decide importar sólo la definición de la
tabla, obtendrá una tabla vacía. Dicho de otro modo, se copian los campos y las propiedades
de los campos a la base de datos de destino, pero no se copian los datos de la tabla. Otra
ventaja de la importación (respecto a la operación de copiar y pegar) es que se puede optar
por importar las relaciones entre las tablas junto con las propias tablas.
Necesita copiar a otra base de datos un conjunto de objetos relacionados entre ellos. Por
ejemplo, desea copiar la tabla Empleados y el formulario Empleados a una segunda base de
datos. La importación le permite copiar un objeto y todos los objetos relacionados con él a
otra base de datos en una sola operación.
En su empresa se utilizan varias bases de datos de Access, pero los datos de algunas tablas,
como Empleados, se tienen que compartir entre varias bases de datos. En lugar de duplicar las
tablas en cada una de las bases de datos, puede guardarlas en una sola base de datos y crear
vínculos a ellas desde otras bases de datos.
Otro grupo de trabajo o departamento necesitan utilizar los datos de su base de datos y
también agregar otros datos, pero usted desea seguir teniendo la propiedad de la estructura
de las tablas.
Importar datos
En la tabla siguiente, se describe cómo afecta cada opción a los resultados de la operación.
Elemento Descripción
Casilla de verificación Relaciones Actívela para importar las relaciones entre las tablas
seleccionadas.
Casilla de verificación Menús y Actívela para importar los menús y barras de herramientas
barras de herramientas personalizados que existan en la base de datos de origen.
Los menús y las barras de herramientas se muestran en una
ficha denominada Complementos.
Casilla de verificación Grupos del Actívela para importar los grupos personalizados del panel
panel de exploración de exploración que existan en la base de datos de origen.
Botón de opción Definición y Selecciónelo para importar la estructura y los datos de todas
datos las tablas seleccionadas.
Botón de opción Sólo definición Selecciónelo para importar sólo los campos de las tablas
seleccionadas. Los registros de origen no se importan.
Botón de opción Como consultas Selecciónelo para importar las consultas seleccionadas
como consultas. En este caso, recuerde importar todas las
tablas subyacentes junto con las consultas.
Botón de opción Como tablas Selecciónelo para importar las consultas como tablas. En
este caso, no tiene que importar las tablas subyacentes.
Es usuario de Excel desde hace tiempo pero para seguir avanzando desea utilizar Access para
trabajar con estos datos. Desea moverlos de las hojas de cálculo de Excel a una o varias bases
de datos nuevas de Access.
Utiliza Access para administrar los datos pero los informes semanales que recibe del resto de
su equipo son libros de Excel. Desea agilizar el proceso de importación para garantizar que se
importan datos cada semana a una hora determinada a su base de datos.
1. Busque el archivo de origen y seleccione la hoja de cálculo que contiene los datos que desea
importar a Access. Si desea importar sólo una parte de una hoja de cálculo, puede definir un
rango con nombre que incluya sólo las celdas que desea importar.
2. Revise los datos origen y ejecute una de estas acciones que se indica en la tabla siguiente.
Elemento Descripción
Número de El número de columnas de origen que desea importar no puede ser superior a
columnas 255 porque Access no admite más de 255 campos en una tabla.
Omitir Es una buena costumbre incluir sólo las filas y columnas que desea importar
columnas y en la hoja de cálculo o el rango con nombre de origen.
filas Filas
Formato de Asegúrese de que las celdas estén en formato de tabla. Si la hoja de cálculo o
tabla el rango con nombre incluyen celdas combinadas, el contenido de la celda se
coloca en el campo que corresponde a la columna más a la izquierda y los
otros campos se dejan en blanco.
Columnas, filas Elimine todas las columnas y filas en blanco innecesarias de la hoja de cálculo
y celdas en o del rango.
blanco
Valores de Si una o varias celdas de la hoja de cálculo o del rango contienen valores de
error error, como #NUM y #DIV, corríjalos antes de comenzar la operación de
importación. Si una hoja de cálculo o un rango de origen contienen valores de
error, Access coloca un valor nulo en los campos correspondientes de la tabla.
Tipo de datos Para evitar errores durante la importación, asegúrese de que cada columna de
origen contiene el mismo tipo de datos en cada fila. Access explora las ocho
primeras filas de origen para determinar el tipo de datos de los campos de la
tabla.
3. Cierre el libro de trabajo de origen si está abierto. Mantener abierto el archivo de origen
puede producir errores de conversión de datos durante la operación de importación.
Para almacenar los datos en una tabla nueva, seleccione Importar el origen de datos
en una nueva tabla de la base de datos actual. Se le pedirá que dé un nombre
posteriormente a esta tabla.
Para anexar los datos a una tabla existente, seleccione Anexar una copia de los
registros a la tabla y seleccione una tabla en la lista desplegable. Esta operación no
está disponible si la base de datos no contiene ninguna tabla.
5. En la primera página del Asistente, seleccione la hoja de cálculo que contiene los datos que
desea importar. A continuación, haga clic en Siguiente.
6. En la segunda página del asistente, haga clic en Mostrar hojas de cálculo o en Mostrar rangos
con nombre, seleccione la hoja de cálculo o el rango con nombre que desee importar y haga
clic en Siguiente.
7. Si la primera fila de la hoja de cálculo o del rango de origen contiene los nombres de campos,
seleccione La primera columna contiene encabezado de columna y haga clic en Siguiente.
Si está importando los datos a una nueva tabla, Access utiliza los encabezados de columnas para
dar nombre a los campos de la tabla. Puede cambiar estos nombres durante o después de la
operación de importación. Si está anexando datos a una tabla existente, asegúrese de que los
encabezados de columna en la hoja de cálculo de origen coincidan exactamente con los
nombres de los campos en la tabla de destino.
Si está anexando datos a una tabla existente, vaya directamente al paso 6. Si está agregando los
datos a una tabla nueva, lleve a cabo los pasos que quedan.
8. El Asistente le pide que revise las propiedades de campos. Haga clic en una columna en la parte
inferior de la página para ver las propiedades de los campos correspondientes. Si lo desea,
puede realizar alguna de estas tareas.
9. En la siguiente pantalla, especifique una clave principal para la tabla. Si selecciona Permitir a
Access agregar la clave principal, Access agrega un campo Autonumérico como primer campo
en la tabla de destino y lo rellena automáticamente con valores de identificador únicos,
comenzando por 1. A continuación, haga clic en Siguiente.
10.En la última pantalla del asistente, especifique un nombre para la tabla de destino. En el cuadro
Importar a la tabla, escriba un nombre para la tabla. Si la tabla ya existe, Access muestra un
mensaje que solicita si desea sobrescribir el contenido existente de la tabla. Haga clic en Sí para
continuar o en No para especificar un nombre diferente para la tabla de destino y, a
continuación, haga clic en Finalizar para importar los datos.
Si Access puede importar algunos o todos los datos, el Asistente muestra una página que indica el
estado de la operación de importación. Además, puede guardar la información de la operación
para un uso futuro como especificación. Por el contrario, si la operación no se ejecutó
correctamente, Access muestra el mensaje de error Error al intentar importar el archivo.
11.Haga clic en Sí para guardar la información de la operación para un uso futuro. Guardar la
información le ayuda a repetir la operación sin tener que examinar el Asistente cada vez.
2. Antes de iniciar la operación de importación, decida si desea guardar los datos en una tabla
nueva o existente.
Crear una tabla nueva Si elige guardar los datos en una tabla nueva, Access crea una tabla
y le agrega los datos importados. Si ya existe una tabla con el nombre especificado, Access
sobrescribe el contenido de la tabla con los datos importados.
Anexar a una tabla existente Si está agregando los datos a una tabla existente, el proceso
de importación anexa los datos a la tabla especificada.
Cuando procesa, recuerde que la mayor parte de las operaciones de anexión se realizan
incorrectamente porque los datos de origen no coinciden con la configuración de la
estructura y de los campos de la tabla de destino. Para evitar esto, abra la tabla en la vista
Diseño y revise lo siguiente:
Primera fila Si la primera fila del archivo de texto de origen no contiene nombres de
campo, asegúrese de que la posición y el tipo de datos de cada columna coincide con
los del campo correspondiente de la tabla. Para archivos de texto delimitado, si la
primera fila contiene encabezados de columna, no es necesario que coincidan el orden
Lic. Fernando Román Vega 27
ACCESS II
9. Si ha elegido anexar los datos, vaya al paso 12. Si está importando los datos a una nueva tabla,
haga clic en Siguiente. Entonces, debe revisar las propiedades de campo mostradas en el
Asistente.
10. Haga clic en una columna en la mitad inferior de la página del asistente para ver las
propiedades del campo correspondiente. Revise y cambie, si lo desea, el nombre y el tipo de
datos del campo de destino.
Access revisa las 25 primeras filas de cada columna y sugiere el tipo de datos predeterminado
para el campo correspondiente. Si hay diferentes tipos de valores, como valores de texto y
numéricos, en las 25 primeras filas de una columna, el Asistente sugiere un tipo de datos que
sea compatible con todos o la mayor parte de los valores de la columna: suele ser a menudo el
tipo de datos de texto. Aunque puede elegir un tipo de datos diferente, recuerde que los
valores que no son compatibles con el tipo de datos elegido se omiten o se convierten
incorrectamente. Para obtener más información sobre cómo corregir valores que faltan o
incorrectos, vea la sección Solucionar valores que faltan o son incorrectos, posteriormente en
este artículo.
11. Para crear un índice en el campo, establezca Indizado en Sí. Para omitir totalmente una
columna de origen, active la casilla de verificación No importar el campo (Saltar). A
continuación, haga clic en Siguiente.
12. Si se agregan registros a una tabla nueva, el Asistente le pide que especifique una clave
principal para la tabla. Si selecciona Permitir a Access agregar la clave principal, Access agrega
un campo Autonumérico como primer campo en la tabla de destino y lo rellena
automáticamente con identificadores únicos, comenzando por 1. Haga clic en Siguiente.
13. Access muestra la página final del Asistente. Si está importando registros a una tabla nueva,
especifique un nombre para la tabla de destino. En el cuadro Importar a la tabla, escriba un
nombre para la tabla. Si la tabla ya existe, un mensaje le pregunta si desea sobrescribir el
contenido existente de la tabla. Haga clic en Sí para continuar o en No para especificar un
nombre diferente para la tabla de destino.
15. Access intenta importar los datos. Si se importa algún dato, el Asistente muestra un cuadro de
diálogo que le indica el estado de la operación de importación. Por el contrario, si la operación
se realiza de forma totalmente incorrecta, Access muestra el mensaje de error Error al intentar
importar el archivo.
16. Abra la tabla de destino en la vista Hoja de datos. Compare los datos de la tabla con el archivo
de origen y asegúrese de que los datos que aparecen sean correctos.
UNIDAD 2. Relaciones
Definiciones informales
Una relación es una tabla con columnas y filas. Un SGBD sólo necesita que el usuario pueda
percibir la base de datos como un conjunto de tablas. Esta percepción sólo se aplica a la estructura
lógica de la base de datos (en el nivel externo y conceptual de la arquitectura de tres niveles ANSI-
SPARC). No se aplica a la estructura física de la base de datos, que se puede implementar con
distintas estructuras de almacenamiento.
Un atributo es el nombre de una columna de una relación. En el modelo relacional, las relaciones
se utilizan para almacenar información sobre los objetos que se representan en la base de datos.
Una relación se representa gráficamente como una tabla bidimensional en la que las filas
corresponden a registros individuales y las columnas corresponden a los campos o atributos de
esos registros. Los atributos pueden aparecer en la relación en cualquier orden.
Tipos de relaciones
En un SGBD relacional pueden existir varios tipos de relaciones, aunque no todos manejan
todos los tipos.
Relaciones base. Son relaciones reales que tienen nombre y forman parte directa
de la base de datos almacenada (son autónomas).
Vistas. También denominadas relaciones virtuales, son relaciones con nombre y
derivadas: se representan mediante su definición en términos de otras relaciones
con nombre, no poseen datos almacenados propios.
Instantáneas. Son relaciones con nombre y derivadas. Pero a diferencia de las
vistas, son reales, no virtuales: están representadas no sólo por su definición en
términos de otras relaciones con nombre, sino también por sus propios datos
almacenados. Son relaciones de sólo de lectura y se refrescan periódicamente.
Resultados de consultas. Son las relaciones resultantes de alguna consulta
especificada. Pueden o no tener nombre y no persisten en la base de datos.
Resultados intermedios. Son las relaciones que contienen los resultados de las
subconsultas. Normalmente no tienen nombre y tampoco persisten en la base de
datos.
Resultados temporales. Son relaciones con nombre, similares a las relaciones base
o a las instantáneas, pero la diferencia es que se destruyen automáticamente en
algún momento apropiado.
Una base de datos tiene mas de una tabla y además las tablas están relacionadas entre sí. La
relación de las tablas tiene un objetivo: evitar duplicar información.
Observe la siguiente tabla de ventas:
El problema es que en cada registro a "Pedro Pérez Buendía" se le nombra como: "Pedro Perez
Buendia", "Pedro P. Buendia", "P.P. Buendia", "Pedro Buendia", es decir no hay ninguna
regulación, luego es imposible sacar un informe así, imagínese que no sean solo 7 registros sino
100.000 registros con el mismo problema. Igual sucede con "Jamundí" que se llama "Jdí", "Jdí.",
"Jamund.". Ni hablar del Producto.
Por esa razón nacen las tablas relacionales. Ahora se cambia un poco.
Código Nombre
Código Nombre
M1 Jamundí
M2 Cali
Código Nombre
P1 Sardinas La Española
P2 Atún Atunete
V1 M1 P1 12-Jun-2005 12
V1 M1 P2 15-Jul-2005 30
V1 M1 P1 07-Ago-2005 18
V2 M1 P2 08-Ago-2005 25
V2 M1 P1 01-Ago-2005 30
V1 M2 P2 02-Abr-2005 17
V1 M1 P2 10-Abr-2005 40
La nueva tabla de ventas tiene grandes ventajas: primero ya no ocupa tanto espacio porque solo
son códigos, segundo los datos son precisos. Ahora si es posible sacar los informes pedidos.
Una vez definida la estructura de datos del modelo relacional, pasamos a estudiar las reglas de
integridad que los datos almacenados en dicha estructura deben cumplir para garantizar que son
correctos.
Al definir cada atributo sobre un dominio se impone una restricción sobre el conjunto de valores
permitidos para cada atributo. A este tipo de restricciones se les denomina restricciones de
dominios. Hay además dos reglas de integridad muy importantes que son restricciones que se
deben cumplir en todas las bases de datos relacionales y en todos sus estados o instancias (las
reglas se deben cumplir todo el tiempo). Estas reglas son la regla de integridad de entidades y la
regla de integridad referencial. Antes de definirlas, es preciso conocer el concepto de nulo.
Nulos
Ya que los nulos no son valores, deben tratarse de modo diferente, lo que causa
problemas de implementación. De hecho, no todos los SGBD relacionales soportan los
nulos.
La primera regla de integridad se aplica a las claves primarias de las relaciones base: ninguno de
los atributos que componen la clave primaria puede ser nulo.
Por definición, una clave primaria es un identificador irreducible que se utiliza para identificar de
modo único las tuplas. Que es irreducible significa que ningún subconjunto de la clave primaria
sirve para identificar las tuplas de modo único. Si se permite que parte de la clave primaria sea
nula, se está diciendo que no todos sus atributos son necesarios para distinguir las tuplas, con lo
que se contradice la irreducibilidad.
Nótese que esta regla sólo se aplica a las relaciones base y a las claves primarias, no a las claves
alternativas.
La segunda regla de integridad se aplica a las claves ajenas: si en una relación hay alguna
clave ajena, sus valores deben coincidir con valores de la clave primaria a la que hace
referencia, o bien, deben ser completamente nulos.
La regla de integridad referencial se enmarca en términos de estados de la base de datos:
indica lo que es un estado ilegal, pero no dice cómo puede evitarse. La cuestión es ¿qué
hacer si estando en un estado legal, llega una petición para realizar una operación que
conduce a un estado ilegal? Existen dos opciones: rechazar la operación, o bien aceptar la
operación y realizar operaciones adicionales compensatorias que conduzcan a un estado
legal.
Por lo tanto, para cada clave ajena de la base de datos habrá que contestar a tres
preguntas:
Regla de los nulos: ¿Tiene sentido que la clave ajena acepte nulos?
Regla de borrado: ¿Qué ocurre si se intenta borrar la tupla referenciada por la
clave ajena?
o Restringir: no se permite borrar la tupla referenciada.
o Propagar: se borra la tupla referenciada y se propaga el borrado a las tuplas
que la referencian mediante la clave ajena.
o Anular: se borra la tupla referenciada y las tuplas que la referenciaban
ponen a nulo la clave ajena (sólo si acepta nulos).
Reglas de negocio
Además de las dos reglas de integridad anteriores, los usuarios o los administradores de la base de
datos pueden imponer ciertas restricciones específicas sobre los datos, denominadas reglas de
negocio.
Por ejemplo, si en una oficina de la empresa inmobiliaria sólo puede haber hasta veinte
empleados, el SGBD debe dar la posibilidad al usuario de definir una regla al respecto y debe
hacerla respetar. En este caso, no debería permitir dar de alta un empleado en una oficina que ya
tiene los veinte permitidos.
Hoy en día aún existen SGBD relacionales que no permiten definir este tipo de restricciones ni las
hacen respetar.
Tanto en Microsoft Access como en otros motores de bases de datos, uno puede configurar la
integridad referencial. Estos son los pasos:
Arrastre del campo Código de Vendedores al campo Vendedor en Ventas porque esa es la relación
a crear.
Guarde la relación
Si observa las tablas como Municipios verá que Access nos muestra la relación directamente en
los datos
Si intenta eliminar un registro, Access evita el borrado porque hay datos relacionados.
¿Qué es SQL?
Por supuesto, a partir del estándar cada sistema ha desarrollado su propio SQL que puede variar
de un sistema a otro, pero con cambios que no suponen ninguna complicación para alguien que
conozca un SQL concreto.
El lenguaje SQL está compuesto por comandos, cláusulas, operadores y funciones de agregado.
Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de
datos.
Como su nombre indica, el SQL nos permite realizar consultas a la base de datos. Pero el nombre
se queda corto ya que SQL además realiza funciones de definición, control y gestión de la base de
datos. Las sentencias SQL se clasifican según su finalidad dando origen a tres ‘lenguajes’ o mejor
dicho sublenguajes:
1. El DDL (Data Description Language), lenguaje de definición de datos, incluye órdenes para
definir, modificar o borrar las tablas en las que se almacenan los datos y de las relaciones
entre estas. (Es el que más varia de un sistema a otro).
El DCL (Data Control Language), lenguaje de control de datos, contiene elementos útiles para
trabajar en un entorno multiusuario, en el que es importante la protección de los datos, la
seguridad de las tablas y el establecimiento de restricciones en el acceso, así como elementos para
coordinar la compartición de datos por parte de usuarios concurrentes, asegurando que no
interfieren unos con otros.
Una de las características para entender más que es SQL es, sentencia SQL es como una frase
(escrita en inglés) con la que decimos lo que queremos obtener y de donde obtenerlo.
Lic. Fernando Román Vega 49
ACCESS II
Todas las sentencias empiezan con un verbo (palabra reservada que indica la acción a realizar),
seguido del resto de cláusulas, algunas obligatorias y otras opcionales que completan la frase.
Todas las sentencias siguen una sintaxis para que se puedan ejecutar correctamente, para
describir esa sintaxis utilizaremos un diagrama sintáctico como el que se muestra a continuación.
Para crear y después ejecutar una sentencia SQL en Access, lo fácil es utilizar la ventana SQL de las
consultas.
En las consultas que se construyen con el generador de consultas se especifica las tablas, aquí no
se procede igual, uno mismo escribe las propias sentencias SQL.
5. En el espacio grande (donde aparece la sentencia SELECT;) puedes comenzar a escribir las
sentencias.
Ejemplos.
SELECT *
FROM articulos
ORDER BY articulos.codigo;
Por lo tanto: Muestra todos los campos de la tabla artículos y los ordena por medio código.
Por lo tanto: Muestra todos los campos de la tabla artículos y los ordena por medio código.
Permite recuperar datos de una o varias tablas. La sentencia SELECT es con mucho la más compleja
y potente de las sentencias SQL.
Esta sentencia forma parte del DML (lenguaje de manipulación de datos), con la sentencia SELECT
veremos cómo seleccionar columnas de una tabla, cómo seleccionar filas y cómo obtener las filas
ordenadas por el criterio que queramos.
El resultado al ejecutar la consulta es una tabla lógica, porque no se guarda en el disco sino que
está en memoria y cada vez que ejecutamos la consulta se vuelve a calcular.
Cuando se ejecuta la consulta se visualiza el resultado en forma de tabla con columnas y filas, pues
en la SELECT tenemos que indicar qué columnas queremos que tenga el resultado y qué filas
queremos seleccionar de la tabla origen.
FROM: Con la cláusula FROM se indica en cual tabla tiene que buscar la información. En esta
ocasión son consultas simples el resultado se obtiene de una única tabla. Una
especificación de tabla puede ser el nombre de una consulta guardada , o el nombre de
una tabla
Más adelante veremos cómo trabajar con where y order by, porque aun estamos en consultas
sencillas.
Utilización del *
Se utiliza el asterisco * en la lista de selección para indicar 'todas las columnas de la tabla'.
Tiene dos ventajas:
Si añadimos una columna nueva en la tabla, esta nueva columna saldrá sin tener que modificar la
consulta. Evitar nombrar las columnas una a una (es más corto).
Se puede combinar el * con el nombre de una tabla (oficinas.*), pero esto se utiliza más cuando el
origen de la consulta son dos tablas
o bien
Las columnas se pueden especificar mediante su nombre simple (nbcol) o su nombre cualificado
(nbtabla.nbcol, el nombre de la columna precedido del nombre de la tabla que contiene la
columna y separados por un punto).
El nombre cualificado se puede emplear siempre que queramos y es obligatorio en algunos casos
que veremos más adelante.
Cuando el nombre de la columna o de la tabla contiene espacios en blanco, hay que poner el
nombre entre corchetes [ ] y además el número de espacios en blanco debe coincidir. Por ejemplo
[codigo de cliente] no es lo mismo que [ codigo de cliente] (el segundo lleva un espacio en blanco
delante de código)
Ejemplos :
Alias de columna.
Cuando se visualiza el resultado de la consulta, normalmente las columnas toman el nombre que
tiene la columna en la tabla, si queremos cambiar ese nombre lo podemos hacer definiendo un
alias de columna mediante la cláusula AS será el nombre que aparecerá como título de la columna.
Ejemplo:
Columnas calculadas.
Además de las columnas que provienen directamente de la tabla origen, una consulta SQL puede
incluir columnas calculadas cuyos valores se calculan a partir de los valores de los datos
almacenados.
Para solicitar una columna calculada, se especifica en la lista de selección una expresión en vez de
un nombre de columna. La expresión puede contener sumas, restas, multiplicaciones y divisiones,
concatenación & , paréntesis y también funciones predefinidas).
Para ver con más detalle cómo formar una expresión pincha aquí
Ejemplos:
FROM oficinas
Listar las ventas en cada oficina con el formato: 22 tiene ventas de 186,042.00 ptas
A continuación veremos las cláusulas que nos permiten indicar qué filas queremos visualizar.
Al incluir la cláusula DISTINCT en la SELECT, se eliminan del resultado las repeticiones de filas. Si
por el contrario queremos que aparezcan todas las filas incluidas las duplicadas, podemos incluir la
cláusula ALL o nada, ya que ALL es el valor que SQL asume por defecto.
Por ejemplo queremos saber los códigos de los directores de oficina.
Lista los códigos de los directores de las oficinas. El director 108 aparece en cuatro oficinas, por lo
tanto aparecerá cuatro veces en el resultado de la consulta.
La cláusula TOP
La cláusula TOP permite sacar las n primeras filas de la tabla origen. No elige entre valores iguales,
si pido los 25 primeros valores pero el que hace 26 es el mismo valor que el 25, entonces
devolverá 26 registros en vez de 25 (o los que sea). Siempre se guia por la columna de ordenación,
la que aparece en la cláusula ORDER BY o en su defecto la clave principal de la tabla.
Por ejemplo queremos saber los dos empleados más antiguos de la empresa.
Lista el código y nombre de los empleados ordenándolos por fecha de contrato, sacando
unicamente los dos primeros (serán los dos más antiguos).
En este caso tiene que sacar los tres primeros, pero si nos fijamos en las fechas de contrato
tenemos 20/10/86, 10/12/86, 01/03/87, 01/03/87, la tercera fecha es igual que la cuarta, en este
caso sacará estas cuatro filas en vez de tres, y sacaría todas las filas que tuviesen el mismo valor
que la tercera fecha de contrato.
El número de filas que queremos visualizar se puede expresar con un número entero o como un
porcentaje sobre el número total de filas que se recuperarían sin la cláusula TOP. En este último
caso utilizaremos la cláusula TOP n PERCENT (porcentaje en inglés).
Lista el nombre de los empleados ordenándolos por fecha de contrato, sacando únicamente un
20% del total de empleados. Como tenemos 10 empleados, sacará los dos primeros, si tuviésemos
100 empleados sacaría los 20 primeros.
La cláusula WHERE selecciona únicamente las filas que cumplan la condición de selección
especificada.
En la consulta sólo aparecerán las filas para las cuales la condición es verdadera (TRUE), los valores
nulos (NULL) no se incluyen por lo tanto en las filas del resultado. La condición de selección puede
ser cualquier condición válida o combinación de condiciones utilizando los operadores NOT (no)
AND (y) y OR (ó). En ACCESS2000 una cláusula WHERE puede contener hasta 40 expresiones
vinculadas por operadores lógicos AND y OR.
SELECT nombre
FROM empleados
WHERE oficina = 12
SELECT nombre
FROM empleados
WHERE oficina = 12 AND edad > 30
Lista el nombre de los empleados de la oficina 12 que tengan más de 30 años. (oficina igual a 12 y
edad mayor que 30)
Condiciones de selección
Las condiciones de selección son las condiciones que pueden aparecer en la cláusula WHERE. En
SQL tenemos cinco condiciones básicas:
1. el test de comparación
2. el test de rango
3. el test de pertenencia a un conjunto
4. el test de valor nulo
5. el test de correspondencia con patrón.
1. El test de comparación.
= Igual que
<> Distinto de
< Menor que
<= Menor o igual
> Mayor que
>= Mayor o igual
Lista los empleados contratados antes del año 88 (cuya fecha de contrato sea anterior al 1 de
enero de 1988).
¡¡Ojo!!, las fechas entre almohadillas # # deben estar con el formato mes,dia,año aunque
tengamos definido otro formato para nuestras fechas.
Este ejemplo obtiene lo mismo que el anterior pero utiliza la función year(). Obtiene los
empleados cuyo año de la fecha de contrato sea menor que 1988.
SELECT oficina
FROM oficinas
WHERE ventas < objetivo * 0.8
Lista las oficinas cuyas ventas estén por debajo del 80% de su objetivo.
Hay que utilizar siempre el punto decimal aunque tengamos definida la coma como separador de
decimales.
SELECT oficina
FROM oficinas
WHERE dir = 108
Examina si el valor de la expresión está comprendido entre los dos valores definidos por exp1 y
exp2.
Lista los empleados cuyas ventas estén comprendidas entre 100,000 y 500,000
Una condición de selección puede dar como resultado el valor verdadero TRUE, falso FALSE o nulo
NULL.
Cuando una columna que interviene en una condición de selección contiene el valor nulo, el
resultado de la condición no es verdadero ni falso, sino nulo, sea cual sea el test que se haya
utilizado. Por eso si queremos listar las filas que tienen valor en una determinada columna, no
podemos utilizar el test de comparación, la condición oficina = null devuelve el valor nulo sea cual
sea el valor contenido en oficina. Si queremos preguntar si una columna contiene el valor nulo
debemos utilizar un test especial, el test de valor nulo.
Ejemplos:
Lista los empleados asignados a alguna oficina (los que tienen un valor en la columna oficina).
Se utiliza cuando queremos utilizar caracteres comodines para formar el valor con el comparar.
Tiene la siguiente sintaxis:
Ejemplos:
Lista los empleados cuyo nombre empiece por Luis (Luis seguido de cero o más caracteres).
Lista los empleados cuyo nombre contiene Luis, en este caso también saldría los empleados José
Luis (cero o más caracteres seguidos de LUIS y seguido de cero o más caracteres).
Lista los empleados cuyo nombre contenga una a como tercera letra (dos caracteres, la letra a, y
cero o más caracteres.
Para ordenar las filas del resultado de la consulta, tenemos la cláusula ORDER BY. Con esta
cláusula se altera el orden de visualización de las filas de la tabla pero en ningún caso se modifica
el orden de las filas dentro de la tabla. La tabla no se modifica.
Podemos indicar la columna por la que queremos ordenar utilizando su nombre de columna
(nbcolumna) o utilizando su número de orden que ocupa en la lista de selección (Nºcolumna).
Ejemplo:
Es equivalente a
Por defecto el orden será ascendente (ASC) (de menor a mayor si el campo es numérico, por orden
alfabético si el campo es de tipo texto, de anterior a posterior si el campo es de tipo fecha/hora,
etc...
Ejemplos:
Obtiene un listado de los empleados por orden de antiguedad en la empresa (los de más
antiguedad aparecen primero).
Obtiene un listado de los empleados ordenados por volúmen de ventas sacándo los de menores
ventas primero.
Si queremos podemos alterar ese orden utilizando la cláusula DESC (DESCendente), en este caso el
orden será el inverso al ASC.
Ejemplos:
Obtiene un listado de los empleados por orden de antiguedad en la empresa empezando por los
más recientemente incorporados.
Obtiene un listado de los empleados ordenados por volumen de ventas sacando primero los de
mayores ventas.
También podemos ordenar por varias columnas, en este caso se indican las columnas separadas
por comas.
Se ordenan las filas por la primera columna de ordenación, para un mismo valor de la primera
columna, se ordenan por la segunda columna, y así sucesivamente.
La cláusula DESC o ASC se puede indicar para cada columna y así utilizar una ordenación distinta
para cada columna. Por ejemplo ascendente por la primera columna y dentro de la primera
columna, descendente por la segunda columna.
Ejemplos:
SELECT region, ciudad, ventas
FROM oficinas
ORDER BY region, ciudad
Muestra las ventas de cada oficina, ordenadas por orden alfabético de región y dentro de cada
región por ciudad.
Lista las oficinas clasificadas por región y dentro de cada región por superavit de modo que las de
mayor superavit aparezcan las primeras.
Se le llama así porque las consultas están basadas en más de una tabla, es importante tener en
cuenta que las tablas tendrán algún tipo de relación.
Esta operación se utiliza cuando tenemos dos tablas con las mismas columnas y queremos obtener
una nueva tabla con las filas de la primera y las filas de la segunda. En este caso la tabla resultante
tiene las mismas columnas que la primera tabla (que son las mismas que las de la segunda tabla).
Por ejemplo tenemos una tabla de libros nuevos y una tabla de libros antiguos y queremos una
lista con todos los libros que tenemos. En este caso las dos tablas tienen las mismas columnas, lo
único que varía son las filas, además queremos obtener una lista de libros (las columnas de una de
las tablas) con las filas que están tanto en libros nuevos como las que están en libros antiguos, en
este caso utilizaremos este tipo de operación.
Cuando hablamos de tablas pueden ser tablas reales almacenadas en la base de datos o tablas
lógicas (resultados de una consulta), esto nos permite utilizar la operación con más frecuencia ya
que pocas veces tenemos en una base de datos tablas idénticas en cuanto a columnas. El
resultado es siempre una tabla lógica.
Por ejemplo queremos en un sólo listado los productos cuyas existencias sean iguales a cero y
también los productos que aparecen en pedidos del año 90. En este caso tenemos unos productos
en la tabla de productos y los otros en la tabla de pedidos, las tablas no tienen las mismas
Lic. Fernando Román Vega 67
ACCESS II
columnas no se puede hacer una unión de ellas pero lo que interesa realmente es el identificador
del producto (idfab, idproducto), luego por una parte sacamos los códigos de los productos con
existencias cero (con una consulta), por otra parte los códigos de los productos que aparecen en
pedidos del año 90 (con otra consulta), y luego unimos estas dos tablas lógicas.
El operador que permite realizar esta operación es el operador UNION.
La composición de tablas consiste en concatenar filas de una tabla con filas de otra. En este caso
obtenemos una tabla con las columnas de la primera tabla unidas a las columnas de la segunda
tabla, y las filas de la tabla resultante son concatenaciones de filas de la primera tabla con filas de
la segunda tabla.
A diferencia de la unión la composición permite obtener una fila con datos de las dos tablas, esto
es muy útil cuando queremos visualizar filas cuyos datos se encuentran en dos tablas.
Por ejemplo queremos listar los pedidos con el nombre del representante que ha hecho el pedido,
pues los datos del pedido los tenemos en la tabla de pedidos pero el nombre del representante
está en la tabla de empleados y además queremos que aparezcan en la misma línea; en este caso
necesitamos componer las dos tablas (Nota: en el ejemplo expuesto a continuación, hemos
seleccionado las filas que nos interesan).
Existen distintos tipos de composición, aprenderemos a utilizarlos todos y a elegir el tipo más
apropiado a cada caso. Los tipos de composición de tablas son:
a. El producto cartesiano
b. El INNER JOIN
c. El LEFT / RIGHT JOIN
El operador UNION
UNION sirve para obtener a partir de dos tablas con las mismas columnas, una nueva tabla con las
filas de la primera y las filas de la segunda.
La sintaxis es la siguiente:
Lic. Fernando Román Vega 69
ACCESS II
Ejemplo:
SELECT idfab,idproducto
FROM productos
WHERE existencias = 0 TABLE [existencias cero]
UNION ALL UNION ALL
o bien
SELECT fab,producto TABLE [pedidos 90]
FROM pedidos ORDER BY idproducto
WHERE year(fechapedido) = 1990
ORDER BY idproducto
Se ha incluido la cláusula ALL porque no nos importa que salgan filas repetidas.
Se ha incluido ORDER BY para que el resultado salga ordenado por idproducto, observar que
hemos utilizado el nombre de la columna de la primera SELECT, también podíamos haber puesto
ORDER BY 2 pero no ORDER BY producto (es el nombre de la columna de la segunda tabla).
Para el 2º caso hemos creado una consulta llamada existencias cero con la primera SELECT, y una
consulta llamada pedidos 90 con la segunda SELECT. Observar que los nombres de las consultas
están entre corchetes porque contienen espacios en blanco, y que en este caso hay que utilizar
TABLE
a. El producto cartesiano
La sintaxis es la siguiente:
Para ver cómo funciona el producto cartesiano tomaremos el nombre de las consultas [existencias
cero] y [pedidos 90] creadas, y creamos una consulta que halle el producto cartesiano de las dos.
SELECT * obtenemos
FROM [existencias cero],[pedidos 90] la siguiente
tabla:
Se observa que tenemos las dos filas de la primera consulta combinadas con las dos filas de la
segunda.
Esta operación no es de las más utilizadas, normalmente cuando queremos componer dos tablas
es para añadir a las filas de una tabla, una fila de la otra tabla, por ejemplo añadir a los pedidos los
datos del cliente correspondiente, o los datos del representante, esto equivaldría a un producto
cartesiano con una selección de filas:
SELECT *
FROM pedidos,clientes
WHERE pedidos.clie=clientes.numclie
Combinamos todos los pedidos con todos los clientes pero luego seleccionamos los que cumplan
que el código de cliente de la tabla de pedidos sea igual al código de cliente de la tabla de clientes,
por lo tanto nos quedamos con los pedidos combinados con los datos del cliente correspondiente.
Las columnas que aparecen en la cláusula WHERE de nuestra consulta anterior se denominan
columnas de emparejamiento ya que permiten emparejar las filas de las dos tablas. Las columnas
de emparejamiento no tienen por qué estar incluidas en la lista de selección.
Normalmente emparejamos tablas que están relacionadas entre sí y una de las columnas de
emparejamiento es clave principal, pues en este caso, cuando una de las columnas de
emparejamiento tiene un índice definido es más eficiente utilizar otro tipo de composición, el
INNER JOIN.
Las 2 tablas:
SELECT *
FROM alumnos, kardex
Resultado al ejecutarla
b. El INNER JOIN
El INNER JOIN es otro tipo de composición de tablas, permite emparejar filas de distintas tablas de
forma más eficiente que con el producto cartesiano cuando una de las columnas de
emparejamiento está indexada. Ya que en vez de hacer el producto cartesiano completo y luego
seleccionar la filas que cumplen la condición de emparejamiento, para cada fila de una de las
tablas busca directamente en la otra tabla las filas que cumplen la condición, con lo cual se
emparejan sólo las filas que luego aparecen en el resultado.
La sintaxis es la siguiente:
Ejemplo:
SELECT *
FROM pedidos INNER JOIN clientes ON pedidos.clie = clientes.numclie
tabla1 y tabla2 son especificaciones de tabla (nombre de tabla con alias o no, nombre de consulta
guardada), de las tablas cuyos registros se van a combinar.
Pueden ser las dos la misma tabla, en este caso es obligatorio definir al menos un alias de tabla.
col1, col2 son las columnas de emparejamiento.
Observar que dentro de la cláusula ON los nombres de columna deben ser nombres cualificados
(llevan delante el nombre de la tabla y un punto).
Las columnas de emparejamiento deben contener la misma clase de datos, las dos de tipo texto,
de tipo fecha etc... los campos numéricos deben ser de tipos similares. Por ejemplo, se puede
combinar campos AutoNumérico y Long puesto que son tipos similares, sin embargo, no se puede
combinar campos de tipo Simple y Doble. Además las columnas no pueden ser de tipo Memo ni
OLE.
Como representa cualquier operador de comparación ( =, <, >, <=, >=, o <> ) y se utiliza para
establecer la condición de emparejamiento.
Se pueden definir varias condiciones de emparejamiento unidas por los operadores AND y OR
poniendo cada condición entre paréntesis.
Ejemplo:
Las 2 tablas:
Resultado al ejecutarla
El LEFT JOIN y RIGHT JOIN son otro tipo de composición de tablas, también denominada
composición externa. Son una extensión del INNER JOIN.
Las composiciones vistas hasta ahora (el producto cartesiano y el INNER JOIN) son composiciones
internas ya que todos los valores de las filas del resultado son valores que están en las tablas que
se combinan.
La descripción de la sintaxis es la misma que la del INNER JOIN, lo único que cambia es la palabra
INNER por LEFT o RIGHT (izquierda en inglés).
Esta operación consiste en añadir al resultado del INNER JOIN las filas de la tabla de la izquierda
que no tienen correspondencia en la otra tabla, y rellenar en esas filas los campos de la tabla de la
derecha con valores nulos.
Las 2 tablas:
Resultado al ejecutarla
Las 2 tablas:
Resultado al ejecutarla
Para saber en cada caso qué tipo de operación se debe utilizar, a continuación tienes un gráfico
que indica qué preguntas se tienen que hacer y según la respuesta, qué operación utilizar.
Para resumir hemos llamado T1 y T2 las tablas de las que queremos sacar los datos y R la
tabla lógica que representa el resultado de consulta. T1 y T2 podrían ser tablas guardadas
o consultas.
En la última parte cuando se pregunta "En T1 hay filas que no tienen pareja en T2", la
pregunta se debe de interpretar como "en alguna de las tablas hay filas que no tienen
pareja".
Hasta ahora hemos trabajado el cómo recuperar datos almacenados en las tablas de de una base
de datos. Ahora vamos a tratar el de la actualización de esos datos, es decir insertar nuevas filas,
borrar filas o cambiar el contenido de las filas de una tabla. Estas operaciones modifican los datos
almacenados en las tablas pero no su estructura, ni su definición.
Los registros pueden ser introducidos a partir de sentencias que emplean la instrucción Insert.
Un ejemplo sencillo a partir de nuestra tabla modelo es la introducción de un nuevo cliente lo cual
se haría con una instrucción de este tipo:
Insert Into clientes (nombre, apellidos, direccion, poblacion, codigopostal, email, pedidos)
Values ('Perico', 'Palotes', 'Percebe n°13', 'Lepe', '123456', 'perico@desarrolloweb.com', 33);
Como puede verse, los campos no numéricos o booleanos van delimitados por apostrofes: '.
También resulta interesante ver que el código postal lo hemos guardado como un campo no
numérico. Esto es debido a que en determinados paises (Inglaterra,como no) los codigos postales
contienen también letras.
Ejemplo: Supongamos ahora que la tabla repres tuviese las siguientes columnas numemp,
oficinarep, nombrerep. En este caso no podríamos utilizar el asterisco, tendríamos que poner:
INSERT INTO repres SELECT numemp, oficina, nombre FROM empleados WHERE titulo = 'rep
ventas';
O bien:
INSERT INTO repres (numemp, oficinarep, nombrerep) SELECT numemp, oficina, nombre FROM
empleados WHERE titulo = 'rep ventas';
Lic. Fernando Román Vega 78
ACCESS II
Ejemplo:
Esta sentencia genera una nueva tabla t2 con todas las filas de la tabla t1. Las columnas se
llamarán igual que en t1 pero t2 no será una copia exacta de t1 ya no tendrá clave principal ni
relaciones con las otras tablas, ni índices si los tuviese t1 etc...
Por ejemplo:
Queremos enviarle a un representante una tabla con todos los datos personales de sus clientes
para que les pueda enviar cartas etc...
SELECT numclie AS codigo, nombre, direccion, telefono INTO susclientes FROM clientes WHERE
repclie = '103';
Una vez que hay datos en la tabla, podríamos tener la necesidad de modificar los mismos. Para
hacerlo, utilizamos el comando UPDATE.
La sentencia UPDATE modifica los valores de una o más columnas en las filas seleccionadas de una
o varias tablas.
La sintaxis es la siguiente:
UPDATE "nombre_tabla"
SET "columna_1" = [expresion]
WHERE {condición}
SET: específica qué columnas van a modificarse y qué valores asignar a esas columnas.
columna_1: es el nombre de la columna a la cual queremos asignar un nuevo valor por lo
tanto debe ser una columna de la tabla origen.
Expresión: en cada asignación debe generar un valor del tipo de dato apropiado para la
columna indicada.
WHERE indica qué filas van a ser modificadas. Si se omite la cláusula WHERE se actualizan
todas las filas. Se puede incluir una subconsulta.
Ejemplo:
Queremos poner a cero las ventas de los empleados de la oficina 12
Ejemplo:
Queremos poner a cero el límite de crédito de los clientes asignados a empleados de la oficina 12.
Cuando se ejecuta una sentencia UPDATE primero se genera el origen y se seleccionan las filas
según la cláusula WHERE. A continuación se coge una fila de la selección y se le aplica la cláusula
SET, se actualizan todas las columnas incluidas en la cláusula SET a la vez por lo que los nombres
de columna pueden especificarse en cualquier orden. Después se coge la siguiente fila de la
selección y se le aplica del mismo modo la cláusula SET, así sucesivamente con todas las filas de la
selección.
Ejemplo:
O bien:
El DDL (Data Definition Language) lenguaje de definición de datos es la parte del SQL que más
varía de un sistema a otro ya que esa área tiene que ver con cómo se organizan internamente los
datos y eso, cada sistema lo hace de una manera u otra.
Así como el DML de Microsoft Jet incluye todas las sentencias DML que nos podemos encontrar en
otros SQLs (o casi todas), el DDL de Microsoft Jet en cambio contiene menos instrucciones que
otros sistemas.
A diferencia de otras consultas, una consulta de definición de datos no recupera datos. La mayoría
de las consultas utilizan el lenguaje de manipulación de datos (DML), que comprende comandos
del lenguaje de consulta estructurado (SQL) que especifican cómo los datos de los objetos de base
de datos existentes se combinan y se manipulan para generar los resultados de datos deseados.
Las consultas de definición de datos utilizan el lenguaje de definición de datos (DDL), que incluye
comandos SQL que especifican la definición de los objetos de base de datos que almacenan o
indizan los datos, así como comandos SQL que controlan el acceso de los usuarios a los objetos de
base de datos. En Office Access 2007, una consulta de definición de datos define o cambia la
definición de un objeto de base de datos.
En general, debe utilizar las interfaces de diseño gráfico que Office Access 2007 proporciona (por
ejemplo, la vista Diseño y la ventana Relaciones) para crear tablas, restricciones, índices y
relaciones. Sin embargo, si tiene tablas que elimina y vuelve a crear con frecuencia, el uso de estas
interfaces podría requerir mucho tiempo. Mediante una consulta de definición de datos, puede
escribir una consulta una vez y, a continuación, ejecutarla de nuevo cuando sea necesario.
Considere la posibilidad de utilizar una consulta de definición de datos sólo si está familiarizado
con las instrucciones SQL y si va a eliminar y volver a crear con frecuencia determinadas tablas,
restricciones o índices.
Importante: El uso de consultas de definición de datos para modificar objetos de base de datos
puede ser arriesgado porque las acciones no van acompañadas de cuadros de diálogo de
confirmación. Si comete un error, puede perder datos o cambiar el diseño de una tabla sin darse
cuenta. Tenga cuidado cuando utilice una consulta de definición de datos para modificar objetos
de la base de datos. Si no es responsable de mantener la base de datos que va a utilizar, debe
consultar con el administrador de esa base de datos antes de ejecutar una consulta de definición
de datos. Además, se recomienda hacer una copia de seguridad de las tablas en las que va a
ejecutar este tipo de consulta.
La base de datos puede estar deshabilitada por el propio Access para ejecutar las sentencias de
DDL, la forma de habilitar el contenido de la base de datos para que pueda ejecutarse una
consulta de definición de datos es la siguiente.
La sentencia CREATE TABLE sirve para crear la estructura de una tabla no para rellenarla con datos,
nos permite definir las columnas que tiene y ciertas restricciones que deben cumplir esas
columnas.
La sintaxis es la siguiente:
Una restricción consiste en la definición de una característica adicional que tiene una columna o una
combinación de columnas, suelen ser características como valores no nulos (campo requerido), definición de
índice sin duplicados, definición de clave principal y definición de clave foránea (clave ajena o externa,
campo que sirve para relacionar dos tablas entre sí).
restricción1: una restricción de tipo 1 es una restricción que aparece dentro de la definición de la
columna después del tipo de dato y afecta a una columna, la que se está definiendo.
restricción2: una restricción de tipo 2 es una restricción que se define después de definir todas las
columnas de la tabla y afecta a una columna o a una combinación de columnas.
Una restricción de tipo 1 se utiliza para indicar una característica de la columna que estamos
definiendo, tiene la siguiente sintaxis:
La cláusula NOT NULL indica que la columna no podrá contener un valor nulo, es decir que se
deberá rellenar obligatoriamente y con un valor válido (equivale a la propiedad requerido Sí de las
propiedades del campo).
La cláusula CONSTRAINT sirve para definir una restricción que se podrá eliminar cuando queramos
sin tener que borrar la columna. A cada restricción se le asigna un nombre que se utiliza para
identificarla y para poder eliminarla cuando se quiera.
Como restricciones tenemos la de clave primaria (clave principal), la de índice único (sin
duplicados), la de valor no nulo, y la de clave foránea.
La cláusula PRIMARY KEY se utiliza para definir la columna como clave principal de la tabla. Esto
supone que la columna no puede contener valores nulos ni pueden haber valores duplicados en
esa columna, es decir que dos filas no pueden tener el mismo valor en esa columna.
En una tabla no pueden haber varias claves principales, por lo que no podemos incluir la cláusula
PRIMARY KEY más de una vez, en caso contrario la sentencia da un error. No hay que confundir la
definición de varias claves principales con la definición de una clave principal compuesta por varias
columnas, esto último sí está permitido y se define con una restricción de tipo 2.
La cláusula UNIQUE sirve para definir un índice único sobre la columna. Un índice único es un
índice que no permite valores duplicados, es decir que si una columna tiene definida un restricción
de UNIQUE no podrán haber dos filas con el mismo valor en esa columna. Se suele emplear para
que el sistema compruebe el mismo que no se añaden valores que ya existen, por ejemplo si en
una tabla de clientes queremos asegurarnos que dos clientes no puedan tener el mismo D.N.I. y la
tabla tiene como clave principal un código de cliente, definiremos la columna dni con la restricción
de UNIQUE.
La cláusula NOT NULL indica que la columna no puede contener valores nulos, cuando queremos
indicar que una columna no puede contener el valor nulo lo podemos hacer sin poner la cláusula
CONSTRAINT, o utilizando una cláusula CONSTRAINT.
La última restricción que podemos definir sobre una columna es la de clave foránea, una clave
foránea es una columna o conjunto de columnas que contiene un valor que hace referencia a una
fila de otra tabla, en una restricción de tipo 1 se puede definir con la cláusula REFERENCES,
después de la palabra reservada indicamos a qué tabla hace referencia, opcionalmente podemos
indicar entre paréntesis el nombre de la columna donde tiene que buscar el valor de referencia,
por defecto coge la clave principal de la tabla2, si el valor que tiene que buscar se encuentra en
otra columna de tabla2, entonces debemos inidicar el nombre de esta columna entre paréntesis,
además sólo podemos utilizar una columna que esté definida con una restricción de UNIQUE, si la
columna2 que indicamos no está definida sin duplicados, la sentencia CREATE nos dará un error.
Ejemplo:
CREATE TABLE tab1 (
col1 INTEGER CONSTRAINT pk PRIMARY KEY,
col2 CHAR(25) NOT NULL,
col3 CHAR(10) CONSTRAINT uni1 UNIQUE,
col4 INTEGER,
col5 INT CONSTRAINT fk5 REFERENCES tab2 );
Con este ejemplo estamos creando la tabla tab1 compuesta por: una columna llamada col1 de tipo
entero definida como clave principal, una columna col2 que puede almacenar hasta 25 caracteres
alfanuméricos y no puede contener valores nulos, una columna col3 de hasta 10 caracteres que no
podrá contener valores repetidos, una columna col4 de tipo entero sin ninguna restricción, y una
columna col5 de tipo entero clave foránea que hace referencia a valores de la clave principal de la
tabla tab2.
La sentencia ALTER TABLE sirve para modificar la estructura de una tabla que ya existe. Mediante
esta instrucción podemos añadir columnas nuevas, eliminar columnas. Ten cuenta que cuando
eliminamos una columna se pierden todos los datos almacenados en ella.
También nos permite crear nuevas restricciones o borrar algunas existentes. La sintaxis puede
parecer algo complicada pero sabiendo el significado de las palabras reservadas la sentencia se
aclara bastante; ADD (añade), ALTER (modifica), DROP (elimina), COLUMN (columna),
CONSTRAINT (restricción).
La sintaxis es la siguiente:
La cláusula ADD COLUMN (la palabra COLUMN es opcional) permite añadir una columna nueva a la
tabla. Como en la creación de tabla, hay que definir la columna indicando su nombre, tipo de
datos que puede contener, y si lo queremos alguna restricción de valor no nulo, clave primaria,
clave foránea, e índice único, restriccion1 es opcional e indica una restricción de tipo 1 que afecta
a la columna que estamos definiendo.
Ejemplo:
ALTER TABLE tab1 ADD COLUMN col3 integer NOT NULL CONSTRAINT c1 UNIQUE
Con este ejemplo estamos añadiendo a la tabla tab1 una columna llamada col3 de tipo entero,
requerida (no admite nulos) y con un índice sin duplicados llamado c1.
Ejemplo:
ALTER TABLE tab1 ADD CONSTRAINT c1 UNIQUE (col3)
Con este ejemplo estamos añadiendo a la tabla tab1 un índice único (sin duplicados) llamado c1
sobre la columna col3.
Para borrar una columna basta con utilizar la cláusula DROP COLUMN (COLUMN es opcional) y el
nombre de la columna que queremos borrar, se perderán todos los datos almacenados en la
columna.
Ejemplo:
ALTER TABLE tab1 DROP COLUMN col3
Para borrar una restricción basta con utilizar la cláusula DROP CONSTRAINT y el nombre de la
restricción que queremos borrar, en este caso sólo se elimina la definición de la restricción pero
los datos almacenados no se modifican ni se pierden.
Ejemplo:
ALTER TABLE tab1 DROP CONSTRAINT c1
Con esta sentencia borramos el índice c1 creado anteriormente pero los datos de la columna col3
no se ven afectados por el cambio.
Ejemplo:
DROP TABLE tab1
nbindi: nombre del índice que estamos definiendo. En una tabla no pueden haber dos índices con
el mismo nombre de lo contrario da error.
nbtabla: nombre de la tabla donde definimos el índice. A continuación entre paréntesis se indica la
composición del índice (las columnas que lo forman).
nbcol: nombre de la columna que indexamos. Después del nombre de la columna podemos indicar
cómo queremos que se ordenen las filas según el índice mediante las cláusulas ASC/DESC.
ASC: la cláusula ASC es la que se asume por defecto e indica que el orden elegido para el índice es
ascendente (en orden alfabético si la columna es de tipo texto, de menor a mayor si es de tipo
numérico, en orden cronológico si es de tipo fecha).
Podemos formar un índice basado en varias columnas, en este caso después de indicar la primera
columna con su orden, se escribe una coma y la segunda columna también con su orden, así
sucesivamente hasta indicar todas las columnas que forman el índice.
WITH PRIMARY indica que el índice define la clave principal de la tabla, si la tabla ya tiene
una clave principal, la sentencia CREATE INDEX dará error.
WITH DISALLOW NULL indica que no permite valores nulos en las columnas que forman el
índice.
WITH IGNORE NULL indica que las filas que tengan valores nulos en las columnas que
forman el índice se ignoran, no aparecen cuando recuperamos las filas de la tabla
utilizando ese índice.
Lic. Fernando Román Vega 90
ACCESS II
Ejemplo:
CREATE UNIQUE INDEX ind1 ON clientes (provincia, poblacion ASC, fecha_nacimiento DESC)
Crea un índice llamado ind1 sobre la tabla clientes formado por las columnas provincia, población
y fecha_nacimiento. Este índice permite tener ordenadas las filas de la tabla clientes de forma que
aparezcan los clientes ordenados por provincia, dentro de la misma provincia por población y
dentro de la misma población por edad y del más joven al más mayor.
Al añadir la cláusula UNIQUE el índice no permitirá duplicados por lo que no podría tener dos
clientes con la misma fecha de nacimiento en la misma población y misma provincia, para evitar el
poblema sería mejor utilizar:
La sentencia DROP INDEX sirve para eliminar un índice de una tabla. Se elimina el índice pero no
las columnas que lo forman.
La sintaxis es la siguiente:
Ejemplo:
2 Crear la tabla oficinas con su clave principal y su clave foránea ( la columna dir contiene el código
de empleado del director de la oficina luego es un campo que hace referencia a un empleado
luego es clave foránea y hace referencia a la tabla empleados).
4 Crear la tabla clientes también con todas sus claves y sin la columna limitecredito.
5 Crear la tabla pedidos sin clave principal, con la clave foránea que hace referencia a los
productos, la que hace referencia a clientes y la que indica el representante (empleado) que ha
realizado el pedido.
7 Añadir a la tabla empleados las claves foráneas que le faltan. (Si no tienes claro cuales son te lo
decimos ahora: la columna oficina indica la oficina donde trabaja el empleado y la columna
director indica quién dirige al empleado, su jefe inmediato).
Ejercicio 1
Ejercicio 2
CREATE TABLE oficinas ( Para definir la columna dir como clave foránea hemos
oficina INT PRIMARY KEY, elegido una restricción1 (poner la definición dentro
ciudad TEXT(30), de la definición de la columna).
region TEXT(20),
dir INT CONSTRAINT cf_dir REFERENCES
empleados,
objetivo CURRENCY,
ventas CURRENCY );
Ejercicio 3
CREATE TABLE productos ( En este caso la clave principal está formada por dos
idfab TEXT(10), columnas idfab e idproducto luego para definirla
Lic. Fernando Román Vega 93
ACCESS II
Ejercicio 4
Ejercicio 5
CREATE TABLE pedidos ( Para exponer más formas de definir una tabla aquí te
codigo COUNTER, hemos definido todas las claves como restricción2 la
numpedido INT PRIMARY KEY, única que es obligatoria en una restricción2 es la
fechapedido DATETIME NOT NULL, cf_prod ya que está compuesta por varias columnas.
clie INT NOT NULL,
rep INT NOT NULL,
fab TEXT(10) NOT NULL,
producto TEXT(20) NOT NULL,
cant INT NOT NULL,
importe CURRENCY NOT NULL,
CONSTRAINT cf_clie FOREIGN KEY (clie)
REFERENCES clientes,
CONSTRAINT cf_rep FOREIGN KEY (rep)
REFERENCES empleados,
CONSTRAINT cf_prod FOREIGN KEY
(fab,producto) REFERENCES productos );
Ejercicio 6
ALTER TABLE clientes Para añadir una nueva columna a una tabla que ya
ADD COLUMN limitecredito MONEY; existe debemos emplear la sentencia ALTER TABLE, y
en nuestro caso la cláusula ADD COLUMN (COLUMN
es opcional).
Ejercicio 7
ALTER TABLE empleados Para añadir una definición de clave foránea hay que
ADD CONSTRAINT cf_oficina FOREIGN KEY añadir una restricción2, se pueden añadir varias
(oficina) REFERENCES oficinas, restricciones en la misma sentencia ALTER TABLE.
CONSTRAINT cf_director FOREIGN KEY
(director) REFERENCES empleados;
Ejercicio 8
Solución 2
Ejercicio 9
Ejercicio 10
Ejercicio 11
Office Access 2007 no proporciona seguridad de nivel de usuario para las bases de datos creadas
con el nuevo formato de archivo (.accdb y .accde). No obstante, si se abre una base de datos de
una versión anterior de Access en Office Access 2007 y esa base de datos tiene aplicada la
seguridad de nivel de usuario, esa configuración seguirá vigente.
Si se convierte una base de datos de una versión anterior de Access con seguridad de nivel de
usuario aplicada al nuevo formato de archivo, Access quita automáticamente toda la configuración
de seguridad y se aplican las reglas de protección de archivos .accdb o .accde.
Por último, recuerde que todos los usuarios pueden ver en todo momento todos los objetos de
base de datos cuando se abren bases de datos creadas en Office Access 2007.
Para comprender la arquitectura de seguridad de Office Access 2007, recuerde que una base de
datos de Access no es un archivo como un libro de Microsoft Office Excel 2007 o un documento de
Microsoft Office Word 2007. Una base de datos de Access es un conjunto de objetos, es
decir, tablas, formularios, consultas, macros, informes, etc., que a menudo dependen los unos de
los otros para su funcionamiento. Por ejemplo, si se crea un formulario de entrada de datos, no se
pueden proporcionar ni almacenar datos con ese formulario a menos que se enlacen (vinculen) los
controles del formulario a una tabla.
Varios componentes de Access pueden representar un riesgo para la seguridad, inclusive las
consultas de acción (consultas que insertan, eliminan o cambian datos), macros, expresiones
(funciones que devuelven un solo valor) y código de VBA. Para ayudar a que los datos sean más
seguros, Office Access 2007 y el Centro de confianza realizan una serie de comprobaciones de
seguridad cada vez que se abre una base de datos. El proceso es el siguiente:
Cuando se abre un archivo .accdb o .accde en Office Access 2007, Access envía la ubicación de
la base de datos al Centro de confianza. Si se trata de una ubicación de confianza, la base de
datos se ejecutará con toda su funcionalidad. Si se abre una base de datos de una versión
anterior de Access en Office Access 2007, Access envía la ubicación y los detalles de la firma
digital eventualmente aplicada a la base de datos.
Centro de confianza controla las decisiones que se toman cuando Access abre una base de
datos.
Para obtener más información sobre el uso del Centro de confianza, vea el artículo Ver la
configuración de seguridad y privacidad en el Centro de confianza.
Para habilitar contenido deshabilitado, haga clic en Opciones y, a continuación, elija las
opciones en el cuadro de diálogo que aparece. Access habilita el contenido deshabilitado y la
base de datos vuelve a abrirse con toda su funcionalidad. En caso contrario, no funcionarán los
componentes deshabilitados.
Si se abre una base de datos creada con el formato de archivo anterior (.mdb o .mde) y esa
base de datos no está firmada ni es de confianza, Access deshabilita todo el contenido
ejecutable de forma predeterminada.
Modo Deshabilitado
Cuando el Centro de confianza evalúa que una base de datos no es de confianza, Office Access
2007 la abre en modo Deshabilitado, es decir, desactiva todo el contenido ejecutable. Esto se
aplica a las bases de datos creadas con el nuevo formato de archivo de Office Access 2007 y a los
archivos creados en las versiones anteriores de Access.
Acciones inseguras en todas las macros. Las acciones "inseguras" son las que permiten a un
usuario modificar la base de datos u obtener acceso a recursos ubicados fuera de la base de
datos. No obstante, las acciones que Access deshabilita pueden considerarse a veces como
"seguras". Por ejemplo, si se confía en la persona que creó la base de datos, se puede confiar
en todas las acciones de macro inseguras.
Controles ActiveX.
4.2 Empaquetar, firmar y distribuir una base de datos de Office Access 2007
Office Access 2007 permite firmar y distribuir una base de datos con mayor facilidad y rapidez.
Cuando se crea un archivo .accdb o .accde, se puede empaquetar el archivo, aplicar al paquete
una firma digital y, a continuación, distribuir el paquete firmado a otros usuarios. La característica
Empaquetar una base de datos y firmar el paquete son formas de transmitir confianza.
Cuando se recibe el paquete, la firma confirma que no se ha alterado la base de datos. Si se
confía en el autor, se puede habilitar el contenido.
La nueva característica Empaquetar y firmar se aplica únicamente a las bases de datos con el
formato de archivo de Office Access 2007.Office Access 2007 incluye las herramientas
anteriores para firmar y distribuir las bases de datos creadas con el formato de archivo de las
versiones anteriores. Las herramientas anteriores no se pueden usar para firmar e
implementar los archivos creados con el nuevo formato de archivo.
Se puede agregar sólo una base de datos a un paquete.
El proceso firma el código de todos los objetos de las bases de datos y no sólo las macros o los
módulos de código. El proceso comprime asimismo el archivo de paquete con el fin de ayudar
a reducir los tiempos de descarga.
Se pueden extraer bases de datos de los archivos de paquete ubicados en los servidores de
Windows SharePoint Services 3.0.
2. Haga clic en el botón de Microsoft Office , haga clic en Publicar y después, elija
Paquete y firmar.
3. Aparece el cuadro de diálogo Seleccionar certificado.
4. Seleccione un certificado digital y, a continuación, haga clic en Aceptar.
Si confía en la base de datos, haga clic en Abrir. Si confía en cualquier certificado de ese
proveedor, haga clic en Confiar en todo contenido del editor. Aparece el cuadro de
diálogo Extraer base de datos a.
6. De manera opcional, en la lista Guardar en, seleccione una ubicación para la base de datos
extraída y, a continuación, en el cuadro Nombre de archivo, especifique otro nombre para
la base de datos extraída.
7. Haga clic en Aceptar.
La herramienta de cifrado de Office Access 2007 combina y mejora dos herramientas anteriores: el
cifrado y las contraseñas para bases de datos. Cuando se usa una contraseña para cifrar una base
de datos, todos los datos se vuelven ilegibles para otras herramientas y se obliga a los usuarios a
escribir una contraseña para poder usar la base de datos. El cifrado aplicado en Office Access 2007
usa un algoritmo más seguro que el usado en las versiones anteriores de Access.
1. Abra la base de datos cifrada como suele abrirse cualquier otra base de datos.
a. Aparece el cuadro de diálogo Solicitud de contraseña.