Está en la página 1de 14

CREATE DATABASE BD_EMPRESA_TRASNPORTE

use BD_EMPRESA_TRASNPORTE

-- CREACIÓN DE LA TABLA TRABAJADOR


CREATE TABLE TRABAJADOR
(
COD_T INT PRIMARY KEY,
NOMBRE VARCHAR(40) NOT NULL,
APP VARCHAR(30), APM VARCHAR(30),
DIREC VARCHAR(30) NOT NULL,
CI INT UNIQUE NOT NULL
)

-- CREACION DE LA TABLA USUARIO


CREATE TABLE USUARIO (
COD_U INT PRIMARY KEY,
NOMB_U VARCHAR(40) NOT NULL,
PASSW VARCHAR(50) NOT NULL,
TIPO_ACC INT NOT NULL CHECK(TIPO_ACC IN(1,2)),
ESTADO INT NOT NULL CHECK(ESTADO IN(0,1)),
COD_T INT, FOREIGN KEY (COD_T) REFERENCES
TRABAJADOR(COD_T) ON UPDATE CASCADE ON DELETE
CASCADE
)

-- CREACION DE LA TABLA SECRETARIO


CREATE TABLE SECRETARIO
(
COD_T INT PRIMARY KEY,
TURNO CHAR(6) NOT NULL CHECK(TURNO
IN('MAÑANA','TARDE','NOCHE')),
CAT_S INT NOT NULL CHECK(CAT_S IN(1,2,3)),
FOREIGN KEY(COD_T) REFERENCES TRABAJADOR(COD_T)
ON UPDATE CASCADE ON DELETE NO ACTION
)

-- CREACION TABLA CHOFER


CREATE TABLE CHOFER
(
COD_T INT PRIMARY KEY,
N_LIC INT NOT NULL UNIQUE,
CAT_C CHAR(1) NOT NULL CHECK(CAT_C
IN('A','B','C')),
FOREIGN KEY(COD_T) REFERENCES TRABAJADOR(COD_T)
ON UPDATE CASCADE ON DELETE NO ACTION
)

-- CREACION TABLA ADMINISTRADOR


CREATE TABLE ADMINISTRADOR
(
COD_T INT PRIMARY KEY,
ESPECIALIDAD VARCHAR(35),
FOREIGN KEY(COD_T) REFERENCES TRABAJADOR(COD_T) ON
UPDATE CASCADE ON DELETE NO ACTION
)

-- CREACION TABLA TELEFONO


CREATE TABLE TELEFONO
(
NRO_TELF CHAR(8),
COD_T INT,
PRIMARY KEY(NRO_TELF,COD_T),
FOREIGN KEY(COD_T) REFERENCES TRABAJADOR(COD_T) ON
UPDATE CASCADE ON DELETE CASCADE
)

-- CREACION DE TABLA CLIENTE


create TABLE CLIENTE
(
CI INT PRIMARY KEY,
NOMB VARCHAR(40) NOT NULL,
AP_P VARCHAR(30) NULL,
AP_M VARCHAR(30) NULL,
DIREC VARCHAR(50) NOT NULL
)

-- CREACION TABLA BUS


CREATE TABLE BUS
(
N_PLACA CHAR(7) PRIMARY KEY,
TIPO VARCHAR(20) NOT NULL,
CAPACIDAD INT NOT NULL CHECK(CAPACIDAD>=30 AND
CAPACIDAD<=55)
)

-- CREACION TABLA RUTA


CREATE TABLE RUTA
(
COD_R INT PRIMARY KEY IDENTITY(10,1),
ORIGEN VARCHAR(40) NOT NULL,
DESTINO VARCHAR(40) NOT NULL,
CANT_KM FLOAT NOT NULL CHECK(CANT_KM>=1 AND
CANT_KM<=2000)
)

-- CREACION TABLA DESIGNACION


CREATE TABLE DESIGNACION
(
ID_D INT PRIMARY KEY,
FECHA_D DATE NOT NULL,
COD_TAD INT NOT NULL,
FOREIGN KEY (COD_TAD) REFERENCES
ADMINISTRADOR(COD_T) ON UPDATE CASCADE ON DELETE NO
ACTION,
COD_TCH INT,
FOREIGN KEY (COD_TCH) REFERENCES CHOFER(COD_T),
PLACA_BUS CHAR(7),
FOREIGN KEY (PLACA_BUS) REFERENCES BUS(N_PLACA) ON
UPDATE CASCADE ON DELETE NO ACTION
)

