sidebar_position | sidebar_label |
---|---|
3 |
Data Query Language |
DQL (Data Query Language) é um subconjunto da SQL (Structured Query Language) que é usado para consultar e recuperar dados de um banco de dados. A principal operação em DQL é a instrução SELECT, que permite buscar e retornar dados de uma ou mais tabelas.
Este documento explica as consultas SQL usadas para interagir com o banco de dados de um jogo.
SELECT nomeRegiao, capacidade
FROM Regiao;
Obtém o nome e a capacidade de todas as regiões no banco de dados.
SELECT Sala
FROM PC
WHERE idPC = 1;
Retorna a sala atual do personagem com ID 1 (Joel).
SELECT R.nomeRegiao, S.descricaoSala
FROM Regiao R
JOIN Sala S ON R.idRegiao = S.IdRegiao;
Mostra o nome da região e a descrição da sala correspondente.
SELECT r.descricaoRegiao
FROM Sala s
JOIN Regiao r
ON s.IdRegiao = r.idRegiao;
Retorna a descrição da região para cada sala.
SELECT I.nomeItem
FROM Item I
JOIN Inventario II ON I.IdInventario = II.idInventario
WHERE II.idInventario = 1;
Lista os itens no inventário com ID 1, que pertence ao Joel.
SELECT I.idItem AS nome, I.tipoItem AS mult_ataque
FROM Inventario INV
JOIN Item I ON INV.idInventario = I.idInventario
WHERE INV.idPersonagem = ${id_personagem} AND I.tipoItem = 1;
Exibe as armas (tipoItem = 1) do personagem com o ID fornecido.
SELECT I.idItem AS nome, I.tipoItem AS mult_ataque
FROM Inventario INV
JOIN Item I ON INV.idInventario = I.idInventario
WHERE INV.idPersonagem = ${id_personagem} AND I.tipoItem = 2;
Mostra as vestimentas (tipoItem = 2) do personagem com o ID fornecido.
SELECT I.idItem AS nome, I.tipoItem AS mult_ataque
FROM Inventario INV
JOIN Item I ON INV.idInventario = I.idInventario
WHERE INV.idPersonagem = ${id_personagem} AND I.tipoItem = 3;
Retorna os consumíveis (tipoItem = 3) do personagem com o ID fornecido.
SELECT idZona, seguranca, populacaoAtual
FROM ZonaQuarentena
WHERE seguranca > 5;
Lista as zonas de quarentena cuja segurança é maior que 5.
SELECT S.idSala, R.nomeRegiao
FROM Sala S
JOIN Regiao R ON S.IdRegiao = R.idRegiao;
Mostra a quantidade de salas em cada região.
SELECT idPersonagem
FROM Personagem
WHERE tipoPersonagem = 2;
Obtém todos os NPCs, onde tipoPersonagem
é 2.
SELECT *
FROM Regiao;
Retorna todos os detalhes de cada região.
SELECT *
FROM LocalAbandonado a
JOIN Regiao r ON a.IdRegiao = r.idRegiao
WHERE r.tipo = 2; -- Cidade Abandonada
Lista todos os locais abandonados em regiões do tipo "Cidade Abandonada" (tipo = 2).
SELECT nomePersonagem, xp, vidaMax, vidaAtual
FROM NPC
WHERE Sala = 1;
Mostra detalhes dos NPCs localizados na sala com ID 1.
SELECT I.descricao, I.capacidade, SUM(II.quantidade) AS uso_atual
FROM Inventario I
JOIN InventarioItem II ON I.idInventario = II.idInventario
WHERE I.idInventario = (SELECT IdInventario FROM NPC WHERE idNPC = 2)
GROUP BY I.descricao, I.capacidade;
Mostra a capacidade e o uso atual do inventário do NPC com ID 2.
SELECT M.idMissao, M.tipoMis
FROM Itens I
JOIN Missao M ON I.IdMissao = M.idMissao
WHERE I.IdItem = 3; -- Por exemplo, uma bomba
Lista as missões que utilizam o item com ID 3.
SELECT ZQ.idRegiao, R.nomeRegiao, ZQ.populacaoAtual
FROM ZonaQuarentena ZQ
JOIN Regiao R ON ZQ.IdRegiao = R.idRegiao;
Mostra todas as zonas de quarentena e suas populações atuais.
SELECT A.IdRegiao, R.nomeRegiao, A.defesa
FROM Acampamento A
JOIN Regiao R ON A.IdRegiao = R.idRegiao;
Lista os acampamentos e seus níveis de defesa.
SELECT LA.periculosidade, R.nomeRegiao
FROM LocalAbandonado LA
JOIN Regiao R ON LA.IdRegiao = R.idRegiao
WHERE LA.periculosidade > 7;
Obtém locais abandonados em regiões com periculosidade acima de 7.
SELECT NPC.nomePersonagem
FROM NPC NPC
WHERE NPC.eAliado = false;
Lista todos os personagens que não são aliados.
SELECT II.nomeItem, I.capacidade, I.descricao
FROM Item II
JOIN Inventario I ON II.IdInventario = I.idInventario
WHERE I.idInventario = 1; -- 1 seria um inventário específico
Mostra todos os itens no inventário com ID 1.
SELECT R.nomeRegiao, COUNT(DISTINCT ZQ.IdRegiao) AS ZonasQuarentena,
COUNT(DISTINCT A.IdRegiao) AS Acampamentos,
COUNT(DISTINCT LA.IdRegiao) AS LocaisAbandonados
FROM Regiao R
LEFT JOIN ZonaQuarentena ZQ ON R.idRegiao = ZQ.IdRegiao
LEFT JOIN Acampamento A ON R.idRegiao = A.IdRegiao
LEFT JOIN LocalAbandonado LA ON R.idRegiao = LA.IdRegiao
GROUP BY R.nomeRegiao
HAVING COUNT(DISTINCT ZQ.IdRegiao) > 0
AND COUNT(DISTINCT A.IdRegiao) > 0
AND COUNT(DISTINCT LA.IdRegiao) > 0;
Lista regiões com mais de um tipo de estrutura: zonas de quarentena, acampamentos e locais abandonados.
SELECT R.nomeRegiao, R.capacidade
FROM Regiao R
LEFT JOIN ZonaQuarentena ZQ ON R.idRegiao = ZQ.IdRegiao
LEFT JOIN Acampamento A ON R.idRegiao = A.IdRegiao
WHERE R.capacidade > 20;
Mostra regiões com capacidade maior que 20, junto com suas zonas de quarentena e acampamentos.
SELECT COUNT(*) AS totalNPCs
FROM NPC;
Retorna a quantidade total de NPCs no banco de dados.
SELECT SUM(xpMis) AS xpTotalPatrulha
FROM MissaoPatrulha;
Calcula a soma total de XP ganho em missões de patrulha.
SELECT SUM(xpMis) AS xpTotalExploracao
FROM MissaoExploracaoObterItem;
Calcula a soma total de XP ganho em missões de exploração/obter item.
SELECT Personagem.nomePersonagem, Inventario.descricao
FROM Personagem
JOIN Inventario ON Personagem.idInventario = Inventario.idInventario;
Mostra todos os personagens e suas descrições de inventário.
SELECT nomePersonagem
FROM NPC
WHERE Sala = {$idSala};
Lista os NPCs localizados na sala especificada por ID.
SELECT nomePersonagem
FROM NPC
WHERE Sala = (SELECT
Sala FROM PC WHERE IdPersonagem = 1);
Obtém os NPCs que estão na mesma sala que Joel (ID 1).
SELECT i.*
FROM Itens i
JOIN MissaoExploracaoObterItem m ON i.IdMissao = m.idMissao
JOIN Personagem p ON m.IdPersonagem = p.idPersonagem
JOIN PC pc ON p.idPersonagem = pc.IdPersonagem
WHERE pc.Sala = (
SELECT Sala
FROM PC
WHERE IdPersonagem = ${id_personagem}
);
Mostra itens que podem ser obtidos em missões de exploração baseadas na sala atual do personagem.
SELECT i.*
FROM Itens i
JOIN MissaoPatrulha m ON i.IdMissao = m.idMissao
JOIN Personagem p ON m.IdPersonagem = p.idPersonagem
JOIN PC pc ON p.idPersonagem = pc.IdPersonagem
WHERE pc.Sala = (
SELECT Sala
FROM PC
WHERE IdPersonagem = ${id_personagem}
);
Mostra itens que podem ser obtidos em missões de patrulha baseadas na sala atual do personagem.
SELECT statusMissao
FROM MissaoExploracaoObterItem
WHERE IdMissao = (
SELECT IdMissaoPre
FROM MissaoExploracaoObterItem
WHERE IdMissao = ${id_missao}
) AND statusMissao = 'true';
Verifica se a missão pré-requisito para a missão de obter item foi concluída.
SELECT statusMissao
FROM MissaoPatrulha
WHERE IdMissao = (
SELECT IdMissaoPre
FROM MissaoExploracaoObterItem
WHERE IdMissao = ${id_missao}
) AND statusMissao = 'true';
Verifica se a missão pré-requisito para a missão de patrulha foi concluída.
UPDATE PC SET vidaAtual = $valor
WHERE IdPersonagem = ${id_personagem};
Atualiza o valor da vida atual do PC com o ID fornecido.
UPDATE NPC SET vidaAtual = $valor
WHERE IdPersonagem = ${id_personagem};
Atualiza o valor da vida atual do NPC com o ID fornecido.
UPDATE Inventario SET capacidade = capacidade - 1
WHERE IdPersonagem = ${id_personagem} AND IdItem = ${id_item};
Reduz a capacidade do inventário do personagem especificado pelo ID e item.
UPDATE MissaoPatrulha SET statusMissao = 'true'
WHERE idMissao = ${id_missao};
Marca a missão de patrulha como concluída.
UPDATE MissaoExploracaoObterItem SET statusMissao = 'true'
WHERE idMissao = ${id_missao};
Marca a missão de exploração/obter item como concluída.
UPDATE PC SET xp = xp + (SELECT xpMis FROM MissaoExploracaoObterItem WHERE idMissao = ${id_missao})
WHERE IdPersonagem = ${idPersonagem};
Adiciona a XP da missão de exploração ao XP do personagem.
UPDATE PC SET xp = xp + (SELECT xpMis FROM MissaoPatrulha WHERE idMissao = ${id_missao})
WHERE IdPersonagem = ${idPersonagem};
Adiciona a XP da missão de patrulha ao XP do personagem.
UPDATE PC SET vidaAtual = vidaAtual + (SELECT aumentoVida FROM Consumivel WHERE IdItem = ${id_item})
WHERE IdPersonagem = ${idPersonagem};
Aumenta a vida atual do personagem com base na quantidade de vida fornecida pelo item consumível.