sql Ejercicio de consultas en oracle 11g express

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql Ejercicio de consultas en oracle 11g express相关的知识,希望对你有一定的参考价值。

1. Crear la tabla ciudad con un código de ciudad y un nombre.

create table ciudad
(
idciudad int,
nombre varchar2(20)
);

2. Crear la tabla comuna con un código de comuna, nombre, y código de ciudad

create table comuna
(
idcomuna int,
nombre varchar2(20),
idciudad int
);

3. Crear la tabla cliente con código de cliente, Rut, nombre, fecha de nacimiento, código comuna.

create table cliente
(
idcliente int,
rut int,
nombre varchar2(20),
fechanac date,
deuda int,
estadocivil varchar2(1),
sexo varchar2(1),
idcomuna int
);

4. Agregar la restricción primary key al campo cod_ciu de la tabla ciudad.

alter table ciudad 
add constraint pk_ciudad
primary key(idciudad);
desc ciudad;

5. Agregar la restricción primary key al campo cod_com de la tabla comuna.

alter table comuna
add constraint pk_comuna
primary key(idcomuna);
desc comuna;

6. Agregar la restricción forein key al campo cod_ciu de la tabla comuna.

alter table comuna
add constraint fk_ciudad
foreign key(idciudad) references ciudad(idciudad);

7. Agregar la restricción primary key al campo cod_cli de la tabla cliente.

alter table cliente
add constraint pk_cliente
primary key(idcliente);
desc cliente;

8. Agregar la restricción forein key al campo cod_com de la tabla cliente.

alter table cliente
add constraint fk_comuna
foreign key(idcomuna) references comuna(idcomuna);

9. Crear la secuencia para la tabla ciudad, comuna y cliente

create sequence secCiudad
start with 1
increment by 1
maxvalue 100
minvalue 1
nocycle;

create sequence secComuna
start with 1
increment by 1
maxvalue 100
minvalue 1
nocycle;

create sequence secCliente
start with 1
increment by 1
maxvalue 100
minvalue 1
nocycle;

10. Poblar la tabla ciudad, comuna y cliente con 10 registros

insert into ciudad values(1,'Santiago');

insert into comuna values(1,'La Granja',1);
insert into comuna values(6,'Independencia',1);
insert into comuna values(5,'San Bernardo',1);	
insert into comuna values(4,'Maipu',1);	
insert into comuna values(3,'San Ramon',1);	
insert into comuna values(2,'La Florida',1);

insert into cliente values(5, 555,'German','11/09/1970',999,'c','f', 2);	
insert into cliente values(4, 444,'Matias','08/15/1940',1050100,'s','m', 2);	
insert into cliente values(3, 333,'Josue','12/05/1950',999999,'c','m', 6);	
insert into cliente values(2, 222,'JotaGay','01/30/1990',20000,'s','f', 3);	
insert into cliente values(1, 111,'Fabian','09/28/1989',10000,'s','m', 1);

11. Agregar el campo dirección a la tabla de los clientes

alter table cliente add direccion varchar2(20)

12. Crear una vista materializada con los clientes de la comuna de la florida

create materialized view VistaConsulta
as
( 
select cl.nombre, co.nombre
from cliente cl inner join comuna co
on cl.idcomuna = co.idcomuna
where co.nombre = 'La Florida')
;

13. Crear una vista de los clientes de Ñuñoa y San Ramón pero de solo lectura

create view Vista
as
(
select cl.nombre
from cliente cl inner join comuna co
on cl.idcomuna = co.idcomuna
where co.nombre = 'La Granja' or co.nombre = 'San Ramon'
)
with read only;

14. Crear una vista de los clientes de San Bernardo y Maipu que al insertar datos solo acepte datos de esas comunas

create view Vista2
as
(
select cl.nombre
from cliente cl inner join comuna co
on cl.idcomuna = co.idcomuna
where co.nombre = 'San Bernardo' or co.nombre = 'Maipu'
)
with check option;


15. Mostrar el nombre y el año (no la fecha)de nacimiento de los clientes que son de la florida

select cl.nombre, extract(year from cl.fechanac)
from cliente cl inner join comuna co
on cl.idcomuna = co.idcomuna
where co.nombre = 'La Florida'

16. Mostrar todos los clientes que nacieron después del año 1990

desc cliente
insert into cliente values(7, 777,'Yeremy','09/09/1998',999,'s','m', 2, 'la gayja 321');
insert into cliente values(6, 666,'Carlitos','11/09/1995',4999,'c','m', 2, 'internet 7676');

select * from cliente
where extract(year from fechanac) > 1990;

