SQL Básico - exemplos em esquema de banco de dados relacional

COMPARTILHAR:

A imagem abaixo ilustra um banco de dados relacional, com essa informação é possível realizar consultas ao banco, imagine que o banco já está povoado.

1) Apresente o nome e a data de admissão de todos os empregados que começam com a letra ‘R’ no último nome.

[select employees.first_name, employees.last_name, employees.hire_date from employees where employees.last_name LIKE 'R%';]

2) Apresente o último nome concatenado com o primeiro nome de todos os empregados que trabalham no departamento 60.

[select first_name || ' ' ||last_name from employees where department_id=60;

select concat(first_name, concat(' ',last_name)) from employees where department_id=60;]

 3) Apresente em maiúsculas o nome do departamento 60.

[select upper(department_name) from departments where department_id=60;]

4) Apresente o nome completo de todos os empregados que foram admitidos no ano de 1999.

[select first_name || ' ' || last_name NomeCompleto, hire_date from employees where hire_date between '01/01/99' and '31/12/99';

select first_name || ' ' || last_name NomeCompleto, hire_date from employees where hire_date >= '01/01/99' and hire_date <= '31/12/99';

select first_name || ' ' || last_name NomeCompleto, hire_date from employees where hire_date like '%99';

select first_name || ' ' || last_name NomeCompleto, hire_date from employees where to_char(hire_date,'YYYY')=1999;]

5) Apresente o nome e o salario anual de todos os empregados que ganham entre 4000 e 7000.

[select first_name || ' ' || last_name NomeCompleto, salary*12 from employees where salary between 4000 and 7000;

select first_name || ' '|| last_name NomeCompleto, salary*12 from employees where salary >= 4000 and salary <= 7000;]

6) Executando um ou mais comandos SQL, apresente o nome completo dos empregados que trabalham no departamento de nome ‘Shipping’.

[-- obter o número do departamento

select department_id from departments where department_name='Shipping';

-- utilizar o número de departamento obtido anteriormente para concluir a consulta

select first_name||' '||last_name "Nome" from professor.employees where department_id=50;

-- utilizando sub-consulta

select first_name||' '||last_name as "Nome" from professor.employees e where e.department_id = (select d.department_id from professor.departments d where d.department_name='Shipping');

-- junção (join) 

select e.first_name||' '||e.last_name "Nome", d.department_name from professor.employees e join professor.departments d on e.department_id=d.department_id where d.department_name='Shipping';

select e.first_name||' '||e.last_name "Nome", d.department_name from professor.employees e, professor.departments d where e.department_id=d.department_id and d.department_name='Shipping';]

7) Retorne o nome de todos os empregados que trabalham no departamento ‘Shipping’ ganhando entre 5000 e 8000 e que foram admitidos entre 1997 e 1999.

[select first_name||' '||last_name "Nome" from professor.employees e join professor.departments d on e.department_id=d.department_id where department_name = 'Shipping' and salary between 5000 and 8000 and to_char(hire_date,'YYYY') in (1997,1998,1999);

select first_name||' '||last_name "Nome" from professor.employees e, professor.departments d where e.department_id=d.department_id and department_name = 'Shipping' and salary between 5000 and 8000 and hire_date between '01/01/97'and '31/12/99';]

8) Com um ou mais comandos SQL, apresente todos os empregados que são gerenciados diretamente pelo empregado Steven King.

[-- com dois comandos, um com uma consulta

select e.employee_id from professor.employees e where first_name='Steven' and Last_name='King';

select first_name || ' ' || last_name as nome_completo from professor.employees where manager_id=100;

-- com um único comando, com duas consultas

select first_name || ' ' || last_name as nome_completo from professor.employees where manager_id=(select e.employee_id from professor.employees e where first_name='Steven' and Last_name='King');

-- com junção: A tabela é repetida no from, mas tendo papeis diferentes

select e.first_name || ' ' || e.last_name as nome_completo from professor.employees e, professor.employees m where e.manager_id = m.employee_id and m.first_name='Steven' and m.Last_name='King';]

9) Apresente o nome de cada empregado e o país onde trabalha.

[select e.last_name ||' '|| first_name nome, c.country_name from professor.employees e, professor.departments d, professor.locations l, professor.countries c where e.department_id=d.department_id and d.location_id=l.location_id and l.country_id = c.country_id;]

