Está en la página 1de 45

DIPLOMADO MODELAMIENTO DE

BASE DE DATOS

Área de coordinación académica

http://computacion.idatvirtual.edu.pe
Bienvenido

Bienvenidos
queridos
alumnos a este
curso. Yo soy
IDatCitoVirtual y
te ayudare a
trabajar.
Iniciemos…

http://computacion.idatvirtual.edu.pe
PL/SQL

http://computacion.idatvirtual.edu.pe
•Estudiante_Secuecia
Se emplea para generar valores únicos para la clave primaria
de estudiantes

CREATE SEQUENCE estudiante_secuencia


START WITH 10000
INCREMENT BY 1;

http://computacion.idatvirtual.edu.pe
La tabla estudiante contiene información acerca de los
asistentes a la universidad .

CREATE TABLE estudiantes (


Codigo NUMBER(5) PRIMARY KEY,
Nombre VARCHAR2(20),
Apellido VARCHAR2(20),
Curso VARCHAR2(30),
Creditos NUMBER(3)
);

http://computacion.idatvirtual.edu.pe
INSERT INTO estudiantes ( codigo, nombre, apellido, curso, creditos)
VALUES (estudiante_secuencia.NEXTVAL, 'Scott ' , 'Smith', ' Computacion ' , 0);

INSERT INTO estudiantes ( codigo, nombre, apellido, curso, creditos)


VALUES (estudiante_secuencia.nextval, ' Margaret', 'Mason', 'Historia ', 0);

INSERT INTO estudiantes ( codigo, nombre, apellido, curso, creditos)


VALUES (estudiante_secuencia.nextval, 'Joanne ', 'Junebug ', 'Computacion', 0);

INSERT INTO estudiantes ( codigo, nombre, apellido, curso, creditos)


VALUES (estudiante_secuencia.nextval, 'Manish', 'murgratroid', 'Economia', 0);

http://computacion.idatvirtual.edu.pe
INSERT INTO estudiantes ( codigo, nombre, apellido, curso, creditos)
VALUES (estudiante_secuencia.nextval, 'Patrick ', 'Poll' , 'Historia', 0);

INSERT INTO estudiantes ( codigo, nombre, apellido, curso, creditos)


VALUES (estudiante_secuencia.nextval, 'Timothy', 'Taller', 'Historia', 0);

INSERT INTO estudiantes ( codigo, nombre, apellido, curso, creditos)


VALUES (estudiante_secuencia.nextval, 'Barbara', 'Blues' , 'Economia' , 0);

INSERT INTO estudiantes ( codigo, nombre, apellido, curso, creditos)


VALUES (estudiante_secuencia.nextval, 'David ', 'Dinsmore ' , 'Music ', 0);

http://computacion.idatvirtual.edu.pe
INSERT INTO estudiantes ( codigo, nombre, apellido, curso, creditos)
VALUES (estudiante_secuencia.nextval, 'Ester', 'Elegant ' , 'Nutricion ' , 0);

INSERT INTO estudiantes ( codigo, nombre, apellido, curso, creditos)


VALUES (estudiante_secuencia.nextval, 'Rose', 'Riznit', 'Music', 0);

INSERT INTO estudiantes ( codigo, nombre, apellido, curso, creditos)


VALUES (estudiante_secuencia.nextval, 'Rita', 'Razmataz', 'Nutricion', 0);

http://computacion.idatvirtual.edu.pe
La tabla estudiante con registros

http://computacion.idatvirtual.edu.pe
La tabla curso_estado almacena una serie de estadísticas
generadas sobre las distintas especialidades.

CREATE TABLE curso_estado (


Curso VARCHAR2(30),
Total_creditos NUMBER,
Total_estudiantes NUMBER);

http://computacion.idatvirtual.edu.pe
La tabla curso_estado y su composición

http://computacion.idatvirtual.edu.pe
La tabla aula almacena la información acerca de las aulas
disponibles

CREATE TABLE aula (


Aula_cod NUMBER(5) PRIMARY KEY,
Edificio VARCHAR2(15),
Numero_aula NUMBER(4),
Numero_asientos NUMBER(4),
Descripcion VARCHAR2(50)
);

http://computacion.idatvirtual.edu.pe
INSERT INTO aula (aula_cod, edificio, numero_aula, numero_asientos, descripcion)
VALUES (99999, 'Edificio 7', 310,1000, 'Sala de lecura grande');

