Ir para conteúdo
Omega

Queries e SQL para OTservers

Posts Recomendados

Esse é um tutorial básico sobre SQL e as funções LUA que são usadas em OTServers.

Definição
Primeiramente, deve ser útil uma definição de banco de dados: são, fundamentalmente, conjuntos de informações armazenadas em tabelas. Para OTServers, são onde todas as informações sobre as contas e personagens são guardadas.
SQL (Structured Query Language) é uma linguagem que é usada por quase todos os bancos de dados (no nosso caso, todos). Quando você envia comandos em SQL para o seu banco de dados, você pode modificá-lo ou extrair valores dele.
Query (queries no plural) são consultas ou comandos que são enviadas para o banco de dados.

Introdução
Para nós, scripters, às vezes é fundamental tirar informações ou mudar valores dos personagens que só estão disponíveis no banco de dados, para isso existe uma biblioteca de funções que já vem com os servidores, a biblioteca db (de database, que significa banco de dados em inglês). Dela, usaremos principalmente duas funções:

db.getResult
Retorna os valores que foram selecionados em uma query

db.query ou db.executeQuery
Executa uma query usada para modificar informações no banco de dados. Essa função se chama db.executeQuery na maioria dos servidores, mas também pode ser utilizada como db.query em outros.

Em ambos os casos, a query deverá ser usada entre aspas.

Queries em SQL

Primeiramente, devemos saber como executar queries diretamente no banco de dados. Para isso, faça download de um banco de dados que eu disponibilizei abaixo como anexo. Use também o sqlite studio, que você pode baixar

Please login or register to see this link.

.

Assim que você abrir o banco de dados com o sqlite studio você verá que está dividido em duas janelas: a da esquerda de navegação e a da direita com os dados em si (no caso está branco quando abre). Abra a árvore do banco de dados e selecione a tabela players clicando duas vezes. Você verá a estrutura do banco de dados, com os nomes das colunas e o tipo de dados de cada uma (INT, INTEGER, VARCHAR, BOOLEAN, etc). Em seguida, selecione a aba 'Data' para ver os dados que estão na tabela. Lá estarão todos os jogadores cadastrados no servidor, com várias informações. Essa é a aba importante para nós.

1. SELECT
Depois disso, vamos tentar executar um primeiro comando no banco de dados: use ALT+E para abrir o editor de queries e digite:

SELECT * FROM players

Então, aperte F9 e veja o resultado. O que deve acontecer é aparecer toda a tabela players que você já havia visto. Perceba como, em geral, SQL é uma linguagem bem direta: a query que você enviou para o banco de dados significa:

SELECIONE * DE jogadores

E ela faz isso, com a exceção de que * significa todos os dados da tabela.
OBS.: Apesar de quase toda query de SQL estar nesse padrão, ela é uma linguagem que não é

Please login or register to see this link.

, logo

select * from players

Dá no mesmo. Mas fica menos legível, assim utilizamos letras maiúsculas para as palavras-chave dos comandos e letras minúsculas para os nomes de tabelas e colunas.

Vamos testar outra query, um pouco mais complicada:

SELECT name, level FROM players

Dessa vez não selecionamos todos os dados da tabela, apenas o nome e o level de cada jogador. A sintaxe do comando SELECT é:

SELECT nome_da_coluna_1, nome_da_coluna_2,..., nome_da_coluna_n FROM nome_da_tabela

Assim teremos como retorno os valores dessas colunas para cada elemento da tabela. Tente selecionar apenas o nome e a posição (x, y e z) de cada jogador e confira abaixo.

Please login or register to see this spoiler.



Please login or register to see this link.



Fontes Consultadas

Please login or register to see this link.


Please login or register to see this link.



Considerações
Seria injusto não dar os devidos créditos ao

Please login or register to see this link.

, cujos códigos serviram de base para meu aprendizado em relação à SQL e às funções LUA relacionadas.


Please login or register to see this link.

Please login or register to see this link.

Editado por Omega

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que tópico magnífico cara, muita coisa importante e boa de se aprender.

Pode ter certeza que irei da uma saudade nele.

 

Obrigado pelo excelente conteúdo.

 

Atenciosamente,

Alexandre.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ótimo tutorial, muitas pessoas tem duvidas sobre sql e esse tutorial vai ajudar muito.

rep+

Editado por SUJA

Compartilhar este post


Link para o post
Compartilhar em outros sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.


  • Conteúdo Similar

    • Por Gahenna
      INAUGURAÇÃO 28/04/2019 / TE AGUARDAMOS NA INAUGURAÇÃO!

      Bem-vindos ao Baiak-Million

      -> Versão: 8.6
      -> IP: baiak-Million.tk Port: 7171
      -> Cliente Próprio


      Skill Rate: 20x
      Magic Rate: 7x
      Exp Rate: 400x (rates)

      Baiak super editado com um excelente mapa e vocações balanceadas.
      Mapa baiak, quests, missões, eventos automáticos e sistemas exclusivos.
      Nosso principal objetivo é trazer a diversão até vocês!

      - Online Points System (você ganha pontos online e pode trocar por dias de Vip Donate)
      - Vários sistemas internos inovadores
      - Bosses a cada hora com prêmios otimos
      - VIPs/Tasks
      - Castle 24hrs
      - Castle WAR
      - Battlefield
      - Firestorm
      - SnowBall
      - Desert War
      - Capture the Flag
      - Zombie

      E muito mais!
    • Por VictorWEBMaster
      Please login or register to see this link.
      <= Baixem!!
       
      Estou formulando as informações e prints neste tópico!
    • Por emersongo
      Olá, baixei um servidor limpo apenas com os arquivos da distro e a pasta data totalmente limpa, somente a estrutura montada, inclusive o mapa, porém ao abrir o mapa no RME na lista de creatures>npcs ele lista vários npc's que não estão no servidor, já tentei procurar e não encontrei resposta, pediram pra eu limpar o arquivo RME>data>8.60>creatures.xml, mas não deu jeito, pediram pra remover 3 arquivos da pasta %appdata%>RME>extensions, porém ao abrir o rme ele deu erro como se tivesse faltando um arquivo e pediu pra instalar o rme novamente. Então aqui estou eu ainda sem resposta.
    • Por Sviras
      Best tibia server world, mixed map, rpg-war system.
      Server settings:
          Website:
      Please login or register to see this link.

          IP Address: xtibia.pl
          Port: 7171
          Client: 8.60     Exp Rates:
          51 - 50 level, 90x
          51 - 100 level, 50x
          101 - 150 level, 30x
          151 - 200 level, 23x
          201 - 250 level, 15x
          251 - 300 level, 8x
          301 - 350 level, 5x
          351 - 400 level, 3x
          401 - 450 level, 1x
          451+ level, 0.8x
          Skills rate: 10.5x
          Loot rate: 2,5x
          Maglevel rate: 8x
      Assasin DMG x1.3
      Warrior DMG x1.2 + DEF x1.1
      Mage's DMG 1.46 + DEF x 1.15 & MonsterDEF -6%
      Promote: + 11% DMG + 2% SKILL / MLVL when training.
          
      ~690 Quest!


      ~1200 Spawn! All levels from 8 to 600+



      Trening Room with new system!

    • Por jondrops
      Ola amigos do xtibia
      Eu queria saber se alguém pode me ajudar com sistema de CRAFTING... Tenho um tfs 1.0 mas nao ta rodando no meu servidor tfs 4.0
       
      Alguém pode me ajudar?
×
×
  • Criar Novo...