10) Apresente o nome dos empregados do departamento ‘Shipping’ admitidos entre 1999 e 2005 e que ganham mais de 2000. Para cada empregado, apresente também o nome do seu departamento, a cidade, o país e a região do departamento.

[select  e.first_name ||' '||  e.last_name  nome, d.department_name, l.city, c.country_name, r.region_name from    employees e, departments d, locations l, countries c, regions r where   e.department_id=d.department_id and d.location_id=l.location_id and l.country_id = c.country_id and c.region_id = r.region_id and d.department_name = 'Shipping' and e.salary > 2000 and to_char(e.hire_date, 'YYYY') between 1999 and 2005;]

11) Apresente o nome dos departamentos que não têm empregados. Faça isso com consulta aninhada. Utilize corretamente o operador IN, evitando valores nulos.

[select department_name from departments where department_id not IN (select department_id from employees where department_id is not null);]

12) Agora refaça o comando para usar o operador NOT EXISTS com consultas correlacionadas.

[select department_name from departments d where not exists (select 1 from employees e where d.department_id = e.department_id);]

13) Apresente o nome de todos os empregados (nome completo: FIRST_NAME e LAST_NAME), com o nome dos seus departamentos.

[select e.first_name, e.last_name, d.department_name from departments d join employees e on d.department_id=e.department_id;]

14) Agora, refaça o comando anterior para incluir também os empregados sem departamentos. Nesse caso, o nome do departamento deve ser nulo. Ou seja, faça isso com junção externa.

[select e.first_name, e.last_name, d.department_name from departments d right join employees e on d.department_id=e.department_id;]

15) Se você usou junção externa à direita, refaça o comando anterior para usar a esquerda e vice-versa. 

[select e.first_name, e.last_name, d.department_name from employees e left join departments d on d.department_id=e.department_id;]

16) Apresente o nome dos empregados (o código dos cargos anteriores que já ocuparam (esse código está em JOB_HISTORY.JOB_ID) e data de ocupação (início e fim). Faça isso para todos os empregados, inclusive os que nunca tiveram cargos anteriores. Use junção externa. Não precisa colocar o título (JOB_TITLE) do cargo que está em JOBS.

[select e.first_name, e.last_name, jh.start_date, jh.end_date, jh.job_id from employees e left outer join job_history jh on e.employee_id = jh.employee_id;]

17) Agora, refaça o comando anterior para incluir o nome do cargo, que, como foi dito, está em JOBS. Continue usando junção externa. Observe agora que são duas junções e que pode ser necessário estender a junção externa para obter o resultado correto.

[select e.first_name, e.last_name, jh.start_date, jh.end_date, jh.job_id, j.job_title from (employees e left outer join job_history jh on e.employee_id = jh.employee_id) inner join jobs j on jh.job_id = j.job_id;]

18) Apresente, distintamente, todos os cargos sendo ocupados atualmente na cidade de ‘Seattle’. Utilize, para isso, somente consultas aninhadas. A palavra DISTINC pode ser usada no SELECT, diminuindo o espaço de busca nas consultas externas. DISTINCT deve vir somente uma vez, depois da cláusula SELECT e antes das colunas da projeção.

[select j.job_title from jobs j where j.job_id in (select distinct e.job_id from employees e where e.department_id in (select d.department_id from departments d where d.location_id in (select l.location_id from locations l where l.city='Seattle')));]

19) Resolva a consulta anterior, utilizando somente junções ao invés de consultas aninhadas.

[select distinct j.job_title from ((locations l join departments d on l.location_id = d.location_id) join employees e on d.department_id = e.department_id) join jobs j on e.job_id = j.job_id where l.city='Seattle';] 

 20) Apresente o nome e o mês, por extenso, de admissão de todos os empregados que começam com a letra ‘R’ no último nome. Não utilize LIKE, mas funções SQL.

[select concat(concat(first_name,' '), last_name) "Nome", to_char(hire_date,'Month') from employees where substr(last_name,1,1) = 'R';]

21) Apresente o último nome concatenado com o primeiro nome, mas separados por branco, de todos os empregados que trabalham no departamento de nome “executive” (em minúsculas). Em maiúsculas, o nome do departamento deve aparecer no resultado. Utilize funções SQL e junções.