17. Mostrar que clientes están hoy de cumpleaños.

insert into cliente values(8, 888,'Esteban Aguila','05/07/1945',10000,'s','m', 1, 'Catorce oriente 123');
insert into cliente values(9, 999,'Luis Aguila','02/07/1961',10000,'c','m', 1, 'Castro chiloe 1233'); 
update cliente set fechanac = '05/25/1980' where idcliente = 8;
update cliente set fechanac = '05/25/1940' where idcliente = 9;



select * from cliente
where extract(day from fechanac) = extract(day from sysdate)
and extract(month from fechanac) = extract(month from sysdate);


18. Mostrar cuantos clientes son mayores de 50 años

select * from cliente
where fechanac <= '05/25/1965'

19. Eliminar el campo fecha de nacimiento de la tabla de los clientes

ALTER TABLE cliente
DROP COLUMN fechanac;


20. Mostrar los clientes que son de la ciudad de Rancagua.

INSERT INTO ciudad VALUES(2,'Rancagua');
INSERT INTO comuna VALUES(7,'Rancagua',2);

update cliente set idcomuna = 7 where idcliente = 8;
update cliente set idcomuna = 7 where idcliente = 9;

select  cl.rut, cl.nombre, ci.nombre
from cliente cl inner join comuna co
on cl.idcomuna = co.idcomuna inner join 
ciudad ci on co.idciudad = ci.idciudad
where ci.nombre = 'Rancagua';

21. Modificar el tamaño del nombre de la columna nombre del cliente a 35 caracteres.

alter table cliente
modify nombre varchar2(35);
desc cliente;

22. Mostrar cual es el promedio de deudas que tienen los clientes de la ciudad de Santiago
select avg(cl.deuda)
from cliente cl inner join comuna co
on cl.idcomuna = co.idcomuna
inner join ciudad ci on
co.idciudad = ci.idciudad
where ci.nombre = 'Santiago'

select cl.deuda 
from cliente cl inner join comuna co
on cl.idcomuna = co.idcomuna
inner join ciudad ci on
co.idciudad = ci.idciudad
where ci.nombre = 'Santiago'

23. Mostrar cual es el promedio de deudas por cada comuna

select co.nombre, avg(cl.deuda)
from cliente cl inner join comuna co
on cl.idcomuna = co.idcomuna
group by co.nombre

select co.nombre, cl.deuda
from cliente cl inner join comuna co
on cl.idcomuna = co.idcomuna

24. Mostrar cuantas personas mantienen deudas de más de 500.000 pesos

select count(nombre) from cliente
where deuda > 500000

25. Mostrar cuantas mujeres deben más de 300.000 pesos

select count(sexo) from cliente
where deuda > 300000 and sexo = 'f'; 

select * from cliente

insert into cliente values(10,1000, 'maria', 350000, 'c' , 'f' , 3,'jepues 1212');

26. Mostrar cuantos clientes están casados por ciudad

select count(cl.nombre), ci.nombre
from cliente cl inner join comuna co
on cl.idcomuna = co.idcomuna inner join
ciudad ci on co.idciudad = ci.idciudad
where cl.estadocivil = 'c'
group by ci.nombre;

select * from cliente;

27. Mostrar cuantos hombres solteros existen sin deuda

insert into cliente values(11,1000, 'Juan', 0, 's' , 'm' , 2,'hola 123');
insert into cliente values(12,1111, 'Mario', 0, 's' , 'm' , 5,'campo 3434');

select count(idcliente)
from cliente
where deuda = 0 and sexo = 'm';


28. Mostrar cuantos clientes son mujeres por ciudad

insert into cliente values(13,1222, 'maria jose', 200000, 's' , 'f' , 7,'hola 123');

select count(cl.idcliente), ci.nombre
from cliente cl inner join comuna co
on cl.idcomuna = co.idcomuna inner join
ciudad ci on co.idciudad = ci.idciudad
where cl.sexo = 'f'
group by ci.nombre;

29. Mostrar cual es la suma de lo adeudado por los hombres

select sum(deuda)
from cliente
where sexo = 'm'

30. Mostrar cual es el promedio adeudado por mujer

select avg(deuda)
from cliente
where sexo = 'f'

31. Mostrar cual es la persona que debe más dinero en todo chile
select *
from cliente
where deuda =
(
select max(deuda) from cliente
)

select * from cliente

32. Mostrar cual es la mujer que debe más en todo chile

select *
from cliente
where deuda =
(
select max(deuda) from cliente
where sexo ='f'
)

以上是关于sql Ejercicio de consultas en oracle 11g express的主要内容,如果未能解决你的问题,请参考以下文章