Está en la página 1de 3

ALUMNO: CLIVER CHOQUE ESCOBAR CICLO: X CURSO: BASE DE DATOS ORIENTADOS A OBJETOS

RECUPERACIÓN

En Oracle crear uan base de datos con el nombre Sis_Matricula, dentro de la BD crear las
sisguienets tablas con sus respetivas relaciones como nos muestra.

CREACIÓN DE LAS TABLAS


CREATE TABLE ALUMNS (
CODIGOA VARCHAR (10) NOT NULL PRIMARY KEY,
AP_NOMBRE VARCHAR (45) NOT NULL,
SEXO VARCHAR (10) NOT NULL,
EDAD INT NOT NULL
);

CREATE TABLE MATRICULA (


CODIGOM VARCHAR (10) NOT NULL Primary key,
CODIGOA VARCHAR (10) NOT NULL REFERENCES ALUMNS (CODIGOA),
CICLO VARCHAR (20) NOT NULL,
FECHA DATE NOT NULL,
SUBTOTAL DECIMAL Not Null,
IGV DECIMAL NOT NULL,
TOTAL DECIMAL NOT NULL
);

Create Table DETALLE (


CODIGOM VARCHAR (10) NOT NULL REFERENCES MATRICULA(CODIGOM),
CODIGOC VARCHAR (45) NOT NULL REFERENCES CURSO(CODIGOC),
CANT_CURSO VARCHAR (45) NOT NULL,
IMPORTE DECIMAL NOT NULL
);
Create Table CURSO (
CODIGOC VARCHAR (15) NOT NULL PRIMARY KEY,
NOM_CURSO VARCHAR (45) NOT NULL,
COSTO DECIMAL NOT NULL
);
1. Mediante procedimientos almacenados registrar como mínimo 3 datos a cada una de las
tablas.

CREATE OR REPLACE PROCEDURE SP_INSERTARALUMNS (


ACODIGOA VARCHAR,
AAP_NOMBRE VARCHAR,
ASEXO VARCHAR,
AEDAD INT)
AS
BEGIN
INSERT INTO ALUMNS VALUES (ACODIGOA, AAP_NOMBRE, ASEXO, AEDAD);
END SP_INSERTARALUMNS;
EXECUTE SP_INSERTARALUMNS ('A001','CHOQUE ESCOBAR CLIVER','MASCULINO',21)
EXECUTE SP_INSERTARALUMNS ('A002','HUINCHO OCHO EVA','MASCULINO',22)
EXECUTE SP_INSERTARALUMNS ('A003','ICHPAS LUCAS MARIA','FEMENINO',23)
SELECT *
FROM ALUMNS;

CREATE OR REPLACE PROCEDURE SP_INSERTARCURSO (


ACODIGOAC VARCHAR,
ANOM_CURSO VARCHAR,
ACOSTO DECIMAL)
AS
BEGIN
INSERT INTO CURSO VALUES (ACODIGOAC, ANOM_CURSO, ACOSTO);
END SP_INSERTARCURSO;
EXECUTE SP_INSERTARCURSO ('C001','ALGEBRA',20)
EXECUTE SP_INSERTARCURSO ('C002','PROGRAMACION',12)
EXECUTE SP_INSERTARCURSO ('C003','BASE DE DATOS',50)
SELECT *
FROM CURSO;

CREATE OR REPLACE PROCEDURE SP_INSERTARMATRICULA (


ACODIGOM VARCHAR,
ACODIGOA VARCHAR,
ACICLO VARCHAR,
AFECHA DATE,
ASUBTOTAL DECIMAL,
AIGV DECIMAL,
ATOTAL DECIMAL)
AS
BEGIN
INSERT INTO MATRICULA VALUES (ACODIGOM, ACODIGOA, ACICLO, AFECHA, ASUBTOTAL, AIGV,
ATOTAL);
END SP_INSERTARMATRICULA;
EXECUTE SP_INSERTARMATRICULA('M001','A001','X','04-12-2019',2,2,1)
EXECUTE SP_INSERTARMATRICULA('M002','A002','V','04-12-2019',1,2,1)
EXECUTE SP_INSERTARMATRICULA('M003','A003','VIII','04-12-2019',2,1,3)
SELECT *
FROM MATRICULA;

2. Mediante procedimientos almacenados registrar datos a la tabla Detalle a cada numero


de factura 3 productos y calcular el importe considerando (Precio * Cantidad).

CREATE OR REPLACE PROCEDURE SP_INSERTARDETALLE (


ACODIGOM VARCHAR,
ACODIGOC VARCHAR,
ACANT_CURSO VARCHAR,
AIMPORTE DECIMAL)
AS
BEGIN
SELECT AIMPORTE=(ACANT_CURSO*PRECIO) FROM CURSO JOIN DETALLE ON
(CURSO.CODIGOC=DETALLE.CODIGOC)
INSERT INTO DETALLE (CODIGOM, CODIGOC, CANT_CURSO, IMPORTE, APRECIO) VALUES
(ACODIGOM, ACODIGOC, ACANT_CURSO, AIMPORTE)
)
END SP_INSERTARDETALLE;

EXECUTE SP_INSERTARDETALLE ('M001','NNN1','4','5','')

3. Mediante procedimiento almacenado actualizar a la tabla matricula como Sub_Total, IGV


y Total = Sumatoria de Importe, IGV =18%, Total = (Sub_Total – IGV).
CREATE PROCEDURE MATRICULA (
@CODIGOM VARCHAR (10)
AS
DELARE @TL DECIMAL
SET @TL= (SELECT SUM(IMPORTE) FROM DETALLE WHERE CODIGOM=@CODIGOM)

UPDATE MATRICULA
SET TOTAL=@TL+((@TL*18)/100)
WHERE CODIGOM = @CODIGOM
GO
EXEC ACTUALIZARBOLETA '00004'

4. Crear una vista con el nombre Vista 1, y seleccionar a todos los alumnos que realizaron la
matricula desde 01/09/2019 hasta 20/10/2019.

CREATE VIEW VISTA1


AS (SELECT AP_NOMBRE, SEXO, EDAD from ALUMNO Join MATRICULA On
(MATRICULA.CODIGOA=ALUMNO.CODIGOA)
Where (FECHA BETWEEN '01/09/2019' And '20/10/2019')
) GO

También podría gustarte