[select concat(concat(first_name,' '), last_name) "Nome", department_name from employees e join departments d on e.department_id=d.department_id where upper(department_name) = 'EXECUTIVE';]

22) Apresente o nome completo de todos os empregados que foram admitidos no ano de 1999. Use a coluna HIRE_DATE com funções de data.

[select concat(concat(first_name,' '), last_name) "Nome" from employees e where to_char(hire_date,'YYYY') = 1999;]

23) Apresente o nome, o salario diário, arredondado, e o anual de todos os empregados. O salário em EMPLOYEES é mensal.

[select concat(concat(first_name,' '), last_name) "Nome", round(salary/30) Salario_Diario, Salary*12 Salario_Anual from employees e;]

24) Apresente somente a inicial de cada nome de empregados que são gerentes de departamento. Incluir o nome do departamento.

[select substr(first_name,1,1) Inicial_PNome, substr(first_name,1,1) Inicial_UNome, department_name from employees e join departments d on e.department_id=d.department_id;]

25) Apresente a média salarial por departamento, incluindo o nome do departamento.

[select department_name "Departamento", round(avg(salary)) "Média salarial" from employees e join departments d on e.department_id=d.department_id group by department_name;]

26) Apresente a quantidade de empregados por departamento. O departamento deve aparecer.

[select department_name "Nome departamento", count(employee_id) "Quantidade de empregados" from employees e join departments d on e.department_id=d.department_id group by department_name;]

COMENTÁRIOS

Nome

#ann,24,#HK,27,#LTCode,71,Artigo - Diversos,161,Artigo - Games,196,Artigo - Tecnologia,549,autor-thomaz,7,Coluna - Alternative World,24,Coluna - Fail,12,Coluna - Tec Line,14,Criptomoeda,59,Curiosidades - Diversos,49,Curiosidades - Tecnologia,50,en,2,estudo,5,HN,12,Raspberry Pi,12,root,74,Shorty Awards,1,Smartphones - Reviews,33,Top Nostalgia,2,VPN,17,WhatsApp,45,
ltr
item
Limon Tec: SQL Básico - exemplos em esquema de banco de dados relacional
SQL Básico - exemplos em esquema de banco de dados relacional
https://1.bp.blogspot.com/-XJbXuAfSbp0/X1A0KpQgX8I/AAAAAAAAJZo/EC5YC0N6i18sLkp7cOizoPR1gLGwkyQHACPcBGAsYHg/w640-h370/banco_de_dados_relacional.png
https://1.bp.blogspot.com/-XJbXuAfSbp0/X1A0KpQgX8I/AAAAAAAAJZo/EC5YC0N6i18sLkp7cOizoPR1gLGwkyQHACPcBGAsYHg/s72-w640-c-h370/banco_de_dados_relacional.png
Limon Tec
https://www.limontec.com/2021/02/sql-basico-exemplos-em-esquema-de-banco.html
https://www.limontec.com/
http://www.limontec.com/
http://www.limontec.com/2021/02/sql-basico-exemplos-em-esquema-de-banco.html
false
2157924926610706248
UTF-8
Carregar todos posts Não encontramos nenhum post VER TUDO Ler mais Responder Cancelar resposta Deletar Por Home PÁGINAS POSTS Ver tudo RECOMENDADO PARA VOCÊ LABEL ARQUIVO SEARCH TODOS POSTS Não encontramos nenhum post relacionado a sua requisição VOLTAR PÁGINA INICIAL Domingo Segunda Terça Quarta Quinta Sexta Sábado Dom Seg Ter Qua Qui Sex Sab Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro Jan Fev Mar Abr Maio Jun Jul Ago Set Out Nov Dez apenas agora 1 minuto atrás $$1$$ minutes ago 1 hora atrás $$1$$ hours ago Ontem $$1$$ days ago $$1$$ weeks ago mais de 5 semanas atrás Seguidores Seguir ESTE CONTEÚDO ESTÁ BLOQUEADO PASSO 1: Compartilhe com seus amigos PASSO 2: Clique no link compartilhado Copiar Todo Código Selecionar Todo Código Todos códigos foram copiados para seu clipboard Não é possível copiar códigos / textos, por favor aperte [CTRL]+[C] (ou CMD+C no Mac) para copiar Tabela de conteúdo