LISTA SQL
Execute os comandos SQL a seguir:
create table departamento ( id serial,
nome_dp text, sala int,
PRIMARY KEY (id) );
insert into departamento(nome_dp,sala) values('ti', 1), ('comunicacao', 2), ('rh',3);
create table funcionario ( id serial,
nome text, idade int,
dp int REFERENCES departamento(id) );
insert into funcionario(nome, idade, dp) values ('danilo',28,1), ('felipe', 33, 2), ('rodrigo',30,1);
insert into funcionario(nome, idade) values ('joao',10);
Lista de como faz para executar os comandos join e view:
left join:
SELECT a.nome1, b.nome2 FROM tabela a LEFT JOIN tabela b ON a.id=b.id ; right join:
SELECT a.nome1, b.nome2 FROM tabela a RIGHT JOIN tabela b ON a.id=b.id ; inner join:
SELECT a.nome1, b.nome2 FROM tabela a INNER JOIN tabela b ON a.id=b.id ; FULL join:
SELECT a.nome1, b.nome2 FROM tabela a FULL JOIN tabela b ON a.id=b.id ; Cross join:
SELECT a.nome1, b.nome2 FROM tabela a cross JOIN tabela b;
OBS: a.id=b.id são os valores de a(ou b) que estão b (ou a). Exemplo:
Sala(id,nome)
Aluno(id, nome, id_sala)
Neste caso seria: aluno.id_sala = sala.id pois é onde se encontra a relação entre as tabelas.
(NÃO SERIA aluno.id = sala.id) criar uma view:
CREATE VIEW nomedaview AS query;
Apagar uma view:
DROP VIEW nomedaview Criar uma view materializada:
CREATE MATERIALIZED VIEW nomedaview AS query;
Atualizar uma view:
REFRESH MATERIALIZED VIEW nomedaview;
Dado que você executou o script sql no inicio da página, faça o que se pede a seguir:
a) Crie uma view que apresente somente o nome e o numero da sala dos departamentos b) Crie uma view que apresente a média de idade dos funcionários da empresa;
c) Crie uma view que apresente a idade dos funcionários da empresa -1;
d) Crie uma view que apresente o nome, a idade e o nome do departamento de todos os funcionários alocados em um departamento
e) Crie uma view que apresente o nome e a idade de todos os funcionários, e caso eles tenham um departamento, apresente também o nome do departamento.
f) Crie uma view que apresente o nome e a sala de todos os departamentos, e caso ele tenha funcionários, apresentar (em varias linhas) o nome do funcionário do departamento;
g) Crie uma view que apresente o nome do funcionário caso ele tenha departamento e o nome de todos os departamentos mesmo que ele não tenha funcionários. J
h) Criar uma view materializada apresentando o nome e o nome do departamento mostrando que todos os funcionários trabalham em todos os departamentos;
i) Fazer um insert na tabela tabela funcionário, visualizar a view anterior(não vai aparecer com o novo funcionario), executar o refresh(atualiza a view) e visualizar o novo nome na view materializada.