Guest User

Untitled

a guest
Nov 26th, 2017
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.80 KB | None | 0 0
  1. #1. Crie o banco de dados apresentado e suas tabelas (apresentar código CREATE)
  2. CREATE DATABASE DB_SAMU;
  3.  
  4. USE DB_SAMU;
  5.  
  6. CREATE TABLE TB_CATEGORIAS (
  7. CAT_CODIGO INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
  8. CAT_CATEGORIA VARCHAR(50) NOT NULL
  9. );
  10.  
  11. CREATE TABLE TB_EVENTOS (
  12. EVE_CODIGO INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
  13. EVE_NOME VARCHAR(50) NOT NULL,
  14. EVE_CAT_CODIGO INT NOT NULL,
  15. EVE_DATA DATE NOT NULL,
  16. EVE_QTDPESSOAS INT NOT NULL,
  17. CONSTRAINT FK_CAT_EVE FOREIGN KEY (EVE_CAT_CODIGO) REFERENCES TB_CATEGORIAS (CAT_CODIGO)
  18. );
  19.  
  20. CREATE TABLE TB_MEDICOS (
  21. MED_CODIGO INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
  22. MED_NOME VARCHAR(50) NOT NULL,
  23. MED_TELEFONE VARCHAR(11) NOT NULL
  24. );
  25.  
  26. CREATE TABLE TB_ATENDIMENTOS (
  27. ATE_CODIGO INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
  28. ATE_EVE_CODIGO INT NOT NULL,
  29. ATE_MED_CODIGO INT NOT NULL,
  30. ATE_DESCRICAO TEXT NOT NULL,
  31. CONSTRAINT FK_MED_ATE FOREIGN KEY (ATE_MED_CODIGO) REFERENCES TB_MEDICOS (MED_CODIGO),
  32. CONSTRAINT FK_EVE_ATE FOREIGN KEY (ATE_EVE_CODIGO) REFERENCES TB_EVENTOS (EVE_CODIGO)
  33. );
  34.  
  35. #1.1. Adicione pelo menos 2 novas colunas na TB_MEDICOS.
  36. ALTER TABLE TB_MEDICOS ADD COLUMN MED_EMAIL VARCHAR(50);
  37. ALTER TABLE TB_MEDICOS ADD COLUMN MED_SEXO ENUM('m', 'f') DEFAULT 'm' COMMENT 'm = masculinom, f = feminino';
  38.  
  39. #1.2. Altere o a coluna ATE_DESCRICAO para um varchar (2000).
  40. ALTER TABLE TB_ATENDIMENTOS MODIFY COLUMN ATE_DESCRICAO VARCHAR(2000) NOT NULL;
  41.  
  42. #1.3. Faça alteração nas colunas EVE_NOME e MED_NOME para permitir inserir até 100 letras.
  43. ALTER TABLE TB_EVENTOS MODIFY COLUMN EVE_NOME VARCHAR(100);
  44. ALTER TABLE TB_MEDICOS MODIFY COLUMN MED_NOME VARCHAR(100);
  45.  
  46. #2. Crie o código INSERT para inserir pelo menos 8 registros em cada tabela.
  47. INSERT INTO TB_CATEGORIAS (CAT_CODIGO, CAT_CATEGORIA) VALUES
  48. (1, 'Pressão'),
  49. (2, 'Febre Baixa'),
  50. (3, 'Febre Moderada'),
  51. (4, 'Febre Alta'),
  52. (5, 'Fratura'),
  53. (6, 'Corte'),
  54. (7, 'Infarto'),
  55. (8, 'Derrame');
  56.  
  57. INSERT INTO TB_MEDICOS (MED_CODIGO, MED_NOME, MED_TELEFONE, MED_EMAIL, MED_SEXO) VALUES
  58. (1, 'Renata', '8485984521', 'renata@gmail.com', 'f'),
  59. (2, 'Alex Barbosa', '8548518954', 'alexbarbosa@hotmail.com', 'm'),
  60. (3, 'Will Max', '8445286654', 'willmax@gmail.com', 'm'),
  61. (4, 'Teo', '8445828965', 'teo@hotmail.com', 'm'),
  62. (5, 'Sabrina', '8445824568', 'sabrina@yahoo.com.br', 'f'),
  63. (6, 'Ludimila', '8445284664', 'ludimila@yahoo.com.br', 'f'),
  64. (7, 'Alan', '8487524562', 'alan@gmail.com', 'm'),
  65. (8, 'Max', '84458289560', 'max85@unp.com.br', 'm');
  66.  
  67. INSERT INTO TB_EVENTOS (EVE_CODIGO, EVE_NOME, EVE_CAT_CODIGO, EVE_DATA, EVE_QTDPESSOAS) VALUES
  68. (1, 'Jogo de futebol', 5, '2017-05-06', 20),
  69. (2, 'Cinema', 3, '2017-05-10', 3),
  70. (3, 'Show de rock', 2, '2017-04-11', 10),
  71. (4, 'Micareta', 2, '2017-05-11', 15),
  72. (5, 'Festival gastronômico', 8, '2017-10-10', 85),
  73. (6, 'Corrida da saúde', 7, '2017-09-01', 100),
  74. (7, 'Teatro', 6, '2017-08-08', 45),
  75. (8, 'Corrida de kart', 4, '2017-05-05', 7);
  76.  
  77. INSERT INTO TB_ATENDIMENTOS (ATE_CODIGO, ATE_EVE_CODIGO, ATE_MED_CODIGO, ATE_DESCRICAO) VALUES
  78. (1, 1, 1, 'Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográfica'),
  79. (2, 2, 2, 'É um fato conhecido de todos que um leitor se distrairá com o conteúdo de texto legível'),
  80. (3, 3, 3, 'Existem muitas variações disponíveis de passagens de Lorem Ipsum'),
  81. (4, 4, 4, 'Ao contrário do que se acredita, Lorem Ipsum não é simplesmente um texto randômico'),
  82. (5, 5, 5, 'O trecho padrão original de Lorem Ipsum, usado desde o século XVI'),
  83. (6, 6, 6, 'Lorem Ipsum na internet tendem a repetir pedaços predefinidos'),
  84. (7, 7, 7, 'Várias versões novas surgiram ao longo dos anos, eventualmente por acidente'),
  85. (8, 8, 8, 'A vantagem de usar Lorem Ipsum é que ele tem uma distribuição');
  86.  
  87. #3. Crie códigos para UPDATE para:
  88. #3.1. Alterar o nome e o telefone do médico 2.
  89. UPDATE TB_MEDICOS SET MED_NOME='Isaias', MED_TELEFONE='84987524585' WHERE MED_CODIGO=8;
  90. UPDATE TB_MEDICOS SET MED_NOME='Isabela', MED_TELEFONE='8485235445' WHERE MED_CODIGO=6;
  91.  
  92. #3.2. Alterar todos os eventos que eram do código 3 para serem do código 2.
  93. #Aqui ficou bastante confuso, acho que o sr. se fefere em alterar os atendimentos que foram feitos com o evento de código 3 para o código 2
  94. UPDATE TB_ATENDIMENTOS SET ATE_EVE_CODIGO=2 WHERE ATE_EVE_CODIGO=3;
  95.  
  96. #4. Crie códigos DELETE para:
  97. #4.1. Apagar os eventos com menos de 10 pessoas.
  98. DELETE A.* FROM TB_ATENDIMENTOS AS A
  99. INNER JOIN TB_EVENTOS AS E ON E.EVE_CODIGO=A.ATE_EVE_CODIGO AND E.EVE_QTDPESSOAS < 10;
  100. DELETE FROM TB_EVENTOS WHERE EVE_QTDPESSOAS < 10;
  101.  
  102. #4.2. Apagar médicos que tenham telefone começando com 76
  103. DELETE FROM TB_MEDICOS WHERE MED_TELEFONE REGEXP '^76';
  104.  
  105. #5. Faça consultas para listar os seguintes dados:
  106. #5.1. Nome e data de todos os eventos.
  107. SELECT E.EVE_NOME, E.EVE_DATA FROM TB_EVENTOS AS E;
  108.  
  109. #5.2. Nome e o telefone dos médicos, em ordem alfabética.
  110. SELECT M.MED_NOME, M.MED_TELEFONE FROM TB_MEDICOS AS M ORDER BY M.MED_NOME ASC;
  111.  
  112. #5.3. Código e descrição dos atendimentos realizados nos eventos 1, 2 e 6.
  113. SELECT A.ATE_CODIGO, A.ATE_DESCRICAO FROM TB_ATENDIMENTOS AS A WHERE A.ATE_EVE_CODIGO IN (1,2,6);
  114.  
  115. #5.4. Listar o código, nome e a data de todos os eventos de futebol (categoria 2).
  116. SELECT E.EVE_CODIGO, E.EVE_NOME, E.EVE_DATA FROM TB_EVENTOS AS E WHERE E.EVE_CAT_CODIGO=2;
  117.  
  118. #5.5. Listar código e data dos eventos com mais de 1000 pessoas.
  119. SELECT E.EVE_CODIGO, E.EVE_DATA FROM TB_EVENTOS AS E WHERE E.EVE_QTDPESSOAS > 1000;
  120.  
  121. #5.6. Nome do evento, data, e nome da categoria, em ordem crescente de categoria.
  122. # Obs. ordem alfabética do nome da categoria (deve ser)
  123. SELECT E.EVE_CODIGO, E.EVE_DATA, C.CAT_CATEGORIA FROM TB_EVENTOS AS E
  124. JOIN TB_CATEGORIAS AS C ON C.CAT_CODIGO=E.EVE_CAT_CODIGO
  125. ORDER BY C.CAT_CATEGORIA ASC;
  126.  
  127. #5.7. Código do atendimento, nome do médico, descrição do atendimento e data do evento.
  128. SELECT A.ATE_CODIGO, M.MED_NOME, A.ATE_DESCRICAO, E.EVE_DATA FROM TB_ATENDIMENTOS AS A
  129. JOIN TB_MEDICOS AS M ON M.MED_CODIGO=A.ATE_MED_CODIGO
  130. JOIN TB_EVENTOS AS E ON E.EVE_CODIGO=A.ATE_EVE_CODIGO;
  131.  
  132. #5.8. Nome do evento, nome da categoria, descrição do atendimento e nome do médico.
  133. SELECT E.EVE_NOME, C.CAT_CATEGORIA, A.ATE_DESCRICAO, M.MED_NOME FROM TB_ATENDIMENTOS AS A
  134. JOIN TB_MEDICOS AS M ON M.MED_CODIGO=A.ATE_MED_CODIGO
  135. JOIN TB_EVENTOS AS E ON E.EVE_CODIGO=A.ATE_EVE_CODIGO
  136. JOIN TB_CATEGORIAS AS C ON C.CAT_CODIGO=E.EVE_CAT_CODIGO;
  137.  
  138. #5.9. Nome e telefone dos médicos, em ordem alfabética, que nunca fizeram atendimento.
  139. SELECT M.MED_NOME, M.MED_TELEFONE FROM TB_MEDICOS AS M
  140. LEFT JOIN TB_ATENDIMENTOS AS A ON A.ATE_MED_CODIGO=M.MED_CODIGO
  141. WHERE A.ATE_CODIGO IS NULL;
  142.  
  143. #5.10. Eventos que não tiveram atendimentos.
  144. SELECT E.* FROM TB_EVENTOS AS E
  145. LEFT JOIN TB_ATENDIMENTOS AS A ON A.ATE_EVE_CODIGO=E.EVE_CODIGO
  146. WHERE A.ATE_CODIGO IS NULL;
  147.  
  148. #5.11. Média de pessoas por evento.
  149. SELECT AVG(E.EVE_QTDPESSOAS) AS MEDIA FROM TB_EVENTOS AS E;
  150.  
  151. #5.12. Nome do evento e quantidade de atendimentos relacionados.
  152. SELECT E.EVE_NOME, COUNT(A.ATE_CODIGO) AS QUANTIDADE_EVENTOS FROM TB_EVENTOS AS E
  153. LEFT JOIN TB_ATENDIMENTOS AS A ON A.ATE_EVE_CODIGO=E.EVE_CODIGO;
  154.  
  155. #5.13. Nome da categoria e quantos eventos foram realizados deste tipo em janeiro de 2017.
  156. SELECT C.CAT_CATEGORIA, COUNT(E.EVE_CODIGO) AS QUANTIDADE_JANEIRO_2017 FROM TB_CATEGORIAS AS C
  157. LEFT JOIN TB_EVENTOS AS E ON E.EVE_CAT_CODIGO=C.CAT_CODIGO AND E.EVE_DATA BETWEEN '2017-01-01' AND '2017-01-31';
  158.  
  159. #5.14. Quantidade total de pessoas que frequentaram eventos de futebol.
  160. # vou levar em consideração que "futebol" é o evento com id 2
  161. SELECT SUM(E.EVE_QTDPESSOAS) FROM TB_EVENTOS AS E
  162. WHERE E.EVE_CODIGO=2;
  163.  
  164. #5.15. Quantidade média de pessoas por tipo de evento, considerando apenas eventos que tiveram atendimentos.
  165. #considerei "tipo de evento" como a categoria, adicionei o nome da caegoria na consulta
  166. SELECT C.CAT_CATEGORIA, AVG(E.EVE_QTDPESSOAS) AS MEDIA FROM TB_CATEGORIAS AS C
  167. JOIN TB_EVENTOS AS E ON E.EVE_CAT_CODIGO=C.CAT_CODIGO
  168. JOIN TB_ATENDIMENTOS AS A ON A.ATE_EVE_CODIGO=E.EVE_CODIGO;
Add Comment
Please, Sign In to add comment