Vous êtes sur la page 1sur 6

--Verificar que la base de datos no este implementada para implementarla

IF DB_ID('DBRESERVA') IS NOT NULL


BEGIN
USE MASTER
DROP DATABASE DBRESERVA
END

--Crear la base de datos DBRESERVA


CREATE DATABASE DBRESERVA
ON PRIMARY (
NAME = 'DBRESERVA_MDF',
FILENAME = 'C:\DBRESERVA\DBRESERVA.MDF',
SIZE = 15MB,
MAXSIZE = 250MB,
FILEGROWTH = 10MB ),
(
NAME = 'DBRESERVA_NDF',
FILENAME = 'C:\DBRESERVA\DBRESERVA.NDF',
SIZE = 15MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 10MB )
LOG ON (
NAME = 'DBRESERVA_LOG',
FILENAME = 'C:\DBRESERVA\DBRESERVA.LDF',
SIZE = 15MB,
MAXSIZE = 500MB,
FILEGROWTH = 10% )

-- Activamos la base de datos DBRESERVA para empezar a trabajar


USE DBRESERVA

-- Implementar las Tablas de la base de datos


-- TABLA PAIS
CREATE TABLE PAIS (
idpais char(4) not null primary key,
nombre varchar(30) not null unique )

-- TABLA PASAJERO
CREATE TABLE PASAJERO (
idpasajero char(8) not null primary key,
nombre varchar(20) not null,
apaterno varchar(20) not null,
amaterno varchar(20) not null,
tipo_documento varchar(30) not null,
num_documento varchar(12) not null,
fecha_nacimiento date not null,
idpais char(4) not null,
telefono varchar(15) null,
email varchar(50) not null unique,
clave varchar(20) not null )

-- TABLA AEROPUERTO
CREATE TABLE AEROPUERTO (
idaeropuerto char(5) not null,
nombre varchar(50) not null,
idpais char(4) not null )

--modificar: primary key = idaeropuerto


ALTER TABLE AEROPUERTO
ADD CONSTRAINT PK_AEROPUERTO_PAIS
primary key NONCLUSTERED (idaeropuerto)

--modificar: unique = nombre


ALTER TABLE AEROPUERTO
ADD CONSTRAINT UQ_AEROPUERTO_NOMBRE
UNIQUE (nombre)

-- TABLA AEROLINEA
CREATE TABLE AEROLINEA (
idaerolinea int not null primary key,
ruc char(11) not null,
nombre varchar(40) not null )

-- TABLA AVION
CREATE TABLE AVION (
idavion char(5) not null primary key,
idaerolinea int not null,
fabricante varchar(40) null,
tipo varchar(3) not null,
capacidad int not null )

-- eliminar la columna capacidad


ALTER TABLE AVION
DROP COLUMN capacidad

-- Agregar columnas (campos) capacidad


ALTER TABLE AVION
ADD capacidad int not null

-- Modificar el tipo de dato a TIPO


ALTER TABLE AVION
ALTER COLUMN TIPO varchar(30) not null

-- TABLA ASIENTO
CREATE TABLE ASIENTO (
idasiento int not null primary key,
letra char(2) not null,
fila int not null )

-- TABLA TARIFA
CREATE TABLE TARIFA (
idtarifa int not null primary key,
clase varchar(20) not null unique,
precio money not null,
impuesto money not null )

-- TABLA RESERVA
CREATE TABLE RESERVA (
idreserva int not null primary key,
costo money not null,
fecha date null,
observacion varchar(200) null )

-- RESTRICCIONES (UNIQUE - CHECK - DEFAULT)

-- Restriccion DEFAULT
ALTER TABLE RESERVA
ADD CONSTRAINT DFL_RESERVA_FECHA
DEFAULT GETDATE() FOR fecha

-- TABLA VUELO
CREATE TABLE VUELO (
idasiento int not null,
idaeropuerto char(5) not null,
idreserva int not null,
idavion char(5) not null,
idtarifa int not null )

-- Implementar los primary key de la tabla vuelo


ALTER TABLE VUELO
ADD PRIMARY KEY (idasiento, idaeropuerto, idreserva, idavion)

-- TABLA PAGO
CREATE TABLE PAGO (
idpago int not null primary key IDENTITY,
idreserva int not null,
fecha date DEFAULT GETDATE(),
idpasajero char(8) not null,
monto money not null,
tipo_comprobante varchar(20) not null,
num_comprobante varchar(15) not null,
impueto decimal (5,2) not null )

--Restriccion CHECK, controlar que no ingresen fechas mayores a la fecha


ALTER TABLE PAGO
ADD CONSTRAINT CHK_PAGO_FECHA
CHECK (fecha <= GETDATE())

use DBRESERVA

-- Implementar las Relaciones entre las tablas


-- de la base de datos.

-- Relacion entre la tabla PASAJERO y PAIS


ALTER TABLE PASAJERO
ADD CONSTRAINT FK_PASAJERO_PAIS
FOREIGN KEY (idpais) REFERENCES PAIS (idpais)

