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;

Entradas relacionadas: