Baixe o app para aproveitar ainda mais
Prévia do material em texto
1a Questão (Ref.: 201502630094) Pontos: 0,1 / 0,1 Qual comando representa a especificação abaixo? Especifica a junção entre duas tabelas com uma cláusula de junção explícita. SELECT GROUP BY ORDER BY INNER JOIN WHERE Gabarito Comentado. 2a Questão (Ref.: 201503278280) Pontos: 0,1 / 0,1 A partir das relações abaixo, responda em SQL: quantos alunos (nota maior ou igual a 6) foram aprovados na disciplina 'Banco de Dados' com o professor 'Rui'? Use inner join. Relações: PROFESSOR (idprofessor, nomeprofessor); LECIONA (idprofessor, iddisciplina); DISCIPLINA (iddisciplina, nomedisciplina); ALUNO (matricula, nomealuno); MATRICULA (inscrição, iddisciplina, matricula, nota, período, ano) SELECT count(*) AS total FROM professor p, leciona l, matricula m WHERE p.idprofessor = l.idprofessor AND m.iddisciplina = d.iddisciplina AND nomeprofessor = 'Rui' AND nomedisciplina = 'Banco de Dados' SELECT count(*) AS total FROM professor p LEFT JOIN leciona l ON p.idprofessor = l.idprofessor LEFT JOIN disciplina d ON l.iddisciplina = d.iddisciplina LEFT JOIN matricula m ON m.iddisciplina = d.iddisciplina WHERE nomeprofessor = 'Rui' OR nomedisciplina = 'Banco de Dados' SELECT sum(*) AS total FROM professor p, leciona l, matricula m WHERE p.idprofessor = l.idprofessor AND m.iddisciplina = d.iddisciplina AND nomeprofessor = 'Rui' AND nomedisciplina = 'Banco de Dados' SELECT count(distinct) AS total FROM professor p RIGHT JOIN leciona l ON p.idprofessor = l.idprofessor RIGHT JOIN disciplina d ON l.iddisciplina = d.iddisciplina RIGHT JOIN matricula m ON m.iddisciplina = d.iddisciplina WHERE nomeprofessor = 'Rui' OR nomedisciplina = 'Banco de Dados' SELECT count(distinct) AS total FROM professor p INNER JOIN leciona l ON p.idprofessor = l.idprofessor INNER JOIN disciplina d ON l.iddisciplina = d.iddisciplina INNER JOIN matricula m ON m.iddisciplina = d.iddisciplina WHERE nomeprofessor = 'Rui' AND nomedisciplina = 'Banco de Dados' 3a Questão (Ref.: 201502864067) Pontos: 0,1 / 0,1 Para se obter todos as matrículas, nomes e descrições dos departamentos de todos empregados independente de terem ou não códigos de departamento atribuídos (entenda-se por nulo os departamentos não atribuídos) deve-se escrever qual o select: SELECT E.ID_EMP_MATRICULA AS MATRICULA, E.VC_EMP_NOME AS NOME, D.VC_DEP_NOME AS DEPARTAMENTO FROM EMPREGADO E RIGHT JOIN DEPARTAMENTO D ON E.NU_EMP_DEPARTAMENTO = D.ID_DEP_CODIGO; SELECT E.ID_EMP_MATRICULA AS MATRICULA, E.VC_EMP_NOME AS NOME, D.VC_DEP_NOME AS DEPARTAMENTO FROM EMPREGADO E INNER JOIN DEPARTAMENTO D ON E.NU_EMP_DEPARTAMENTO = D.ID_DEP_CODIGO; SELECT E.ID_EMP_MATRICULA AS MATRICULA, E.VC_EMP_NOME AS NOME, D.VC_DEP_NOME AS DEPARTAMENTO FROM EMPREGADO E LEFT JOIN DEPARTAMENTO D ON E.NU_EMP_DEPARTAMENTO = D.ID_DEP_CODIGO; SELECT E.ID_EMP_MATRICULA AS MATRICULA, E.VC_EMP_NOME AS NOME, D.VC_DEP_NOME AS DEPARTAMENTO FROM EMPREGADO E INNER JOIN DEPARTAMENTO D ON E.NU_EMP_DEPARTAMENTO = D.ID_DEP_CODIGO WHERE E.NU_EMP_DEPARTAMENTO IS NULL; SELECT E.ID_EMP_MATRICULA AS MATRICULA, E.VC_EMP_NOME AS NOME, D.VC_DEP_NOME AS DEPARTAMENTO FROM EMPREGADO E INNER JOIN DEPARTAMENTO D ON E.NU_EMP_DEPARTAMENTO != D.ID_DEP_CODIGO; Gabarito Comentado. 4a Questão (Ref.: 201502718611) Pontos: 0,1 / 0,1 Qual das consultas abaixo retorna o nome e a placa de todos os veículos? SELECT v.placa, c.nome FROM Veiculo v INNER JOIN Cliente c ON v.Cliente_cpf = c.cpf; SELECT v.placa, c.nome FROM Cliente INNER JOIN Cliente c ON v.Cliente_cpf = c.cpf; SELECT c.nome FROM Veiculo v INNER JOIN Cliente c ON cpf = cpf; SELECT c.cpf, c.nome FROM Veiculo v INNER JOIN Cliente c ON v.Cliente_cpf = c.cpf WHERE v.placa; SELECT placa FROM Veiculo INNER JOIN Cliente ON Cliente_cpf = cpf; 5a Questão (Ref.: 201503385285) Pontos: 0,1 / 0,1 Um sistema de informação usa um banco de dados relacional que possui tabelas cujos esquemas em SQL estão representados a seguir. CREATE TABLE Artista ( id INTEGER PRIMARY KEY, nome VARCHAR(40) NOT NULL, CPF CHAR(11) NOT NULL, dataNascimento DATE, UNIQUE (CPF) ); CREATE TABLE Evento ( id INTEGER PRIMARY KEY, descricao VARCHAR(60) NOT NULL, numMaxConvidados INTEGER DEFAULT 0, CHECK (numMaxConvidados >= 0) ); CREATE TABLE Atuacao ( idArtista INTEGER, idEvento INTEGER, PRIMARY KEY (idArtista, idEvento), FOREIGN KEY (idArtista) REFERENCES Artista, FOREIGN KEY (idEvento) REFERENCES Evento(id)); O sistema também possui uma consulta que integra um de seus relatórios, conforme indicado a seguir: SELECT A.nome, E.descricao FROM Evento E FULL JOIN Atuacao T ON E.id = T.idEvento FULL OUTER JOIN Artista A ON T.idArtista = A.id Considerando que todas as tabelas possuem dados, o resultado da consulta utilizada no relatório e: O nome de todos os artistas, a descrição de todos os eventos e, caso eles se relacionem, os dois combinados. O nome de todos os artistas combinados com a descrição de todos os eventos O nome de todos os artistas e, caso eles participem de eventos, a descrição do evento. O nome de todos os artistas e a descrição de todos os eventos em que eles atuam. A descrição de todos os eventos e, caso haja artistas alocados, os seus nomes. Gabarito Comentado.
Compartilhar