DQL (Data Query Language)
Introdução
A DQL (Linguagem de Consulta de Dados) é empregada para consultar e recuperar dados armazenados no banco de dados. O comando mais comum de DQL é o SELECT, que permite buscar e visualizar informações relevantes sem modificar o banco de dados. No contexto do nosso jogo, os comandos DQL são utilizados para obter informações sobre o progresso dos jogadores, listar itens disponíveis em determinado ambiente, ou verificar o status de uma missão, por exemplo. Abaixo estão os comandos DQL utilizados no nosso projeto:
Código
-- Consultar se há o item específico dentro do inventário do jogador
SELECT nome_item
FROM Inventario
JOIN InstanciaItem ON Inventario.id_inst_item = InstanciaItem.id_inst_item
JOIN Jogador ON Inventario.id_inventario = Jogador.id_jogador
WHERE Jogador.nome = 'EhOBruno'
AND InstanciaItem.nome_item = 'Bolo';
-- Lista todos os itens do inventário do jogador
SELECT Item.nome AS item_nome,
InstanciaItem.durabilidade_atual
FROM Inventario
JOIN InstanciaItem ON Inventario.id_inst_item = InstanciaItem.id_inst_item
JOIN Item ON InstanciaItem.nome_item = Item.nome
WHERE Inventario.id_inventario = 1;
-- Consultar período do dia no mundo
SELECT hora
FROM mapa;
-- Consultar atributos básicos do jogador
SELECT nome, fome, vida
FROM Jogador
WHERE Jogador.nome = 'EhOBruno';
-- Consultar informações de nível do jogador
SELECT nivel, exp
FROM Jogador
WHERE Jogador.nome = 'EhOBruno';
-- Consultar informações de armadura do jogador (adicionar pts_armadura)
SELECT cabeca, peito, pernas, pes
FROM Jogador
WHERE Jogador.nome = 'EhOBruno';
-- Consultar estruturas dentro de um chunk em que o jogador se encontra
SELECT
Chunk.nome_bioma,
InstanciaEstrutura.nome_estrutura,
FROM
Chunk
LEFT JOIN
InstanciaEstrutura ON InstanciaEstrutura.numero_chunk = Chunk.numero
JOIN
Jogador ON Jogador.numero_chunk = Chunk.numero
WHERE
Jogador.nome = 'EhOBruno';
-- Consultar fontes dentro de um chunk em que o jogador se encontra
SELECT Fonte.nome AS fonte_nome,
InstanciaFonte.qtd_atual
FROM InstanciaFonte
JOIN Fonte ON InstanciaFonte.nome_fonte = Fonte.nome
WHERE InstanciaFonte.numero_chunk = 1;
-- Consultar mobs que estão no mesmo chunk que o jogador
SELECT
InstanciaMob.id_inst_mob,
InstanciaMob.nome_mob
FROM
InstanciaMob
JOIN
Jogador ON Jogador.numero_chunk = InstanciaMob.numero_chunk
WHERE
Jogador.nome = 'EhOBruno';
-- Consultar atributos básicos de um mob específico no mesmo chunk do jogador
SELECT
Mob.tipo_mob,
InstanciaMob.nome_mob,
InstanciaMob.vida_atual
FROM
InstanciaMob
JOIN
Mob ON Mob.nome = InstanciaMob.nome_mob
JOIN
Jogador ON Jogador.numero_chunk = InstanciaMob.numero_chunk
WHERE
Jogador.nome = 'EhOBruno'
AND Mob.nome = 'Galinha';
-- Consultar a missão atual do jogador
SELECT m.nome, m.descricao, m.objetivo, m.recompensa
FROM Missao m
JOIN Jogador j ON m.id_missao = j.missao
WHERE j.id_jogador = 2;
-- Ferramenta necessária para minerar o item específico
SELECT FerramentaMineraInstFonte.nome_ferramenta
FROM FerramentaMineraInstFonte
WHERE FerramentaMineraInstFonte.nome_fonte = 'Madeira';
-- Atualizar a durabilidade da instância de um item no inventário do jogador
UPDATE InstanciaItem
SET durabilidade_atual = 200
WHERE id_inst_item = 10;
-- Atualizar vida atual de uma instância de um mob
UPDATE InstanciaMob
SET vida_atual = 19
WHERE id_inst_mob = 1;
-- Atualizar vida atual de um jogador
UPDATE Jogador
SET vida = 19
WHERE nome = 'EhOArthur';
-- Atualizar a missão de um jogador
UPDATE Jogador
SET missao = 2
WHERE nome = 'EhOArthur';
-- Atualizar o nível de um jogador
UPDATE Jogador
SET nivel = 3
WHERE nome = 'EhOArthur';
Histórico de versões
Versão | Data | Descrição | Autor | Revisão |
---|---|---|---|---|
1.0 | 19/08/2024 | Adição dos comandos DQL para a Entrega 2 | Todos | Todos |