INSERT INTO aula (aula_cod, edificio, numero_aula, numero_asientos, descripcion)


VALUES (99998, 'Edificio 6', 101,500, 'Sala de lecura pequeña’);

INSERT INTO aula (aula_cod, edificio, numero_aula, numero_asientos, descripcion)


VALUES (99997, 'Edificio 6', 150,50, 'Aula A Discusion');

INSERT INTO aula (aula_cod, edificio, numero_aula, numero_asientos, descripcion)


VALUES (99996, 'Edificio 6', 160,50, 'Aula B Discusion');

INSERT INTO aula (aula_cod, edificio, numero_aula, numero_asientos, descripcion)


VALUES (99995, 'Edificio 6', 170,50, 'Aula C Discusion');

INSERT INTO aula (aula_cod, edificio, numero_aula, numero_asientos, descripcion)


VALUES (99994, 'Edif Musica ', 100,10, 'Aula Practica de Musica');

http://computacion.idatvirtual.edu.pe
INSERT INTO aula (aula_cod, edificio, numero_aula, numero_asientos, descripcion)
VALUES (99993, 'Edif Musica', 200,1000, 'Aula de Concierto');

INSERT INTO aula (aula_cod, edificio, numero_aula, numero_asientos, descripcion)


VALUES (99992, 'Edificio 7', 300,75, 'Aula D Discusion');

INSERT INTO aula (aula_cod, edificio, numero_aula, numero_asientos, descripcion)


VALUES (99991, 'Edificio 7', 310,50, 'Aula E Discusion');

http://computacion.idatvirtual.edu.pe
La tabla aula y su registros

http://computacion.idatvirtual.edu.pe
La tabla clases describe los cursos disponibles para los estudiante se inscriban
CREATE TABLE clases (
Dpto CHAR(3),
Curso NUMBER(3),
Descripcion VARCHAR2(2000),
Max_estudiantes NUMBER(3),
Num_estudiantes_actuales NUMBER(3),
Num_creditos NUMBER(1),
Aula_cod NUMBER(5)
);

DROP TABLE CLASES;

ALTER TABLE CLASES ADD CONSTRAINT PK_CLASES


PRIMARY KEY (Dpto,Curso);

ALTER TABLE CLASES DROP CONSTRAINT PK_CLASES;

ALTER TABLE CLASES ADD CONSTRAINT FK_CLASES


FOREIGN KEY (Aula_cod) REFERENCES aula (AULA_COD);

ALTER TABLE CLASES DROP CONSTRAINT FK_CLASES;

http://computacion.idatvirtual.edu.pe
Constraint para las llaves primarias (concatenadas y la llave foranea)
de manera integral con el código de la tabla código

CREATE TABLE clases (


Dpto CHAR(3),
Curso NUMBER(3),
Descripcion VARCHAR2(2000),
Max_estudiantes NUMBER(3),
Num_estudiantes_actuales NUMBER(3),
Num_creditos NUMBER(1),
Aula_cod NUMBER(5),
CONSTRAINT PK_CLASES_DPTO_CURSO
PRIMARY KEY (Dpto,Curso),
CONSTRAINT FK_ClASES_AULA_COD
FOREIGN KEY (Aula_cod) REFERENCES aula (AULA_COD)
);

Alter table clases modify descripcion varchar2(20);

http://computacion.idatvirtual.edu.pe
INSERT INTO clases (dpto,curso, descripcion, max_estudiantes, num_estudiantes_actuales, num_creditos, aula_cod )
VALUES ('HIS',101,'Historia 101',30,0,4,99999);

INSERT INTO clases (dpto,curso, descripcion, max_estudiantes, num_estudiantes_actuales, num_creditos,aula_cod )


VALUES ('HIS',301,'Historia 301',30,0,4,99995);

INSERT INTO clases (dpto,curso, descripcion, max_estudiantes, num_estudiantes_actuales, num_creditos,aula_cod )


VALUES ('CS',101,'Computacion 101',50,0,4,99998);

INSERT INTO clases (dpto,curso, descripcion, max_estudiantes, num_estudiantes_actuales, num_creditos,aula_cod )


VALUES ('ENC',203, 'Economia 203',15,0,3,99997);

INSERT INTO clases (dpto,curso, descripcion, max_estudiantes, num_estudiantes_actuales, num_creditos,aula_cod )


VALUES ('CS',102, 'Computacion 102',35,0,4,99996);

INSERT INTO clases (dpto,curso, descripcion, max_estudiantes, num_estudiantes_actuales, num_creditos,aula_cod )


VALUES ('MUS',410, 'Musica 410',5,0,3,99994);

http://computacion.idatvirtual.edu.pe
INSERT INTO clases (dpto,curso, descripcion, max_estudiantes, num_estudiantes_actuales, num_creditos,aula_cod )
VALUES ('ENC',101,'Economia 101',50,0,4,99997);

INSERT INTO clases (dpto,curso, descripcion, max_estudiantes, num_estudiantes_actuales, num_creditos,aula_cod )


VALUES ('NUT',307,'Nutricion 307',20,0,4,99991);

http://computacion.idatvirtual.edu.pe
La tabla clases y su registros

http://computacion.idatvirtual.edu.pe
La tabla clases y aulas

AULA

CLASE

RELACION NO
IDENTIFICADA DE 1:M

http://computacion.idatvirtual.edu.pe
La tabla clases y aulas

AULA CLASE

CONSULTA WHERE
DE DOS TABLAS

http://computacion.idatvirtual.edu.pe
Comandos Transaccionales

SINTAXIS – COMANDO TRANSACCIONALES


1.- INGRESO DE NUEVO REGISTRO

INSERT INTO estudiantes ( codigo, nombre, apellido, curso, creditos)


VALUES (estudiante_secuencia.NEXTVAL, 'Scott ' , 'Smith', ' Computacion ' , 0);
Commit;

http://computacion.idatvirtual.edu.pe
2.- ACTUALIZACION DE UN REGISTRO - UPDATE

SINTAXIS
UPDATE nombre-tabla
SET columna1 = valor1 [, columna2 = valor2 ...]
[WHERE condición]

En este ejemplo cambiamos el nombre y estado de un pedido:


UPDATE estudiantes
SET NOMBRE= 'Micaela', APELLIDO= 'Bastidas' , Curso= ‘Historia'
WHERE CODIGO=10003;
COMMIT;

http://computacion.idatvirtual.edu.pe
En este ejemplo cambiamos el estado de todos los pedidos:
UPDATE estudiantes
SET Créditos=1;
COMMIT;

3.- ELIMACION DE UN REGISTRO - DELETE

SINTAXIS
DELETE FROM nombre-tabla
[WHERE condición]
Commit;

EJEMPLO
DELETE FROM estudiante WHERE codigo=10010;
COMMIT;

http://computacion.idatvirtual.edu.pe
CREATE TABLE

Alter table Modify

INSERT
DROP TABLE CLASES;

UPDATE COMMIT;

ALTER TABLE ADD CONSTRAINT


PRIMARY KEY DELETE

ALTER TABLE ADD CONSTRAINT


FOREIGN KEY REFERENCES

ALTER TABLE DROP CONSTRAINT

http://computacion.idatvirtual.edu.pe
ACTIVIDAD

1.- Crear las siguientes Tablas: Pedidos, Oficinas, RepVentas, clientes


2.- Ingresar los registros de acuerdo a los cuadros Nº 01 y 02
3.- Tener listos las tablas y registros listos

http://computacion.idatvirtual.edu.pe
CUADRO Nº 01
TABLA PEDIDOS
NUM_PEDIDO CLIE PRODUCTO CANT IMPORTE
112961 2117 2A44L 7 $31.500,00
113012 2111 41003 35 $3.745,00
112989 2101 114 6 $1.458,00
113051 2118 XK47 4 $1.420,00
112968 2102 41004 34 $3.978,00
113036 2107 4100Z 9 $22.500,00
113045 2112 2A44R 10 $45.000,00
112963 2103 41004 28 $3.276,00 TABLA OFICINAS
113013 2118 41003 1 $652,00 OFICINA CIUDAD REGION OBJETIVO VENTAS
113058 2108 112 10 $1.480,00 22 Denver Oeste $300.000,00 $186.042,00
112997 2124 41003 1 $652,00 11 New York Este $575.000,00 $692.637,00
112983 2103 41004 6 $702,00
12 Chicago Este $800.000,00 $735.042,00
113024 2114 XK47 20 $7.100,00
113062 2124 114 10 $2.430,00
13 Atlanta Este $350.000,00 $367.911,00
112979 2114 4100Z 6 $15.000,00 21 Los Angeles Oeste $725.000,00 $835.915,00
113027 2103 41002 54 $4.104,00
113007 2112 773C 3 $2.925,00
113069 2109 775C 22 $31.350,00
113034 2107 2A45C 8 $632,00
112992 2118 41002 10 $760,00
112975 2111 2A44G 6 $2.100,00
113055 2108 4100X 6 $150,00
113048 2120 779C 2 $3.750,00
112993 2106 2A45C 24 $1.896,00
113065 2106 XK47 6 $2.130,00
113003 2108 779C 3 $5.625,00
113049 2118 XK47 2 $776,00
112987 2103 4100Y 11 $27.500,00
113057 2111 4100X 24 $600,00
113042 2113 2A44R 5 $22.500,00

http://computacion.idatvirtual.edu.pe
TABLA CLIENTES
NUM_CLIENTES EMPRESA REP_CLIE LIMITE-CREDITO
2111 JCP Inc. 103 $50.000,00
2102 First Corp. 101 $65.000,00 CUADRO Nº 02
2103 Acme Mfg. 105 $50.000,00
2123 Carter & Sons 102 $40.000,00
2107 Ace International 110 $35.000,00
2115 Smithson Corp. 101 $20.000,00
2101 Jones Mfg. 106 $65.000,00
2112 Zetacorp. 108 $50.000,00
2121 QMA Assoc. 103 $45.000,00
2114 Orion Corp. 102 $20.000,00
2124 Peter Brothers. 107 $40.000,00
2108 Holm & Landis. 109 $55.000,00
2117 J.P. Sinclair. 106 $35.000,00
2122 Three-Way Lines. 105 $30.000,00
2120 Rico Enterprises 102 $50.000,00
2106 Fred Lewis Corp. 102 $65.000,00
2119 Solomon Inc. 109 $25.000,00 TABLA REPVENTAS
2118 Midwest Systems 108 $60.000,00 NOMBRE OFICINA_REP CUOTA VENTAS
2113 Ian & Schmidt 104 $20.000,00 Bill Adams 13 $350.000,00 $367.911,00
2109 Chen Associates 107 $25.000,00 Mary Jones 11 $300.000,00 $392.725,00
2105 AAA Investments 101 $45.000,00 Sue Smith 21 $350.000,00 $474.050,00
Sam Clark 11 $275.000,00 $299.912,00
Bod Smith 12 $200.000,00 $142.594,00
Dan Roberts 12 $300.000,00 $305.673,00
Tom Snyder NULL NULL $75.985,00
Larry Fitch 21 $350.000,00 $361.865,00
Paul Cruz 12 $275.000,00 $286.775,00
Nancy Angelli 22 $300.000,00 $186.042,00

http://computacion.idatvirtual.edu.pe
CONSULTAS

SELECT CUDAD
FROM OFICINAS
WHERE OBJETIVO > (1.1 * VENTAS) + 10000;

CALCULAR LAS VENTAS DE CADA OFICINA POR PORCENTAJE DE


SU OBJETIVO

SELECT CIUDAD, OBJETIVO, VENTAS, (VENTAS/OBJETIVO)*100


FROM OFICINAS;

CONSULTAR LAS VENTAS SON SUPERIORES A $50.000,00 POR


ENCIMA DEL OBJETIVO

http://computacion.idatvirtual.edu.pe
CONSULTAS

CONSULTAR LAS VENTAS SON SUPERIORES A $50.000,00 POR


ENCIMA DEL OBJETIVO

SELECT CIUDAD
FROM OFICINAS
WHERE VENTAS > OBJETIVO + 50000;

SELECT NOMBRE, MONTH(CONTRATO)


FROM REPVENTAS;

http://computacion.idatvirtual.edu.pe
CONSULTAS

Select ciudad, objetivo, ventas


From oficinas;

Select ciudad, objetivo, ventas


From oficinas
Where region=‘oeste‘;

Select ciudad, objetivo, ventas


From oficinas
Where region=‘oeste‘
And ventas > objetivo
Order by ciudad;

http://computacion.idatvirtual.edu.pe
CONSULTAS

Select avg(ojetivo), avg(ventas)


From oficinas
Where region = ‘oeste’;

¿cual es nombre, cuota y ventas del empleado 107?

Select nombre, cuota, ventas


From repventas
Where num_empl=107;

http://computacion.idatvirtual.edu.pe
CONSULTAS

¿cuales son las ventas promedios de nuestros vendedores?

Select avg(ventas)
From repventas;

http://computacion.idatvirtual.edu.pe
CONSULTAS:
Ordenacion de los resultados de una consulta

Select ciudad, region, ventas


From oficinas
Order by region, ciudad;

Lista de oficinas clasificadas en orden descendente de


ventas, de modo que las oficinas con mayores ventas
aparezcan en prmer lugar

Select ciudad, region, ventas


From oficinas
Order by ventas, DESC;

http://computacion.idatvirtual.edu.pe
CONSULTAS:
Ordenacion de los resultados de una consulta

Lista de oficinas clasificadas en orden descendente de


rendimiento de ventas, de modo que las oficinas con mejor
rendimiento aparezcan primero

Select ciudad, region, (ventas – objetivo)


From oficinas
Order by 3 DESC;

Lista las oficinas, clasificadas en orden alfabetico por


region y dentro de cada region en orden descendente de
rendimiento de ventas

Select ciudad, region, (ventas – objetivo)


From oficinas
Order by region ASC, 3 DESC;

http://computacion.idatvirtual.edu.pe
CONSULTAS: Sumarias

Determinar cual es el rendimiento de cuota promedio de


los vendedores

Select AVG (100*(ventas/cuota))


From repventas;

¿Cuáles son las cuotas y ventas totales para todos los


vendedores?

Select sum(cuota), sum(ventas)


From repventas;

http://computacion.idatvirtual.edu.pe
CONSULTAS: Determinacion de valores extremos

¿Cuales son las cuotas asignadas minima y maxima?

Select min(cuota), max(cuota)


From repventas;

¿Cuál es la fecha mas antigua de contrato del personal de


ventas?

Select min(contrato)
From repventas;

http://computacion.idatvirtual.edu.pe
CONSULTAS: Determinacion de valores extremos

¿Cuales es el mejor rendimiento de venta?

Select max(100*(ventas/cuota))
From repventas;

CONSULTAS: Cuenta de valores de datos

¿Cuantos clientes hay?

Select count(num_clie)
From clientes;

http://computacion.idatvirtual.edu.pe
CONSULTAS: Cuenta de valores de datos

¿Cuantos vendedores superan su cuota?

Select count(nombre)
From repventas
Where ventas>cuota;

¿Cuantos pedidos de mas de US $ 25000.00 hay en los


registros?

Select count(importe)
From pedidos
Where importe > 25000.00;

Select count(num_pedido)
From pedidos
Where importe > 25000.00;

http://computacion.idatvirtual.edu.pe
CONSULTAS: Cuenta de valores de datos

Funcion count(*)

Select count(*)
From pedidos
Where importe > 25000.00;

¿Cuántos títulos diferentes tienen los vendedores?

Select count(distinct titulo)


From repventas

http://computacion.idatvirtual.edu.pe
CONSULTAS: Cuenta de valores de datos

¿Cuántas oficinas de ventas tienen vendedores que superen


a sus cuotas?

Select count(distinct oficina_rep)


From rep_ventas
Where ventas>cuota;

CONSULTAS: Agrupadas

¿Cuál es el rango de cuotas asignadas en cada oficina?

Select oficina_rep,min(cuoata),max (cuoata)


From repventas
Group by oficina_rep;

http://computacion.idatvirtual.edu.pe
CONSULTAS: Agrupadas

¿Cuántos vendedores están asignados a cada oficina?

Select oficina_rep, count(*)


From rep_ventas
Gruup by oficina_rep;

¿Cuántos clientes diferentes son atendidos por cada


vendedor?

Select count(distinct num_clie),‘clientes por Rep de


vantas’,rep_clie
From clientes
Group by rep_clie;

http://computacion.idatvirtual.edu.pe
VISTAS

Una vista es una tabla lógica, que muestra una parte de la base de datos. Las vistas permiten
"almacenar" de manera lógica los resultados de los queries.

La sintaxis para crear una vista es la siguiente:


CREATE [OR REPLACE] VIEW name [(alias1, alias2, . . . , aliasN)]
AS subquery

DROP VIEW name;

Create view oficinaeste as


Select * from oficinas
Where region=‘este’;

Create view infoclie as


Select empresa, rep_clie
from clientes;

http://computacion.idatvirtual.edu.pe
Que te parece el curso?
Sencillo verdad?

http://computacion.idatvirtual.edu.pe

También podría gustarte