Advertisement
lucasmouraahere

Módulo 10

Sep 8th, 2019
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 3.81 KB | None | 0 0
  1. CREATE OR REPLACE VIEW VW_PROGRAMADORES (id, nome, salario_anual)
  2. AS
  3. SELECT employee_id, first_name, salary*12
  4. FROM hr.employees
  5. WHERE job_id = 'IT_PROG';
  6.  
  7. DESC VW_PROGRAMADORES;
  8.  
  9. SELECT * FROM VW_PROGRAMADORES;
  10.  
  11. -- MAIOR SALARIO, MENOR SALARIO, E MEDIA SALARIAL DE TODOS OS CARGOS
  12.  
  13. CREATE VIEW calc_salary (titulo_job, sal_maior, sal_menor, media_sal)
  14. AS
  15. SELECT j.job_title,
  16.        MAX(e.salary),
  17.        MIN(e.salary),
  18.        AVG(e.salary)
  19. FROM hr.employees e
  20. INNER JOIN hr.jobs j
  21. ON j.job_id = e.job_id
  22. GROUP BY j.job_title;
  23.  
  24. --WITH CHECK OPTION
  25. --SÓ PERMITE ALTERAR CASO A CLAUSULA WHERE SEJA CORRESPONDIDA
  26. CREATE OR REPLACE VIEW vw_depto50
  27. AS
  28. SELECT * FROM hr.employees
  29. WHERE department_id = 50
  30. WITH CHECK OPTION CONSTRAINT ck_dp50;
  31.  
  32. UPDATE vw_depto50
  33. SET salary = salary + 10
  34. WHERE department_id = 50;
  35.  
  36. --WITH READ ONLY
  37. -- PERMITE APENAS LEITURA DA VIEW
  38. CREATE OR REPLACE VIEW vw_depto20 (id, nome, cargo)
  39. AS
  40. SELECT employee_id, first_name, job_id
  41. FROM hr.employees
  42. WHERE department_id = 20
  43. WITH READ ONLY;
  44.  
  45. --INDICES
  46. CREATE INDEX nome_empregado
  47.     ON hr.employees(first_name);
  48.    
  49. DROP INDEX nome_empregado;
  50.  
  51. -- SEQUENCE
  52. CREATE SEQUENCE sq_teste_01
  53. INCREMENT BY 15
  54. START WITH 34
  55. MAXVALUE 99999999
  56. NOCACHE
  57. NOCYCLE;
  58.  
  59. INSERT INTO teste_01 (teste_numero, teste_char)
  60. VALUES (sq_teste_01.NEXTVAL, 'Lucas');
  61.  
  62. SELECT sq_teste_01.CURRVAL FROM dual;
  63.  
  64. SELECT * FROM teste_01;
  65.  
  66. DROP SEQUENCE sq_teste_01;
  67.  
  68. -- SINÔNIMOS(ALTERAR O NOME DA TABELA PARA CONSULTA)
  69. --PUBLICO (TODOS OS USUARUIOS) E PRIVADO (APENAS QUEM CRIOU, POR PADRÃO)
  70.  
  71. CREATE PUBLIC SYNONYM teste_tablea
  72. FOR teste_01;
  73.  
  74. CREATE SYNONYM teste_tablea
  75. FOR teste_01;
  76.  
  77. SELECT * FROM teste_tablea;
  78.  
  79. DROP SYNONYM teste_tablea;
  80.  
  81. DROP PUBLIC SYNONYM teste_tablea;
  82.  
  83. /* Faça uma VIEW que retorne o nome do funcionário, o id, data de entrada na empresa e salário, de todos os funcionários com o cargo de TI,
  84. com o nome vw_programadores. As colunas dessa view devem ter o mesmo nome dos representados nessa questão.*/
  85.  
  86. CREATE OR REPLACE VIEW VW_PROGRAMADORES (last_name, employee_id, hire_date)
  87. AS
  88. SELECT last_name, employee_id, hire_date
  89. FROM hr.employees
  90. WHERE job_id = 'IT_PROG';
  91.  
  92. SELECT * FROM vw_programadores;
  93.  
  94. /* Utilize a view vw_programadores para retornar todos os programadores que recebem mais de 2500 dólares.*/
  95.  
  96. SELECT * FROM vw_programadores v
  97. INNER JOIN hr.employees e
  98. ON v.employee_id = e.employee_id
  99. WHERE salary > 2500;
  100.  
  101. /* Crie uma view que retorne o nome do cargo, o salário máximo, salário mínimo,
  102. a soma dos salários e a média de salário dos funcionário. Sendo que o nome do cargo deve ser retornado da tabela JOBs.*/
  103.  
  104. CREATE OR REPLACE VIEW info_salary (nome_cargo, max_sal,
  105.                                     min_sal, soma_sal,
  106.                                     media_sal)
  107. AS
  108. SELECT j.job_title,
  109.        MAX(e.salary),
  110.        MIN(e.salary),
  111.        SUM(e.salary),
  112.        AVG(e.salary)
  113. FROM hr.employees e
  114. INNER JOIN hr.jobs j
  115. ON j.job_id = e.job_id
  116. GROUP BY j.job_title;
  117.  
  118. SELECT * FROM info_salary;
  119.  
  120. /* Cria uma SEQUENCE que comece em 500, seja incrementada de 1 em 1, tenha o valor máximo de 9999 o nome dessa SEQUENCE deve ser sq_teste_employes*/
  121.  
  122. CREATE SEQUENCE sq_teste_employes
  123. START WITH 500
  124. INCREMENT BY 1
  125. MAXVALUE 9999
  126. NOCYCLE
  127. NOCACHE;
  128.  
  129. /* Insira um registro na tabela employees utilizando a sequence sq_teste_employes, após isso selecione o valor atual dessa sequence.*/
  130.  
  131. INSERT INTO teste_01 (teste_numero, teste_char)
  132. VALUES (sq_teste_employes.NEXTVAL, 'Sequence');
  133.  
  134. SELECT sq_teste_employes.CURRVAL FROM dual;
  135.  
  136. /* Crie um índice na coluna hire_date da tabela employees*/
  137.  
  138. CREATE INDEX data_admissao
  139.     ON hr.employees(hire_date);
  140.    
  141. /* crie um sinônimo tabela jobs com o nome JB*/
  142.  
  143. CREATE SYNONYM JB
  144. FOR hr.jobs;
  145.  
  146. SELECT * FROM JB;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement