7/26/2019 BaseDeDatos 2 ACCES
1/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 18 Ing Juan Daniel Cortez Soto
INTRODUCCIN A MICROSOFT ACCESS
Qu es Access?
Access es un programa comercial desarrollado por Microsoft. Se refiere a un sistema
gestor de Base de Datos (BD) diseado para ser utilizado en computadoras personales.
Access proporciona una serie de herramientas de apoyo que facilitan la creacin y
administracin de una base de datos.
Qu es una Base de Datos en Access?
Una Base de Datosse puede definir como un conjunto de informacin relacionada que se
encuentra agrupada o estructurada. La BD es un sistema formado por un conjunto de
datos almacenados, que permite el acceso directo a ellos y un conjunto de programas que
manipulan ese conjunto de datos.
Una Base de Datos en Access es un archivo que contiene datos (estructurados e
interrelacionados) y objetos que definen y manejan esos datos: tablas, consultas,
formularios, informes, macros y mdulos. Incluso, se pueden definir estrategias de
seguridad e integridad. Es importante mencionar que pueden coexistir en un disco varias
bases de datos, absolutamente independientes entre s.
En algunos otros sistemas, como DBase, una base de datos es un directorio del disco en
el que se encuentran multitud de archivos que contienen los datos y los objetos.
Objetos de una Base de Datos
Los diferentes objetos que puede contener una BD, son:
7/26/2019 BaseDeDatos 2 ACCES
2/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 19 Ing Juan Daniel Cortez Soto
Tablas. Las tablas se pueden definir como una coleccin de registros. El diseo de
tablas consiste en el diseo de campos necesarios para almacenar correctamente la
informacin.
Consultas. Operaciones que pueden realizarse sobre los datos de las tablas:
seleccin de datos, insercin, modificacin, eliminacin, entre otros.
Formularios. Pantallas que se presentan a los usuarios de una BD para que tengan
un acceso amigable a los datos y operaciones.
Reportes. Formatos de presentacin de los datos para generar copias impresas de la
informacin registrada en la BD.
Macros. Conjunto de instrucciones que se pueden almacenar para automatizar tareas
repetitivas. Mdulos. Segmentos de cdigo en lenguaje de alto nivel que permiten realizar
operaciones complejas con los datos y objetos de la BD.
Creacin de una Base de Datos
Al crear una base de datos vaca en Access, en ella se almacenan algunos datos y
objetos del sistema, los cuales estn ocultos al usuario y al programador. Por lo tanto,
antes de tener acceso a la base de datos vaca, se debe tener un directorio paraguardarla en disco. Ahora, el paso a realizar, es la creacin de la nueva BD.
Es importante advertir, que al contrario de lo que ocurre en la mayora de los programas
(Word, PowerPoint), los datos de una BD no necesitan ser explcitamente guardados, esto
debido a que se est trabajando con los datos originales y no con una copia en RAM
como usualmente sucede con otro tipo de aplicaciones; es decir, no se necesita estar
seleccionando la opcin de guardar, cuando se agregao se eliminaun registro, ya que
estos cambios se realizan de manera automtica.
Para crear la nueva BD, es necesario acceder la opcin Nueva (new) del men Archivo
(file)y seleccionar Base de Datos Vaca (blank database); y en la pantalla que aparece,
deber dar un nombre a la nueva BD.
7/26/2019 BaseDeDatos 2 ACCES
3/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 20 Ing Juan Daniel Cortez Soto
El archivo de una Base de Datos Access tiene la extensin MDB (Microsoft DataBase).
Adems de este archivo, puede existir otro con la extensin LDB. Este ltimo contiene
informacin de bloqueo de registros, que permite el acceso seguro de mltiples usuarios
de forma concurrente. El archivo de la BD permanece abierto mientras se trabaja con la
BD, y nicamente se cierra cuando la BD es cerrada de forma explcita, con la opcin
correspondiente. Si por cualquier problema la BD no se cierra correctamente, sta podra
daarse.
MANEJO DE TABLAS
Introduccin
Las tablasson las estructuras que permiten almacenar los datos en la BD.
Una tabla es un conjunto de registros. Cada registro estar compuesto por una coleccin
de campos. Cada campo tendr un tipo que indica la clase de datos que puede
almacenar. Y cada tipo tendr ciertos atributos que limitan el dominio de los valores
permitidos, as como una serie de restricciones y normas.
7/26/2019 BaseDeDatos 2 ACCES
4/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 21 Ing Juan Daniel Cortez Soto
A manera de ilustracin, se puede tener una tabla para almacenar datos sobre los
alumnos registrados en determinada asignatura. La tabla puede denominarse Alumnos y
estar compuesta de registros con los siguientes campos:
Campo Descripcin
Matricula Matrcula del alumno
Nombre Nombre del alumno
AP Apellido paterno
AM Apellido materno
Edad Edad
Parcial1 Calificacin obtenida en el primer parcial
Parcial2 Calificacin obtenida en el segundo parcial
Practicas Calificacin obtenida en las prcticas
Se puede observar que no se ha definido un campo promedio para almacenar lacalificacin final de la asignatura; esto debido a que es posible calcularla a travs del resto
de los campos.
En una tabla no debe almacenarse informacin innecesaria. Adems, si se almacenara,
habra que recalcularla cada vez que se modificara alguno de los campos de los que
depende, lo cual representa una fuente de inconsistencia. La forma adecuada de obtener
el promedio es a travs de las consultas.
Creacin de Tablas
Definicin de Campos en Access
Una vez definidos los campos necesarios se debe proceder a crear la tabla.
En la ventana de la BD, se deber seleccionar el objeto Tabla ( table), y seleccionar la
opcin Crear Tabla en Vista Diseo (createtable in design view), la cual permite definir los
7/26/2019 BaseDeDatos 2 ACCES
5/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 22 Ing Juan Daniel Cortez Soto
campos y sus caractersticas. En la opcin de Asistenta para Tablas (create table by using
wizard), un programa gua al usuario automticamente en la creacin de los campos de la
tabla; y la opcin Vista Hoja de Datos (create table by entering data), permite introducir los
datos directamente.
Para cada campo que se defina, se le deber asignar un nombre, un tipo y una
descripcin. Adems, para cada tipo existen una serie de atributos que permiten describir
con precisin el dominio de valores aceptados por el campo.
7/26/2019 BaseDeDatos 2 ACCES
6/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 23 Ing Juan Daniel Cortez Soto
Tipos de Datos
Los principales tipos de datos disponibles para las bases de datos son:
Text (texto). Una cadena de caracteres de longitud limitada. La longitud mxima se
define como uno de los atributos, y no puede ser mayor de 255 caracteres. El espacio
utilizado en disco por este campo corresponde a la longitud mxima definida. Un atributo
importante del tipo texto es si permite o no la longitud cero.
Memo (memo). Una cadena de caracteres de longitud ilimitada. El espacio ocupado
en disco depende del texto almacenado. Tiene como desventaja con respecto al tipo
texto, que no permite algunas operaciones como: ordenamiento y agrupacin de losregistros.
Number (numrico). Nmero entero o real. Existen diversos tamaos y precisiones:
byte, integer, long integer, decimal, double, entre otros.
Date/Hour (fecha/hora). Fecha, hora o ambos a la vez. Existen diversos formatos de
fecha y hora que pueden ser definidos como atributos.
7/26/2019 BaseDeDatos 2 ACCES
7/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 24 Ing Juan Daniel Cortez Soto
Currency (moneda). Un nmero con formato monetario. Se trata de un valor
numrico real con formato especializado para la manipulacin de valores monetarios:
abreviatura de la moneda local, separacin con puntos y comas, etctera.
Autonumber (autonumrico). Un contador que se incrementa automticamente. Se
trata de un valor numrico que el sistema genera automticamente para cada registro de
manera que nunca existirn dos registros en la misma tabla con el mismo valor en este
campo.
Yes/No (si/no).Valor lgico.
Atributos Comunes
Cada uno de los tipos de datos dispone de atributos propios, por ejemplo, la precisindecimal y el rango de valores en los campos numricos, as como la longitud de cadena
para los campos de texto. Existe una serie de atributos comunes, que se describen a
continuacin:
Format (formato). Se puede utilizar la propiedad de formato para personalizar la
manera en que los nmeros, fecha, hora y textos se despliegan o imprimen. Se pueden
utilizar los formatos predefinidos o se pueden crear formatos especiales utilizando la
simbologa correspondiente. La propiedad de formato afecta nicamente la forma en la
que la informacin es presentada, no afecta la forma en que la informacin esalmacenada.
Smbolo Significado
(space) Despliega un espacio
ABCDespliega literalmente los caracteres dentro de las
comillas
! Obliga a mantener la alineacin a la izquierda
* Llena el espacio disponible con el carcter que le sigue
\ Despliega el carcter que le sucede como una literal
[color]
Despliega la informacin en un color especfico. Colores
validos: black, blue, green, cyan, red, magenta, yellow,
white
7/26/2019 BaseDeDatos 2 ACCES
8/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 25 Ing Juan Daniel Cortez Soto
Ejemplos:
Forma!Hora.Format = "Long Time"
Forma!Registrado.Format = "Yes/No"
El ejemplo, utiliza un formato personalizado para desplegar la fecha. El formato con el que
se despliega la fecha es el siguiente: Jan 1995.
Forms!Empleados!fecha_contratacion.Format = "mmm yyyy"
Input Mask (mscara de entrada). Obliga a que los datos se introduzcan en un
formato especfico. Por ejemplo, para un telfono se puede utilizar la siguiente mascara
(000) 0000-00-00, de manera que no permita introducir caracteres extraos. La mascara
de entrada es un conjunto de tres datos que definen los caracteres admitidos, el formato
presentado al usuario y el formato almacenado. El atributo Formato (format) prevalece
sobre el atributo Mascara de Entrada (input mask), de manera que, al editar los datos del
campo, una vez introducidos siguiendo una determinada mascara, el contenido del campo
se mostrar con el aspecto definido por el atributo Format.
Carcter Descripcin
0 Dgito (requerido; no se permiten los smbolos + o )
9 Dgito o espacio (opcional; no se permiten los smbolos + o )
# Dgito o espacio (opcional; se permiten los smbolos + y -)
L Letra (A-Z, requerido)
? Letra (A-Z opcional)
A Letra o dgito (requerido)
a Letra o dgito (opcional)
& Cualquier carcter o espacio (requerido)
C Cualquier carcter o espacio (opcional)
.,:;-/ Separadores
7/26/2019 BaseDeDatos 2 ACCES
9/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 26 Ing Juan Daniel Cortez Soto
< Convierte todos los caracteres que le siguen a maysculas
> Convierte todos los caracteres que le siguen a minsculas
!Ocasiona que la mscara de entrada se despliegue de derecha a
izquierda, en lugar de izquierda a derecha
\
Carcter de escape. Ocasiona que el carcter que le sigue se
despliegue como una literal. Se utiliza para desplegar los
caracteres especiales como \A, \&
Password
Crea una entrada tipo contrasea, es decir, cualquier carcter
que se introduzca en la casilla de texto, se almacena como tal
pero todos son desplegados como asteriscos
Ejemplo:
Mascara Ejemplo
(000)000-0000 (206) 555-0248
(000)AAA-AAAA (206) 555-TELE
LLLL000000-AAA
ROGA431009-T52
Caption (ttulo). Es el ttulo de la columna que aparecer al editar los datos
almacenados para el campo.
Default Value (valor predeterminado). Un valor que automticamente se introduce
en el campo si el usuario no indica otro diferente.
Validation Rule (regla de validacin). Una condicin que debe cumplir el dato
introducido para que sea aceptado. Por ejemplo, para un campo edad se puede obligar a
que el valor introducido est comprendido entre 18 y 65 aos con una expresin como
sigue >=18 AND
7/26/2019 BaseDeDatos 2 ACCES
10/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 27 Ing Juan Daniel Cortez Soto
Required (requerido). Indica si el campo debe tener un valor o si permite dejarlo en
blanco. Por omisin, un campo no contiene ningn valor.
Index (indexado). Establece si sobre el campo debe construirse un ndice. Un ndicees una estructura que hace que determinadas operaciones con el campo sean ms
rpidas (ordenaciones y bsquedas) a costa de un mayor espacio en disco y en memoria
(para almacenar el ndice) y de que otras operaciones sean ms lentas y costosas
(inserciones y borrados). Existen dos formas de hacer ndices, con y sin duplicado.
Llave Primaria Primary Key
En toda tabla suele existir una llave primaria, tambin llamada clave primaria o clave
maestra. Una llave primaria es un campo o conjunto de campos cuyos valores no se
repiten y a travs de los cuales se identifica de forma nica a un registro completo. Es
decir, que no hay dos registros en una tabla con la misma clave. En el ejemplo de los
alumnos, el campo matrcula puede ser una llave primaria, ya que no habr dos alumnos
con la misma matrcula; y adems, es posible identificar a un alumno a travs de su
matrcula. El campo AP, no puede ser llave primaria porque puede haber ms de un
alumno con el mismo apellido. El conjunto formado por AP, AM y Nombre, podra
constituir una llave primaria, pero no podemos asegurar que no existan dos personas con
el mismo conjunto de datos.
Sobre un campo que se emplea como llave primaria, forzosamente debe formarse un
ndice sin duplicado, y no deben aceptarse valores nulos.
Si no se tiene ningn campo o conjunto de campos candidato a llave primaria, antes de
salvar la tabla en Access, preguntar si se desea crear una llave primaria, al contestar
que si, Access automticamente crear un campo llamado ID, el cual ser de tipo
autonumrico.
Siguiendo con el ejemplo de Alumnos, se pueden definir los atributos para cada uno de
los campos:
Campo Tipo Descripcin Otros atributos
Matricula Cadena (7) Matrcula
Requerido, indexado sin repeticin,
mascara de entrada: 0/00000;0;"*";
clave principal.
7/26/2019 BaseDeDatos 2 ACCES
11/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 28 Ing Juan Daniel Cortez Soto
Nombre Cadena (40) Nombre completo requerido
AP Cadena (25) Apellido Paterno requerido
AM Cadena (25) Apellido Materno requerido
EdadNumrico
byteEdad >018 AND =0
AND =0
AND =0
AND
7/26/2019 BaseDeDatos 2 ACCES
12/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 29 Ing Juan Daniel Cortez Soto
Integridad Referencial
La integridad referencial es un sistema de reglas que utilizan la mayora de las BDrelacionales para asegurarse que los registros de tablas relacionadas sean validos y que
no se borren o cambien datos relacionados de forma accidental dando como resultado
errores de integridad.
Tipos de Relaciones
Entre dos tablas de cualquier BD relacional, puede haber dos tipos de relaciones: uno a
uno y uno a muchos.
Relacin uno a uno. Cuando un registro de una tabla slo puede estar relacionado
con un nico registro de otra tabla y viceversa.
Por ejemplo: tenemos dos tablas, una de maestros y otra de departamentos, queremos
saber que maestro es jefe de que departamento, tenemos una relacin uno a uno entre
las dos tablas, ya que un departamento tiene un slo jefe y un maestro, puede ser jefe de
un slo departamento.
Relacin uno a muchos. Cuando un registro de una tabla (tabla secundaria) slo
puede estar relacionado con un nico registro de otra tabla (tabla principal) y un registro
de la tabla principal, puede tener ms de un registro relacionado en la tabla secundaria,
en este caso se suele hacer referencia a la tabla principal como tabla padre, y a la tabla
secundaria como tabla hijo, entonces la regla se convierte en un padre puede tener
varios hijos, pero un hijo slo tiene un padre.
Por ejemplo: tenemos dos tablas, una con los datos de diferentes poblaciones y otra conlos habitantes, una poblacin puede tener ms de un habitante, pero un habitante
pertenecer a una poblacin nica. En este caso la tabla principal, ser la de poblaciones
y la tabla secundaria ser la de habitantes. Una poblacin puede tener varios habitantes,
pero un habitante pertenece a una sola poblacin. Esta relacin se representa incluyendo
en la tabla hijo una columna que corresponde con la clave principal de la tabla padre,
esta columna es lo que se denomina llave fornea (clave fornea o clave externa).
7/26/2019 BaseDeDatos 2 ACCES
13/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 30 Ing Juan Daniel Cortez Soto
Una llave fornea, es pues, un campo de una tabla que contiene una referencia a un
registro de otra tabla. Siguiendo el ejemplo de la tabla habitantes, se tiene una columna
poblacin que contiene el cdigo de la poblacin en la que est empadronado el
habitante, esta columna es la llave fornea de la tabla habitante, y en la tabla poblaciones,
se tiene una columna cdigo de poblacin como llave primaria.
Relacin varios a varios: Cuando un registro de una tabla puede estar relacionada con
ms de un registro de la otra tabla y viceversa, en este caso las dos tablas no pueden
estar relacionadas directamente, se tiene que aadir una tercera tabla entre las dos que
incluyan los pares de valores relacionados entre s.
Por ejemplo: se tienen dos tablas, una con los datos de clientes y otra con los artculos
que se venden en una empresa, un cliente podr realizar un pedido con varios artculos y
un artculo podr ser vendido a varios clientes.
No se puede definir entre clientes y artculos, hace falta otra tabla (por ejemplo una tabla
de pedidos) relacionada con clientes y artculos. La tabla pedidos, estar relacionada con
clientes por una relacin uno a muchos y tambin estar relacionada con artculos por una
relacin uno a muchos.
Para establecer las relaciones de integridad en Access, se deber seleccionar la opcin
Relaciones (relationships), del men Herramientas (tools), en la barra de herramientas.
7/26/2019 BaseDeDatos 2 ACCES
14/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 31 Ing Juan Daniel Cortez Soto
Aparece una ventana con las tablas que estn disponibles en la BD, ah se debern
seleccionar las tablas que se desean relacionar.
Una vez seleccionadas las tablas, se debern definir los campos a relacionar:
7/26/2019 BaseDeDatos 2 ACCES
15/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 32 Ing Juan Daniel Cortez Soto
Se sugiere seleccionar la opcin Actualizacin en Cascada de los Campos Relacionados
(cascade update related fields), de tal forma que al realizar algn cambio en los campos,
los datos se actualicen de manera automtica en el campo relacionado.
NORMALIZACIN
Introduccin
El proceso de normalizacin, se define como el procedimiento que permite dividir una
relacin en dos o ms relaciones ms pequeas, con base a las relaciones de atributos.
La normalizacin es un procedimiento riguroso para el diseo de BD.
El propsito de este proceso es quitar las cualidades indeseables de una relacin que
puedan causar anomalas en el almacenamiento al momento de realizar operaciones de
actualizacin en la base de datos.
La meta final del proceso de normalizacin es la agrupacin de todos los atributos
(campos) de una BD en relaciones adecuadas para que se puedan almacenar con el
mnimo de datos redundantes.
Bsicamente, las reglas denormalizacinestn encaminadas a eliminar redundancias e
inconsistencias de dependencia en el diseo de las tablas.
El proceso de normalizacin se compone de cinco pasos.
De esta manera, suponga que se desea crear una tabla con la siguiente informacin:
nombre de usuario, nombre de la empresa, direccin de la empresa y correo electrnico.
En principio se definira la estructura de una tabla como la que se muestra a continuacin:
Normalizacin CERO
Usuarios
Nombre Empresa Direccin Email1 Email2
Anglica ABC Km. 106 Tij-Eda [email protected] [email protected]
7/26/2019 BaseDeDatos 2 ACCES
16/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 33 Ing Juan Daniel Cortez Soto
Vctor XYZ Punta Banda 32 [email protected] [email protected]
La tabla anterior se encuentra en el nivel de Normalizacin Cero, debido a que ninguna de
las reglas de normalizacin ha sido aplicada. Esto es, como se puede observar en los
campos Email1 y Email2, qu pasar, cuando se requiera una tercera direccin de
correo (Email3)? Se deber agregar otro campo/columna a la tabla, adems de tener
que reprogramar la entrada de los datos en el cdigo?
Obviamente no, lo que se desea es crear un sistema funcional que pueda crecer y
adaptarse fcilmente a los nuevos requisitos; para esto, es necesario aplicar las reglas del
Primer Nivel de Formalizacin.
Primera Forma Normal 1FN
Las reglas de la Primera Forma Normal, son las siguientes:
Eliminar los grupos repetitivos de las tablas individuales.
Crear una tabla separada por cada grupo de datos relacionales.
Identificar cada grupo de datos relacionados con una llave primaria.
Se puede observar que en la tabla del ejemplo se est rompiendo la primera regla, al
repetir los campos Email1 y Email2. Adems, no existe una llave primaria. La tercera regla
de la 1FN, bsicamente indica que es necesario agregar un campo tipo autonumrico,
para distinguir entre usuarios que pudieran tener el mismo nombre.
Una vez aplicadas las reglas de la 1FN, la tabla resultante es la siguiente:
Usuarios
ID Nombre Empresa Direccion Email
1 Anglica ABC Km. 106 Tij-Eda [email protected]
1 Anglica ABC Km. 106 Tij-Eda [email protected]
7/26/2019 BaseDeDatos 2 ACCES
17/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 34 Ing Juan Daniel Cortez Soto
2 Vctor XYZ Punta Banda 32 [email protected]
2 Vctor XYZ Punta Banda 32 [email protected]
La tabla se encuentra ahora en 1FN. Se ha solucionado el problema de la limitacin del
campo Email. Sin embargo, surgen otros problemas, cada vez que se introduce un nuevo
registro en la tabla usuarios, se duplica cierta informacin como es el nombre de la
empresa, su direccin y el nombre del usuario. Esto ocasiona no nicamente que la BD
crezca demasiado, sino que la BD pueda corromperse fcilmente, al introducir mal alguno
de los datos redundantes.
Por lo anterior, se debe proceder a aplicar la Segunda Forma Normal.
Segunda Forma Normal 2FN
Las reglas de la Segunda Forma Normal, son las siguientes:
Crear tablas separadas para aquellos grupos de datos que se aplican a varios
registros.
Relacionar estas tablas mediante una llave externa. Se ha separado el campo Email
en otra tabla, de forma que sea posible introducir tantos correos como el usuario
proporcione sin tener que duplicar los dems datos del usuario. Por ltimo, ser necesario
utilizar la llave primaria para relacionar estos campos:
Usuarios
ID Nombre empresa direccion_empresa
1 Anglica ABC Km. 106 Tij-Eda
2 Victor XYZ Punta Banda 32
7/26/2019 BaseDeDatos 2 ACCES
18/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 35 Ing Juan Daniel Cortez Soto
Emails
EID relID Email
Ahora, existen dos tablas separadas, donde la llave primaria en la tabla Usuarios (ID),
est relacionada con la llave externa en la tabla Emails (relID). Sin embargo todava surge
un problema, ya que al tratar de aadir nuevos empleados que pertenecen a una misma
empresa, se estara duplicando la informacin de sta (direccin y nombre). Tambin en
este caso, se corre el riesgo de introducir datos diferentes de una misma empresa.
Por lo tanto, el siguiente paso es aplicar la Tercera Forma Normal.
Tercera Forma Normal 3FN
Eliminar aquellos campos que no dependan de la llave principal.
En la tabla de usuarios, el nombre de la empresa y su direccin, no dependen de la llave
principal (ID), por lo tanto deben de tener su propio (empresaID):
Usuarios
ID Nombre relEmpresaID
1 Angelica 1
2 Victor 2
7/26/2019 BaseDeDatos 2 ACCES
19/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 36 Ing Juan Daniel Cortez Soto
Empresas
empID Empresa Direccion_empresa
1 ABC Km. 106 Tij-Eda
2 XYZ Punta Banda 32
Emails
EID relID Email
El resultado es, que ahora la llave primaria empIDen la tabla Empresas est relacionada
con la llave externa relEmpresaID en la tabla Usuarios, de manera que es posible aadir
200 (o ms) usuarios a la empresa ABC, y slo aadir una vez la informacin de dichaempresa. Como consecuencia, las tablas de Usuarios y Emails pueden crecer, sin correr
el riesgo de la duplicidad o corrupcin de datos.
Cuarta Forma Normal 4FN
La Cuarta Forma Normal se aplica cuando existe una relacin varios-a-varios entre dos
tablas y, consiste en crear una tercera tabla que relacione las llaves primarias de las dos
tablas originales, donde el resultado son dos relaciones una-a-varios. En el ejemplo
anterior no se present la necesidad de aplicar la cuarta forma normal.
Quinta Forma Normal 5FN
Existe un ltimo nivel de normalizacin que se aplica en ciertas ocasiones, an cuando en
la mayora de los casos no resulta necesario para obtener la mejor funcionalidad de la
estructura de datos. El principio de la Quinta Forma Normal sugiere que:
7/26/2019 BaseDeDatos 2 ACCES
20/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 37 Ing Juan Daniel Cortez Soto
La tabla original debe ser reconstruida desde las tablas resultantes en las cuales fue
separada.
Los beneficios de aplicar sta ltima regla asegurarn que no se ha creado ninguna
columna extraa en las tablas y que la estructura de las tablas que se han creado es de
tamao justo.
CONSULTAS
Introduccin
Las consultas son operaciones que se realizan sobre los datos de una BD. Estasoperaciones pueden ser de diversos tipos:
Consultas de seleccin de datos. Permiten recuperar los datos almacenados en las
tablas en un formato y orden adecuados. Adems, permiten filtrar y agrupar la
informacin.
Consultas de insercin de datos. Permiten agregar registros a una tabla.
Consultas de modificacin. Permiten modificar los valores de los campos de los
registros de una tabla. Consultas de borrado.Permiten eliminar registros de una tabla.
Consultas de creacin de tablas. Permiten crear nuevas tablas cuyos campos y
registros se obtienen a partir de los almacenados en otras tablas.
Dentro de las consultas de seleccin se pueden resaltar algunos grupos importantes:
Consultas de seleccin simple. Permiten filtrar registros y aadir o descartarcampos de los registros. Se utilizan para crear vistas.
Consultas de unin. Permiten relacionar los datos de distintas tablas a travs de
campos clave.
Consultas de agrupamiento.Permiten obtener resultados estadsticos de conjuntos
de registros, como medias de un campo, totales, etctera.
7/26/2019 BaseDeDatos 2 ACCES
21/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 38 Ing Juan Daniel Cortez Soto
Las consultas a las BD se hacen a travs de los denominados lenguajes de consulta. El
ms utilizando de este tipo de lenguajes es el SQL(Structured Query Languge).
Introduccin al SQL
Una consulta SQL est compuesta por una instruccin SQL que la define. Se trata de un
comando que puede ocupar cuanta lnea de texto se desee, terminado en (;).
SQL, como cualquier otro lenguaje, tambin cuenta con algunas palabras reservadas,
como son: SELECT, INSERT, DELETE, UPDATE, SET, WHERE, IN, DISTINCT, GROUP,
ORDER BY, etctera.
Componentes SQL
El lenguaje SQL est compuesto por comandos, clusulas, operadores, expresiones y
funciones de agregado. Estos elementos se combinan en las instrucciones para crear,
actualizar, y manipular las BD.
Comandos
Existen dos tipos de comandos SQL:
Los DLLque permiten crear y definir nuevas BD, campos e ndices.
Los DMLque permiten generar consultas para ordenar, filtrar y extraer datos de la BD.
COMANDOS DLL
Comando Descripcin
CREATE Utilizado para crear nuevas tablas, campos e ndices
DROP Empleado para eliminar tablas e ndices
ALTERUtilizado para modificar las tablas agregando campos o
cambiando la definicin de los campos
7/26/2019 BaseDeDatos 2 ACCES
22/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 39 Ing Juan Daniel Cortez Soto
COMANDOS DML
Comando Descripcin
SELECTUtilizado para consultar registros de la base de datos
que cumplan un criterio determinado
INSERTUtilizado para cargar lotes de datos en la base de datos
en una operacin nica
UPDATE Utilizado para modificar los valores de los campos yregistros especificados
DELETEUtilizado para eliminar registros de una tabla de una
base de datos
Clusulas
Las clusulas son condiciones de modificacin utilizadas para definir los datos que se
desean seleccionar o manipular.
Clusula Descripcin
FROMSe utiliza para especificar la tabla de la cual se van a
seleccionar los registros
WHERESe utiliza para especificar las condiciones que deben
reunir los registros que se van a seleccionar
GROUP BYSe utiliza para separar los registros seleccionados en
grupos especficos
HAVINGSe utiliza para expresar la condicin que debe satisfacer
cada grupo
ORDER BYSe utiliza para ordenar los registros seleccionados de
acuerdo con un orden especfico
7/26/2019 BaseDeDatos 2 ACCES
23/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 40 Ing Juan Daniel Cortez Soto
Operadores Lgicos
Operador Descripcin
ANDEs el "y" lgico. Evala dos condiciones y devuelve un
valor de verdad slo si ambas son ciertas
OREs el "o" lgico. Evala dos condiciones y devuelve un
valor de verdad si alguna de las dos es cierta
NOTNegacin lgica. Devuelve el valor contrario de la
expresin
Operadores de Comparacin
Operador Descripcin
< Menor que
> Mayor que
Distinto de
= 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
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.
7/26/2019 BaseDeDatos 2 ACCES
24/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 41 Ing Juan Daniel Cortez Soto
Funcin Descripcin
AVG
Utilizada para calcular el promedio de los valores de un
campo determinado
COUNTUtilizada para devolver el nmero de registros de la
seleccin
SUMUtilizada para devolver la suma de todos los valores de un
campo determinado
MAXUtilizada para devolver el valor ms alto de un campo
especificado
MINUtilizada para devolver el valor ms bajo de un campo
especificado
Consultas de Seleccin Simple
La consulta ms simple posible consiste en la seleccin de campos y registros de una
tabla. Se identifican los campos que se desean y una condicin que deben cumplir los
registros seleccionados. El resultado es una tabla, que consiste en un subconjunto de la
original.
Sintaxis bsica:
SELECT FROM WHERE ;
Esta instruccin recupera ciertos campos de los registros de una tabla que cumplen una
condicin. La clusula WHERE es opcional. Si se omite, se seleccionan todos losregistros (se supone que la condicin es siempre verdadera).
Sintaxis:
SELECT FROM ;
7/26/2019 BaseDeDatos 2 ACCES
25/61
7/26/2019 BaseDeDatos 2 ACCES
26/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 43 Ing Juan Daniel Cortez Soto
Es posible consultar, desde una BD, una tabla que pertenezca a otra BD. La clusula IN
permite especificar otra BD como origen de la tabla.
Sintaxis:
SELECT FROM IN ;
Consulta SQL
Seleccionar los alumnos mayores de 25
aos, suponiendo que la tabla alumnosest en otra BD que se llama
C:\colegio\registro.mdb
SELECT *
FROM AlumnosIN C:\colegio\registro.mdb
WHERE Edad >=25;
Alias - AS
Se pueden generar consultas en las que aparezcan nuevos campos. Por ejemplo, si se
desea realizar una consulta en la que se muestre la nota media obtenida por los alumnos.
En tal caso se puede utilizar la sintaxis AS para cada
columna como si se tratara de un campo ms de la tabla.
Sintaxis:
SELECT , AS FROM
WHERE ;
Ejemplos:
Consulta SQL
Obtener los apellidos junto a la nota
media, suponiendo que la media de los
parciales es el 80% y el resto se obtiene
con las prcticas
SELECT AP, AM, ((Parcial1 + Parcial2)
/ 2) * 0.8 + Practicas AS Media
FROM Alumnos;
7/26/2019 BaseDeDatos 2 ACCES
27/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 44 Ing Juan Daniel Cortez Soto
Obtener los nombres completos de los
alumnos junto a su matrcula
SELECT Nombre & " " & AP & " " &
AM AS NombreCompleto, Matricula
FROM Alumnos;
Expresiones
Las expresionesen SQL son semejantes a las utilizadas en la mayora de los lenguajes,
entre las principales se encuentran:
Operador Significado
IS NULL
Comparador con valor nulo. Indica si un valor se ha dejado en
blanco. Ejemplo: Alumnos cuya edad se desconoce:
SELECT * FROM Alumnos WHERE Edad IS NULL;
IS NOT NULL
Comparador con valor no nulo. Indica si un campo tiene un
valor y no se ha dejado en blanco. Ejemplo: Alumnos cuya
edad no se desconoce:
SELECT * FROM Alumnos WHERE Edad IS NOT NULL;
LIKE
Comparador de semejanza. Permite realizar una comparacin
de cadenas utilizando caracteres comodines:
? = Un carcter cualquiera
* = Cualquier combinacin de caracteres
Ejemplo: Alumnos cuyo apellido comienza con A:
SELECT * FROM Alumnos WHERE Nombre LIKE "A*";
BETWEEN..AND
Comparador de pertenencia a rango. Por ejemplo: Alumnos
cuya edad est comprendida entre 18 y 20:
SELECT * FROM Alumnos WHERE Edad BETWEEN 18 AND
20;
7/26/2019 BaseDeDatos 2 ACCES
28/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 45 Ing Juan Daniel Cortez Soto
[ ]
Delimitador de identificadores. Sirven para delimitar los
nombres de objetos (campos, tablas, etctera) cuando estos
incluyen espacios. Ejemplo: Suponga una tabla llamada
Alumnos Nuevos:
SELECT * FROM [Alumnos Nuevos];
Ordenacin de Registros
SQL permite especificar que los registros seleccionados se muestren ordenados de forma
ascendente o descendente, de acuerdo a alguno o algunos de los campos seleccionados.
Para ello se dispone de la palabra reservada ORDER BY, con el siguiente formato:
Sintaxis:
SELECT FROM WHERE
ORDER BY ;
La lista de campos para ordenar debe ser un subconjunto de la lista de campos
seleccionados. Para especificar un orden inverso (decreciente) se emplea la clusula
DESC, que puede ser incluida tras el nombre del campo por el que se ordena de forma
descendente. De la misma forma, la clusula ASC ordena los datos pero de forma
ascendente, aunque no es necesario especificarla, ya que es la opcin por omisin.
Ejemplos:
Consulta SQL
Obtener un listado de alumnos
ordenado por apellidos
SELECT *
FROM Alumnos
ORDER BY AP, AM, Nombre;
7/26/2019 BaseDeDatos 2 ACCES
29/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 46 Ing Juan Daniel Cortez Soto
Obtener los alumnos con el primer
parcial aprobado, comenzando por las
mejores notas
SELECT *
FROM Alumnos
WHERE Parcial1 >=6
ORDER BY Parcial1 DESC;
Obtener los apellidos y las notas de los
parciales de los alumnos que han
sacado mejor nota en el primer parcial
que en el segundo, ordenados segn la
diferencia entre ambas notas (las
mayores diferencias primero). En caso
de empate ordenar por apellidos de
forma ascendente.
SELECT AP, AM, Parcial1, Parcial2
FROM Alumnos
WHERE Parcial1> Parcial2
ORDER BY (Parcial1-Parcial2) DESC,
AP, AM;
Agrupamiento de Datos
SQL permite definir consultas en las que se ofrecen registros que se obtienen como
resultado del agrupamiento de varios registros. Por ejemplo, valor promedio de un campo,
mximo, mnimo, cuenta, etctera.
Para este tipo de consultas se proporcionan los siguientes operadores, conocidos tambin
como funciones de agregado.
Operador Significado
COUNT
()
Nmero de registros seleccionados (excepto los que contienen
valor nulo para el campo). S es una lista de campos
(separados por un &) o *, el registro se cuenta si alguno de los
campos que intervienen es no nulo
SUM ()Suma del conjunto de valores contenidos en el campo
especificado. Los registros con valor nulo no se cuentan
AVG ()Media aritmtica del conjunto de valores contenidos en el
campo especificado. Los registros con valor nulo no se cuentan
MAX ()Valor mximo del conjunto de valores contenido en el campo
especificado. Los registros con valor nulo no se cuentan
7/26/2019 BaseDeDatos 2 ACCES
30/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 47 Ing Juan Daniel Cortez Soto
MIN ()Valor mnimo del conjunto de valores contenido en el campo
especificado. Los registros con valor nulo no se cuentan
El formato de este tipo de consulta es:
Sintaxis:
SELECT COUNT/SUM/AVG/MAX/MIN AS
FROM WHERE ;
Se pueden incluir varias funciones de agregado en la misma consulta. Ejemplo:
Consulta SQL
Obtener la calificacin media
para el primer parcial
SELECT AVG (Parcial1) AS MediaP1
FROM Alumnos;
Obtener la mxima y mnima
calificacin media de los dos
parciales
SELECT MAX (Parcial1 + Parcial2)/2 AS
MedMax,
MIN (Parcial1 + Parcial2)/2 AS MEdMin
FROM Alumnos;
Obtener la mxima calificacin
del primer parcial de entre los
alumnos que no tengan cero en
las practicas
SELECT MAX (Parcial1) AS MaxP1
FROM Alumnos
WHERE Practicas 0;
Obtener el nmero de alumnos
que han aprobado el primer
parcial
SELECT COUNT (*) AS Numero
FROM Alumnos
WHERE Parcial1>=6;
En todas las consultas vistas hasta ahora, las funciones de agregado se aplican sobre el
conjunto total de registros de una tabla (excepto los que no cumplen la clusula WHERE
que son descartados), y el resultado de tales consultas es un nico valor.
7/26/2019 BaseDeDatos 2 ACCES
31/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 48 Ing Juan Daniel Cortez Soto
SQL permite crear grupos de registros sobre las cuales aplicar las funciones de agregado,
de manera que el resultado es un conjunto de registros para cada uno de los cuales se ha
calculado el valor de agregado. Los grupos se componen de varios registros que
contienen el mismo valor para un campo o conjunto de campos.
Sintaxis:
SELECT AS FROM
WHERE GROUP BY ;
De esta forma, para cada valor distinto de la suministrada, se calcula la
funcin de agregado correspondiente, slo con el conjunto de registros con dicho valor en
los campos (los registros que no cumplan la condicin WHERE no se toman en cuenta).
Ejemplos:
Consulta SQL
Obtener el nmero de alumnos que hay
con el mismo nombre (sin apellido) para
cada nombre diferente (cuntos
Juanes, Pedros, ...hay?)
SELECT Nombre, COUNT (*) AS
Cuantos
FROM Alumnos
GROUP BY Nombre;
Obtener el nmero de personas que han
obtenido 0, 1, 2,..10 en el primer parcial
(despreciando la parte decimal de las
calificaciones). Ordenar el resultado por
el nmero de alumnos de forma
descendente
SELECT INT (Parcial1) AS Nota,
COUNT (*) AS Cuantos
FROM Alumnos
GROUP BY INT (Parcial1)
ORDER BY COUNT (*) DESC;
El agrupamiento de filas impone limitaciones obvias sobre los campos que pueden ser
seleccionados, de manera que slo puedan obtenerse campos como resultado de una
funcin de agregado o la combinacin de campos que aparezcan en la clusula GROUP
7/26/2019 BaseDeDatos 2 ACCES
32/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 49 Ing Juan Daniel Cortez Soto
BY, y nunca otros campos de la tabla origen. Por ejemplo, la siguiente consulta sera
incorrecta:
SELECT Nombre FROM Alumnos GROUP BY AP;
La razn de que sea incorrecta es trivial: Qu nombre (de los varios posibles) se
seleccionara para cada grupo de AP?. Se debe tener en cuenta que para cada grupo
generado con GROUP BY, slo se muestra una fila como resultado de la consulta.
Filtrado de Registros de Salida
En estas consultas puede aparecer una condicin WHERE que permite descartar los
registros que no deben ser tomados en cuenta a la hora de calcular las funciones de
agregado. Sin embargo, la clusula WHERE no permite descartar registros utilizando
como condicin el resultado de la funcin de agregado.
Por ejemplo, supngase la siguiente consulta: seleccionar los nombres de alumnos para
los que haya ms de dos alumnos con el mismo nombre (3 Pedros, 4 Juanes,..).
Intuitivamente se podra pensar en la siguiente consulta:
Ejemplo:
SELECT Nombre, COUNT (*) FROM Alumnos
WHERE COUNT (*)>2 GROUP BY Nombre;
Sin embargo, la consulta anterior no es correcta. La clusula WHERE no puede contener
funciones de agregado. Para este caso existe otra clusula semejante a WHERE,
HAVING, que tiene el siguiente formato:
Sintaxis:
SELECT AS FROM
WHERE GROUP BY
HAVING ;
7/26/2019 BaseDeDatos 2 ACCES
33/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 50 Ing Juan Daniel Cortez Soto
Para el ejemplo anterior, la instruccin SQL apropiada sera:
Ejemplo:
SELECT Nombre, COUNT (*) FROM Alumnos
GROUP BY Nombre HAVING COUNT (*)>2;
En otras palabras, la clusula WHERE selecciona los registros que intervienen para
calcular las funciones de agregado; mientras que la clusula HAVING, selecciona los
registros que se muestran teniendo en cuenta los resultados de las funciones de
agregado.
En todos los casos, la clusula ORDER BY puede ser incluida. Evidentemente esta
clusula afectar nicamente el orden en que se muestran los registros resultado, y no el
clculo de las funciones de agregado. Los campos por los cuales puede efectuarse la
ordenacin slo pueden ser aquellos susceptibles de ser mostrados; es decir, que los
campos admisibles en la clusula ORDER BY son los mismos que se encuentran en la
clusula SELECT: funciones de agregado y la combinacin de campos que aparezcan en
GROUP BY.
El formato de una instruccin de seleccin SQL con todas las opciones vistas hasta ahora
es la siguiente:
Sintaxis:
SELECT FROM WHERE
GROUP BY HAVING
ORDER BY ;
7/26/2019 BaseDeDatos 2 ACCES
34/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 51 Ing Juan Daniel Cortez Soto
Consultas Sobre Mltiples Tablas
Hasta el momento todas las consultas se basan en seleccionar registros y campos sobre
los datos almacenados en una nica tabla. SQL tambin permite obtener resultados a
travs de la combinacin de mltiples tablas, la forma de hacerlo es mediante un enlace o
unin (Join) de varias tablas a travs de llaves externas (Foreing key). Una llave externa
es un campo o conjunto de campos que hacen referencia a otro campo o conjunto de
campos de otra tabla. Esta relacin se establece habitualmente entre uno o varios
campos de la tabla y la llave principal de otra tabla, y la mayora de las veces guarda
relacin directa con las polticas de integridad referencial definidas.
Producto Cartesiano
El origen de las consultas basadas en mltiples tablas es la operacin de producto
cartesiano, que consiste en una consulta para la que se generan registros como
resultado de todas las combinaciones de los registros de las tablas implicadas.
Supnganse las tablas siguientes: Almacenes, registra los distintos almacenes de la
empresa; Existencias, almacena el stock de cada tipo de pieza en cada almacn; Piezas,
almacena informacin sobre cada tipo de pieza.
Almacenes Existencias Piezas
ID Ciudad Almacn Tipo Cantidad Tipo Nombre
E Ensenada E 1 100 1 Circuitera
M Mexicali E 2 30 2 TRC
T Tijuana T 4 200 3 Altavoz
R Rosarito M 1 50 4 Carcasa
R 1 10
R 2 200
R 3 100
7/26/2019 BaseDeDatos 2 ACCES
35/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 52 Ing Juan Daniel Cortez Soto
El producto cartesiano de las tablas almacenes, existencias sera la siguiente tabla:
Almacenes.ID Almacenes.Ciudad Existencias.
Almacn
Existencias.Tipo Existencias.
Cantidad
E Ensenada E 1 100
E Ensenada E 2 30
E Ensenada T 4 200
E Ensenada M 1 50
E Ensenada R 1 10
E Ensenada R 2 200
E Ensenada R 3 100
M Mexicali E 1 100
M Mexicali E 2 30
M Mexicali T 4 200
M Mexicali M 1 50
M Mexicali R 1 10
M Mexicali R 2 200
M Mexicali R 3 100
T Tijuana E 1 100
T Tijuana E 2 30
T Tijuana T 4 200
T Tijuana M 1 50
T Tijuana R 1 10
T Tijuana R 2 200
T Tijuana R 3 100
R Rosarito E 1 100
R Rosarito E 2 30
R Rosarito T 4 200
R Rosarito M 1 50
7/26/2019 BaseDeDatos 2 ACCES
36/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 53 Ing Juan Daniel Cortez Soto
R Rosarito R 1 10
R Rosarito R 2 200
R Rosarito R 3 100
En la tabla aparecen todas las combinaciones de las tablas implicadas. La forma de
obtener una consulta de producto cartesiano es especificando el nombre de las tablas
implicadas en la clusula FROM.
Sintaxis:
SELECT FROM ;
La lista de campos vlidos es ahora cualquiera de los de las tablas utilizadas, como si se
tratara de una nica tabla en la que existen todos los campos de todas las tablas. Puesto
que es posible que existan campos con el mismo nombre en las diferentes tablas, a la
hora de nombrar los campos ser necesario especificar a qu tabla pertenecen con el
formato ".".
As, la tabla generada en el ejemplo anterior (producto cartesiano) se obtiene con la
siguiente instruccin SQL:
Ejemplo:
SELECT * FROM Almacenes, Existencias;
Las consultas de producto cartesiano como fin ltimo son poco habituales. Por lo general,
el producto cartesiano se utiliza como medio para obtener consultas que relacionan variastablas a partir de llaves externas.
En las tablas de ejemplo se observa claramente la relacin existente entre los campos:
Almacenes Existencias Piezas
ID
Almacn Tipo
7/26/2019 BaseDeDatos 2 ACCES
37/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 54 Ing Juan Daniel Cortez Soto
Ciudad Tipo Nombre
Cantidad
Existencias.Almacn contiene un identificador del almacn al que se refieren las
existencias (requiere integridad referencial de algn tipo con el campo Almacenes.ID), y
Existencias.Tipo, contiene un identificador del tipo al que se refieren el registro de
existencias (requiere integridad referencial con el campo Piezas.Tipo).
Adems se puede intuir la siguiente informacin:
Almacenes.ID es la clave principal de Almacenes
Piezas.Tipo es la clave principal de Piezas
(Exitencias.Almacn, Exitencias.Tipo) es la clave principal de Existencias
Exitencias.Almacn es una clave externa de Existencias sobre Almacenes
Exitencias.Tipo es una clave externa de Existencias sobre Piezas
Las llaves externas permiten enlazar la informacin relacionada entre diferentes tablas. Es
decir, si se desea relacionar las existencias en un almacn con el nombre de la ciudad
donde se ubica ste, se puede calcular el producto cartesiano de Almacenes y
Existencias, y descartar aquellos registros para los cuales no coincidan los campos
Almacenes.ID y Existencias.Almacn.
Ejemplo:
SELECT Almacenes.Ciudad, Existencias.Tipo, Existencias.Cantidad
FROM Almacenes, ExistenciasWHERE Almacenes.ID = Existencias.Almacn;
Esta consulta proporcionara la siguiente tabla:
Almacenes.Ciudad Existencias.Tipo Existencias.Cantidad
Ensenada 1 100
7/26/2019 BaseDeDatos 2 ACCES
38/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 55 Ing Juan Daniel Cortez Soto
Ensenada 2 30
Mexicali 1 50
Tijuana 4 200
Rosarito 1 10
Rosarito 2 200
Rosarito 3 100
Tijuana 4 200
De la misma forma se podran enlazar las tres tablas mediante la siguiente consulta:
Ejemplo:
SELECT Almacenes.Ciudad, Piezas.Nombre, Existencias.Cantidad
FROM Almacenes, Existencias, Piezas
WHERE (Almacenes.ID = Existencias.Almacn)
AND(Existencias.Tipo = Piezas.Tipo);
El resultado de tal consulta es la siguiente tabla:
Almacenes.Ciudad Piezas.Nombre Existencias.Cantidad
Ensenada Circuitera 100
Ensenada TRC 30
Tijuana Carcasa 200
Mexicali Circuitera 50
Rosarito Circuitera 10
Rosarito TRC 200
Rosarito Altavoz 100
7/26/2019 BaseDeDatos 2 ACCES
39/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 56 Ing Juan Daniel Cortez Soto
Uniones - Joins
La operacin de unin- Join, es un mecanismo ms adecuado para enlazar tablas.
La operacin de unin bsicamente obtiene el mismo resultado que un producto
cartesiano filtrado, para que slo se muestren los registros en los que coincida la llave
externa (condicin de join). La diferencia con el producto cartesiano es que se va a
emplear una clusula especfica para definir la operacin, en lugar de la genrica
WHERE, lo que permitir al SGBD (Sistema Gestor de Base de Datos) identificar el tipo
de operacin y proporcionar algunas ventajas sobre el resultado.
Sintaxis:
SELECT
FROM INNER JOIN
ON .=.;
Esta es la unin equiparable al producto cartesiano filtrado como:
SELECT
FROM , WHERE
.=.;
En general, para cualquier nmero de tablas la unin se realiza anidando las uniones. La
sintaxis para tres tablas sera como sigue:
SELECT
FROM INNER JOIN (INNER JOIN ON
.=.)
ON .=.;
7/26/2019 BaseDeDatos 2 ACCES
40/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 57 Ing Juan Daniel Cortez Soto
Consultas de Insercin
Las consultas de insercin permiten aadir registros a una tabla, para este tipo deconsultas se requiere:
1. Una tabla a la que aadir datos.
2. Una consulta de la que obtener los datos que se aaden; o bien, una lista de los
valores a insertar.
El formato SQL de una consulta de insercin de datos utilizando una consulta de
seleccin como origen de los datos es:
Sintaxis:
INSERT INTO ()
SELECT
FROM
La lista de campos destino, es una lista de campos separados por comas; la lista de
campos origen es una lista como la que se utiliza en una consulta de seleccin cualquiera.
Cada campo de la lista origen debe corresponder con otro en la lista destino, en el mismo
orden, de manera que los registros obtenidos en la consulta se aadan a la tabla destino.
Los campos no especificados sern llenados con los valores predeterminados, a menos
que no se tengan ninguno, en ste caso quedarn vacos.
La parte de la consulta de seleccin puede contener todas las opciones vistas al
momento: funciones de agregado, ordenamiento por registros, condiciones de filtrado,
etctera.
La siguiente sintaxis, se utiliza para aadir datos a una tabla sin utilizar a otra tabla o
consulta como origen de datos.
7/26/2019 BaseDeDatos 2 ACCES
41/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 58 Ing Juan Daniel Cortez Soto
Sintaxis:
INSERT INTO ()
VALUES ;
En el caso anterior, debe existir una correspondencia y compatibilidad exacta entre la lista
de campos origen y la lista de campos destino.
Ejemplos:
Consulta SQL
Supngase una tabla Personas en laque se almacena informacin sobre el
nombre, apellidos y cargo (en campos
nombre, apellidos, cargo) de todas las
personas de la Universidad. Aadir a
esta tabla todos los alumnos de la tabla
Alumnos
INSERT INTO Personas (nombre,apellidos, cargo) SELECT Nombre, AP
& & AM AS ApellidosA, Alumno AS
CargoA FROM Alumnos;
Supngase una tabla Historia en la que
se almacena informacin sobre el
nmero de alumnos matriculados cada
ao. Esta tabla tiene los campos: ao
(tipo fecha) y nmero (entero largo).
Aadir a esta tabla el nmero de
alumnos actual con la fecha de este ao
INSERT INTO Historia (ao, numero)
SELECT Year (Date()) AS esteao,
COUNT (*) AS Total FROM Alumnos;
Aadir al alumno Francisco Prez
Sols, con matrcula 3/18965 a la lista
de alumnos
INSERT INTO Alumnos (Nombre, AP,
AM, Matricula) VALUES (Francisco,
Perez, Solis, 3/18965);
Consultas de Actualizacin
Las consultas de actualizacin de datos, permiten modificar los datos almacenados en
una tabla. Se trata de modificar los valores de determinados campos en los registros que
cumplan una determinada condicin.
7/26/2019 BaseDeDatos 2 ACCES
42/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 59 Ing Juan Daniel Cortez Soto
Sintaxis:
UPDATE SET =,
=, =
WHERE ;
Ejemplos:
Consulta SQL
Aprobar el primer parcial que tenga unacalificacin entre 4.5 y 5.9
UPDATE Alumnos SET Parcial1=6WHERE (Parcial1=6);
Poner un 1 en las prcticas a todos los
alumnos que tengan 0 de calificacin en
prcticas y tenga los dos parciales
aprobados con una calificacin media
entre ambos mayor que 7
UPDATE Alumnos SET Practicas=1
WHERE (Parcial1>=6) AND
(Parcial2>=6)
AND ((Parcial1+Parcial2)/2 >7) AND
(Practicas =0);
Redondear las calificaciones de los
alumnos quitando los decimales
UPDATE Alumnos SET Parcial1= INT
(Parcial1), Parcial2= INT (Parcial2),
Practicas = INT (Practicas);
Poner un 0 en prcticas al alumno con
matrcula 3/01621
UPDATE Alumnos SET Practicas = 0
WHERE Matricula=3/01621;
Olvidar la matrcula de los alumnos que
se han presentado al segundo parcial
UPDATE Alumnos
SET Matricula = NULL
WHERE Parcial2 IS NOT NULL;
Consultas con Predicado
El predicadose incluye dentro de la clusula y el primer nombre del campo a recuperar;
los posibles predicados son:
7/26/2019 BaseDeDatos 2 ACCES
43/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 60 Ing Juan Daniel Cortez Soto
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 basndose en la
totalidad del registro y no slo en los campos
seleccionados
ALL
Si no se incluye ninguno de los predicados se asume ALL, por omisin. El motor de BD
selecciona todos los registros que cumplen las condiciones de la instruccin SQL. No es
conveniente abusar de este predicado, ya que obligamos al motor de la BD a analizar la
estructura de la tabla para averiguar los campos que contiene, es mucho ms rpido
indicar el listado de campos deseados.
Ejemplo:
SELECT ALL FROM Alumnos;
La consulta anterior es equivalente a la siguiente:
SELECT * FROM Alumnos;
TOP
Devuelve un cierto nmero de registros que entran entre el principio o el final de un rango
determinado por una clusula ORDER BY. Suponga que se desean recuperar los
nombres de los 25 primeros estudiantes con una calificacin mayor a 7 en el parcial 1. La
consulta sera:
7/26/2019 BaseDeDatos 2 ACCES
44/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 61 Ing Juan Daniel Cortez Soto
SELECT TOP 25 Nombre, AP, Parcial1 FROM Alumnos WHERE
Parcial1>7 ORDER BY Parcial1 DESC;
Si no se incluye la clusula ORDER BY, la consulta devolver un conjunto arbitrario de 25
registros de la tabla Alumnos.
El predicado TOP no elige entre valores iguales. En el ejemplo anterior, si la calificacin
nmero 25 y la 26 son iguales, la consulta regresar 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 especifico por la clusula ORDER BY. Suponga que en
lugar de los 25 primeros estudiantes con una calificacin mayor a 7 en el parcial 1 se
desea el 10%:
Ejemplo:
SELECT TOP 10 PERCENT Nombre, AP, Parcial1 FROM Alumnos
WHERE Parcial1>7 ORDER BY Parcial1 DESC;
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 alumnos listados en la tabla Alumnos
pueden tener el mismo apellido. Si dos registros contienen Lpez en el campo AP, la
siguiente instruccin SQL devolvera un nico registro:
Ejemplo:
SELECT DISTINCT AP FROM Alumnos;
En otras palabras, el predicado DISTINCT devuelve aquellos registros cuyos campos
indicados en la clusula SELECT tengan un contenido diferente. El resultado de una
7/26/2019 BaseDeDatos 2 ACCES
45/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 62 Ing Juan Daniel Cortez Soto
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:
Ejemplo:
SELECT DISTINCTROW AP FROM Alumnos;
Si la tabla empleada contiene dos registros: Antonio Lpez y Martha Lpez, el ejemplo del
predicado DISTINCT devuelve un nico registro con el valor Lpez en el campo AP, ya
que busca no duplicados en dicho campo. Este ltimo ejemplo devuelve dos registros con
el valor Lpez en el apellido, ya que busca no duplicados en el registro completo.
Consultas de Borrado
Las consultas de borrado de datos permiten eliminar registros de una tabla de forma
selectiva, esto es, los registros que cumplan una determinada condicin. Para este tipo de
consulta se tiene:
Sintaxis:
DELETE [. *] FROM WHERE ;
Las consultas de borrado no permiten borrar campos, nicamente registros completos.
Por eso en la parte .* es opcional. Para eliminar el valor de los campos debe
utilizarse una consulta de actualizacin, cambiando el valor de los campos a nulo. Si no
se especifica ninguna condicin, se eliminan todos los registros. No se elimina la tabla,
ya que la estructura sigue existiendo, aunque no contenga ningn registro.
7/26/2019 BaseDeDatos 2 ACCES
46/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 63 Ing Juan Daniel Cortez Soto
Ejemplos:
Consulta SQL
Eliminar los alumnos que hayan
aprobado todo
DELETE FROM Alumnos WHERE
(Parcial1
7/26/2019 BaseDeDatos 2 ACCES
47/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 64 Ing Juan Daniel Cortez Soto
Cualquier comparador seguido de ALL, ANY o SOME. En este caso, la subconsulta
puede proporcionar mltiples registros como resultado.
ALL. Se seleccionan en la consulta principal slo los registros que verifiquen lacomparacin con todos los registros seleccionados en la subconsulta.
ANY. Se seleccionan en la consulta principal slo los registros que verifiquen
la comparacin con cualquiera de los registros seleccionados en la subconsulta.
SOME. Es idntico a ANY.
El nombre de un campo + IN. En este caso, la subconsulta puede proporcionar
mltiples registros como resultados, y se seleccionan en la consulta principal los registros
para los que el valor del campo aparezca tambin en el resultado de la subconsulta. Es
equivalente a utilizar =ANY. Se puede utilizar NOT INpara conseguir el efecto contrario,equivalente a ALL.
La clusula EXIST. El resultado de la consulta puede proporcionar mltiples registros.
La condicin evaluada es que en la subconsulta se recupere algn registro (EXISTS) o no
se recupere ningn registro (NOT EXISTS).
Ejemplos:
Consulta SQL
Seleccionar los alumnos cuya
calificacin en el primer parcial sea
mayor o igual que la media de todos los
alumnos en ese parcial
SELECT * FROM Alumnos
WHERE Parcial1>= (SELECT
AVG(Parcial1)
FROM Alumnos);
Seleccionar a los alumnos mayores que
el alumno con mejor calificacin en
prcticas (suponiendo que slo hay uno
con la mxima calificacin)
SELECT * FROM Alumnos
WHERE Edad>= ( SELECT Edad
FROM Alumnos WHERE Practicas = (
SELECT Max (Practicas) AS MaxPract
FROM Alumnos));
Seleccionar los alumnos cuyo nombre
tambin lo tengan profesores
SELECT * FROM Alumnos
WHERE Nombre IN (SELECT Nombre
FROM Maestros);
Indicar cuantos alumnos tienen la SELECT COUNT(*) AS Numero FROM
7/26/2019 BaseDeDatos 2 ACCES
48/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 65 Ing Juan Daniel Cortez Soto
calificacin del primer parcial mayor que
la mxima calificacin del segundo
parcial de entre los alumnos que en las
prcticas no han aprobado
Alumnos WHERE Parcial1> ( SELECT
MAX (Parcial2) FROM Alumnos
WHERE Practicas
7/26/2019 BaseDeDatos 2 ACCES
49/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 66 Ing Juan Daniel Cortez Soto
En donde:
Tabla. Es el nombre de la tabla que se va a crear. Campo1, Campo2. Son el nombre de los campos que se van a crear en la tabla
nueva. La nueva tabla debe contener al menos un campo.
Tipo. Es el tipo de dato del campo en la nueva tabla.
Tamao. Es el tamao del campo y slo se aplica a los campos de tipo texto.
ndice1, ndice2. Es una clusula CONSTRAINT que define el tipo de ndice a crear.
Esta clusula es opcional.
ndice Multicampos. Es una clusula CONSTRAINT que define el tipo de ndice
multicampos a crear. Un ndice mlticampo es aquel que est indexado por el contenidode varios campos. Esta clusula es opcional.
Ejemplo:
CREATE TABLE Empleados (
Nombre TEXT (25),
Apellidos TEXT (50));
El ejemplo anterior crea una nueva tabla llamada Empleados con dos campos, uno
llamado Nombre de tipo texto con longitud 25, y otro llamado Apellidos con longitud 50.
Ejemplo:
CREATE TABLE Empleados (
Nombre TEXT (10),
Apellidos TEXT (50),
Fecha_nacimiento DATETIME, CONSTRAINT IndiceGeneral UNIQUE
([Nombre], [Apellidos], [Fecha_nacimiento]));
El ejemplo anterior, crea una nueva tabla llamada Empleados con un campo Nombre tipo
texto de longitud 10, otro campo llamado Apellidos tipo texto de longitud 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.
7/26/2019 BaseDeDatos 2 ACCES
50/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 67 Ing Juan Daniel Cortez Soto
Ejemplo:
CREATE TABLE Empleados (
ID INTEGER CONSTRAINT IndicePrimario PRIMARY KEY ,
Nombre TEXT,
Apellidos TEXT,
Fecha_nacimiento DATETIME);
En este ejemplo, se crea una tabla llamada Empleados con un campo de tipo texto con
longitud predeterminada (50) llamado Nombre, otro igual llamado Apellidos, otro campo
llamado Fecha_nacimiento de tipo Fecha/Hora y el campo ID de tipo entero al que
establece como llave principal.
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 o eliminar un ndice de un nico campo o si se trata de un ndice
multicampo.
Sintaxis para ndices de un nico campo:
CONSTRAINT {PRIMARY KEY | UNIQUE |
REFERENCES [(,
)]}
Sintaxis para los ndices de campo mltiples:
CONSTRAINT {
PRIMARY KEY [,[, .. ]]) |
UNIQUE ( [,[, ..]])|
FOREING KEY ([,[, ..]]) REFERENCES
[(,[[,..]])]}
7/26/2019 BaseDeDatos 2 ACCES
51/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 68 Ing Juan Daniel Cortez Soto
En donde:
Nombre. Es el nombre del ndice que se va a crear. primarioN. Es el nombre del campo o 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, .. ref..
Si se desea crear un ndice para un campo cuando se estn utilizando las instrucciones
ALTER TABLE o CREATE TABLE, la clusula CONSTRAINT debe aparecer
inmediatamente despus de la especificacin del campo indexado.
Si se desea crear un ndice con mltiples campos cuando se estn utilizando las
instrucciones ALTER TABLE O CREATE TABLE, la clusula CONSTRAINT debeaparecer afuera de la clusula de creacin de tabla.
Creacin de ndices
La sintaxispara crear un ndice en una tabla ya definida, es la siguiente:
CREATE [UNIQUE] INDEX ON
([ASC|DESC][,[ASC|DESC],..])[WITH{PRIMARY|DISALLOW
NULL|IGNORE NULL}];
En donde:
ndice. Es el nombre del ndice a crear.
Tabla. Es el nombre de una tabla existente en la que se crear el ndice.
Campo. Es el nombre del campo o lista de campos que constituyen el ndice.
7/26/2019 BaseDeDatos 2 ACCES
52/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 69 Ing Juan Daniel Cortez Soto
ASC|DESC. Indica el orden de los valores de los campos.
UNIQUE. Indica que el ndice no puede tener valores duplicados.
DISALLOW NULL.Prohbe 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 llave principal, el cada tabla slo puede
existir un nico ndice que sea llave principal. Si un ndice es llave principal, implica que
no puede contener valores nulos ni duplicados.
Tipo de ndice Descripcin
UNIQUE
Se genera un ndice de clave nica. Lo que implica que los
registros de la tabla no puedan contener el mismo valor en
los campos indexados
PRIMARY KEY
Genera un ndice primario en el campo o los campos
especificados. Todos los campos de la llave principal deben
ser nicos y no nulos, cada tabla slo puede contener una
nica llave principal
FOREIGN KEY
Genera un ndice externo (toma como valor del ndice
campos contenidos en otras tablas). Si la llave 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
del listado
Modificacin del Diseo de una Tabla
Es posible modificar el diseo de una tabla ya existente; se pueden modificar los campos
o los ndices.
7/26/2019 BaseDeDatos 2 ACCES
53/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 70 Ing Juan Daniel Cortez Soto
Sintaxis:
ALTER TABLE {
ADD {
{COLUMN [][CONSTRAINT
]} |
{CONSTRAINT (, ,...,
)}
} |
DROP{
{COLUMN } |
{CONSTRAINT }
}
}
En donde:
Tabla. Es el nombre de la tabla a modificar.
Campo.Es el nombre del campo que se va a aadir o eliminar. Tipo. Es el tipo del campo que se va a aadir.
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.
Se pueden realizar distintas operaciones para modificar las columnas e ndices.
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
CONSTRAINT
Se utiliza para agregar un ndice de multicampos o de un nico
campo
7/26/2019 BaseDeDatos 2 ACCES
54/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 71 Ing Juan Daniel Cortez Soto
DROP COLUMNSe utiliza para borrar un campo. Se especifica nicamente el
nombre del campo
DROP
CONSTRAINT
Se utiliza para eliminar un ndice. Se especifica nicamente el
nombre del ndice a continuacin de la palabra reservada
CONSTRAINT
Ejemplos:
Consulta SQL
Agregar un campo Salario de tipo
Moneda a la tabla Empleados
ALTER TABLE Empleados
ADD COLUMN Salario CURRENCY;
Elimina el campo Salario de la tabla
Empleados
ALTER TABLE Empleados
DROP COLUMN Salario;
Agrega una columna ID de tipo entero a
la tabla Empleados y los marca como el
ndice primario de la tabla.
ALTER TABLE Empleados ADD COLUMN
ID INTEGER CONSTRAINT IndicePrimario
PRIMARY KEY;
Elimina el ndice IndicePrimario de la
tabla Empleados
ALTER TABLE Empleados DROP
CONSTRAINT IndicePrimario;
Agrega un ndice primario de nombre
IndicePrimario sobre el campo ID de la
tabla Empleados.
ALTER TABLE Empleados ADD
CONSTRAINT IndicePrimario PRIMARY
KEY (ID);
Agrega un ndice externo a la tabla
Pedidos. El ndice externo se basa en el
campo ID_Empleado y se refiere al
campo ID_Empleado de la tablaEmpleados. En este ejmplo no es
necesario indicar el campo junto al
nombre de la tabla en la clusula
REFERENCES, pues ID_Empleados se
supone es la llave principal de la tabla
Empleados.
ALTER TABLE PedidosADD CONSTRAINT RelacionPedidos
FOREIGN KEY (ID_Empleado)
REFERENCES Empleados (ID);
7/26/2019 BaseDeDatos 2 ACCES
55/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 72 Ing Juan Daniel Cortez Soto
Elimina el ndice externo
RelacioinPedidos de la tabla Pedidos
ALTER TABLE Pedidos DROP
CONSTRAINT RelacionPedidos;
Agrega un ndice multicampo de nombre
IndiceGeneral formado por los campos
Nombre,Apellidos y Fecha_Nacimiento
de la tabla Empleados.
ALTER TABLE Empleados
ADD CONSTRAINT IndiceGeneral
UNIQUE
Nombre,Apellidos,Fecha_Nacimiento);
Elimina el ndice multicampo de nombre
IndiceGeneral en la tabla Empleados
ALTER TABLE Empleados DROP
CONSTRAINT IndiceGeneral;
CREACIN DE VISTASEl lenguaje SQL tambin pone a disposicin la posibilidad de definir tablas virtuales, las
vistas, calculadas a partir de otras tablas. Son virtuales en el sentido de que no ocupan
espacio en el disco, pero son el resultado de consultas sobre otras tablas y, por lo tanto,
siempre estn alineadas con los valores obtenidos en dichas tablas.
Una vista se puede presentar a casi todos los efectos de la misma forma que una tabla.
Se pueden hacer consultas sobre consultas, aadir, modificar o eliminar datos sobre la
presentacin del resultado de una consulta, crear formularios e informes sobre vistas,etctera.
Sin embargo, existe una limitacin: determinadas operaciones no se permiten sobre
determinadas consultas empleadas como vistas.
La instruccin SQL para definir una vista es la siguiente:
Sintaxis:
CREATE VIEW []
AS ;
La consulta anterior crea una vista llamada definida por la . Tpicamente, es una instruccin SELECT que producir la tabla
que interesa. se puede usar para asignar nombres a las columnas de
7/26/2019 BaseDeDatos 2 ACCES
56/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 73 Ing Juan Daniel Cortez Soto
la vista. Esto es til en el caso en que las columnas que derivan de
sean resultado de un clculo (por ejemplo, COUNT () y por ello no tengan un
nombre explcito. Una vez creada, una vista se puede utilizar como una tabla normal. Las
nicas limitaciones se refieren a las operaciones que cambian los datos contenidos en
ella. En efecto, no todas las vistas pueden actualizarse.
Tambin se pueden crear vistas haciendo una consulta sobre varias tablas, introduciendo
diferentes condiciones o haciendo que el resultado se ordene segn una columna
concreta de la vista.
CREACIN DE TRIGGERS (DISPARADORES)
Los triggers (disparadores) son procedimientos que se ejecutan cuando se produce un
suceso de BD determinado en una tabla especfica. Pueden utilizarse para aumentar la
integridad referencial, conseguir una seguridad adicional o mejorar las opciones de
auditoria disponibles.
Existen dos tipos de disparadores:
Disparadores de instruccin. Se activan una vez por cada instruccin de disparo.
Disparadores de fila. Se activan una vez por cada fila de una tabla afectada por las
instrucciones.
Para cada uno de ellos puede crearse un disparador BEFORE (antes) y otro AFTER
(despus). Entre los sucesos de disparo se encuentran las operaciones INSERT, DELETE
o UPDATE.
Los disparadores de instruccin son tiles si el cdigo del disparador no depende de losdatos afectados. Por ejemplo, se puede crear un disparador de instruccin BEFORE
INSERT en una tabla, para pedir que se efecte una operacin de insercin en dicha
tabla, excepto en determinados perodos de tiempo. Los disparadores de fila son tiles si
la accin del disparador depende de los datos afectados por la transaccin, por ejemplo,
puede crearse un disparador de fila AFTER INSERT que introduzca filas nuevas en una
tabla de auditoria, as como en la tabla base del disparador. Para crear un disparador se
tiene:
7/26/2019 BaseDeDatos 2 ACCES
57/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 74 Ing Juan Daniel Cortez Soto
Sintaxis:
CREATE TRIGGER
ON FOR EACH
EXECUTE PROCEDURE
();
El nombre del trigger se usar s se desea eliminar el trigger. Se usa como argumento
del comando DROP TRIGGER.
La palabra siguiente determina si la funcin debe ser llamada antes (BEFORE) o
despus (AFTER) del evento.
El siguiente elemento del comando determina en que evento o eventos ser llamada
la funcin. Es posible especificar mltiples eventos utilizando el operador OR.
El nombre de la relacin determinar la tabla afectada por el evento.
La instruccin FOR EACH determina si el trigger se ejecutar para cada fila afectada,
o bien, antes o despus de que la secuencia se halla completado.
El nombre del procedimiento es la funcin llamada.
Los argumentos son pasados a la funcin en la estructura CurrentTriggerData. El
propsito de pasar los argumentos a la funcin es permitir a triggers diferentes con
requisitos similares llamar a la misma funcin.
El disparador presentado se activa despus de haber insertado una fila en la tabla
Alumnos. Puesto que se ejecutar despus de que la fila haya sido insertada, los datos de
la misma ya habrn sido validados. A continuacin, la misma fila se inserta en una tabla
remota con la misma estructura, la tabla remota debe existir previamente.
Ejemplo:
CREATE TRIGGER copia_datos AFTER INSERT ON Alumnos FOR
EACH ROW ON Alumnos
BEGIN
INSERT INTO Alumnos@hostremoto
VALUES (:new.Nombre, :new.AP, :new.AM, :new.Matricula);
END;
7/26/2019 BaseDeDatos 2 ACCES
58/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 75 Ing Juan Daniel Cortez Soto
El disparador anterior utiliza la palabra clave NEW para hacer referencia a los valores de
la fila que acaba de ser insertada en la tabla local Alumnos.
CREACIN DE PROCEDIMIENTOS
Un procedimiento es un bloque de instrucciones PL/SQL que se almacenan en el
diccionario de la BD y al que pueden llamar las aplicaciones. Los procedimientos permiten
almacenar dentro de la BD la lgica de las aplicaciones que se emplean con ms
frecuencia. Cuando se ejecuta el procedimiento, sus instrucciones se ejecutan como una
unidad. Los procedimientos no devuelven ningn valor al programa que los llama. Los
procedimientos permiten que la aplicacin que los invoca pueda proveer parmetros deentrada. Los procedimientos permiten tambin, combinar la flexibilidad y facilidad del SQL
con la funcionalidad procedural de un lenguaje de programacin estructurado.
Por ejemplo, el siguiente cdigo crea el procedimiento Cuenta_Credito, el cual acredita
una cantidad monetaria a una cuenta bancaria:
Ejemplo:
CREATE PROCEDURE cuenta_credito (cta NUMBER, credito NUMBER) AS
/* Este procedimiento acepta dos argumentos: un nmero de cuenta y un monto de
dinero acreditado a la cuenta especfica.
S la cuenta especificada no existe, se crea una nueva cuenta.*/
balance_anterior NUMBER;
balance_nuevo NUMBER;
BEGIN
SELECT balance INTO balance_anterior FROM Cuentas
WHERE id_cuenta=cta
FOR UPDATE OF balance;
balance_nuevo:= balance_anterior + credito;
7/26/2019 BaseDeDatos 2 ACCES
59/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 76 Ing Juan Daniel Cortez Soto
UPDATE Cuentas SET balance=balance_nuevo
WHERE id_cuenta=cta;
COMMIT;
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO Cuentas(id_cuenta, balance)
VALUES (cuenta, credito);
WHEN OTHERS THEN
ROLLBACK;
END cuenta_credito;
7/26/2019 BaseDeDatos 2 ACCES
60/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Base de Datos 77 Ing Juan Daniel Cortez Soto
Auto evaluacin Nro 02
Planteamiento de problema
La compaa xxx necesita automatizar sus procesos para el eficiente manejo de
la informacin dentro del ramo de las autopartes.
Los procesos a efectuarse dentro de la empresa son:
1. Captura de los datos de los clientes
2. Facturacin
3. Cobranza4. Corte de caja
Entre otros que se necesitaran debido a los procesos anteriores.
Los datos necesarios para la facturacin de los clientes seran:
Nombre completo
Direccin
Fecha en que se est llevando acabo la compra
Telfono
RUC
La factura necesitar contener los datos anteriores y adems los siguientes:
Numero de factura
Detalle de la compra:
o Clave del articulo
o Descripcin
o Cantidad
o Monto
o Desgloce de igv
o Monto total
Para obtener automticamente en la forma de la factura deber contener un
catalogo de artculos y para obtener los datos del usuario, debe elaborar un catalogo
de clientes.
7/26/2019 BaseDeDatos 2 ACCES
61/61
UNIVERSIDAD JOSE CARLOS MARITEGUI
Al momento de realizar la factura de un cliente inexistente deber capturarse.
Pero si haba comprado en esta empresa debern obtenerse los datos del catlogo de
clientes.
Para este ejercicio deber efectuar lo siguiente:
1. Crear las tablas que considere necesario
2. Elaborar las relaciones que existen entre ellas para poder efectuar el enlace en la
forma de factura.
3. Se agregan las tablas o consultas y se deben hacer las
Relaciones de acuerdo a sus llaves.
4. Por lo tanto deber estipular cuales son las llaves en cadaTabla.