-- CREACION TABLA VIAJE


CREATE TABLE VIAJE
(
COD_V CHAR(7) PRIMARY KEY,
FECHA_VIAJE DATE NOT NULL,
HORA_VIAJE CHAR(5) NOT NULL,
PRECIO_V FLOAT NOT NULL,
TIPO CHAR(10) DEFAULT 'NORMAL' CHECK(TIPO
IN('NORMAL','DELEGACION')),
COD_R INT NOT NULL,
FOREIGN KEY (COD_R)REFERENCES RUTA(COD_R) ON UPDATE
CASCADE ON DELETE NO ACTION,
ID_DES INT NOT NULL,
FOREIGN KEY (ID_DES) REFERENCES DESIGNACION (ID_D)
ON UPDATE CASCADE ON DELETE NO ACTION
)

-- CREACION TABLA PASAJE


CREATE TABLE PASAJE
(
NRO_PASAJE INT PRIMARY KEY,
N_ASIENTO INT NOT NULL CHECK(N_ASIENTO>0 AND
N_ASIENTO<=55),
FECHA_CV DATETIME NOT NULL,
COSTO_P FLOAT NOT NULL CHECK(COSTO_P>=1 AND
COSTO_P<=400),
COD_TS INT NOT NULL,
FOREIGN KEY (COD_TS)REFERENCES SECRETARIO(COD_T) ON
UPDATE NO ACTION,
CI_C INT NOT NULL,
FOREIGN KEY (CI_C) REFERENCES CLIENTE(CI) ON UPDATE
CASCADE ON DELETE NO ACTION,
COD_V CHAR(7)NOT NULL,
FOREIGN KEY (COD_V) REFERENCES VIAJE(COD_V) ON
UPDATE NO ACTION ON DELETE NO ACTION
)

DROP TABLE PASAJE

