Pessoal,
com muita demora consegui postar as respostas do Teste Prático de SQL.
[Teoria] Teste Prático de SQL (Respostas)
Teste Prática de SQL
1 – e) F – F – V – V – F
2 –
(X) ALTER TABLE table1 ADD nr_cpf char(11);
(X) ALTER TABLE table1 DROP COLUMN nr_cpf;
3 – Erro na terceira etapa, pois irá executar um ALTER em table1 que foi ‘DROPada’.
4 – Minimo: Os OBRIGATÓRIOS e sempre teremos 4 campos preenchidos, o DEFAULT sempre será inserido.
5 – R.: É de extrema importância. Imagina um delete sem uma clausula WHERE com AUTOCOMMIT, pode correr para o backup (ou flashback) e ai temos outro sério problema além da falta de WHERE o AUTOCOMMIT que vem como default em algumas ferramentas e as vezes passa despercebido. O mesmo para ocorre para um UPDATE, pode ser um problema mais fácil de corrigir sem ter que recuperar backup, mas pode dar problemas sérios.
6 – Para que serve um ALIAS de tabela? E é somente para tabela?
R.: O ALIAS é um apelido que pode ser usado para tabela, views, campos ou sub-selects. A importância dele é na organização do SQL para usarmos em JOINs, em colunas com o mesmo nome em tabelas diferentes, nas clausulas WHERE, GROUP BY, ORDER BY. Quando temos muitas tabelas em um SQL, é de extrema importância.
7 –
(X) A consulta funciona;
(X) Existem alguma ALIAS e está sendo utilizado corretamente?
(X) Existe alguma subconsulta nesse SQL?
8 – d) Precisa de uma clausula AS antes do select na criação?
9 – R.: NENHUMA, o INNER é opcional.
10 – As explicações da questão 5 mostram a importância e serve para restringir os dados de um SQL. Podem ser seguidas de AND ou OR. Também por ORDER BY e GROUP BY (aqui também pelo HAVING).
11 –
SELECT e.fname, e.lname, e_mgr.fname mgr_fname, e_mgr.fname, mgr_lname
FROM employee e INNER JOIN employee e_mgr
ON e.superior_emp_id = e_mgr.emp_id;
1 = fname
2 = employee
3 = emp_id
12 –
SELECT account_id, product_cd, cust_id, avail_balance
FROM account
WHERE product_cd in (‘CHK’, ‘SAV’, ‘CD’, ‘MM’);
13 – SQL1 dá erro e o SQL2 executa.
14 – (X) NÃO – Todos trazem o mesmo resultado.
15 –
a) 5, 6, 8
b) 1, 3, 5, 6, 8
16 – (X) SIM
17 –
SELECT a.account_id, e.emp_id, b_a.name open_branch, b_e.name emp_branch
FROM account a INNER JOIN branch b_a
ON a.open_branch_id = b_a.branch_id
INNER JOIN employee e
ON a.open_emp_id = e.emp_id
INNER JOIN branch b_e
ON e.assigned_branch_id = b_e.branch_id
WHERE a.product_cd = ‘CHK’;
1 = branch
2 = b_a
3 = emp_id
4 = e
18 – Sim, alteram o resultado.
19 – Não. Trocar o WHERE por HAVING e também a ordem dentro do SQL:
SELECT open_emp_id, COUNT(*) Total
FROM account
GROUP BY open_emp_id
HAVING COUNT(*) > 4;
20 – SELECT count(distinct open_emp_id) FROM account;
21 – LEFT traz dos os registros da tabela que esta a esquerda (TABELA_ESQUERDA e LEFT OUTER JOIN TABELA_DIREITA d) atendendo ou não a clausula da junção com a outra tabela (WHERE e.id = d.id). O RIGTH é o inverso.
22 – Quando acontece a multiplicação de todos os registros de uma tabela com outra(s).
Qualquer dúvida estou a disposição.
Att,
capin
No caso, a questão 22, seria : ‘é quando ocorre a concatenação de todas as tuplas da tabela da esquerda com todas as tuplas da tabela da direta,sendo a primeira de R com todas as de S, e assim continuamente’.
Giulio,
Isso, não seria bem concatenação a palavra correta é o produto cartesiano.
E sim, primeira linha de R com todas de S e assim por diante.
Abraços.
Capin