--############################################################# --################## Aula 11/12 (27-03-2006) ################ --############################################################# --Criação de uma nova tabela a partir de um resultado de uma query (selecção de todos os funcionarios com ordenados superiores a 450 euros) select * into funcionariosnovos from funcionarios where salario>450 /* ########################################################################## JOINS - Junção de 2 tabelas com base no valor de uma coluna (comum às tabelas). - Operação através da qual se obtém uma tabela a partir de 2 tabelas que partilhem de uma coluna comum. ########################################################################## */ --Listar todos os nomes dos alunos e suas notas select Alunos.nome as 'Nome do Aluno', Exames.nota as 'Nota de Exame' from Alunos inner join Exames on Alunos.idAluno = exames.idAluno --Explicação: A tabela resultante pode conter campos de qualquer das tabelas --e as linhas seguem o critério da igualdade dos valores das colunas idAluno --em ambas as tabelas. --Igual ao anterior, mas agora com a cláusula inner join implícita select Alunos.nome as 'Nome do Aluno', Exames.nota as 'Nota de Exame' from Alunos, Exames where Alunos.idAluno = Exames.idAluno --JOINS com restrições --Listar os nomes dos alunos, as suas notas e as disciplinas respectivas --apenas dos exames cuja nota é negativa --INNER JOIN implícito select Alunos.nome as 'Nome do Aluno', Disciplinas.nome as 'Disciplina', Exames.nota as 'Nota de Exame' from Alunos, Disciplinas, Exames where Alunos.idAluno = Exames.idAluno and Disciplinas.idDisciplina = Exames.idDisciplina and Exames.nota>=10 --INNER JOIN explícito select Alunos.nome as 'Nome do Aluno', Disciplinas.nome as 'Disciplina', Exames.nota as 'Nota de Exame' from Alunos inner join (Exames inner join Disciplinas on Exames.idDisciplina = Disciplinas.idDisciplina) on Alunos.idAluno = Exames.idAluno where Exames.nota>=10 /* ########################################################################## OUTER JOINS LEFT JOIN A operação faz a junção de 2 tabelas com base na comparação de valores de colunas comuns, mas ao contrario do inner join, coloca na tabela resultado, todas as linhas da tabela do lado esquerdo, independentemente de haver ou não valores na tabela do lado oposto, para essas colunas ########################################################################## */ --Selecciona todos os alunos independendentemente de terem ou não feito exames select Alunos.idAluno as 'ID', Alunos.nome as 'Nome do Aluno', Exames.nota as 'Nota' from Alunos left join Exames on Alunos.idAluno = Exames.idAluno /* ########################################################################## OUTER JOINS RIGHT JOIN A operação faz a junção de 2 tabelas com base na comparação de valores de colunas comuns , mas ao contrario do inner join, coloca na tabela resultado, todas as linhas da tabela do lado direito, independentemente de haver ou não valores na tabela do lado oposto, para essas colunas ########################################################################## */ --Selecciona todas as disciplinas independendentemente de terem sido feitos ou não exames select Exames.nota as 'Nota', Disciplinas.nome as 'Disciplina' from Exames right join Disciplinas on Exames.idDisciplina = Disciplinas.idDisciplina