-- INSERCION DE DATOS
SELECT * FROM TRABAJADOR
INSERT INTO TRABAJADOR VALUES
(1,'JULIAN','VASQUEZ',NULL,'MANZANO
88',1111111),(2,'MARIA','BERRIOS','ORTEGA','LA PAZ
345',2222222);
INSERT INTO TRABAJADOR VALUES (3,'MARTIN
LUIS','PELAEZ','VELIZ','ALMAGRO
9',3333333),(4,'SOLEDAD','GONZALES','QUIROGA','MURIL
LO 34',4444444),(5,'GONZALO',NULL,'MORALES','SUCRE
30',5555555);
-----------------------
SELECT * FROM USUARIO
INSERT INTO USUARIO VALUES
(100,'USUARIO1',convert(varchar(32),hashBytes('MD5',
'USUARIO1'),2),1,0,1);
INSERT INTO USUARIO VALUES
(101,'USUARIO2',convert(varchar(32),hashBytes('MD5',
'USUARIO2'),2),2,1,2);
INSERT INTO USUARIO VALUES
(102,'USUARIO3',convert(varchar(32),hashBytes('MD5',
'USUARIO3'),2),2,1,3);
--------------------------
SELECT * FROM TELEFONO
INSERT INTO TELEFONO VALUES('62-28456',1);
INSERT INTO TELEFONO VALUES('73402345',1)
INSERT INTO TELEFONO VALUES('62-68909',5)
--------------------------
SELECT * FROM SECRETARIO
INSERT INTO SECRETARIO VALUES(1,'TARDE',3);
INSERT INTO SECRETARIO VALUES(5,'MAÑANA',1)
------------------------------
SELECT * FROM ADMINISTRADOR
INSERT INTO ADMINISTRADOR VALUES(2,'INTELIGENCIA
EMPRESARIAL')
-----------------------------
SELECT * FROM CHOFER
INSERT INTO CHOFER
VALUES(3,3333333,'B'),(4,4444444,'C')
-----------------------------
SELECT * FROM CLIENTE
INSERT INTO CLIENTE
VALUES(101010,'JULIA','MERLOS',NULL,'VALDA 67');
INSERT INTO CLIENTE
VALUES(202020,'OSCAR','BARRIOS','MARTINEZ','ARGOTE
100');
INSERT INTO CLIENTE
VALUES(303030,'PAOLA','DIAZ','PERALES','CHUQUISACA
23');
INSERT INTO CLIENTE
VALUES(404040,'DESIDERIO','LLAVE','ZULETA','ARGENTIC
A 460');
INSERT INTO CLIENTE
VALUES(505050,'ANTONIETA',NULL,'RUIZ','SMITH 24');
----------------------------
SELECT * FROM BUS
INSERT INTO BUS VALUES('3120TNN','NORMAL',55);
INSERT INTO BUS VALUES('4020FGF','SEMI-CAMA',50);
INSERT INTO BUS VALUES('4178LPP','LEITO',55)
-----------------------------
SELECT * FROM RUTA
INSERT INTO RUTA VALUES('POTOSI','ORURO',280);
INSERT INTO RUTA VALUES('POTOSI','LA PAZ',500);
INSERT INTO RUTA VALUES('POTOSI','TUPIZA',250);
INSERT INTO RUTA VALUES('POTOSI','SUCRE',164);
INSERT INTO RUTA VALUES('POTOSI','SUCRE',164);
-------------------------------------
SELECT * FROM DESIGNACION
INSERT INTO DESIGNACION
VALUES(1,CURRENT_TIMESTAMP,2,3,'4178LPP');
INSERT INTO DESIGNACION
VALUES(2,CURRENT_TIMESTAMP,2,4,'4020FGF');
INSERT INTO DESIGNACION
VALUES(3,CURRENT_TIMESTAMP,2,3,'4178LPP');
INSERT INTO DESIGNACION
VALUES(4,CURRENT_TIMESTAMP,2,4,'4178LPP');
INSERT INTO DESIGNACION
VALUES(5,CURRENT_TIMESTAMP,2,3,'4178LPP');
INSERT INTO DESIGNACION
VALUES(6,CURRENT_TIMESTAMP,2,4,'4178LPP');
INSERT INTO DESIGNACION
VALUES(7,CURRENT_TIMESTAMP,2,3,'4178LPP');
INSERT INTO DESIGNACION
VALUES(8,CURRENT_TIMESTAMP,2,4,'3120TNN');
INSERT INTO DESIGNACION
VALUES(9,CURRENT_TIMESTAMP,2,3,'4178LPP');
----------------------------------
SELECT * FROM VIAJE
INSERT INTO VIAJE
(COD_V,FECHA_VIAJE,HORA_VIAJE,PRECIO_V,COD_R,ID_DES)
VALUES('V-000011','12-10-2019','20:15',40,12,1) --
ME EMITE ERROR PORQUE NO SE CUMPLE CON LA CANTIDAD
DE CARACTERES PARA EL VALOR DE LLAVE
INSERT INTO VIAJE VALUES('V-00001','12-10-
2019','20:15',40,DEFAULT,10,1);
INSERT INTO VIAJE VALUES('V-00002','2019-10-
15','08:00',20,DEFAULT,12,2);
INSERT INTO VIAJE VALUES('V-00003','2019-10-
25','22:00',120,'DELEGACION',11,3);
INSERT INTO VIAJE VALUES('V-00004','2019-10-
25','22:00',15,'DELEGACION',11,4);
INSERT INTO VIAJE VALUES('V-00005','2019-10-
25','22:00',170,DEFAULT,11,5);
INSERT INTO VIAJE VALUES('V-00006','2019-10-
25','22:00',130,'DELEGACION',12,6);
INSERT INTO VIAJE VALUES('V-00007','2019-10-
25','22:00',150,'DELEGACION',11,7);
INSERT INTO VIAJE VALUES('V-00008','2019-10-
25','22:00',130,'DELEGACION',11,8);
INSERT INTO VIAJE VALUES('V-00009','2019-10-
25','22:00',130,'DELEGACION',11,9);
-- NO EJECUTAR EL SIGUIENTE SCRIPT ES SOLO PARA
MUESTRA DE OTRO TIPO DE INSERCIÓN MASIVA
INSERT INTO VIAJE VALUES(SELECT * FROM TABLA_X)--
ALTERNATIVA DE INSERCIÓN PERO CON TABLA COMPATIBLE
---------------------------
SELECT * FROM PASAJE
INSERT INTO PASAJE
VALUES(1,30,CURRENT_TIMESTAMP,150,1,101010,'V-
00003');
INSERT INTO PASAJE
VALUES(2,1,CURRENT_TIMESTAMP,20,5,202020,'V-00002');
INSERT INTO PASAJE
VALUES(3,30,CURRENT_TIMESTAMP,20,5,404040,'V-
00002');
INSERT INTO PASAJE
VALUES(4,11,CURRENT_TIMESTAMP,120,1,404040,'V-
00003')
INSERT INTO PASAJE
VALUES(5,10,CURRENT_TIMESTAMP,40,1,505050,'V-00003')

-- CREACIÓN DE VISTAS
alter view prueba(cliente,pasaje,asiento)
as
select c.nomb,p.nro_pasaje, p.n_asiento
from cliente c, pasaje p
where c.ci=p.ci_c
SELECT * FROM PRUEBA
-- CUANDO INTENTAMOS ACTUALIZAR, O ELIMINAR LA
VISTA, YA EXISTE PROBLEMAS PORQUE REQUIERE DE OTROS
---OBJETOS PARA ESTE PROPÓSITO EN EL GESTOR
POSTGRESQL
UPDATE PRUEBA SET CLIENTE='OSCAR LUIS' WHERE
CLIENTE='OSCAR'
--------------------------------------------
-- EJEMPLO DE ACTUALIZACIÓN EN LA TABLA USUARIO
-- ACTUALIZAR VALOR DE PASSWORD
SELECT * FROM USUARIO
UPDATE USUARIO SET PASSW=MD5('USUARIO') WHERE
COD_U=100

---------------------------------procedimientos
almacenados-----------------------------------
--crear un pa para que el tabajador con id 3 se
registre como cliente

create procedure pa_trbajador_cliente


as
declare @C int,@N varchar(40),@AP varchar(30),
@AM varchar(30),@D varchar(50)
set @C=(select CI from TRABAJADOR where COD_T=3)
set @N=(select NOMBRE from TRABAJADOR where
COD_T=3)
set @AP=(select APP from TRABAJADOR where
COD_T=3)
set @AM=(select APM from TRABAJADOR where
COD_T=3)
SELECT @D= DIREC FROM TRABAJADOR WHERE COD_T=3
INSERT INTO CLIENTE VALUES(@C,@N,@AP,@AM,@D)
--------------para ejecutar los procedimientos
almacenados---------------
EXEC pa_trbajador_cliente
SELECT * FROM CLIENTE
SELECT * FROM TRABAJADOR
select *from PASAJE

-----------crear un PA que permita hacer la venta


de un pasaje al trabajador con codigo 3
ALTER procedure venta_p_cli_tra
as
declare @C int =(select CI from TRABAJADOR where
COD_T=1)
if exists(select * from CLIENTE where CI =@C)
INSERT INTO PASAJE
VALUES(5,25,GETDATE(),120,1,@C,'V-00003')
ELSE
PRINT'EL CLIENTE NO ESTA REGISTRADO'

EXEC venta_p_cli_tra

----CREAR PA ELIMINAR AL CLIENTE CON CI 3333333


ALTER PROC eliminar_cli
AS
DELETE FROM PASAJE WHERE CI_C = 3333333
DELETE FROM CLIENTE WHERE CI = 3333333

EXEC eliminar_cli --------------no se puede


por uqe la llave foranea esta en la tabla pasaje,
TAMBIEN ELIMINAR EN LA TABLA PASAJE
-----------CREAR UN TABLA FACTURA HACIENDO USO DE
UN PA, CON ATRIBUTOS N_FACTURA, NRO_PASAJE,
N_AUTORIZACION, FECHA_LIMITE_EMISION
CREATE PROC PA_FACTURA
AS
CREATE TABLE FACTURA
(
N_FACTURA INT,
NRO_PASAJE INT,
N_AUTORIZACION CHAR(15)
PRIMARY KEY(N_FACTURA,NRO_PASAJE),
FECHA_LIM_EMISION DATE,
FOREIGN KEY (NRO_PASAJE) REFERENCES
PASAJE(NRO_PASAJE)
)

EXEC PA_FACTURA

------------------------------PA PARAMETROS DE
ENTRADA--------------------------------
--------CREAR PA QUE PERMITA LA INSERCION DE
TRABAJADORES
SELECT *FROM TRABAJADOR
ALTER PROC INSERC_TRABAJADOR ( @N VARCHAR(40),@AP
VARCHAR(30), @AM VARCHAR(30),@D VARCHAR(50),@CI INT)
AS
DECLARE @C INT
SET @C=(SELECT MAX(COD_T) FROM TRABAJADOR)
INSERT INTO TRABAJADOR
VALUES(@C+1,@N,@AP,@AM,@D,@CI)
EXEC INSERC_TRABAJADOR
'JULIAN','DURAN','CHOQUE','MANZANO 67', 7777777
---CREAR UN PA QUE PERMITA INSERTAR TRABAJADORES
SECRETARIOS
---CREAR UN PA QUE PERMITA INSERTAR NUEVAS RUTAS

--PRIMERA CLASE DESOUES DE LAS VACACIONES


--CREAR UN PROCEDIMIENTO ALMACENADO PARA REALIZAR
LA INSERCION DE RUTAS
SELECT * FROM RUTA
create proc PA_InsercionRutas
as
insert into ruta values ('Santa Cruz','La
Paz',650)

exec PA_InsercionRutas

select * from usuario


alter proc PA_insertarUsuario
as
insert into usuario values (104,
'USUARIO5',convert(varchar(32),hashBytes('MD5','USUA
RIO5')),1,1,2 )
exec PA_insertarUsuario

create proc PA_insertrRuta


@or varchar (25), @des varchar (25), @CK int
as
IF (@CK >= 100)
insert into RUTA values (@or, @des, @CK)
ELSE
PRINT'el valor no es mayor a 100'

exec PA_insertrRuta 'POTOSI','CBBA',120


-----------------------crear unPA para
verificacion de una ruta--------------------

create proc PA_VerifRuta


@or varchar (25), @des varchar (25), @CK int
as
declare @a varchar(25)
declare @b varchar (25)
begin
@a:ORIGEN.RUTA
@b: DESTINO.RUTA
if @or = @a and @des =@b
print 'el valor ya existe'
else
if @des= @a and @or =@b
insert into ruta values (@or, @des, @CK)

end

-------------------otra manera de relizar el


anterior ejercicio-------------------------------
create procPA_INS_RUTA2
@or varchar (25), @des varchar (25), @CK int
as
declare @c_km int
set @c_km = @CK
if exists (select * from RUTA where ORIGEN = @or
AND DESTINO =@des)
print 'LA RUTA YA EXISTE'
else
begin
if exists (select * from RUTA where
DESTINO =@or and ORIGEN = @des)
begin
set @c_km = (select CANT_KM from RUTA
where DESTINO = @or AND ORIGEN =@des)
end
insert into RUTA values (@or,@des,
@c_km)
end

---------------------------------------------

------CREAR UN PA PARA LA INSERCION DE


TRABAJADORES SECRETARIOS
select * from TRABAJADOR
select * from SECRETARIO

alter proc ins_tra_Se


@cod int, @tur varchar (15), @cat_s int
as
begin
if exists (select * from TRABAJADOR WHERE COD_T =
@cod)
if @tur ='mañana' or @tur = 'tarde' or @tur
='noche' ----if (@tur in ('tarde',
'mañana','noche'))
if @cat_s = 1 or @cat_s = 2 or @cat_s = 3
insert into SECRETARIO values (@cod, @tur,
@cat_s)
else
print 'la categoria no es correcta'
else
print 'el turno no existe'
else
print 'el cod_trabajador no esta registrado' ---
-...+STR(@cod) str = si solo la variable es int
end
exec ins_tra_Se 8, 'noche', 5
select * from secretario
------------llaves es igual de begin-------------
--

--------crear un PA para modificar la contraseña


de usuario--------------
select * from usuario ----nombre de ususario no
se repite--
alter proc PA_Cam_PASS
@codus int, @nupass varchar (25)
as
if exists (select cod_u from usuario where
cod_u=@codus)
update usuario set passw
=convert(varchar(32),hashBytes('MD5',@nupass)) where
cod_u=@codus
else
print 'el usuario no existe'

exec PA_Cam_PASS 108,'1234'

También podría gustarte