-- Relacion entre la tabla AEROPUERTYO y PAIS


ALTER TABLE AEROPUERTO
ADD CONSTRAINT FK_AEROPUERTO_PAIS
FOREIGN KEY (idpais) REFERENCES PAIS (idpais)

-- Relacion entre la tabla PAGO y PASAJERO


ALTER TABLE PAGO
ADD CONSTRAINT FK_PAGO_PASAJERO
FOREIGN KEY (idpasajero) REFERENCES PASAJERO (idpasajero)

-- Relacion entre la tabla PAGO y RESERVA


ALTER TABLE PAGO
ADD CONSTRAINT FK_PAGO_RESERVA
FOREIGN KEY (idreserva) REFERENCES RESERVA (idreserva)

-- Relacion entre la tabla AVION y AEROLINEA


ALTER TABLE AVION
ADD CONSTRAINT FK_AVION_AEROLINEA
FOREIGN KEY (idaerolinea) REFERENCES AEROLINEA (idaerolinea)

-- Eliminarar una relacion


ALTER TABLE AVION
DROP CONSTRAINT FK_AVION_AEROLINEA

-- Relacion entre la tabla AVION y AEROLINEA


ALTER TABLE AVION
ADD CONSTRAINT FK_AVION_AEROLINEA
FOREIGN KEY (idaerolinea) REFERENCES AEROLINEA (idaerolinea)

-- Relacion entre la tabla VUELO y ASIENTO


ALTER TABLE VUELO
ADD CONSTRAINT FK_VUELO_ASIENTO
FOREIGN KEY (idasiento) REFERENCES ASIENTO (idasiento)

-- Relacion entre la tabla VUELO y AVION


ALTER TABLE VUELO
ADD CONSTRAINT FK_VUELO_AVION
FOREIGN KEY (idavion) REFERENCES AVION (idavion)

-- Relacion entre la tabla VUELO y RESERVA


ALTER TABLE VUELO
ADD CONSTRAINT FK_VUELO_RESERVA
FOREIGN KEY (idreserva) REFERENCES RESERVA (idreserva)

-- Relacion entre la tabla VUELO y TARIFA


ALTER TABLE VUELO
ADD CONSTRAINT FK_VUELO_TARIFA
FOREIGN KEY (idtarifa) REFERENCES TARIFA (idtarifa)

-- Relacion entre la tabla VUELO y AEROPUERTO


ALTER TABLE VUELO
ADD CONSTRAINT FK_VUELO_AEROPUERTO
FOREIGN KEY (idaeropuerto) REFERENCES AEROPUERTO (idaeropuerto)

-- Insertar los registros para la tabla AEROLINEA


INSERT INTO AEROLINEA(idaerolinea,ruc,nombre)
VALUES ('1',10123456789,'LAN PERU'),
('2',10123456710,'AEROPERU'),
('3',10123456711,'TACA'),
('4',10123456712,'BIRD PERU'),
('5',10123456713,'LAN CUZCO')

select * from AEROLINEA

-- Insertar los registros para la tabla PAIS


INSERT INTO PAIS(idpais,nombre)
VALUES ('0001','Perú'),
('0002','México'),
('0003','Argentina'),
('0004','Chile'),
('0005','Ecuador'),
('0006','Venezuela'),
('0007','Bolivia'),
('0008','Republica Dominicana'),
('0009','El Salvador'),
('0010','España')

select * from PAIS

-- Insertar los registros para la tabla PASAJERO


