Introducción SQL

download Introducción SQL

of 27

description

Introducción SQL

Transcript of Introducción SQL

  • Taller de Base de Datos

    Unidad 1

    Taller de Base de Datos

    Conceptos Generales:

    Algunas dcadas atrs, la tecnologa Mainframe permita desarrollar y operar sistemas que residan en un nico computador con grandes capacidades de procesamiento y almacenamiento.

    Todo el procesamiento se ejecuta en el computador central.

    Los usuarios interactan mediante los llamados terminales tontos.

    Cada fabricante de mainframes implementa su propio sistema operativo y su propio sistema de comunicaciones.

    2

  • Taller de Base de Datos

    3

    Mainframe

    Terminal

    Taller de Base de Datos

    Conceptos Generales:

    Problema de los sistemas mainframe Incompatibilidad total entre sistemas que residen en computadores de distintos fabricantes.

    Clientes esclavizados al proveedor.

    Avances en las telecomunicaciones traen aires de cambio:

    ISO define un estndar de modelo de red.

    Expansin de los microcomputadores (con capacidad de procesamiento).

    Aparece la tecnologa de red local.

    Tecnologa Ethernet evoluciona rpidamente.

    DoD experimenta con ArpaNet, lo que desemboca en la tecnologa TCP/IP.

    Expansin de la tecnologa Internet.

    Sistema Unix se propone como plataforma abierta.

    Lo anterior ofrece diversas alternativas para la implementacin de sistemas computacionales.

    Diferentes computadores hablan el mismo lenguaje TCP/IP

    4

  • Taller de Base de Datos

    Conceptos Generales:

    Ahora existen diversos tipos de computadores que pueden conectarse por medio de una red (LAN/WAN).

    Las distintas partes de un sistema computacional pueden residir en distintos computadores.

    Problema para los desarrolladores Cmo distribuir los componentes de un sistema entre diversos computadores? Arquitectura de software: Monoltica.

    Cliente / servidor.

    Tres capas.

    SOA Service Oriented Architecture.

    La arquitectura cliente/servidor es ampliamente utilizada. Consiste en disponer aplicaciones servidoras en equipos potentes, a las cuales se conectan aplicaciones clientes para solicitar un servicio.

    Actualmente gran parte de los sistemas computacionales se implementan bajo la arquitectura cliente/servidor, utilizando tecnologa TCP/IP.

    5

    Taller de Base de Datos

    Ejemplos de Sistemas Cliente/servidor:

    FTP File Transfer Protocol: Un servidor FTP dispone archivos de datos para descargar y aplica control de acceso. Distintos clientes FTP se conectan al servidor y descargan o suben archivos.

    Correo electrnico: Un servidor e-mail se ocupa de enviar los mensajes a las casillas e-mail (SMTP). Otro servidor e-mail se ocupa de recibir los mensajes (POP3, IMAP). Distintos clientes e-mail se conectan a estos servidores para enviar y recibir mensajes.

    Web: Un servidor Web administra las pginas web residentes en el equipo servidor (escritas en HTML). Diversos clientes web (navegadores) se conectan al servidor web para solicitar acceso a las pginas web.

    Base de datos: Un servidor de base de datos administra diversas bases residentes en el equipo servidor. Las aplicaciones clientes se ejecutan en computadores usuarios (escritas en algn lenguaje de programacin). Estas aplicaciones se conectan al servidor para solicitar consultas de datos y/o actualizacin de datos.

    6

  • Taller de Base de Datos

    Componentes de Hardware de un Sistema Cliente/Servidor:

    Clientes: usualmente son computadores personales operados por los usuarios, aunque actualmente tambin se utilizan equipos porttiles.

    Red: Cables y medios de comunicacin, tarjetas de red, switches, routers y otros dispositivos que permiten conectar los clientes con los servidores. Actualmente las comunicaciones comprenden redes locales y redes de rea amplia.

    Servidor: Usualmente llamado servidor de base de datos, es un computador que tiene suficiente memoria RAM, potencia de procesamiento y suficiente espacio de almacenamiento, para almacenar y administrar los datos de los sistemas.

    7

    Taller de Base de Datos

    Componentes de Software de un Sistema Cliente/Servidor:

    Software de Servidor: Para almacenar y administrar las bases de datos, se requiere un Sistema Administrador de Bases de Datos o DBMS. El trabajo efectuado por el DBMS, se denomina en forma genrica como procesamiento back-end y el servidor BD mismo se denomina back-end.

    Software Cliente: Aplicacin que se ejecuta en el hardware cliente, pero usa datos almacenados en el servidor. Para acceder a los datos requiere una API (Aplication Program Interface), la cual provee la interfaz entre la aplicacin y el DBMS; por ej: ODBC, JDBC. EL trabajo efectuado por el cliente, usualmente es referido como procesamiento front-end y el cliente mismo se denomina front-end.

    Interfaz SQL: La aplicacin cliente se comunica con el DBMS mediante consultas SQL a travs de las API. SQL es el lenguaje estndar para trabajar con bases de datos relacionales.

    8

  • Taller de Base de Datos

    Otras Arquitecturas:

    Actualmente los sistemas pueden estar implementados en una variedad de arquitecturas, combinando distintos tipos de servidores:

    a) Servidor de aplicaciones: En este caso el sistema se distribuye en tres reas. La interfaz de usuario de la aplicacin se ejecuta en el cliente. El resto del procesamiento efectuado por la aplicacin es almacenado en uno o ms servidores de aplicacin, luego el cliente enva solicitudes al servidor de aplicacin. Si la solicitud involucra acceso a datos, el servidor de aplicacin arma una consulta apropiada y la pasa al servidor de base de datos. El resultado de la consulta es devuelto al servidor de aplicacin, el cual a su vez la reenva al cliente.

    9

    Taller de Base de Datos

    Otras Arquitecturas:

    b) Sistema Web: En este caso un navegador Web (por ej: Chrome) que se ejecuta en el cliente, enva solicitudes HTTP a travs de Internet, a una aplicacin que se ejecuta en un servidor Web. Este servidor Web enva la respuesta en forma de una pgina Web (escrita en HTML), la cual es desplegada en el cliente por el navegador Web. Si la solicitud implica acceso a datos, la aplicacin en el servidor Web arma las consultas apropiadas para enviarlas al servidor de base de datos. El DBMS responde a la aplicacin en el servidor Web y sta arma la respuesta que enviar al cliente, en forma de cdigo HTML.

    10

  • Taller de Base de Datos

    Esquema de un Sistema Web:

    El servicio Web se puede combinar con un servicio de base de datos, para ofrecer pginas web dinmicas.

    11

    Taller de Base de Datos

    Clasificacin de Tecnologas Web:

    12

    Lenguaje estndar para trabajar con las bases de datos SQL, contiene instrucciones para:- Definicin de datos DDL- Manipulacin de datos DML- Control sobre los datos DCL

  • Taller de Base de Datos

    Tipos de Clientes.

    Para un servidor BD, bsicamente existen tres tipos de clientes:

    Cliente usuario: Corresponde a una aplicacin de software creada por un desarrollador, la cual ejecuta instrucciones SQL para trabajar con las tablas de la BD. El acceso a las tablas es transparente para el usuario.

    Cliente desarrollador: Corresponde a una aplicacin que permite a un desarrollador, modelar y crear bases de datos, tablas, ndices, triggers, procedimientos, etc.

    Cliente administrador: Corresponde a una aplicacin que permite manejar las cuentas de usuario, control de accesos, afinamiento y actualizaciones del DBMS, respaldos de datos, etc.

    En la prctica hay aplicaciones cliente que permiten interactuar con el DBMS como un desarrollador y/o como un administrador.

    13

    Taller de Base de Datos

    Ejemplos de Clientes de Administracin/Desarrollo:

    DBMS PostgreSQL:

    PgAdmin = cliente de administracin.

    phpPgAdmin = cliente de administracin va Web.

    DBMS MySQL:

    Workbench = cliente de administracin.

    phpMyAdmin = cliente de administracin va Web.

    DBMS Oracle:

    SQL Developer = cliente de administracin

    DBMS SQL-Server:

    SSMS SQL Server Management Studio

    Multiplataforma:

    DBArtisan = cliente de administracin compatible con diversos DBMSs

    14

  • Taller de Base de Datos

    Ejemplos de Clientes de Aplicacin de Usuario:

    La mayora de los lenguajes de programacin usados actualmente, contienen soporte para trabajar con bases de datos:

    Java:

    JDBC (Java Data Base Connectivity): API que permite la ejecucin de operaciones sobre una base de datos, desde programas Java. Es independiente del sistema operativo.

    PHP:

    OCI8: API para conexin a bases de datos Oracle.

    Mysqli : API para conexin a bases de datos MySQL

    Las aplicaciones escritas en estos lenguajes pueden ejecutar parte de su cdigo en el computador cliente, pero el cdigo que accede a las bases de datos se ejecuta en el servidor, lo que ofrece un mayor nivel de seguridad.

    15

    Taller de Base de Datos

    Objetos que Componen una Base de Datos.

    Base de datos: Coleccin organizada de datos, de acuerdo a un modelo predefinido. Por ejemplo una base de datos de clientes, mantiene en una unidad de almacenamiento todos los datos relacionados con los clientes. Actualmente las bases de datos siguen un modelo relacional, es decir los datos estn organizados en un conjunto de tablas relacionadas entre s.

    Esquema (Schema): Corresponde a la estructura lgica de una base de datos, definida en base a algn lenguaje formal, por ejemplo SQL. Esta definicin contiene la estructuras de las tablas, junto con otra informacin para mantener la integridad de los datos.

    Tabla (Relation): En una BD relacional, equivale a una estructura bidimensional o matriz, la cual contiene los datos de una entidad del mundo real, por ejemplo, la tabla de ciudades de la BD de clientes.

    Vista (View): Una tabla almacena muchos datos relacionados con alguna entidad, sin embargo no todos los usuarios de la BD necesitan ver esa cantidad de datos. Una vista permite presentar una porcin de los datos de una o ms tablas. En rigor una vista no contiene datos, slo consiste en la definicin de un tipo de consulta a una o ms tablas, para presentar dichos dato a un usuario determinado.

    16

  • Taller de Base de Datos

    Objetos que Componen una Base de Datos.

    ndice (Index): Una tabla puede contener miles de filas, e incluso ms. La consulta de datos sera muy lenta en este tipo de tabla. Los ndices son estructuras que permiten definir un ordenamiento determinado en una tabla de BD. Por defecto se crea un ndice para la clave primaria de cada tabla, pero es posible definir ndices adicionales para una misma tabla.

    Procedimientos Almacenados (Stored Procedures): La mayora de los sistemas actuales se construyen bajo un paradigma Cliente/Servidor. Esto significa que existe un fuerte trfico de datos a travs de la red, lo que puede afectar al rendimiento de los sistemas. Una forma de optimizar el rendimiento, es almacenar en el servidor las rutinas que acceden a la BD y las aplicaciones clientes slo las invocan, es decir, por la red slo fluye la orden para ejecutar la rutina almacenada, en vez de el cdigo completo de dicha rutina.

    Disparador (Trigger): Equivale a un cdigo procedural que se ejecuta bajo ciertas condiciones, por ejemplo al crear, modificar o eliminar una fila de una tabla. En general se utilizan para mantener la integridad de los datos en la BD. En algunos casos se pueden aplicar a eventos como cuando un usuario se conecta o desconecta de la BD, o cuando se modifica una tabla, etc.

    Secuencias: Permiten crear valores secuenciales nicos para un dato determinado.17

    Taller de Base de Datos

    Introduccin al Modelo de Datos Relacional.

    En 1970, E. Codd desarroll el modelo de datos relacional, con el objeto de facilitar la administracin y controlar la redundancia de los datos.

    Organizacin de Tablas:

    Los datos se almacenan en una o ms tablas.

    Cada tabla se puede ver como una matriz de filas y columnas. Cada fila contiene datos acera de una entidad individual, por ejemplo un empleado. Cada columna representa a un atributo de esa entidad, por ejemplo nombre.

    Si una tabla contiene una o ms columnas que identifican en forma nica a cada fila, dichas columnas conforman la clave primaria de la tabla. Por ejemplo la clave primaria de la tabla empleados, es la columna RUT. Una clave primaria compuesta est formada por varias columnas.

    Una clave nica, es una o ms columnas que , sin ser clave primaria, pueden identificar en forma nica a cada fila de la tabla, por ejemplo N pasaporte.

    Los ndices permiten un acceso rpido a los datos. En forma automtica se crea un ndice para la clave primaria de una tabla; sin embargo es posible crear ndices adicionales para una misma tabla.

    18

  • Taller de Base de Datos

    Introduccin al Modelo de Datos Relacional.

    19http://www.rena.edu.ve/cuartaEtapa/Informatica/Tema9.html

    Taller de Base de Datos

    Introduccin al Modelo de Datos Relacional.

    Relacin entre Tablas:

    Dentro de una base de datos, las tablas se pueden relacionar entre s, mediante valores en columnas especficas.

    Estas relaciones pueden ser de distintos tipos, por ejemplo: uno-a-uno (1:1), uno-a-muchos (1:N), muchos-a-muchos (M:N). Adems existen relaciones opcionales o mandatory.

    Estas relaciones se implementan mediante claves forneas, es decir, una o ms columnas de una tabla, que hacen referencia a la clave primaria de otra tabla. La clave fornea impone restricciones para la creacin y eliminacin de datos de la BD.

    20

  • Taller de Base de Datos

    Introduccin al Modelo de Datos Relacional.

    Relacin entre Tablas Clave Fornea:

    21http://www.rena.edu.ve/cuartaEtapa/Informatica/Tema9.html

    Taller de Base de Datos

    Introduccin al Modelo de Datos Relacional.

    Definicin de Columnas de una Tabla:

    Al definir columnas de una tabla, se le deben asignar ciertas propiedades definidas en la etapa de diseo de la BD.

    La propiedad ms importante de una columna es el tipo de dato que va a contener. Generalmente se asigna un tipo de dato que minimice el espacio de almacenamiento en disco, principalmente para mejorar el rendimiento de las consultas que se implementarn posteriormente.

    A cada columna se le puede asignar un valor por defecto, el cual se usar al momento de crear una fila sin indicar el valor para esa columna.

    Tambin se debe indicar si la columna aceptar o no valores nulos (NULL).

    Algunos tipos de datos soportados en Oracle:

    22

    Tipo de dato Descripcin

    CHAR, VARCHAR2 Un string de letras, nmeros, smbolos ASCII

    NUMBER Nmeros enteros decimales, que contienen un valor exacto

    FLOAT Nmeros en punto flotante, que contienen un valor aproximado

    DATE Fechas y horas

  • Taller de Base de Datos

    SQL Structured Query Language.

    Actualmente todos los DBMSs relacionales soportan SQL para sus operaciones de administracin y operacin de las bases de datos.

    Aunque se trata de un lenguaje estndar, distintos fabricantes de DBMS implementan dialectos que contienen extensiones al estndar (por ej: T-SQL, PL/SQL, etc.). Sin embargo las instrucciones SQL bsicas son las mismas en cada dialecto, lo que permite un aprendizaje fcil.

    Por otra parte, convertir aplicaciones que usan SQL desde un DBMS a otro distinto, usualmente requiere cambios substanciales.

    Instrucciones SQL para trabajar con datos (DML):

    23

    Instruccin Descripcin

    SELECT Recupera datos desde una o ms tablas

    INSERT Agrega nuevas filas a una tabla

    UPDATE Modifica los valores de una o ms filas de una tabla

    DELETE Elimina una o ms filas de una tabla

    Taller de Base de Datos

    SQL Structured Query Language.

    Instrucciones SQL para trabajar con objetos (DDL):

    24

    Instruccin Descripcin

    CREATE USER Crea un nuevo usuario para la base de datos

    CREATE TABLE Crea una nueva tabla en la base de datos

    CREATE SEQUENCE Crea una nueva secuencia que genera nmeros automticamente

    CREATE INDEX Crea un nuevo ndice para una tabla

    ALTER USER Modifica la definicin de un usuario existente

    ALTER TABLE Modifica la definicin de una tabla existente

    ALTER SEQUENCE Modifica la definicin de una secuencia existente

    ALTER INDEX Modifica la estructura de un ndice existente

    DROP USER Elimina un usuario existente

    DROP TABLE Elimina una tabla existente

    DROP SEQUENCE Elimina una secuencia existente

    DROP INDEX Elimina un ndice existente

    GRANT Asigna privilegios a un usuario

    REVOKE Quita privilegios a un usuario

  • Taller de Base de Datos

    SQL Structured Query Language.

    25

    Taller de Base de Datos

    SQL Structured Query Language.

    Trabajo con Objetos:

    Creacin de un usuario y asignacin de privilegios:

    Creacin de una tabla:

    26

    CREATE USER ap IDENTIFIED BY ap;GRANT ALL PRIVILEGES TO ap;

    CREATE TABLE facturas (id_factura NUMBER NOT NULL,id_prov NUMBER NOT NULL,nombre_prov VARCHAR2(50) NOT NULL,dir_prov VARCHAR2(50) NOT NULL,fecha_factura DATE NOT NULL,total_factura NUMBER(9,2) NOT NULL,iva NUMBER(9,2) NOT NULL,prepago NUMBER(9,2) DEFAULT 0,credito NUMBER(9,2) DEFAULT 0,fecha_pago DATE,CONSTRAINT factura_pk

    PRIMARY KEY (id_factura),CONSTRAINT factura_fk_prov

    FOREIGN KEY (id_prov) REFERENCES proveedores(id_prov));

    Hay algo extrao en esta tabla ?

  • Taller de Base de Datos

    SQL Structured Query Language.

    Trabajo con Objetos:

    Agregar una columna a la tabla:

    Eliminar columna de la tabla:

    Crear un ndice para la tabla:

    Eliminacin del ndice anterior

    Creacin de secuencia para generar valores de id-factura:

    27

    ALTER TABLE facturas ADD fecha_entrega DATE;

    ALTER TABLE facturas DROP COLUMN fecha_entrega;

    CREATE INDEX facturas_prov ON facturas(id_prov);

    DROP INDEX facturas_prov;

    CREATE SEQUENCE sec_id_facturaSTART WITH 115INCREMENT BY 1;

    Taller de Base de Datos

    SQL Structured Query Language.

    Trabajo con Datos:

    Consulta ordenada de facturas:

    Consulta con unin de datos de dos tablas:

    La clusula JOIN permite combinar datos de dos o ms tablas, dentro de una consulta.

    El tipo ms comn de JOIN es el INNER JOIN, el cual combina las filas de ambas tablas, slo si los valores coinciden.

    OUTER JOIN recupera las filas de una tabla, an en el caso que no hayan coincidencias.

    28

    SELECT id_factura, fecha_factura, total_factura, prepagoFROM facturasWHERE total_factura prepago > 0ORDER BY fecha_factura;

    SELECT nom_prov, id_factura, fecha_factura, total_facturaFROM proveedores INNER JOIN facturas

    ON proveedores.id_prov = facturas.id_provWHERE total_factura >= 500000ORDER BY nombre_prov, total_factura DESC;

  • Taller de Base de Datos

    SQL Structured Query Language.

    Trabajo con Datos:

    Agregar una fila a la tabla de facturas:

    Modificar el valor de una columna, para una fila determinada:

    Modificar el valor de una columna para varias filas que cumplen una condicin:

    29

    INSERT INTO facturas(id_factura, id_prov, fecha_factura, total_factura, credito)VALUES(sec_id_factura.NEXTVAL, 12, 2014-01-22, 58000, 0);

    UPDATE facturasSET credito = 16000WHERE id_factura = 290623;

    UPDATE facturasSET prepago = 0WHERE credito > 0;

    Taller de Base de Datos

    SQL Structured Query Language.

    Trabajo con Datos:

    Eliminar una fila especfica de la tabla de facturas:

    Eliminar un conjunto de filas que cumplan con una condicin determinada:

    Trabajo con Vistas:

    Una vista es un objeto de una base de datos, que equivale a una consulta predefinida, la cual ofrece una forma alternativa de observar los datos almacenados en una tabla.

    En la prctica, un usuario percibe una vista como otra tabla de datos.

    Las vistas se pueden usar para restringir el acceso a los datos por parte de un usuario, o para presentar los datos de manera que sean ms fciles de entender.

    30

    DELETE FROM facturasWHERE id_factura = 928031;

    DELETE FROM facturasWHERE prepago < 0;

  • Taller de Base de Datos

    SQL Structured Query Language.

    Trabajo con Vistas:

    Creacin de una vista:

    La vista facturas_min equivale a una tabla de facturas pero con menos columnas.

    Recomendaciones de codificacin SQL:

    Instrucciones SQL en maysculas, nombres de objetos y datos en minsculas.

    Separar las palabras de nombres con guin bajo, ej: nombre_cliente.

    Iniciar cada clusula en una lnea nueva.

    Dividir las clusulas demasiado largas en mltiples lneas, con indentacin.

    Ej: SELECT rut, nombre, apellido, direccion, telefono FROM cliente_hab WHERE ciudad = santiago OR ciudad = punta arenas

    AND tipo = ESPORDER BY apellido;

    31

    CREATE VIEW facturas_min ASSELECT id_factura, total_factura, iva, prepago, creditoFROM facturas;

    Taller de Base de Datos

    Ejercicio.

    Este ejercicio implica instalar la plataforma de desarrollo XAMPP (MySQL). Luego crear una base de datos segn un modelo predefinido y por ltimo poblar las tablas de la base de datos, con datos de prueba.

    Se trabajar con el cliente de consola, de manera que todas las instrucciones se deben ingresar por el teclado.

    Pasos:

    1. Descargar e instalar la aplicacin XAMPP.

    2. Iniciar el servidor MySQL.

    3. Crear una base de datos con nombre acme2014.

    4. Utilizar instrucciones SQL-DDL para crear las tablas de la base de datos, segn lo indicado en el modelo adjunto y respetando las restricciones indicadas.

    5. Utilizar instrucciones SQL-DML para poblar las tablas de la base de datos.

    6. Probar consultas simples sobre la base de datos.

    7. Tomar nota de las acciones realizadas, instrucciones utilizadas, problemas encontrados, errores cometidos, soluciones aplicadas, etc.

    32

  • Taller de Base de Datos

    Ejercicio Modelo de Datos.

    33

    Claveprimaria

    AtributoNOT NULL

    AtributoNULL

    Clave forneaNULL

    Clave forneaNOT NULL

    Taller de Base de Datos

    Ejercicio Modelo de datos.

    Primero crear la base de datos y luego partir creando las tablas que no tengan claves forneas, por ej:

    34

    CREATE SCHEMA IF NOT EXISTS acme2014 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

    USE acme2014;

    CREATE TABLE IF NOT EXISTS sucursal (num_suc VARCHAR(3) NOT NULL ,direccion VARCHAR(30) NOT NULL ,ciudad VARCHAR(20) NOT NULL ,telefono VARCHAR(10) NOT NULL ,PRIMARY KEY (num_suc) )

    ENGINE = InnoDB;

    CREATE TABLE IF NOT EXISTS empleado (num_emp VARCHAR(4) NOT NULL ,nombre VARCHAR(20) NOT NULL ,apellido VARCHAR(20) NOT NULL ,cargo VARCHAR(20) NOT NULL DEFAULT ' NOASIG' ,fecha_ing DATE NOT NULL ,salario INT(9) NOT NULL ,num_suc VARCHAR(3) NULL DEFAULT NULL ,PRIMARY KEY (num_emp) ,INDEX fk_empleado_sucursal1 (num_suc ASC) ,CONSTRAINT fk_empleado_sucursal1

    FOREIGN KEY (num_suc)REFERENCES sucursal (num_suc)ON DELETE NO ACTIONON UPDATE NO ACTION)

    ENGINE = InnoDB;

  • Taller de Base de Datos

    35

    Taller de Base de Datos

    36

  • Taller de Base de Datos

    Ejercicio Modelo de datos.

    Poblar las tablas en el mismo orden en que se crearon, por ejemplo:

    37

    INSERT INTO empleado VALUES ('7369','ANDREA','SOTO','ASISTENTE','2000-12-17',618000,'20'),('7499','PEDRO','LOPEZ','GERENTE','2001-02-20',1800000,'40'),('7521','SAMUEL','MUOZ','SUPERVISOR','2001-02-22',1287500,'30'),('7566','BRUNO','LIRA','ASISTENTE','2001-04-02',741600,'20'),('7654','XIMENA','BRITO','SUPERVISOR','2001-09-28',1287500,'30'),('7698','CARLOS','SILVA','GERENTE','2001-05-02',2000775,'30'),('7782','CRISTOBAL','CEA','GERENTE','2001-06-09',1568175,'40'),('7788','CLAUDIA','NUEZ','GERENTE','1997-04-19',2163000,'20'),('7839','JOSE','LOPEZ','DIRECTOR','2001-11-17',4120000,'10'),('7844','JORGE','RAMOS','SUPERVISOR','2001-09-08',1545000,'40'),('7876','ROCIO','MENA','ASISTENTE','2007-05-23',669500,'20'),('7900','JUAN','ARENAS','ASISTENTE','2011-12-03',772500,'30'),('7902','PABLO','TOBAR','SUPERVISOR','2001-12-03',2060000,'20'),('7934','IVAN','VERA','ASISTENTE','2002-02-23',1133000,'10');

    INSERT INTO sucursal VALUES ('10','CONDELL 98','VALPARAISO','2326588'),('20','COLON 102','VALPARAISO','8911805'),('30','BLANCO 126','VALPARAISO','2268531'),('40','VICTORIA 14','VALPARAISO','2569364'),('50','COSTANERA 592','SAN ANTONIO','4961228');

    Taller de Base de Datos

    Ejercicio Modelo de datos.

    Poblar resto de las tablas con phpMyAdmin (localhost / 127.0.0.1):

    38

  • Taller de Base de Datos

    39

    SQL Consultas:

    Generar un listado con todos los datos de todos los empleados:

    Generar un listado con el N, nombre, apellido y sueldo de todos los empleados

    SELECT num_emp, nombre, apellido, cargo, fecha_ing, salario, num_suc FROM empleado;

    SELECT *FROM empleado;

    SELECT num_emp, nombre, apellido, salarioFROM empleado;

    Taller de Base de Datos

    40

    SQL Consultas :

    Generar un listado con los N de propiedad de todas las propiedades visitadas.

    Dado que hay propiedades visitadas varia veces, el resultado contiene valores repetidos

    Para evitar esto se puede usar la clusula DISTINCT

    SELECT num_propFROM visita;

    SELECT DISTINCT num_propFROM visita;

  • Taller de Base de Datos

    Consultas.

    1. Consultar la direccin, el tipo y la cantidad de piezas de todas las propiedades.

    2. Consultar la direccin, ciudad y telfono de las sucursales.

    3. Consultar todos los datos de los propietarios.

    4. Consultar el nombre, apellido, tipo de preferencia y valor mximo de los clientes.

    5. Consultar el N de propiedad y la fecha de todas las visitas a propiedades.

    6. Generar un listado con todas las propiedades de Valparaso y Quilpu.

    7. Generar un listado de todos los empleados cuyo salario est en el rango entre $800.000 y $1.400.000

    8. Generar un listado con todos los datos de gerentes y supervisores

    9. Consultar la direccin, el tipo y la cantidad de piezas de todas las propiedades de Valparaso.

    10. Consultar la direccin, ciudad y propietario de las propiedades cuyo valor de arriendo flucta entre $180.000 y $220.000.

    11. Consultar todos los datos de los clientes cuyas preferencias no son CASAS ni DEPTOS.

    12. Consultar todas las propiedades administradas por los empleados Bruno Lira, o Jorge Ramos

    41

    http://www.w3schools.com/sql/http://www.sqlcourse.com/index.htmlhttp://dev.mysql.com/doc/refman/5.0/es/index.htmlhttp://www.aulaclic.es/sql/

    Taller de Base de Datos

    Trabajo con DBMS Oracle Express Edition.

    Requiere la instalacin de las siguiente aplicaciones:

    Oracle XE11gR2:

    Descargar de Internet:

    Descomprimir archivo descargado a una carpeta temporal

    Abrir la carpeta temporal (DISK1) y ejecutar el programa setup.exe

    SQL Developer:

    Descargar de Internet:

    Seleccionar versin segn sistema operativo

    Requiere la instalacin de JRE. Instalar previamente o descargar versin que incluye JRE.

    Crear una carpeta y descomprimir el archivo descargado a esa carpeta.

    Abrir la carpeta y ejecutar el programa sqldeveloper.exe

    42

    http://www.oracle.com/technetwork/database/express-edition/downloads/index.html)

    http://www.oracle.com/technetwork/developer-tools/sql-developer/

  • Taller de Base de Datos

    Trabajo con DBMS Oracle Express Edition.

    La administracin de la base de datos se puede hacer a travs del cliente de consola o a travs del cliente SQL Developer:

    43

    Taller de Base de Datos

    Trabajo con DBMS Oracle Express Edition.

    Ingresar a la consola de administracin y conectarse como usuario system.

    Crear el usuario ap y asignarle privilegios:

    En la consola abrir conexin con el usuario recin creado:

    Al crear el usuario ap, tambin se cre el esquema ap en donde se almacenarn todos los objetos creados por el usuario.

    44

    SQL> connect system /as sysdbaEnter password:Connected.SQL>

    SQL> CREATE USER ap IDENTIFIED BY ap;SQL> GRANT ALL PRIVILEGES TO ap;

    SQL> conn ap/apConnected.SQL>

    No tiene contrasea

  • Taller de Base de Datos

    Trabajo con DBMS Oracle Express Edition.

    Creacin de la tabla facturas dentro del esquema ap.

    Verificar la creacin de la tabla facturas:

    45

    CREATE TABLE facturas (id_factura NUMBER NOT NULL,id_prov NUMBER NOT NULL,nombre_prov VARCHAR2(50) NOT NULL,dir_prov VARCHAR2(50) NOT NULL,fecha_factura DATE NOT NULL,total_factura NUMBER(9,2) NOT NULL,iva NUMBER(9,2) NOT NULL,prepago NUMBER(9,2) NULL,credito NUMBER(9,2) NULL,fecha_pago DATE,CONSTRAINT factura_pk

    PRIMARY KEY (id_factura) );

    SQL> DESCRIBE facturas;

    Taller de Base de Datos

    Trabajo con DBMS Oracle Express Edition.

    Crear una secuencia para asignar el N de factura en forma automtica:

    La instruccin anterior crea un objeto secuencia, que puede ser utilizado al momento de crear filas de una tabla. En esta caso, al crear nuevas facturas se puede utilizar esta secuencia, la cual asigna un N nico e incrementa el valor para la siguiente factura que se ingresar a la base.

    La ventaja de los objetos secuencia es que pueden generar valores nicos en un entono multi-usuario, ya que asegura que dos sesiones concurrentes no generenun valor repetido.

    Por esta razn, los valores generados por objetos secuencia se pueden utilizar como claves primarias en las tablas de datos.

    46

    CREATE SEQUENCE sec_id_facturaSTART WITH 115INCREMENT BY 1;

  • Taller de Base de Datos

    Oracle Procedimientos Almacenados.

    Un procedimiento almacenado (SP) es un programa en cdigo SQL que estalmacenado en el servidor de base de datos, en vez de residir en el servidor Web, lo que puede presentar algunas ventajas:

    Mejor rendimiento de las consultas: Los procedimientos almacenados se mantienen como SQL precompilado en la BD, luego el proceso de dos pasos (compilar y ejecutar) de las consultas, se reduce a un slo paso de ejecutar.

    Facilidad de mantencin: Un nico procedimiento almacenado puede ser invocado desde distintas aplicaciones, luego resulta ms simple modificar el cdigo en una sola ubicacin, en vez de en todas las aplicaciones que lo utilizan. Esto tambin significa un nivel de seguridad adicional, puesto que los usuarios no acceden directamente a los datos, sino que deben invocar a un procedimiento almacenado.

    Desventajas:

    Una cantidad excesiva de procedimientos almacenados en un servidor BD, implican una carga adicional de procesamiento, lo que puede mermar el rendimiento global del servidor BD. Esto se debe tener en cuentaespecialmente cuando un nico servidor de BD otorga servicio de datos a varios servidores Web.

    47

    Taller de Base de Datos

    Trabajo con DBMS Oracle Express Edition.

    Crear un procedimiento almacenado para insertar una nueva fila a la tabla facturas, segn lo siguiente:

    Se debe utilizar el objeto secuencia para asignar el N de factura.

    Asignar la fecha del sistema a la columna fecha_factura.

    Asegurar que los tipos de datos y cantidad de columnas sean consecuentes.

    48

    CREATE OR REPLACE PROCEDURE inserta_factura ( id_pro NUMBER,

    nombre_pro VARCHAR2, dir_pro VARCHAR2,total NUMBER,par_iva NUMBER )

    ASBEGIN

    INSERT INTO facturas VALUES( sec_id_factura.NEXTVAL, id_pro, nombre_pro, dir_pro, SYSDATE,

    total, par_iva, 0, 0, NULL );COMMIT;

    EXCEPTIONWHEN OTHERS THEN

    ROLLBACK;END;/

  • Taller de Base de Datos

    Trabajo con DBMS Oracle Express Edition.

    Ejecucin del procedimiento almacenado:

    Verificar la ejecucin del SP:

    49

    call inserta_factura(100306, 'CARLOS VICENCIO', 'CONDELL 360', 25720, 4887);

    Call completed.

    SQL> select * from facturas;

    ID_FACTURA ID_PROV NOMBRE_PROV---------- ---------- --------------------------------------------------DIR_PROV FECHA_FA TOTAL_FACTURA-------------------------------------------------- -------- -------------

    IVA PREPAGO CREDITO FECHA_PA---------- ---------- ---------- --------

    115 100306 CARLOS VICENCIOCONDELL 360 03/03/14 25720

    4887 0 0

    Taller de Base de Datos

    Trabajo con DBMS Oracle Express Edition.

    Ejecutar el SP con los siguientes datos:

    Verificar la ejecucin del SP:

    50

    Id. Proveedor Nombre Proveedor Direccin Total IVA

    100307 FLORERIA COLON COLON 1106 12000 2280

    100340 SANTA ISABEL PEDRO MONTT 830 88400 16796

    100346 REPUESTOS XYZ GENERAL CRUZ 36 138000 26220

    100361 AGENCIA PORTUARIA BLANCO 2862 360000 68400

    SELECT id_factura, fecha_factura, total_factura, ivaFROM facturas;

    ID_FACTURA FECHA_FA TOTAL_FACTURA IVA---------- -------- ------------- ----------

    115 03/03/14 25720 4887116 03/03/14 12000 2280117 03/03/14 88400 16796118 03/03/14 138000 26220119 03/03/14 360000 68400

  • Taller de Base de Datos

    Trabajo con DBMS Oracle Express Edition.

    Vistas (VIEWS).

    Las vistas se aplican a una o ms tablas de una BD y permiten seleccionar algunas columnas para que sean utilizadas por algn usuario especfico.

    En este caso se requiere crear una vista de la tabla facturas, que slo contenga el N de factura y los campos numricos.

    Verificar la vista:

    51

    CREATE VIEW factura_num ASSELECT id_factura, total_factura, iva, prepago, creditoFROM facturas;

    SQL> select * from factura_num;

    ID_FACTURA TOTAL_FACTURA IVA PREPAGO CREDITO---------- ------------- ---------- ---------- ----------

    115 25720 4887 0 0116 12000 2280 0 0117 88400 16796 0 0118 138000 26220 0 0119 360000 68400 0 0

    Taller de Base de Datos

    Trabajo con DBMS Oracle Express Edition.

    Funciones de Usuario (User-Defined Function UDF):

    Una UDF es similar a un SP. Est almacenada en el servidor y su sintaxis de creacin es similar a la sintaxis de un SP.

    La principal diferencia es que no puede modificar los datos almacenados en la BD, pero pueden realizar algn procesamiento y retornar valores.

    Una UDF se utiliza en forma similar a las funciones incorporadas de Oracle. Ej:

    52

    CREATE OR REPLACE FUNCTION factura_prom( par_id_prov NUMBER )RETURN NUMBERAS prom_total_factura NUMBER (9,2);BEGIN

    SELECT AVG(total_factura)INTO prom_total_facturaFROM facturasWHERE id_prov = par_id_prov;RETURN prom_total_factura;

    END;/

  • Taller de Base de Datos

    Trabajo con DBMS Oracle Express Edition.

    Funciones de Usuario (User-Defined Function UDF):

    Ingreso de una nueva factura mediante el SP inserta_factura

    Uso de la UDF dentro de una sentencia SELECT.

    53

    SELECT DISTINCT id_prov, factura_prom(id_prov)FROM facturasORDER BY id_prov;

    ID_PROV FACTURA_PROM(ID_PROV)---------- ---------------------

    100306 25720100307 32000100340 88400100346 138000100361 360000

    call inserta_factura(100307, 'FLORERIA COLON', 'COLON 1106', 52000, 9880);

    Taller de Base de Datos

    Trabajo con DBMS Oracle Express Edition.

    Ejercicios por consola de administracin:

    1. Crear una vista (factura_pro) de la tabla facturas, que muestre el N de factura y los datos del proveedor.

    2. Crear una vista (factura_100) de la tabla facturas, que muestre el N de factura y los campos numricos, slo para las facturas con total >= $100.000.

    3. Crear un SP para consultar todas las facturas de la vista factura_num con total de factura 0)

    6. Crear un SP para consultar la vista factura_pag, entre dos fechas especficas (pasadas como parmetro).

    7. Crear un SP para eliminar una factura especfica (pasada como parmetro).

    8. Crear un ndice para mantener las facturas ordenadas por nombre de proveedor.

    9. Crear una UDF para consultar el total de facturas de todos los proveedores.

    10. Crear la tabla proveedores(id_prov, nombre_prov, dir_prov, ciudad, rubro, credito), asignar tipos de datos apropiados.

    54