basededatos 2 acces

Upload: clever-paredes-larico

Post on 13-Apr-2018

234 views

Category:

Documents


0 download

TRANSCRIPT

  • 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

    1 1 [email protected]

    2 1 [email protected]

    3 2 [email protected]

    4 2 [email protected]

    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

    1 1 [email protected]

    2 1 [email protected]

    3 2 [email protected]

    4 2 [email protected]

    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.