Portal SAMP
[Tutorial] Noções Intermediarias em MySQL R41-4 - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Guias e Tutoriais (https://portalsamp.com/forumdisplay.php?fid=7)
+--- Tópico: [Tutorial] Noções Intermediarias em MySQL R41-4 (/showthread.php?tid=129)



Noções Intermediarias em MySQL R41-4 - Gguiz - 03/10/2020

[Imagem: download-1.png]

Olá, hoje irei introduzir um pouco sobre as principais funções do MySQL, modelo de uso e quando a usá-las. Não sou nenhum expert em MySQL, mas o pouco conhecimento que tenho irei transmitir. Qualquer possível equívoco de minha parte, peço que os senhores me corrijam.

Lembrando, se você não sabe nada em MySQL, não indico esse tutorial, estou introduzindo as funções, em breve irei lançar uma bateria de tutorais sobre MySQL, do básico ao avançado. Esse tutorial já estava praticamente pronto, então estou apenas terminando.

Meu principal objeto é que você entenda o que realmente está fazendo e se pergunte: "Por quê eu devo fazer isso?", "Quando irei utilizar isso?".

1.0 Principais Funções:

  1.1 mysql_query:

mysql_query - Serve como um executor  local, nele você pode fazer consultas, inserir valores e criar tabelas sem precisar chamar outras callbacks. Suponha que você  quer efetuar uma consulta  por meio de um comando, com mysql_query consigo executá-la dentro do comando sem precisar convocar uma callback.

Segundo a wiki: É altamente recomendado para encadear todas as suas consultas (até INSERT & UPDATE).
Use cache_delete () se você não precisar mais do resultado da consulta ou se houver vazamentos de memória.

IMPORTANTE: Não recomendo utilizar mysql_query para consultas de grande porte, o servidor SA-MP aguarda até que a consulta termine, podendo ocasionar travamentos.

Parâmetros: 
Código PHP:
(conhandlequery[], bool:use_cache true

conhandle = O identificador de conexão com o qual será processado. Aqui será a conexão entre o servidor SA-MP e o servidor MySQL, a atribuição pode ser feita por meio de alguma variável indicando essa. 

[Imagem: anexo-1.png]

Perceba que estou usando a variável IDConexao para atribuir a minha conexão com o servidor MySQL.

query[] = Aqui iremos efetuar a consulta. Suponha que eu tenha um comando para puxar o level do jogador na seguinte tabela:


[Imagem: anexo-2.png]

Utilizando:

Código PHP:
SELECT `Levelfrom `usuáriosWHERE `NOME` = Guilherme 

Iremos selecionar a coluna "Level" na tabela "usuários" do jogador "Guilherme".

bool:use_cache = Essa função pode ser opcional, mas é de suma importância. Nela irá encadear se você quer utilizar a sua consulta ou não. Caso você queira utilizar o cache de consulta do mysql_query, terá que atribuir se bool:use_cache será verdadeiro ou falso. 

Dois exemplos de uso: 

Ex.1:
[Imagem: Anexo-3.png]

Como estou inserindo uma tabela ainda não existente na database, não faria sentindo utilizar o cache para fazer uma consulta.

Ex.2:
[Imagem: anexo-4.png]

Perceba que eu quero fazer a consulta do meu "Level", então irei utilizar o valor do bool:use_cache como "true", para executar o cache.

Obs.: É de suma importância deletar o cache após a finalização da consulta, o resultado será insignificante depois de executado. 


Agora que você, leitor, já está por dentro de todas as funções é hora de ver como funciona na prática.

  1.1.1 mysql_query na prática:

Vamos lá, vou usar novamente o exemplo que anexei acima.

[Imagem: Anexo-3.png]

Perceba, vou explicar novamente. Estou utilizando mysql_query para criar uma tabela ainda não existente. Assim que o comando for executado, essa tabela será criada automaticamente. Veja esse exemplo:

Iremos criar um comando para criar a db:

[Imagem: anexo-6.png]

Antes de utilizar o comando:

[Imagem: anexo-5.png]

Após utilizar o comando:

[Imagem: anexo-7.png]

Note: ao executar o /criardb, uma nova tabela que ainda não existe é criada na database.

Mas Guilherme, como faço para inserir os valores? Simples, veja:

Ex.1:
[Imagem: Capturar.png]

Estou inserindo os valores "Guilherme" e defini o valor do "preso" para 1.

Como segue nesse outro exemplo:

[Imagem: Capturar.png]

- Irei particionar esse tutorial em dois, estou muito cansado para dá continuidade.
Tópicos da parte 2:
  • mysql_tquery & mysql_pquery;

  • mysql_format;

  • caches.

Até a próxima(...)



RE: Noções Intermediarias em MySQL R41-4 - zBL4CK - 03/10/2020

Excelente tutorial Parabéns (+rep) esperarei os próximos tmj ❤️


RE: Noções Intermediarias em MySQL R41-4 - Gguiz - 15/10/2020

(03/10/2020 00:30)zBL4CK Escreveu: Excelente tutorial Parabéns (+rep) esperarei os próximos tmj ❤️

Obrigado pelo apoio ZBL4CK! Em breve postarei mais sobre MySQL, desde a integralização ao servidor até a realização de consultas e inserimentos de dados. 

Abs.


RE: Noções Intermediarias em MySQL R41-4 - luanveloz1 - 19/03/2021

Código:
new cache:result = mysql_query(conn, "select 'ola mundo'");
printf("result = %s ", result);
cache_delete(result);

me retorna: result = ☺☺,O

Código:
new cache:result = mysql_query(conn, "select 10");
printf("result = %d ", result);
cache_delete(result);


me retorna: result = 1

Sabes dizer porquê? Não faz sentido não conseguir printar o result.  Confused


RE: Noções Intermediarias em MySQL R41-4 - yFasT_Street - 27/10/2022

(19/03/2021 00:47)luanveloz1 Escreveu:
Código:
new cache:result = mysql_query(conn, "select 'ola mundo'");
printf("result = %s ", result);
cache_delete(result);

me retorna: result = ☺☺,O

Código:
new cache:result = mysql_query(conn, "select 10");
printf("result = %d ", result);
cache_delete(result);


me retorna: result = 1

Sabes dizer porquê? Não faz sentido não conseguir printar o result.  Confused

utilize o cache no final da conexão feita com o mysql_query


Código:
new cache:result = mysql_query(conn, "select 'ola mundo'", true);
printf("result = %s ", result);
cache_delete(result);

Código:
new cache:result = mysql_query(conn, "select 10", true);
printf("result = %d ", result);
cache_delete(result);