Está en la página 1de 13

Examen II

PROFESOR: JOSE ARTURO DIAZ


GRUPO:6
Integrantes:
- DIEGO MAMANI FASABI
- LUIS FELIPE VARILLAS BALLENA
- FLORES MIRANDA PABLO
-NOEMI CORDOVA DOMINGUEZ
- VICTOR HUGO ALVAREZ CONTRERAZ

2021
1)PRIMERA PARTE
create database libreria

use libreria

go

create table autor (

idAutor INT PRIMARY KEY identity ,

nombre varchar(45),

apellido varchar(45),

edad int

);

drop table libros

create table libros(

idAutor int PRIMARY KEY identity ,

nombre varchar(45),

descripcion varchar(45),

nro_paginas int,

Autor_idAutor int
CONSTRAINT FK_AUTOR_PRODUCTO

FOREIGN KEY (Autor_idAutor) REFERENCES autor(idAutor)

on update cascade

on delete cascade,

);

INSERT INTO autor VALUES ('victor','alvarez',30);

INSERT INTO autor VALUES ('juan','vasquez',20);

INSERT INTO autor VALUES ('jose','zamudio',32);

INSERT INTO autor VALUES ('miguel','tempes',50);

INSERT INTO autor VALUES ('lucy','dominos',40);

INSERT INTO libros VALUES ('el amor sobre todos','dos personas se enamoran ',600,1 );

INSERT INTO libros VALUES ('los miserables','bandidos escapando ',100,2 );

--Diseñe un cursor para mostrar los autores que publicaron libros de número de páginas

--mayor a 500 y menor que 200 con sus respectivos

--declare cursor

Pulsor

declare @Autor int


declare AutorLibro cursor

for

select Autor_idAutor

from Libro

where nro_paginas > 500 and nro_paginas > 200

open AutorLibro

fetch next from AutorLibro into @Autor

while @@FETCH_STATUS = 0

begin

select nombre, apellido, edad

from Autor

where idAutor= @Autor

fetch next from AutorLibro into @Autor

end

close AutorLibro

deallocate AutorLibro
2) SEGUNA PARTE
CÓDIGO :

CREATE DATABASE AEREOPUERTO

USE AEREOPUERTO

CREATE TABLE PILOTO

CEDULA VARCHAR(11) PRIMARY KEY,

APELLIDO VARCHAR(100),

NOMBRE VARCHAR(100),

FNACIMIENTO DATE,

LNACMIENTO VARCHAR(100),

TELEFONO VARCHAR(20),

CORREOELECTRONICO VARCHAR(100)

CREATE TABLE TIPO_LICENCIA

IDTIPOLICENCIA INT IDENTITY(1,1) PRIMARY KEY,

LICENCIA VARCHAR(100)

CREATE TABLE PILOTO_TLICENCIA

CEDULA VARCHAR(11),

IDTIPOLICENCIA INT,

CONSTRAINT PK_PILOTO PRIMARY KEY (CEDULA,IDTIPOLICENCIA),

CREATE TABLE DESTINO

(
IDDESTRINO INT IDENTITY(1,1) PRIMARY KEY,

DESTINO VARCHAR(100)

CREATE TABLE VUELO_DESTINO

NUMVUELO INT IDENTITY(1,1),

IDDESTINO INT REFERENCES DESTINO(IDDESTRINO),

CONSTRAINT PK_VUELO_DESTINO PRIMARY KEY (NUMVUELO)

CREATE TABLE TIPO_VUELO

IDTIPODEVUELO INT IDENTITY(1,1) PRIMARY KEY,

TIPODEVUELO VARCHAR(100),

CREATE TABLE AVION

IDAVION INT IDENTITY(1,1) PRIMARY KEY,

CREATE TABLE VUELOS

CEDULA VARCHAR(11) REFERENCES PILOTO(CEDULA),

NUMVUELO INT FOREIGN KEY REFERENCES VUELO_DESTINO(NUMVUELO),

IDTIPODEVUELO INT FOREIGN KEY REFERENCES TIPO_VUELO(IDTIPODEVUELO),

IDAVION INT FOREIGN KEY REFERENCES AVION(IDAVION)

GO
--Crear un disparador cada vez que inserte, edite, borre un dato en las tablas: Piloto, Vuelos,

--Destino; para que anticipe a una Área de Control del Aeropuerto.

CREATE TRIGGER trigger_CRUD ON PILOTO

FOR INSERT,DELETE,UPDATE AS

BEGIN

PRINT('SE REALIZO UN MOVIMIENTO DE LA TABLA PILOTO')

END

GO

CREATE TRIGGER trigger_CRUD_VUELOS ON VUELOS

FOR INSERT,DELETE,UPDATE AS

BEGIN

PRINT('SE REALIZO UN MOVIMIENTO DE LA TABLA VUELOS')

END

GO

CREATE TRIGGER trigger_CRUD_DESTINO ON DESTINO

FOR INSERT,DELETE,UPDATE AS

BEGIN

PRINT('SE REALIZO UN MOVIMIENTO DE LA TABLA DESTINO')

END

GO

--Crear un trigger y devuelva un mensaje “Atención Torre de Control estableciendo contacto

--para Aterrizar”; cada que se inicia sesión con nuevos destinos o rutas.

CREATE TRIGGER trigger_CRUD_VUELO_DESTINO ON VUELO_DESTINO

FOR INSERT AS

BEGIN

PRINT('“Atención Torre de Control estableciendo contacto para Aterrizar')

END
3) TERCERA PARTE

Desarrollar en SQL:

 Imprimir la serie tal como se


observa.

Desarrollo

CREATE FUNCTION FACTSERIE( @numero int )


RETURNS INT
AS
BEGIN
DECLARE @i int

IF @numero <= 1
SET @i = 1
ELSE
SET @i = @numero * dbo.FACTSERIE( @numero -
1 )
RETURN (@i)
END

GO

ALTER PROCEDURE MOSTRARSERIE AS


BEGIN
DECLARE @NUMERADOR FLOAT,@NSERIE FLOAT,@RESULT FLOAT
SET @NUMERADOR=1;
SET @NSERIE=0;
SET @RESULT=0;
--PRINT 'SERIE: '+CAST(@NSERIE AS VARCHAR(45))
WHILE(@NUMERADOR<5)
BEGIN
SET @RESULT=(@NSERIE+1) /
dbo.FACTSERIE(@NUMERADOR)
SET @NSERIE=(@NSERIE+1)+1
PRINT 'SERIE: '+CAST( @RESULT AS VARCHAR(45))
SET @NUMERADOR=@NUMERADOR+1
END
END

EXEC MOSTRARSERIE

4) CUARTA PARTE
alter procedure factor(@number int)
as begin
Declare @i int = 1,@result int=1
while (@i<=@number)
Begin
Set @result = @result * @i
Set @i += 1
End

insert into factorial values(cast(@number as varchar(10))+'!',cast(@number as


varchar(10)),cast((@number-1) as varchar(10))+'!')
Select factorial as 'N!', numero as 'N!', factorialmenosnumero as '(N-1)!' from
factorial
End

execute factor 4

También podría gustarte