87 - Vistas modificar (create or replace view) |
Un club dicta cursos de distintos deportes. Almacena la información en varias tablas.
1- Elimine las tablas "inscriptos", "socios" y "cursos":
drop table inscriptos; drop table socios; drop table cursos;
2- Cree las tablas:
create table socios(
documento char(8) not null,
nombre varchar2(40),
domicilio varchar2(30),
constraint PK_socios_documento
primary key (documento)
);
create table cursos(
numero number(2),
deporte varchar2(20),
dia varchar2(15),
constraint CK_inscriptos_dia check (dia in('lunes','martes','miercoles','jueves','viernes','sabado')),
profesor varchar2(20),
constraint PK_cursos_numero
primary key (numero)
);
create table inscriptos(
documentosocio char(8) not null,
numero number(2) not null,
matricula char(1),
constraint PK_inscriptos_documento_numero
primary key (documentosocio,numero),
constraint FK_inscriptos_documento
foreign key (documentosocio)
references socios(documento),
constraint FK_inscriptos_numero
foreign key (numero)
references cursos(numero)
);
3- Ingrese algunos registros para todas las tablas:
insert into socios values('30000000','Fabian Fuentes','Caseros 987');
insert into socios values('31111111','Gaston Garcia','Guemes 65');
insert into socios values('32222222','Hector Huerta','Sucre 534');
insert into socios values('33333333','Ines Irala','Bulnes 345');
insert into cursos values(1,'tenis','lunes','Ana Acosta');
insert into cursos values(2,'tenis','martes','Ana Acosta');
insert into cursos values(3,'natacion','miercoles','Ana Acosta');
insert into cursos values(4,'natacion','jueves','Carlos Caseres');
insert into cursos values(5,'futbol','sabado','Pedro Perez');
insert into cursos values(6,'futbol','lunes','Pedro Perez');
insert into cursos values(7,'basquet','viernes','Pedro Perez');
insert into inscriptos values('30000000',1,'s');
insert into inscriptos values('30000000',3,'s');
insert into inscriptos values('30000000',6,null);
insert into inscriptos values('31111111',1,'n');
insert into inscriptos values('31111111',4,'s');
insert into inscriptos values('32222222',1,'n');
insert into inscriptos values('32222222',7,'n');
4- Cree o reemplace la vista "vista_inscriptos" que muestre el documento y nombre del socio, el deporte, el día y la matrícula, de todas las inscripciones no pagas
5- Consulte la vista
6- Veamos el texto de la vista
7- Modifique la vista para que muestre el domicilio
8- Consulte la vista para ver si se modificó
9- Vea el texto de la vista
Ver solución
drop table inscriptos;
drop table socios;
drop table cursos;
create table socios(
documento char(8) not null,
nombre varchar2(40),
domicilio varchar2(30),
constraint PK_socios_documento
primary key (documento)
);
create table cursos(
numero number(2),
deporte varchar2(20),
dia varchar2(15),
constraint CK_inscriptos_dia check (dia in('lunes','martes','miercoles','jueves','viernes','sabado')),
profesor varchar2(20),
constraint PK_cursos_numero
primary key (numero)
);
create table inscriptos(
documentosocio char(8) not null,
numero number(2) not null,
matricula char(1),
constraint PK_inscriptos_documento_numero
primary key (documentosocio,numero),
constraint FK_inscriptos_documento
foreign key (documentosocio)
references socios(documento),
constraint FK_inscriptos_numero
foreign key (numero)
references cursos(numero)
);
insert into socios values('30000000','Fabian Fuentes','Caseros 987');
insert into socios values('31111111','Gaston Garcia','Guemes 65');
insert into socios values('32222222','Hector Huerta','Sucre 534');
insert into socios values('33333333','Ines Irala','Bulnes 345');
insert into cursos values(1,'tenis','lunes','Ana Acosta');
insert into cursos values(2,'tenis','martes','Ana Acosta');
insert into cursos values(3,'natacion','miercoles','Ana Acosta');
insert into cursos values(4,'natacion','jueves','Carlos Caseres');
insert into cursos values(5,'futbol','sabado','Pedro Perez');
insert into cursos values(6,'futbol','lunes','Pedro Perez');
insert into cursos values(7,'basquet','viernes','Pedro Perez');
insert into inscriptos values('30000000',1,'s');
insert into inscriptos values('30000000',3,'s');
insert into inscriptos values('30000000',6,null);
insert into inscriptos values('31111111',1,'n');
insert into inscriptos values('31111111',4,'s');
insert into inscriptos values('32222222',1,'n');
insert into inscriptos values('32222222',7,'n');
create or replace view vista_deudores
as
select documento,nombre,c.deporte,c.dia,matricula
from socios s
join inscriptos i
on documento=documentosocio
join cursos c
on c.numero=i.numero
where matricula='n';
select *from vista_deudores;
select view_name,text from user_views where view_name='VISTA_DEUDORES';
create or replace view vista_deudores
as
select documento,nombre,domicilio,c.deporte,c.dia,matricula
from socios s
join inscriptos i
on documento=documentosocio
join cursos c
on c.numero=i.numero
where matricula='n';
select *from vista_deudores;
select view_name,text from user_views where view_name='VISTA_DEUDORES';