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