joaopaulofcc

[RESPOSTA] Aula - consultas simples - Tabela e Inserts

May 12th, 2021
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 14.12 KB | None | 0 0
  1. # Aula - Consultas simples
  2.  
  3. # Cria a base de dados
  4. CREATE DATABASE ProjetoFormula1;
  5.  
  6. # Seleciona a base a ser utilizadas nos comando abaixo
  7. USE ProjetoFormula1;
  8.  
  9. # Cria a tabela Pilotos
  10. CREATE TABLE Pilotos
  11. (
  12.     codigo INT(11),
  13.     nome VARCHAR(40) NOT NULL,
  14.     pais VARCHAR(20),
  15.     idade INT(6),
  16.     equipe VARCHAR(20) NOT NULL,
  17.     motor VARCHAR(20),
  18.     pontos INT(10),
  19.     PRIMARY KEY (codigo)
  20. );
  21.  
  22.    
  23.    
  24. # ---------- Inserindo dados ----------
  25.  
  26. INSERT INTO Pilotos
  27.     (codigo, nome, pais, idade, equipe, motor, pontos)
  28. VALUES
  29.     (111, "Sebastian Vettel", "Alemanha", 25, "RedBull", "Renault", 256),
  30.     (112, "Fernando Alonso", "Espanha", 28, "Ferrari", "Ferrari", 252),
  31.     (113, "Mark Alan Webber", "Áustria", 26, "RedBull", "Renault", 242),
  32.     (114, "Lewis Hamilton", "Inglaterra", 22, "McLaren", "Mercedes", 240),
  33.     (115, "Jenson Button", "Inglaterra", 21, "McLaren", "Mercedes", 214),
  34.     (116, "Felipe Massa", "Brasil", 27, "Ferrari", "Ferrari", 144),
  35.     (117, "Nico Rosberg", "Alemanha", 24, "Mercedes", "Mercedes", 142),
  36.     (118, "Robert Kubica", "Polônia", 21, "Renault", "Renault", 136),
  37.     (119, "Michael Schumacher", "Alemanha", 23, "Mercedes", "Mercedes", 72),
  38.     (120, "Rubens Barrichello", "Brasil", 29, "Williams", "Cosworth", 47),
  39.     (121, "Adrian Sutil", "Alemanha", 24, "ForceIndia", "Mercedes", 47),
  40.     (122, "Kamui Kobayashi", "Japão", 23, "Sauber", "Ferrari", 32),
  41.     (123, "Vitaly Petrov", "Rússia", 22, "Renault", "Renault", 27),
  42.     (124, "Nico Hulkenberg", "Alemanha", 20, "Williams", "Cosworth", 22),
  43.     (125, "Vitantonio Liuzzi", "Itália", 25, "ForceIndia", "Mercedes", 21),
  44.     (126, "Sebastian Buemi", "Suiça", 16, "ToroRosso", "Ferrari", 8),
  45.     (127, "Pedro de la Rosa", "Espanha", 22, "Sauber", "Ferrari", 6),
  46.     (128, "Nivk Heidfeld", "Alemanha", 22, "Sauber", "Ferrari", 6),
  47.     (129, "Jaime Alguersuari", "Espanha", 27, "ToroRosso", "Ferrari", 5),
  48.     (130, "Sakon Yamamoto", "Japão", 20, "Hispania", "Cosworth", 0),
  49.     (131, "Lucas Tucci di Grassi", "Brasil", 25, "Virgin", "Cosworth", 0),
  50.     (132, "Jarno Trulli", "Itália", 18, "Lotus", "Cosworth", 0),
  51.     (133, "Heikki Kovalainen", "Finlândia", 19, "Lotus", "Cosworth", 0),
  52.     (134, "Timo Glock", "Alemanha", 24, "Virgin", "Cosworth", 0),
  53.     (135, "Christian Klien", "Austrália", 20, "Hispania", "Cosworth", 0),
  54.     (136, "Bruno Senna", "Brasil", 21, "Hispania", "Cosworth", 0),
  55.     (137, "Karun Chandhok", "Índia", 20, "Hispania", "Cosworth", 0);
  56.  
  57.  
  58. # ---------- Consultas ----------
  59.  
  60. # CONSULTA 1
  61.  
  62. # Listar todos os dados da tabela Pilotos
  63.  SELECT * FROM Pilotos;
  64.  
  65. # -----------
  66.  
  67. # CONSULTA 2
  68.  
  69. # Listar nome, país e idade de todos os pilotos de Fórmula 1
  70. SELECT
  71.     nome, pais, idade
  72. FROM
  73.     pilotos;
  74.  
  75. # -----------
  76.  
  77. # CONSULTA 3
  78.  
  79. # Mostrar os pilotos e suas respectivas equipes
  80. SELECT
  81.     codigo, nome, equipe
  82. FROM
  83.     pilotos;
  84.  
  85. # -----------
  86.  
  87. # CONSULTA 4    
  88.    
  89. #  Selecionar o nome dos pilotos, sua nação e a equipe a que pertencem. Mostrar no máximo dez pilotos.
  90. SELECT
  91.     nome AS Piloto, pais AS Nação, equipe AS Equipe
  92. FROM
  93.     pilotos
  94. LIMIT
  95.     10;
  96.  
  97. # -----------
  98.  
  99. # CONSULTA 5
  100.  
  101. # Selecionar os países dos pilotos.
  102. SELECT DISTINCT
  103.     pais AS Nação
  104. FROM
  105.     pilotos;
  106.    
  107. # -----------
  108.  
  109. # CONSULTA 6
  110.  
  111. # Selecionar nome, idade, país e equipe dos pilotos de Fórmula 1. Os nomes devem estar dispostos em ordem alfabética.
  112. SELECT
  113.     nome AS Nome, idade AS Idade, pais AS Pais, equipe AS Equipe
  114. FROM
  115.     pilotos
  116. ORDER BY
  117.     nome;
  118.    
  119. # -----------
  120.  
  121. # CONSULTA 7  
  122.  
  123. # Selecionar nome, idade, país, equipe e pontuação de cada piloto de Fórmula 1. Esses dados devem estar dispostos de acordo com a idade em ordem decrescente.
  124. SELECT
  125.     nome AS Nome, idade AS Idade, pais AS Pais, equipe AS Equipe, pontos AS Pontuacao
  126. FROM
  127.     pilotos
  128. ORDER BY
  129.     idade DESC;
  130.  
  131. # -----------
  132.  
  133. # CONSULTA 8
  134.  
  135. # Mostrar os países a que pertencem os pilotos de Fórmula 1 em ordem alfabética.
  136. SELECT DISTINCT
  137.     pais AS Pais
  138. FROM
  139.     pilotos
  140. ORDER BY
  141.     pais ASC;
  142.    
  143. # -----------
  144.  
  145. # CONSULTA 9
  146.  
  147. # No relatório requisitado sobre os pilotos de Fórmula 1, é necessário conter o nome
  148. # dos pilotos, a equipe a que pertencem, os pontos e um cálculo desses com a seguinte
  149. # fórmula: ((pontos-3)*1.5). Os dados devem estar dispostos em ordem decrescente e
  150. # bastam apenas os dez primeiros classificados.
  151. SELECT
  152.     nome AS Piloto, equipe AS Equipe, pontos AS PontosAtuais, ((pontos-3)*1.5) AS PontosAlterados
  153. FROM
  154.     pilotos
  155. ORDER BY
  156.     pontos DESC
  157. LIMIT 10;
  158.  
  159. # -----------
  160.  
  161. # CONSULTA 10
  162.  
  163. # Selecionar o nome dos pilotos de Fórmula 1, a equipe a que pertencem, sua pontuação
  164. # correspondente e esta acrescida de 20 e dividida por 5. Desses dados, devem ser
  165. # mostrados somente os dez pilotos com menor pontuação.
  166.  
  167. SELECT
  168.     nome AS Piloto, equipe AS Equipe, pontos AS PontosAtuais, ((pontos+20)/5) AS PontosAlterados
  169. FROM
  170.     pilotos
  171. ORDER BY
  172.     PontosAlterados ASC
  173. LIMIT
  174.     10;
  175.    
  176. # -----------
  177.  
  178. # CONSULTA 11
  179.  
  180. # Selecionar nome, equipe e pontuação dos pilotos de Fórmula 1 que são da Alemanha.
  181. # Os dados devem estar dispostos de acordo com a equipe, em ordem alfabética.
  182.  
  183. SELECT
  184.     nome AS Nome, equipe AS Equipe, pontos AS Pontuacao, pais AS Pais
  185. FROM
  186.     pilotos
  187. WHERE
  188.     pais = "Alemanha"
  189. ORDER BY
  190.     equipe;
  191.  
  192. # -----------
  193.  
  194. # CONSULTA 12
  195.  
  196. # Mostrar os pilotos de Fórmula 1 que possuem uma pontuação diferente de zero.
  197. # É necessário mostrar nome, equipe, país e pontuação. Esses dados devem estar
  198. # dispostos em ordem decrescente de pontuação.
  199.  
  200. SELECT
  201.     nome AS Nome, equipe AS Equipe, pais AS Nacao, pontos AS pontuacao
  202. FROM
  203.     pilotos
  204. WHERE
  205.     pontos <> 0
  206. ORDER BY
  207.     pontos DESC;
  208.    
  209. # -----------
  210.  
  211. # CONSULTA 13
  212.  
  213. # Selecionar nome, idade, equipe e país dos pilotos de Fórmula 1 que tenham idade
  214. # igual ou superior a 25 anos.
  215.  
  216. SELECT
  217.     nome AS Nome, idade AS Idade, equipe AS Equipe, pais AS Nacao, pontos AS pontuacao
  218. FROM
  219.     pilotos
  220. WHERE
  221.     idade >= 25
  222. ORDER BY
  223.     idade;
  224.  
  225. # -----------
  226.  
  227. # CONSULTA 14
  228.  
  229. # No relatório a ser emitido, devem constar apenas os pilotos que tenham menos que 50
  230. # anos. Os dados que precisam aparecer são: nome, equipe, país e pontuação dos pilotos
  231. # de Fórmula 1.
  232.  
  233. SELECT
  234.     nome AS Nome, equipe AS Equipe, pais AS Nacao, pontos AS pontuacao
  235. FROM
  236.     pilotos
  237. WHERE
  238.     pontos < 50;
  239.  
  240. # -----------
  241.  
  242. # CONSULTA 15
  243.  
  244. # Selecionar todos os pilotos de Fórmula 1 que tenham uma pontuação superior a 100.
  245. # Para completar a informação, devem estar incluídos também nome, equipe, país e
  246. # pontuação dos pilotos.
  247.  
  248. SELECT
  249.     nome AS Nome, equipe AS Equipe, pais AS Nacao, pontos AS pontuacao
  250. FROM
  251.     pilotos
  252. WHERE
  253.     pontos > 100;
  254.  
  255. # -----------
  256.  
  257. # CONSULTA 16
  258.  
  259. # Listar os pilotos de Fórmula 1 que tenham idade inferior ou igual a 20 anos.
  260. # Incluir nesta listagem nome, idade, equipe, país e a pontuação dos referidos pilotos.
  261.  
  262. SELECT
  263.     nome AS Nome, idade AS Idade, equipe AS Equipe, pais AS Nacao, pontos AS pontuacao
  264. FROM
  265.     pilotos
  266. WHERE
  267.     idade <= 20
  268. ORDER BY
  269.     idade;
  270.  
  271. # -----------
  272.  
  273. # CONSULTA 17
  274.  
  275. # Selecionar por equipe os pilotos de Fórmula 1 que utilizam os motores Ferrari;
  276. # é importante mencionar nome, país e pontuação dos pilotos.
  277.  
  278. SELECT
  279.     nome AS Nome, equipe AS Equipe, pais AS Nacao, pontos AS Pontos
  280. FROM
  281.     pilotos
  282. WHERE
  283.     motor LIKE "Ferrari"
  284. ORDER BY
  285.     equipe;
  286.  
  287. # -----------
  288.  
  289. # CONSULTA 18
  290.  
  291. # Selecionar os pilotos dos países que começam com a letra A. Mostrar nome, equipe,
  292. # pontuação e país dos pilotos de Fórmula 1. É importante que os países estejam em
  293. # ordem alfabética.
  294.  
  295. SELECT
  296.     nome AS Nome, equipe AS Equipe, pais AS Nacao, pontos AS Pontos
  297. FROM
  298.     pilotos
  299. WHERE
  300.     pais LIKE "A%"
  301. ORDER BY
  302.     pais;
  303.  
  304. # -----------
  305.  
  306. # CONSULTA 19
  307.  
  308. # Foi requisitada uma listagem dos pilotos de Fórmula 1 que pertençam a equipes que
  309. # terminem com ‘auber’. Essa lista deve ser por equipe e nela devem constar nome,
  310. # equipe, país e a pontuação dos pilotos.
  311.  
  312. SELECT
  313.     nome AS Nome, equipe AS Equipe, pais AS Nacao, pontos AS Pontos
  314. FROM
  315.     pilotos
  316. WHERE
  317.     equipe LIKE "_auber"
  318. ORDER BY
  319.     equipe;
  320.  
  321. # -----------
  322.  
  323. # CONSULTA 20
  324.  
  325. # Faça uma listagem dos pilotos de Fórmula 1 que representam países que não possuem
  326. # a sílaba “an” no meio de seu nome. Essa listagem deve ser ordenada por país e
  327. # constar de nome, equipe, país e pontuação dos pilotos.
  328.  
  329. SELECT
  330.     nome AS Nome, equipe AS Equipe, pais AS Nacao, pontos AS Pontos
  331. FROM
  332.     pilotos
  333. WHERE
  334.     pais NOT LIKE "%an%"
  335. ORDER BY
  336.     pais;
  337.  
  338. # -----------
  339.  
  340. # CONSULTA 21
  341.  
  342. # Selecionar os pilotos de Fórmula 1 maiores de 25 anos e os com 30 anos ou menos.
  343. # É necessário mostrar também os respectivos nome, idade, equi- pe, país e pontuação.
  344.  
  345. SELECT
  346.     nome AS Nome, idade AS Idade, equipe AS Equipe, pais AS Nacao, pontos AS Pontos
  347. FROM
  348.     pilotos
  349. WHERE
  350.     idade > 25 AND idade <=30;
  351.  
  352. # -----------
  353.  
  354. # CONSULTA 22
  355.  
  356. # Selecionar os pilotos de Fórmula 1 que pertençam a equipes cujo nome comece com F
  357. # ou utilizem motores cujos nomes iniciem com R. É necessário para essas informações
  358. # constar nome, equipe e país dos pilotos de Fórmula 1.
  359.  
  360. SELECT
  361.     nome AS Nome, equipe AS Equipe, motor AS Motor, pais AS Nacao
  362. FROM
  363.     pilotos
  364. WHERE
  365.     equipe
  366. LIKE "F%" OR motor LIKE "R%";
  367.  
  368. # -----------
  369.  
  370. # CONSULTA 23
  371.  
  372. # Listar nome, idade, equipe e motores utilizados pelos pilotos de Fórmula 1 que tenham
  373. # menos que 25 anos, mas também façam parte de equipes cujo nome inicie com a letra R
  374. # ou que utilizem motores com a letra M em seu nome.
  375.  
  376. SELECT
  377.     nome AS Nome, idade AS Idade, equipe AS Equipe, motor AS Motor
  378. FROM
  379.     pilotos
  380. WHERE
  381.     (equipe LIKE "R%" OR motor LIKE "%m%") AND idade < 25;
  382.  
  383. # -----------
  384.  
  385. # CONSULTA 24
  386.  
  387. # Listar os pilotos de Fórmula 1 que alcançaram pontos de 136 até 252.
  388. # Nesta listagem, é importante colocar nome, idade, país e pontos dos pilotos.
  389.  
  390. SELECT
  391.     nome, idade, pais, equipe, pontos
  392. FROM
  393.     pilotos
  394. WHERE
  395.     pontos BETWEEN 136 AND 252;
  396.    
  397. # -----------
  398.  
  399. # CONSULTA 25
  400.  
  401. # Mostrar os pilotos de Fórmula 1 que tenham uma pontuação maior que 136 e também
  402. # não estejam devendo nenhum ponto também. Inclua nesta lista nome, idade, país,
  403. # equipe e pontos desses pilotos.
  404.  
  405. SELECT
  406.     nome, idade, pais, equipe, pontos
  407. FROM
  408.     pilotos
  409. WHERE
  410.     pontos NOT BETWEEN 0 AND 136;
  411.    
  412. # -----------
  413.  
  414. # CONSULTA 26
  415.  
  416. # Selecionar nome, idade, país e equipe dos pilotos de Fórmula 1 que tenham idade
  417. # igual a 22 ou 24 ou ainda 29. Ordenar esta informação por idade.
  418.  
  419. SELECT
  420.     nome, idade, pais, equipe
  421. FROM
  422.     pilotos
  423. WHERE
  424.     idade IN (22, 24, 29)
  425. ORDER BY
  426.     idade;
  427.    
  428. # -----------
  429.  
  430. # CONSULTA 27
  431.  
  432. # Listar nome, idade, país e equipe dos pilotos de Fórmula 1 que não sejam da
  433. # Alemanha ou da Inglaterra ou da Espanha.
  434.  
  435. SELECT
  436.     nome, idade, pais, equipe
  437. FROM
  438.     pilotos
  439. WHERE
  440.     pais NOT IN ("Alemanha", "Inglaterra", "Espanha")
  441. ORDER BY
  442.     pais;
  443.  
  444. # -----------
  445.  
  446. # CONSULTA 28
  447.  
  448. # Selecionar os pilotos de Fórmula 1 que não pontuaram ainda.
  449.  
  450. SELECT
  451.     *
  452. FROM
  453.     pilotos
  454. WHERE
  455.     pontos IS NULL;
  456.    
  457. # -----------
  458.  
  459. # CONSULTA 29
  460.  
  461. # Mostrar dados dos pilotos de Fórmula 1 que possuem pontuação menor que 10.
  462.  
  463. SELECT
  464.     *
  465. FROM
  466.     pilotos
  467. WHERE
  468.     pontos IS NOT NULL AND pontos < 10;
  469.  
  470. # -----------
  471.  
  472. # CONSULTA 30
  473.  
  474. # Informar o número de pilotos de Fórmula 1 existente nesse cadastro.
  475.  
  476. SELECT
  477.     COUNT(*)
  478. AS
  479.     NumeroPilotos
  480. FROM
  481.     pilotos;
  482.  
  483.  
  484. # -----------
  485.  
  486. # CONSULTA 31
  487.  
  488. # Indicar o número de pilotos de Fórmula 1 que tenham 21 anos ou mais.
  489.  
  490. SELECT
  491.     COUNT(*)
  492. AS
  493.     NumeroPilotos
  494. FROM
  495.     pilotos
  496. WHERE
  497.     idade >= 21;
  498.  
  499. # -----------
  500.  
  501. # CONSULTA 32
  502.  
  503. # Informar a média de idade dos pilotos da Alemanha ou da Inglaterra ou do Brasil.
  504.  
  505. SELECT
  506.     AVG(idade) AS MediaIdadePilotos
  507. FROM
  508.     pilotos
  509. WHERE
  510.     pais IN ("Alemanha", "Inglaterra", "Brasil");
  511.    
  512. # -----------
  513.  
  514. # CONSULTA 33
  515.  
  516. # Informar a média dos pontos dos pilotos de Fórmula 1.
  517.  
  518. SELECT
  519.     AVG(pontos) AS MediaPontosPilotos
  520. FROM
  521.     pilotos;
  522.    
  523. # -----------
  524.  
  525. # CONSULTA 34
  526.  
  527. # Informar o piloto mais novo de Fórmula 1.
  528.  
  529. SELECT
  530.     MIN(idade) AS IdadeMinima
  531. FROM
  532.     pilotos;
  533.    
  534. # -----------
  535.  
  536. # CONSULTA 35
  537.  
  538. # Indicar pontuação máxima alcançada pelos pilotos de Fórmula 1.
  539.  
  540. SELECT
  541.     MAX(pontos) AS PontuacaoMaxima
  542. FROM
  543.     pilotos;
  544.    
  545. # -----------
  546.  
  547. # CONSULTA 36
  548.  
  549. # Mostrar o total dos pontos dos pilotos de Fórmula 1 da Inglaterra.
  550.  
  551. SELECT
  552.     SUM(pontos) AS SomaDosPontos
  553. FROM
  554.     pilotos
  555. WHERE
  556.     pais = "Inglaterra";
  557.  
  558. # -----------
  559.  
  560. # CONSULTA 37
  561.  
  562. # Mostrar a pontuação total por país dos pilotos de Fórmula 1.
  563.  
  564. SELECT
  565.     SUM(pontos) AS SomaDosPontos, pais AS Pais
  566. FROM
  567.     pilotos
  568. GROUP BY
  569.     pais
  570. ORDER BY
  571.     SomaDosPontos;
  572.  
  573. # -----------
  574.  
  575. # CONSULTA 38
  576.  
  577. # Listar a média de idade dos pilotos de Fórmula 1 de cada país dessa tabela.
  578. # Devem ser elencados somente os países que apresentaram a média de idade dos
  579. # pilotos maior que 20 anos.
  580.  
  581. # Para resolver essa consulta, vamos dividi-la em duas partes:
  582.  
  583. # Parte 1: Listar a média de idade dos pilotos de Fórmula 1 de cada país desta tabela.
  584.  
  585. SELECT
  586.     AVG(idade) AS MediaDaIdade, pais AS Pais
  587. FROM
  588.     pilotos
  589. GROUP BY
  590.     pais
  591. ORDER BY
  592.     pais;
  593.  
  594.  
  595. # Parte 2: Os registros destacados na tabela anterior não devem constar no resultado
  596. # final, e no código da consulta é necessário incluir a cláusula HAVING com a condição
  597. # para que seja feita a seleção como mostrado a seguir:
  598.  
  599. SELECT
  600.     AVG(idade) AS MediaDaIdade, pais AS Pais
  601. FROM
  602.     pilotos
  603. GROUP BY
  604.     pais
  605. HAVING
  606.     AVG(idade) > 20
  607. ORDER BY
  608.     pais;
  609.    
  610. # -----------
  611.  
  612. # CONSULTA 39
  613.  
  614. # Mostrar a quantidade de pilotos de Fórmula 1 de cada país que consta nesse cadastro.
  615. # Listar os países em ordem alfabética.
  616.  
  617. SELECT
  618.     COUNT(*) AS NumeroDePilotos, pais AS Pais
  619. FROM
  620.     pilotos
  621. GROUP BY
  622.     pais
  623. ORDER BY
  624.     pais;
  625.  
Add Comment
Please, Sign In to add comment