Você está na página 1de 3

Sistemas de Banco de Dados

Lista de Exercícios Práticos I

Aluno: Rafael Mota RA113620


CREATE TABLE DEPT (
COD_DEP NUMBER(4) NOT NULL,
DSC_DEP VARCHAR2(20) NOT NULL,
LOCA_DEP VARCHAR2(20) NOT NULL,
ORCA_DEP NUMBER(12,2),
PRIMARY KEY (COD_DEP)
);

CREATE TABLE EMP (


COD_EMP NUMBER(5) NOT NULL,
DSC_EMP VARCHAR2(30) NOT NULL,
COD_GERE NUMBER(5),
COD_DEPT NUMBER(4) NOT NULL,
DT_ADMI DATE NOT NULL,
DT_NASC DATE NOT NULL,
VL_COMI NUMBER(10,2),
PRIMARY KEY (COD_EMP),
FOREIGN KEY (COD_DEPT) REFERENCES DEPT
);

CREATE INDEX IDX_COD_DEPT


ON EMP (COD_DEPT ASC);

Baseado nas tabelas EMP e DEPT, responda as questões abaixo (utilize o SCRIPT2.SQL
disponível no Google Classroom):

1. Qual o comando SQL utilizado para exibir o nome, a data de admissão (cujo formato de
exibição seja igual ao exemplo: 31/12/2009), o tempo de serviço dos funcionários em
anos, filtrando apenas os funcionários admitidos a mais de 5 anos (utilize a função
MONTHS_BETWEEN)? Lembrando que devem ser exibidos somente os funcionários
que possuem gerente vinculado.
SELECT
E.DSC_EMP AS NOME
TO_CHAR(E.DT_ADMI, 'DD/MM/YYYY') AS DATA_ADMISSAO,
TRUNC(MONTHS_BETWEEN(SYSDATE, E.DT_ADMI) / 12) AS
TEMPO_SERVICO_ANOS
FROM
EMP E
JOIN DEPT D ON E.COD_DEPT = D.COD_DEP
WHERE
E.COD_GERE IS NOT NULL
AND MONTHS_BETWEEN(SYSDATE, E.DT_ADMI) >= 60;

2. Qual o comando SQL utilizado para listar todos os funcionários que possuem o
sobrenome CAMARGO, não importando se o nome esteja em maiúsculo ou minúsculo
no cadastro (converta para maiúsculo ou minúsculo para fazer a comparação)?
SELECT * FROM EMP
WHERE UPPER(SUBSTR(DSC_EMP, INSTR(DSC_EMP, ' ') + 1)) =
'CAMARGO';

3. Qual o comando SQL utilizado para exibir em maiúsculo, apenas as 3 primeiras letras do
nome do departamento?
SELECT UPPER(DSC_DEP) as Departamento_em_Maiusculo
FROM DEPT;

SELECT SUBSTR(DSC_DEP, 1, 3) as tres_primeiras_letras


FROM DEPT;

4. Qual o comando SQL utilizado para listar todos os funcionários que possuem a segunda
letra do nome igual a “A” e a penúltima igual a “O”, não importando se o nome esteja em
maiúsculo ou minúsculo no cadastro (converta para maiúsculo ou minúsculo para fazer a
comparação)?
SELECT *
FROM EMP
WHERE UPPER(SUBSTR(DSC_EMP, 2, 1)) = 'A'
AND UPPER(SUBSTR(DSC_EMP, -2, 1)) = 'O';
5. Qual o comando SQL utilizado para listar o código, o nome e o mês de admissão dos
empregados que foram contratados nos meses de maio e agosto, cuja letra inicial do nome
esteja entre “A” e “J”?
SELECT COD_EMP, DSC_EMP, TO_CHAR(DT_ADMI, 'Month') AS MES_ADMI
FROM EMP
WHERE (TO_CHAR(DT_ADMI, 'MM') = '05' OR TO_CHAR(DT_ADMI, 'MM') =
'08')
AND SUBSTR(DSC_EMP, 1, 1) BETWEEN 'A' AND 'J'
ORDER BY COD_EMP;
Sistemas de Banco de Dados
Lista de Exercícios Práticos I
6. Qual o comando SQL utilizado para listar o código, o nome a data de admissão (cujo
formato de exibição seja igual ao exemplo: 31 dez 2022), exibindo apenas os funcionários
cuja data de admissão seja 10 dias antes do último dia do mês de admissão?
SELECT
COD_EMP,
DSC_EMP,
TO_CHAR(DT_ADMI - 10, 'DD Mon YYYY') AS
DATA_ADMISSAO_FORMATADA
FROM EMP
WHERE DT_ADMI = LAST_DAY(DT_ADMI) - 10;

7. Qual o comando SQL utilizado para listar um a primeira letra de cada palavra do nome
do funcionário com letra maiúscula e as demais em minúsculo, filtrando apenas os
funcionários que possuem o valor de comissão maior que 100 e o código do departamento
for maior que 10 ou menor que 5?
SELECT INITCAP(DSC_EMP) AS NOME_FORMATADO
FROM EMP
WHERE VL_COMI > 100
AND (COD_DEPT > 10 OR COD_DEPT < 5);
8. Qual o comando SQL utilizado para listar o nome do funcionário concatenado com a
string “ admitido em “ e concatenado com a data de admissão o (cujo formato de exibição
seja igual ao exemplo: 31 de maio de 2009)?
SELECT
DSC_EMP || ' admitido em ' || TO_CHAR(DT_ADMI, 'DD "de" FM MONTH "de"
YYYY') AS INFO_ADMISSAO
FROM
EMP;

Você também pode gostar