INSERT INTO PASAJERO (idpasajero,nombre, apaterno, amaterno, tipo_documento, num_documento, fecha_nacimiento, idpais,
telefono, email, clave)
VALUES ('P0000001','Juan Carlos','Arcila','Diaz','DNI','47715777','2014-07-01','0001','942276513','jcarlos@hotmail.com','jcarlos1'),
('P0000002','Ana','Diaz','Mundaca','PASS','10345125','1968-03-04','0001',' ','ana@hotmail.com','ana1'),
('P0000003','Rosa','Guevara','Lozano','DNI','45698712','1986-02-02','0002',' ','rosita@hotmail.com','rosita1'),
('P0000004','Silvia','Barreda','Malhaber','PASS','10236598','1995-02-
01','0010','963274532','silvia@hotmail.com','silvia1'),
('P0000005','Juan','Arcial','Fernández','DNI','48796523','1965-12-
15','0001','998234513','juanar@gmail.com','juamar1'),
('P0000006','Marita','Diaz','Tello','PASS','96325874','1994-12-12','0002',' ','marita@gmail.com','marita1'),
('P0000007','Eulogio','Castro','Castillo','DNI','98745631','1969-01-
02','0007','991839962','eulogio@hotmail.com','eulogio1')

select * from PASAJERO

-- Insertar los registros para la tabla RESERVA


INSERT INTO RESERVA (idreserva,costo,fecha,observacion)
VALUES ('1',140,'2013-01-27','')
INSERT INTO RESERVA (idreserva,costo,fecha,observacion)
VALUES ('2',100,'2013-01-01','')
INSERT INTO RESERVA (idreserva,costo,fecha,observacion)
VALUES ('3',300,'2014-04-03','')
INSERT INTO RESERVA (idreserva,costo,fecha,observacion)
VALUES ('4',800,'2014-05-04','')
INSERT INTO RESERVA (idreserva,costo,fecha,observacion)
VALUES ('5',250,getdate(),'')
INSERT INTO RESERVA (idreserva,costo,fecha,observacion)
VALUES ('6',1150,getdate(),'')
INSERT INTO RESERVA (idreserva,costo,fecha,observacion)
VALUES ('7',700,getdate(),'')

SELECT * FROM RESERVA

-- Insertar los registros para la tabla PAGOS


INSERT INTO PAGO (idreserva,fecha,idpasajero,monto,tipo_comprobante,num_comprobante,impueto)
VALUES ('1','27-01-2013','P0000001',100,'Factura','001-0001',0.18)

select * from PAGO


INSERT INTO PAGO (idreserva,fecha,idpasajero,monto,tipo_comprobante,num_comprobante,impueto)
VALUES ('1','27-01-2013','p0000001',40,'Ticket','002-0007',0.18),
('5','05-05-2014','p0000002',50,'Factura','001-0002',0.18),
('7',getdate(),'p0000007',700,'Factura','001-0003',0.18)

select * from PAGO

-- Insertar los registros para la tabla TARIFA


INSERT INTO TARIFA
VALUES ('1','SuperVIP',1200,12),
('2','VIP',1000,12),
('3','Nacional',800,12),
('4','Economico',500,12)

select * from TARIFA

-- Insertar los registros para la tabla AEROPUERTO


INSERT INTO AEROPUERTO (idaeropuerto,idpais,nombre)
VALUES ('AE01','0003','Bariloche'),
('AE02','0003','Mar de la Plata'),
('AE03','0001','Jorge Chavez')

SELECT * FROM AEROPUERTO

-- SENTENCIA UPDATE
-- Ejemplo1: Actualizar los valores de la columna impuesto por el valor 11 a
-- todos los registros de la tabla TARIFA

SELECT * FROM TARIFA

UPDATE TARIFA
SET impuesto = 11

SELECT * FROM TARIFA

-- Ejemplo2: Actualizar los valores de la columna impuesto aumentando en 2


-- a todos los registros de la tabla TARIFA
UPDATE TARIFA
SET impuesto = impuesto + 2
SELECT * FROM TARIFA

-- Ejemplo 3: Asignar el impuesto a cero solo a los registros cuya clase


-- sea ECONOMICO de la tabla TARIFA
UPDATE TARIFA
SET impuesto = 0
WHERE clase = 'Economico'
SELECT * FROM TARIFA

-- Ejemplo 4: Actualizar los costos de la tabla RESERVA disminuyendo


-- en 50 a los registros cuyo ingreso se realizo en el año 2013
select * from RESERVA
-- declarar una variable
DECLARE @monto money = 50
UPDATE RESERVA
SET costo = costo - @monto
WHERE year(fecha) = 2013
select * from RESERVA

-- Ejemplo5: Asignar el texto SIN TELEFONO en el campo telefono de la


-- tabla PASAJERO y que sean de Perú.Todo esto debe ser realizado
-- en la tabla pasajero
SELECT * from PAIS
SELECT * from PASAJERO
UPDATE PASAJERO
SET telefono = 'SIN TELEFONO'
WHERE idpais = (SELECT idpais from PAIS WHERE nombre = 'Perú') --subconsulta

SELECT * from PASAJERO

-- SENTENCIA DELETE
-- EJEMPLO1: Eliminar todos los registros de la tabla AEROLINEA
SELECT * from AEROLINEA
DELETE from AEROLINEA

-- Ejemplo2: Eliminar el registro de la tabla PASAJERO cuyo idpasajero


-- sea P0000004
SELECT * FROM PASAJERO
DELETE FROM PASAJERO
WHERE idpasajero = 'P0000004'

-- Ejemplo3: Eliminar los registros de la tabla PASAJERO cuyo PAIS sea


-- México, utilizando subconsulta
SELECT * FROM PAIS
SELECT * FROM PASAJERO
DELETE from PASAJERO
WHERE idpais = (SELECT idpais from PAIS WHERE nombre = 'México')

-- Ejemplo4: Eliminar los registros de la tabla RESERVA que sean del


-- año 2013 y que no superen los 70 del costo.
SELECT * from RESERVA
DELETE from RESERVA
WHERE year(fecha) = 2013 AND costo < 70

-- Ejemplo5: Eliminar los registros de la tabla PAGO que se han


-- efectuado en el año 2012 o 2013
SELECT * from PAGO
DELETE from PAGO
WHERE year(fecha) = 2012 OR year(fecha) = 2013

Vous aimerez peut-être aussi