Definição e Apresentação do DQL
O que é DQL?
DQL ("Data Query Language") é uma linguagem usada para realizar consultas em um banco de dados. Com ela, podemos recuperar informações específicas de tabelas, realizar junções entre tabelas e aplicar filtros para obter dados relevantes.
No contexto deste projeto, o DQL foi usado para consultar informações sobre jogadores, habilidades, ambientes, itens e outras entidades do jogo. Abaixo, apresentamos as consultas SQL com descrições organizadas.
Consultas Realizadas
1. Retornar os atributos de um jogador pelo ID
SELECT *
FROM Jogador
WHERE id_jogador = %s;
2. Retornar as habilidades pelo ID
SELECT *
FROM Habilidade
WHERE id_habilidade in (%s,%s,%s);
3. Retornar atributos da habilidade de mineração
SELECT fk_Habilidade_id, nivel, reducaoEnergiaMinera,minerioBonus, xpMin, xpMax
FROM habMineracao
WHERE fk_Habilidade_id = %s;
4. Retornar atributos da habilidade de combate
SELECT fk_Habilidade_id,nivel, vidaBonus, danoBonus, xpMin, xpMax
FROM habCombate
WHERE fk_Habilidade_id = %s;
5. Retornar atributos da habilidade de cultivo
SELECT fk_Habilidade_id,nivel, cultivoBonus,reducaoEnergiaCultiva, xpMin, xpMax
FROM habCultivo
WHERE fk_Habilidade_id = %s;
6. Retornar itens do inventário de um jogador
SELECT nome_item, tipo_item, quantidade, preco_item
FROM vw_inventario_jogador
WHERE id_jogador = %s;
7. Retornar ambientes de um jogador
SELECT *
FROM Ambiente
WHERE fk_jogador_id = %s;
8. Retornar ambiente pelo ID
SELECT *
FROM Ambiente
WHERE id_ambiente = %s;
9. Contar instâncias de inimigos de um jogador
SELECT COUNT(*)
FROM instancia_de_inimigo
WHERE fk_jogador_id = %s;
10. Retornar a primeira instância de item de um jogador
SELECT id_instancia_de_item
FROM instancia_de_item
WHERE fk_id_jogador = %s AND fk_id_item = %s
ORDER BY id_instancia_de_item
ASC LIMIT 1;
11. Retornar consumíveis de um jogador com contagem
SELECT c.fk_id_item, c.nome, c.descricao, c.efeito_vida, c.preco, ii.fk_id_jogador, COUNT(*)
FROM Consumivel c
JOIN Instancia_de_item ii ON c.fk_id_item = ii.fk_id_item
WHERE ii.fk_id_jogador = %s
GROUP BY c.fk_id_item, c.nome, c.descricao, c.efeito_vida, c.preco, ii.fk_id_jogador;
12. Retornar instâncias de inimigos de um jogador
SELECT *
FROM Instancia_de_Inimigo
WHERE fk_inimigo_id = %s AND fk_jogador_id = %s
ORDER BY id_instancia_de_inimigo;
13. Retornar habilidade de combate de um jogador
SELECT *
FROM habCombate
WHERE fk_Habilidade_id = ( SELECT fk_habCombate_fk_Habilidade_id
FROM jogador
WHERE id_jogador = %s );
14. Retornar atributos da habilidade de combate pelo ID
SELECT *
FROM habCombate
WHERE fk_Habilidade_id = %s;
15. Retornar armas de um jogador com contagem
SELECT a.fk_id_item, a.nome, a.descricao, a.dano_arma, a.preco, ii.fk_id_jogador, COUNT(*)
FROM Arma a
JOIN Instancia_de_item ii ON a.fk_id_item = ii.fk_id_item
WHERE ii.fk_id_jogador = %s
GROUP BY a.fk_id_item, a.nome, a.descricao, a.dano_arma, a.preco, ii.fk_id_jogador;
16. Retornar inimigos em um ambiente com contagem
SELECT i.*, COUNT(*) AS quantidade
FROM Instancia_de_Inimigo ii
JOIN inimigo i ON ii.fk_inimigo_id = i.id_inimigo
WHERE ii.fk_id_ambiente = %s AND ii.fk_jogador_id = %s
GROUP BY i.id_inimigo, i.nome, i.vidamax, i.dano
ORDER BY quantidade
DESC;
17. Contar instâncias de inimigos em um ambiente
SELECT COUNT(*)
FROM instancia_de_inimigo
WHERE fk_id_ambiente = %s AND fk_jogador_id = %s;
18. Retornar consumíveis de uma caverna
SELECT Consumivel.*
FROM Caverna
Join Consumivel ON fk_id_item_recompensa = fk_id_item
WHERE Caverna.fk_id_ambiente = %s;
19. Retornar capacidade máxima de animais em um celeiro
SELECT qtd_max_animais
FROM Celeiro
WHERE fk_id_ambiente = %s;
20. Retornar instâncias de animais de um jogador
SELECT ia.id_instancia_de_animal, ia.nome_animal, a.diasTotalDropar, ia.prontoDropa
FROM Instancia_de_Animal ia
JOIN Animal a ON ia.fk_Animal_id = a.id_animal
WHERE ia.fk_Jogador_id = %s;
21. Retornar todos os animais
SELECT id_animal, tipo_animal, preco
FROM Animal;
22. Verificar se um ambiente é um celeiro
SELECT fk_id_ambiente
FROM Celeiro
WHERE fk_id_ambiente = %s;
23. Retornar instâncias de animais com preço
SELECT ins.id_instancia_de_animal, ins.nome_animal, hpp.preco
FROM Instancia_de_Animal ins
INNER JOIN Animal hpp ON ins.fk_animal_id = hpp.id_animal
WHERE fk_jogador_id = %s;
24. Retornar instâncias de animais prontos para drop
SELECT ia.id_instancia_de_animal, ia.nome_animal, ia.prontoDropa, a.diasTotalDropar, ia.fk_animal_id
FROM Instancia_de_Animal ia
JOIN Animal a ON ia.fk_animal_id = a.id_animal
WHERE ia.fk_Jogador_id = %s AND a.diasTotalDropar > 0;
25. Retornar item drop de um animal
SELECT itemDrop
FROM Animal
WHERE id_animal = %s;
26. Retornar capacidade máxima de animais em um celeiro
SELECT fk_id_ambiente, qtd_max_animais
FROM Celeiro
WHERE fk_id_ambiente = %s;
27. Contar instâncias de animais de um jogador
SELECT COUNT(*)
FROM Instancia_de_Animal
WHERE fk_Jogador_id = %s;
28. Retornar moedas de um jogador
SELECT moedas
FROM Jogador
WHERE id_jogador = %s;
29. Retornar ID do inventário de um jogador
SELECT id_inventario
FROM inventario
WHERE fk_id_jogador = %s;
30. Retornar nome de um mineral pelo ID do item
SELECT nome
FROM Mineral
WHERE fk_id_item = %s;
31. Retornar itens de uma loja
SELECT fk_id_item
FROM vw_catalogo_loja
WHERE fk_id_loja = %s;
32. Retornar itens distintos do inventário de um jogador
SELECT DISTINCT fk_id_item, nome_item, tipo_item,quantidade, preco_item
FROM vw_inventario_jogador
WHERE id_jogador = %s;
33. Retornar catálogo de uma loja
SELECT fk_id_item, nome_item, tipo_item, preco_item
FROM vw_catalogo_loja
WHERE fk_id_loja = %s;
34. Retornar preço de um item na loja
SELECT preco_item
FROM vw_catalogo_loja
WHERE fk_id_item = %s;
35. Contar instâncias de plantas de um jogador
SELECT COUNT(*)
FROM Instancia_de_Planta
WHERE fk_id_jogador = %s;
36. Retornar capacidade máxima de plantas em uma plantação
SELECT qtd_plantas_max
FROM Plantacao
WHERE fk_id_ambiente = %s;
37. Retornar todas as plantas
SELECT id_planta, nome, preco
FROM Planta;
38. Retornar instâncias de plantas de um jogador
SELECT id_instancia_de_planta, nome, prontoColher, diaAtual
FROM Instancia_de_Planta
WHERE fk_id_jogador = %s;
39. Retornar instâncias de plantas com preço
SELECT ins.id_instancia_de_planta, ins.nome, pp.preco
FROM Instancia_de_Planta ins
INNER JOIN Planta pp ON ins.fk_id_planta = pp.id_planta
WHERE ins.fk_id_jogador = %s;
40. Retornar instâncias de plantas prontas para colher
SELECT ins.id_instancia_de_planta, ins.nome, ins.prontoColher, pp.id_planta, pp.itemDrop
FROM Instancia_de_Planta ins
INNER JOIN Planta pp ON ins.fk_id_planta = pp.id_planta
WHERE ins.fk_id_jogador = %s;
41. Retornar dias de instâncias de animais de um jogador
SELECT i.id_instancia_de_animal, i.diaAtual, a.diasTotalDropar
FROM Instancia_de_Animal i
JOIN Animal a ON i.fk_Animal_id = a.id_animal
WHERE i.fk_Jogador_id = NEW.id_jogador;
Data | Versão | Autor | Alterações |
---|---|---|---|
13/01/2024 | 1.0 |
Marcos Vieira Marinho | Versão inicial do documento |
08/02/2024 | 1.1 |
Gabriel Fernando de Jesus Silva | Adiciona queries usadas no módulo 3 |
10/02/2024 | 1.2 |
Gabriel Fernando de Jesus Silva | Atualiza para apenas queries usadas no módulo 3 |