Advertisement
Guest User

lista B SGBD

a guest
Sep 28th, 2016
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE TABLE funcionario(
  2. cod NUMBER(5),
  3. nome VARCHAR2(100),
  4. mae VARCHAR2(100),
  5. pai NUMBER(5),
  6. dt_nasc DATE,
  7. rg VARCHAR2(20),
  8. cpf NUMBER(5),
  9. sexo CHAR,
  10. rua VARCHAR2(100),
  11. cidade VARCHAR2(100),
  12.  
  13. CONSTRAINT pkfunc PRIMARY KEY (cod),
  14. CONSTRAINT ukfuncid UNIQUE (nome,mae,dt_nasc),
  15. CONSTRAINT ukfunccpf UNIQUE (cpf),
  16. CONSTRAINT ukfuncrg UNIQUE (rg),
  17. CONSTRAINT fkfuncpai FOREIGN KEY (pai) REFERENCES funcionario(cod)
  18. );
  19.  
  20.  
  21. CREATE TABLE empresa(
  22. cod NUMBER(5),
  23. nome VARCHAR2(100),
  24. rua VARCHAR2(200),
  25. cidade VARCHAR2(100),
  26.  
  27. CONSTRAINT pkemp PRIMARY KEY(cod)
  28. );
  29.  
  30. CREATE TABLE trabalha(
  31. codf NUMBER(5),
  32. code NUMBER(5),
  33. salario NUMBER(5),
  34.  
  35. CONSTRAINT pktrab PRIMARY KEY(codf,code),
  36. CONSTRAINT fktrabcodf FOREIGN KEY(codf) REFERENCES funcionario(cod),
  37. CONSTRAINT fktrabcode FOREIGN KEY(code) REFERENCES empresa(cod)
  38. );
  39.  
  40. CREATE TABLE gerente(
  41.  
  42. codf NUMBER(5),
  43. codg NUMBER(5),
  44.  
  45. CONSTRAINT pkger PRIMARY KEY(codf,codg),
  46. CONSTRAINT fkgercodf FOREIGN KEY(codf) REFERENCES funcionario(cod),
  47. CONSTRAINT fkgercodg FOREIGN KEY(codg) REFERENCES funcionario(cod)
  48. );
  49.  
  50.  
  51.  
  52. INSERT INTO funcionario VALUES (1,'joão','eu',NULL,'12-12-1992','13165',4645,'m','eu','pinhais');
  53. INSERT INTO funcionario VALUES (2,'shhhh','juliana',1,'12-12-4212','5484554',5465,'m','eu','araucária');
  54. INSERT INTO funcionario VALUES (3,'pedro','fabiola',1,'12-12-1252','1245868',47455,'m','eu','araucária');
  55. INSERT INTO funcionario VALUES (4,'pamela','ana',2,'12-12-1262','12775445',57895,'f','eu','curitiba');
  56. INSERT INTO funcionario VALUES (5,'vera','vera',3,'12-12-1217','8784545',455,'f','eu','curitiba');
  57. INSERT INTO funcionario VALUES (6,'rodrigo','vera',3,'12-12-1217','878454',5385,'m','eu','pinhais');
  58.  
  59.  
  60.  
  61. INSERT INTO empresa VALUES (1,'pomarola','empresa do seu joão','araucaria')
  62. INSERT INTO empresa VALUES (2,'renato','empresa do seu joão','renato')
  63. INSERT INTO empresa VALUES (3,'renatinho','empresa do seu joão','pinhais')
  64. INSERT INTO empresa VALUES (4,'azul','empresa do seu joão','pinhais')
  65. INSERT INTO empresa VALUES (5,'tam','do seu joão','curitiba')
  66. INSERT INTO empresa VALUES (6,'volvo','aquiii','araucaria')
  67.  
  68.  
  69. INSERT INTO trabalha VALUES (2,1,7552);
  70. INSERT INTO trabalha VALUES (3,1,4555);
  71. INSERT INTO trabalha VALUES (4,2,200);
  72. INSERT INTO trabalha VALUES (1,1,4558);
  73. INSERT INTO trabalha VALUES (1,3,7552);
  74. INSERT INTO trabalha VALUES (4,5,6);
  75. INSERT INTO trabalha VALUES (5,6,230);
  76. INSERT INTO trabalha VALUES (2,5,400);
  77. INSERT INTO trabalha VALUES (3,5,13997);
  78. INSERT INTO trabalha VALUES (2,6,400);
  79. INSERT INTO trabalha VALUES (3,6,13997);
  80.  
  81.  
  82.  
  83. INSERT INTO gerente VALUES (1,2);
  84. INSERT INTO gerente VALUES (1,3);
  85. INSERT INTO gerente VALUES (2,4);
  86.  
  87. --1
  88. SELECT f.nome, t.salario
  89. FROM funcionario f
  90. INNER JOIN
  91. trabalha t ON(f.cod = t.codf)
  92. WHERE t.salario > (SELECT AVG(salario) FROM trabalha)
  93.  
  94.  
  95. --2
  96. SELECT empresa.nome, COUNT(*)
  97. FROM empresa, trabalha
  98. WHERE trabalha.code = empresa.cod
  99. GROUP BY empresa.cod
  100.  
  101.  
  102. --3
  103. SELECT empresa.nome, COUNT(*), funcionario.sexo
  104. FROM empresa, trabalha, funcionario
  105. WHERE trabalha.code = empresa.cod AND funcionario.cod = trabalha.codf AND funcionario.cidade IN ('pinhais','curitiba')
  106. GROUP BY empresa.cod , funcionario.sexo
  107.  
  108. --4
  109. SELECT f.nome, t.salario, t.salario AS atual, (t.salario*1.1) AS novo
  110. FROM empresa e, trabalha t, funcionario f
  111. WHERE e.cod = t.code AND f.cod = t.codf
  112.  
  113. --5
  114. SELECT funcionario.nome, trabalha.code
  115. FROM funcionario LEFT JOIN trabalha ON (funcionario.cod = trabalha.codf)
  116.  
  117.  
  118. --6
  119. SELECT funcionario.nome, trabalha.code
  120. FROM funcionario, trabalha
  121. WHERE funcionario.cod = trabalha.code
  122.  
  123.  
  124. --7 Encontre a companhia que tenha a menor folha de pagamento e a que tenha a maior folha pagamento.
  125. SELECT SUM(salario), code
  126. FROM trabalha
  127. GROUP BY code
  128. HAVING SUM(salario) = (SELECT MAX(SUM(salario)) FROM trabalha GROUP BY code)
  129. UNION
  130. SELECT SUM(salario), code
  131. FROM trabalha
  132. GROUP BY code
  133. HAVING SUM(salario) = (SELECT MIN(SUM(salario)) FROM trabalha GROUP BY code)
  134.  
  135. --8
  136. SELECT AVG(salario), code
  137. FROM trabalha
  138. GROUP BY code
  139. HAVING AVG(salario) = (SELECT MAX(AVG(salario)) FROM trabalha GROUP BY code)
  140.  
  141. --9
  142. SELECT code, COUNT(codf) AS numero
  143. FROM trabalha
  144. GROUP BY code
  145. HAVING COUNT(salario) = (SELECT MAX(COUNT(codf)) FROM trabalha GROUP BY code)
  146.  
  147. --10
  148. SELECT code, AVG(salario)
  149. FROM trabalha
  150. GROUP BY code
  151. HAVING AVG(salario) > (SELECT AVG(salario) FROM trabalha, empresa WHERE empresa.cod = trabalha.code AND empresa.nome = 'volvo')
  152.  
  153. --11
  154. SELECT funcionario.cidade, empresa.cod, empresa.nome
  155. FROM funcionario, empresa , trabalha
  156. WHERE empresa.cod = trabalha.codE AND funcionario.cod = trabalha.codf AND empresa.nome = 'volvo'
  157.  
  158.  
  159. --12
  160. SELECT funcionario.cidade, funcionario.nome, empresa.cod, empresa.nome, trabalha.salario
  161. FROM funcionario, empresa , trabalha
  162. WHERE empresa.cod = trabalha.codE AND funcionario.cod = trabalha.codf AND empresa.nome = 'volvo' AND trabalha.salario > 10000 AND trabalha.salario < 20000
  163.  
  164.  
  165. --13
  166. SELECT funcionario.cidade, funcionario.nome, empresa.cod, empresa.nome, empresa.cidade
  167. FROM funcionario, empresa, trabalha
  168. WHERE empresa.cod = trabalha.codE AND funcionario.cod = trabalha.codf AND empresa.cidade = funcionario.cidade
  169.  
  170.  
  171. -- 14
  172. SELECT f.cidade, f.nome, f.rua, g.cidade, g.nome, g.rua
  173. FROM funcionario f, funcionario g, gerente
  174. WHERE f.cod = gerente.codf AND g.cod = gerente.codg AND f.rua = g.rua AND f.cidade = g.cidade
  175.  
  176.  
  177.  
  178.  
  179. --15
  180. SELECT funcionario.cidade, funcionario.nome, empresa.cod, empresa.nome
  181. FROM funcionario, empresa, trabalha
  182. WHERE empresa.cod = trabalha.codE AND funcionario.cod = trabalha.codf
  183. MINUS
  184. SELECT funcionario.cidade, funcionario.nome, empresa.cod, empresa.nome
  185. FROM funcionario, empresa, trabalha
  186. WHERE empresa.cod = trabalha.codE AND funcionario.cod = trabalha.codf AND empresa.nome = 'volvo'
  187.  
  188.  
  189.  
  190. --16
  191. SELECT funcionario.cidade, funcionario.nome, empresa.cod, empresa.nome, trabalha.salario
  192. FROM funcionario, empresa, trabalha
  193. WHERE empresa.cod = trabalha.codE AND funcionario.cod = trabalha.codf AND (SELECT AVG(trabalha.salario) FROM trabalha,empresa WHERE trabalha.code = empresa.cod AND empresa.nome = 'volvo') < trabalha.salario
  194.  
  195.  
  196.  
  197. --17
  198. SELECT a.cod, a.nome, a.cidade
  199. FROM empresa a
  200. WHERE a.cidade = (SELECT cidade FROM empresa WHERE nome='volvo')
  201.  
  202.  
  203. --18
  204. SELECT f.nome
  205. FROM funcionario f, trabalha
  206. WHERE f.cod = trabalha.codf AND salario > (SELECT AVG(salario) FROM TRABALHA WHERE trabalha.codf = f.cod)
  207.  
  208.  
  209. --19
  210. SELECT AVG(salario), code
  211. FROM trabalha
  212. GROUP BY code
  213. HAVING AVG(salario) = (SELECT MAX(AVG(salario)) FROM trabalha GROUP BY code)
  214. UNION
  215. SELECT AVG(salario), code
  216. FROM trabalha
  217. GROUP BY code
  218. HAVING AVG(salario) = (SELECT MIN(AVG(salario)) FROM trabalha GROUP BY code)
  219.  
  220.  
  221.  
  222.  
  223. --20
  224. SELECT e.cod
  225. FROM empresa e, trabalha t
  226. WHERE e.cod = t.code
  227. GROUP BY e.cod
  228. HAVING COUNT(code) = (SELECT MAX(COUNT(code)) FROM trabalha GROUP BY code)
  229.  
  230.  
  231.  
  232. --21
  233. SELECT SUM(salario), code
  234. FROM trabalha
  235. GROUP BY code
  236. HAVING SUM(salario) = (SELECT MAX(SUM(salario)) FROM trabalha GROUP BY code)
  237. UNION
  238. SELECT SUM(salario), code
  239. FROM trabalha
  240. GROUP BY code
  241. HAVING SUM(salario) = (SELECT MIN(SUM(salario)) FROM trabalha GROUP BY code)
  242.  
  243.  
  244.  
  245. --22
  246. SELECT code, AVG(salario)
  247. FROM trabalha
  248. GROUP BY code
  249. HAVING AVG(salario) > (SELECT AVG(salario) FROM trabalha, empresa WHERE empresa.cod = trabalha.code AND empresa.nome = 'volvo')
  250.  
  251.  
  252. --23
  253. UPDATE(SELECT trabalha.salario FROM trabalha,empresa WHERE trabalha.code=empresa.cod AND empresa.nome='volvo') SET salario = salario*1.1
  254.  
  255. --24
  256. UPDATE(SELECT trabalha.salario FROM trabalha,funcionario WHERE trabalha.codf=funcionario.cod AND funcionario.cidade='pinhais') SET salario = salario*1.1
  257.  
  258. --25
  259. UPDATE
  260. (SELECT trabalha.salario AS salario
  261. FROM trabalha,empresa
  262. WHERE empresa.cod = trabalha.code AND empresa.nome='volvo')
  263. SET salario =
  264. CASE
  265.     WHEN salario > 9000 THEN salario*1.03
  266.     ELSE salario*1.1
  267. END
  268.  
  269.  
  270. --26
  271. CREATE TABLE backup AS
  272. SELECT funcionario.nome AS nome_empregado, funcionario.cod AS codigo, funcionario.cidade AS cidade_emp FROM funcionario,trabalha, empresa WHERE trabalha.codf = funcionario.cod AND trabalha.code = empresa.cod AND empresa.nome = 'renatinho'
  273.  
  274. --27
  275. SELECT MIN(funcionario.dt_nasc), empresa.cod
  276. FROM empresa,funcionario,trabalha
  277. WHERE funcionario.cod = trabalha.codf AND empresa.cod = trabalha.code
  278. GROUP BY empresa.cod;
  279.  
  280. --28
  281. SELECT funcionario.nome, funcionario.dt_nasc, FLOOR((SYSDATE - dt_nasc)/365) AS idade
  282. FROM funcionario
  283. WHERE (SYSDATE - dt_nasc)/365 > 24 AND (SYSDATE - dt_nasc)/365 < 31;
  284.  
  285. --29
  286. INNER JOIN é uma operação que faz uma ligação cartesiana em duas tabelas, e retorna todas linhas cujos atributos retornem verdadeira a condição determinada na sintaxe DO JOIN.
  287. LEFT OUTER JOIN é uma operação que faz o mesmo que INNER JOIN, mas retornando todos os valores da coluna esquerda pelo menos uma vez, independente alguma combinação que os inclua tenha sido permitida pela condição da sintaxe ou não.
  288.  
  289. --30
  290. SELECT AVG(trabalha.salario), empresa.cod
  291. FROM empresa,trabalha
  292. WHERE empresa.cod = trabalha.code
  293. GROUP BY empresa.cod
  294. HAVING AVG(trabalha.salario) > 1666 AND AVG(trabalha.salario) < 2501
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement