Guia Prático de Comandos SQL e Consultas
Classificado em Formação e Orientação para o Emprego
Escrito em em
português com um tamanho de 3,26 KB
Comandos e Operadores SQL Essenciais
Union: Por padrão, ele executa o comando SELECT DISTINCT, portanto, não irá exibir linhas duplicadas. Combina os resultados de duas ou mais queries em um único resultado.
Union All: Ele irá exibir resultados de todas as linhas, mesmo que duplicadas.
SELECT COUNT(*) AS QUANT, 'EMP' AS TABELA FROM EMP UNION ALL;Controle de Acesso (DCL)
Comando de Conceder – Grant: GRANT SELECT ON empregado TO marcos;
*Tipos de direitos: SELECT, INSERT, UPDATE, DELETE, ALL, EXECUTE e WITH GRANT OPTION.
Comando de Revogar – Revoke: REVOKE INSERT, DELETE ON empregado FROM marcos;
*Tipos de direitos: SELECT, INSERT, UPDATE, DELETE, ALL e EXECUTE. Somente o usuário que concedeu ou o Administrador do Banco de Dados pode revogar.
Exemplos práticos de consultas
Comando para listar o nome do empregado mais velho:
SELECT nome_empregado
FROM empregado
WHERE idade = (SELECT MAX(idade) FROM empregado);Comando para calcular a média salarial de empregados por sexo:
SELECT sexo, AVG(salario)
FROM empregado
GROUP BY sexo;Comando que lista a coluna nomeEmpregado e nomeDepartamento que ganham mais que 2000:
SELECT E.nomeEmpregado, D.nomeDepartamento
FROM empregado E
JOIN departamento D ON (E.idDepartamento = D.idDepartamento)
WHERE E.salario > 2000;Comando que lista a quantidade de empregados de férias em 2012:
SELECT COUNT(*)
FROM ferias
WHERE ano = 2012;Comando que lista o nome do empregado em maiúsculo, idade e sexo de pessoas de 18 a 65 anos:
SELECT UPPER(nomeEmpregado), idade, sexo
FROM empregado
WHERE idade BETWEEN 18 AND 65;Junções (JOINS)
Comando para nomes de departamentos e empregados que atuem em cada departamento existente e departamentos sem nenhum empregado (LEFT JOIN):
SELECT D.nomeDepartamento, E.nomeEmpregado
FROM departamento D
LEFT OUTER JOIN empregado E ON (D.idDepartamento = E.idDepartamento);Right Join:
SELECT A.Nome, B.Nome
FROM TabelaA AS A
RIGHT JOIN TabelaB AS B
ON A.Nome = B.Nome;Consultas Avançadas e Funções de Data
O administrador da clínica solicitou uma consulta:
SELECT TO_CHAR(data_hora, 'month" de "YYYY') AS data, COUNT(*) AS quant
FROM Consultas
WHERE nome_convenio IS NULL
GROUP BY data_hora;Descreva o comando SQL solicitado na questão anterior:
SELECT TO_CHAR(data_hora, 'month" de "YYYY') AS data, medico_crm, COUNT(*) AS quant
FROM Consultas
WHERE nome_convenio IS NULL
GROUP BY data_hora, medico_crm;Se deseja uma consulta que liste a idade atual em anos:
SELECT TRUNC((data_nascimento - SYSDATE) / 365) AS idade_atual
FROM Paciente;