Teste Prática de SQL

1 – Das alternativas abaixo, marque as que são verdadeiras na etapa de criação de uma tabela:
( ) Inicia com: CREATE VIEW ( … );
( ) Pode utilizar a opção ALTER TABLE …. no CREATE;
( ) Pode adicionar PRIMARY KEY, UNIQUE KEY ou FOREIGN KEY dentro da criação?
( ) Posso criar um campo que somente aceita um determinado conjunto de valores?
( ) Preciso sempre ter uma PRIMARY KEY?
a) F – F – V – V – V
b) F – F – V – F – V
c) V – V – F – V – F
d) V – V – F – F – V
e) F – F – V – V – F
f) V – V – F – F – F

2 – Das opções de alterar uma tabela, consideramos corretas:
( ) ALTER TABLE table1 ADD nr_cpf char(11);
( ) DROP TABLE table1;
( ) ALTER TABLE table1 DROP COLUMN nr_cpf;
( ) ALTER TABLE table1 ADD COLUMN nr_cpf char(11);
( ) ALTER TABLE table1 ADD UNIQUE KEY (nr_cpf);

3 – Considerando a ordem de execução acima como um script para a tabela table1 executa até o final ou da erro? Se der erro cite em qual etapa!
R.:

4 – Na execução de um INSERT em uma tabela qualquer que possui 5 campos, desses 5 temos 3 obrigatórios, 1 com valor default e 1 não obrigatório, é necessário colocar todos campos após o nome da tabela (INSERT INTO table1 (campo1, campo2, …)? Se não for, diga quais seriam o mínimo.
R.:

5 – Quando executamos um UPDATE ou um DELETE qual a importância de possuirmos a clausula WHERE?
R.:

6 – Para que serve um ALIAS de tabela? E é somente para tabela?
R.:

7 – Dessa consulta abaixo aponte quais as opções são verdadeiras:
SELECT fname, lname
FROM (SELECT emp_id, fname, lname,
start_date, title FROM employee
) e;

( ) A parte em negrito é uma view?
( ) A consulta funciona;
( ) Existem alguma ALIAS e está sendo utilizado corretamente?
( ) Existe alguma subconsulta nesse SQL?
( ) A consulta final mostra todas as colunas da tabela employee;

8 – Sobre VIEW podemos afirmar que:
a) Sempre é utilizada como subconsulta em um SQL;
b) Não precisa necessariamente ter um nome definido;
c) Precisa sempre ser criada com CREATE OR REPLACE table?
d) Precisa de uma clausula AS antes do select na criação?
e) N.D.A

9 – Qual a diferença entre: INNER JOIN e JOIN?
R.:

10 – Para que serve a clausula WHERE? Ela pode ser seguida de mais alguma outra condição?
R.:

11 – Preencha as lacunas do SQL abaixo, que quer mostrar o nome e sobrenome do funcionário seguido do nome e sobrenome do seu superior:
SELECT e.fname, e.lname, e_mgr.fname mgr_fname, e_mgr. mgr_lname
FROM e INNER JOIN employee e_mgr
ON e.superior_emp_id = e_mgr.;

1 = ______________
2 = ______________
3 = ______________

12 – Qual seria a outra forma de escrever o SQL abaixo:
SELECT account_id, product_cd, cust_id, avail_balance
FROM account
WHERE product_cd = 'CHK'
OR product_cd = 'SAV'
OR product_cd = 'CD'
OR product_cd = 'MM';

R.:

13 – Sobre valores NULL, o que significa? O SQL1 abaixo está correto? E o SQL2?
R.:

SQL1: SELECT * FROM employee WHERE emp_id = NULL;
SQL2: SELECT * FROM employee WHERE NULL = NULL;

14 – Dos SQLs abaixo, podemos dizer que tem diferença entre eles?
SELECT e.fname, e.lname, d.name
FROM employee e INNER JOIN department d
ON e.dept_id = d.dept_id;

SELECT e.fname, e.lname, d.name
FROM employee e INNER JOIN department d
USING (dept_id);

SELECT e.fname, e.lname, d.name
FROM employee e NATURAL JOIN department d;

( ) SIM
( ) NÃO

15 – Analisando os dados abaixo:
Txn_id   Txn_date         Account_id   Txn_type_cd   Amount
1             2005-02-22   101                 CDT                 1000.00
2             2005-02-23   102                 CDT                 525.75
3             2005-02-24   101                 DBT                 100.00
4             2005-02-24   103                 CDT                 55
5             2005-02-25   101                 DBT                 50
6             2005-02-25   103                 DBT                 25
7             2005-02-25   102                 CDT                 125.37
8             2005-02-26   103                 DBT                 10
9             2005-02-27   101                 CDT                 75

a) Quais os IDs da transação que seriam retornados pelas seguintes condições de filtro?
txn_date >= ‘2005-02-24’ AND (txn_type_cd = ‘DBT’ AND amount < 100)

b) Quais os IDs da transação que seriam retornados pelas seguintes condições de filtro? account_id NOT IN (102) AND (txn_type_cd = ‘DBT’ OR amount > 500)

16 – Dos SQLs abaixo, podemos dizer que tem diferença entre eles?
SELECT a.account_id, c.fed_id, e.fname, e.lname
FROM account a INNER JOIN customer c
ON a.cust_id = c.cust_id
INNER JOIN employee e
ON a.open_emp_id = e.emp_id
WHERE c.cust_type_cd = 'B';

SELECT a.account_id, c.fed_id, e.fname, e.lname
FROM customer c INNER JOIN account a
ON a.cust_id = c.cust_id
INNER JOIN employee e
ON a.open_emp_id = e.emp_id
WHERE c.cust_type_cd = 'I';

SELECT a.account_id, c.fed_id, e.fname, e.lname
FROM employee e INNER JOIN account a
ON e.emp_id = a.open_emp_id
INNER JOIN customer c
ON a.cust_id = c.cust_id
WHERE c.cust_type_cd = 'I';

( ) SIM
( ) NÃO

17 – Preencha as lacunas do SQL abaixo:
SELECT a.account_id, e.emp_id, b_a.name open_branch, b_e.name emp_branch
FROM account a INNER JOIN b_a
ON a.open_branch_id = .branch_id
INNER JOIN employee e
ON a.open_emp_id = e.
INNER JOIN branch b_e
ON .assigned_branch_id = b_e.branch_id
WHERE a.product_cd = 'CHK';

1 = _______________
2 = _______________
3 = _______________
4 = _______________

18 – Quando falamos de conjuntos e a clausula UNION/UNION ALL podemos dizer que a ordem deles dentro de um SQL pode alterar o resultado?
R.:

19 – Quando precisamos utilizar filtro de por condição, o SQL abaixo está correto?
Caso não escreva o SQL correto.
SELECT open_emp_id, COUNT(*) Total
FROM account
WHERE COUNT(*) > 4
GROUP BY open_emp_id;

R.:

20 – Para contar todos os empregados distintos (open_emp_id) que abriram conta (account), como fica o SQL?
R.:

21 – Sobre as junções externas explique o que é o LEFT OUTER JOIN e o RIGTH OUTER JOIN.
R.:

22 – O que é um produto cartesiano (CROSS JOIN)?
R.:

Att,
capin