O EXERCÍCIO DE FUNDAMENTOS DE BANCO DE DADOS
Por: felipefarias69 • 30/6/2020 • Trabalho acadêmico • 1.141 Palavras (5 Páginas) • 179 Visualizações
Exercício de Fundamentos de Banco de Dados
Nos exercícios que seguem coloque abaixo de cada exercício a linha de SQL que representa os comandos dados.
- Crie as tabelas que seguem e popule-as com as informações relacionadas abaixo:
create table tbandar(
pkcodand integer not null,
nomeand varchar (20) not null
);
create table tbapto(
pkcodap integer not null,
nomeap varchar (30) not null,
valordia number (10,2) not null,
fkcodand integer not null,
fkcodcat integer not null,
camas integer not null
);
create table tbcategoria(
pkcodcat integer not null,
nomecat varchar (20)
);
insert into tbandar(pkcodand, nomeand) values (1, 'primeiro');
insert into tbandar(pkcodand, nomeand) values (2, 'segundo');
insert into tbandar(pkcodand, nomeand) values (3, 'terceiro');
insert into tbcategoria (pkcodcat, nomecad) values (1, 'standard');
insert into tbcategoria (pkcodcat, nomecad) values (2, 'luxo');
insert into tbcategoria (pkcodcat, nomecad) values (3, 'presidencial');
insert into tbapto (pkcodap, nomeap, valordia, camas, fkcodand, fkcodcat) values (1, 'Ap101', 201.40, 3, 1, 1);
insert into tbapto (pkcodap, nomeap, valordia, camas, fkcodand, fkcodcat) values (2, 'Ap301', 10.44, 1, 3, 1);
insert into tbapto (pkcodap, nomeap, valordia, camas, fkcodand, fkcodcat) values (3, 'Ap201', 182.34, 2, 2, 1);
insert into tbapto (pkcodap, nomeap, valordia, camas, fkcodand, fkcodcat) values (5, 'Ap102', 12.45, 2, 1, 2);
insert into tbapto (pkcodap, nomeap, valordia, camas, fkcodand, fkcodcat) values (6, 'Ap202', 190.33, 2, 2, 1);
insert into tbapto (pkcodap, nomeap, valordia, camas, fkcodand, fkcodcat) values (7, 'Ap103', 44.30, 1, 1, 2);
insert into tbapto (pkcodap, nomeap, valordia, camas, fkcodand, fkcodcat) values (8, 'Ap302', 210.40, 1, 3, 2);
insert into tbapto (pkcodap, nomeap, valordia, camas, fkcodand, fkcodcat) values (9, 'Ap104', 210.40, 1, 1, 3);
insert into tbapto (pkcodap, nomeap, valordia, camas, fkcodand, fkcodcat) values (10, 'Ap203', 44.30, 4, 2, 3);
insert into tbapto (pkcodap, nomeap, valordia, camas, fkcodand, fkcodcat) values (11, 'Ap105', 75.30, 1, 1, 1);
- Crie as Chaves primárias e estrangeiras das tabelas acima citadas
alter table tbandar add constraint tbandarpk primary key(pkcodand);
alter table tbapto add constraint tbaptopk primary key(pkcodap);
alter table tbcategoria add constraint tbcategoriapk primary key(pkcodcat);
alter table tbapto add constraint tbaptofk foreign key(fkcodand) references tbandar (pkcodand);
alter table tbapto add constraint tbaptofk2 foreign key(fkcodcat) references tbcategoria (pkcodcat);
- Altere o código do Andar de todos os Aptos de 2 para 3
update tbapto x set x.fkcodand=3 where x.fkcodand=2;
- Altere a quantidade de camas para mais 1 cama, de todos os Aptos que seu valor de diária é superior a 15,22 e inferior a 135,33.
update tbapto x set x.camas=x.camas+1 where x.valordia>15.22 and x.valordia<135.33;
- Altere o nome da categoria para ‘Luxo’ a categoria de código 2
update tbcategoria x set x.nomecat='Luxo' where x.pkcodcat=2;
- Liste o código, nome e valor de diária de todos os Aptos do Andar de código 3 em ordem de valor de diária
select x.pkcodap, x.nomeap, x.valordia from tbapto x where x.fkcodand=3 order by x.valordia asc;
- Liste o maior valor de diária dos Aptos gravados na tabela de aptos.
select max(x.valordia) from tbapto x;
- Liste a média de valor de diária, o menor valor de diária e a soma do total de camas dos aptos.
select avg(x.valordia), min(x.valordia), sum(x.camas) from tbapto x;
- Liste o código, nome, camas, diária e a divisão de valor de diárias pelo número de camas, de todos os Aptos da categoria 1 ou 4
select x.pkcodap, x.nomeap, x.camas, x.valordia, (x.valordia/x.camas) as divisao from tbapto x where fkcodcat in(1 ,4);
10) Construa uma lista simulando mais 10% o valor de diária, juntamente como código e nome do apto.
select x.pkcodap, x.nomeap, (x.valordia+(x.valordia*0.1)) as valordiaacrescimo from tbapto x;
11) Liste todos os Aptos que iniciam com “a” ou “b”
select x.nomeap from tbapto x where upper(x.nomeap) like upper('a%') or upper(x.nomeap) like upper('b%');
12) Liste todos os Aptos que possuam “ar” em seu nome e valor de diária superior a 354.32
select x.nomeap from tbapto x where upper(x.nomeap) like upper('ar%') and x.valordia>354.32;
13) Liste todos os Aptos que possuam o número de camas entre 2 e 5(inclusive) em ordem de número de camas, e em seguida em ordem de valor de diária
select * from tbapto x where x.camas>2 and x.camas<=5 order by x.camas, x.valordia asc;
14) Liste o código do andar da tabela tbapto onde a soma total do valor da diária dos apto que estejam na categoria sejam superiores a 300
...