Jump to content

Guia basica de SQL


Recommended Posts

Version 1.0 - Todavia le tengo que agregar imagenes, pero lo pongo para mostrar como va quedando.

Tutorial SQL

Como muchos saben , un archivo de calculo (Excel por ejemplo) se puede observar columnas y filas. Para el que no sabe

diferenciarlo, las columnas son las que estan vertical (nombradas como A/B/C/D...) y las filas horizontal (1,2,3...).

Una hoja de calculo la podemos denominar como una tabla para que se comprenda de que estamos hablando.

El SQL es un LENGUAJE. Es decir, no tiene nada que ver con Lua, ya que se puede usar en muchos tipos de programas.

El MTA incluyo el MySQL y SQLite como herramientas utiles para guardar datos del servidor.

Tienen que entender que el SQL se maneja en base a consultas. Por ejemplo :

Vos tenes dos columnas llamado A y B. En la columna "A", guardas nombres y en la columna "B" guardas Level.

Con el SQL vos podes ordenar para que por ejemplo, si una personaje se registra, vos insertar una FILA con su nombre +

el nivel inicial (Nivel 1).

Hasta aca, seguramente se entiende. Igualmente, editare este tutorial poniendo graficos e imagenes para que sea mucho

mas entendible.

Las funciones principales del SQL son :

Insertar, Borrar, Crear, Seleccionar, Actualizar. En tu server, te vas a dar cuenta que eso basta y sobra para lo que

necesitas.

A continuacion, pasaremos a ver la sintaxis del SQL :

Crear : Capaz lo que todos quieren al principio. Poder crear una tabla de SQL...Para crearla, necesitas darle un nombre

a la tabla que deseas agregar + las columnas que quieren poner. Pero eso no es todo, a cada columna le tenes que

asignar su clasificacion. Seguro ahi no entendiste, entonces para ser mas claro lo explico. Las columnas van a guardar

datos. Pero necesitas especificar que TIPO DE DATOS (si va a hacer numeros, letras, cadena de texto, etc...). Los mas

comunes son NUMBER y STRING en el SQLite (Que son los que le recomiendo que usen al principio).

CREATE TABLE IF NOT EXISTS 'nombreDeTabla' (columnaUno 'Clasificacion', columnaDos 'Clasificacion') 

Insertar : Para poder Insertar datos, el SQL necesita saber a que tabla se lo vas a hacer. Despues, al insertar un

dato, supones que vas a agregar UNA FILA, porque las columnas son permanentes (lo digo porque es un error muy comun,

al principio). Si queres cambiar columnas, lo tendras que hacer manualmente desde un programa que lea Base de datos

(como el SQLiteBrowser).

INSERT INTO 'tabla' ('columnaUno','columnaDos'....) VALUES ('ValorUno','ValorDos'....) 

IMPORTANTE : SIEMPRE ES NECESARIO AGREGAR DATOS A TODAS LAS COLUMNAS , ejemplo

Si yo tengo columna A,B,C y quiero agregar solo a A y B, tenes que hacer :

INSERT INTO 'tabla'('A','B','C') VALUES ('Hola','32','') 

Osea, le pones espacio y listo.

Seleccionar : En mi opinion, es la funcion de SQL mas utilizada e importante de todas. Esta funcion te permite

extraer datos de una tabla. Lo mejor de esta funcion, es que podes darle condiciones a esta seleccion. Por ejemplo,

tengo una columna A que guarda nombre y otra B que guarda levels. Entonces despues quiero conocer todos los que

son mas de level 2. Entonces en la condicion pedis que B sea mayor o igual a 2.

SELECT 'columna' FROM 'tabla' WHERE 'columna' = 'Valor' 

Hay muchas formas de SELECT, podes pedir por cantidad, por orden , etc...

Es importante saber, que si queres extraer datos de todas las columnas, necesitas usar el * .

SELECT * FROM 'tabla' WHERE 'columna' = 'Valor' 

IMPORTANTE : No es necesario usar condicion, pero en el caso de los server vas a necesitas buscar datos especificos,

como los datos de un personaje en particular por lo cual seguro haras :

SELECT * FROM personajes WHERE Nombre = '"..getPlayerName(source).."' 

Eso de las '"..dato.."', es muy importante hacerlo bien porque sino, lo da invalido el SQL. En Insertar y actualizar

deberas hacer lo mismo.

Actualizar : Otra de las funciones importante es la de actualizar, que es muy util a la hora de guardar datos del

PJ cuando esta deslogueando, como cuando sube de nivel , etc...En este tambien se encuentra la condicion, porque

al actualizar, tenes que especificar Que fila vas a actualizar. Por ejemplo, si queres guardar los datos de un PJ,

tenes que poner como condicion el nombre del personaje, asi sabe a donde guardarlo

UPDATE 'tabla' SET 'columnaUno' = 'Valor','columnaDos' = 'ValorDos' WHERE columna = 'Valor' 

IMPORTANTE = Los 'tabla','columna' (el signo '') no hay que ponerlo, solo lo agrego como para indentificar.

Borrar : Como bien dice el nombre, sirve para borrar un dato especifico de la tabla. Por supuesto, requiere de una

condicion para saber que necesitas borrar de esa tabla.

DELETE FROM 'tabla' WHERE 'columnaUno' = 'Valor' 

Para no olvidarme , para aplicar todo esto al MTA, necesitaran usar la funcion "executeSQLQuery"....Ejemplo quiero crear una tabla :

executeSQLQuery("CREATE TABLE IF NOT EXISTS jugadores (Nombre STRING,Level NUMBER)") 

AVISO : ESTE TUTORIAL LO PODEMOS CONSIDERAR INCOMPLETO, PORQUE PARA ALGUNOS LE VA PARECER COMPLEJO. Actualizare este

topic, agregando un EJEMPLO que servira para todos las funciones que nombre (haciendolo muchisimo mas facil la guia)

Si quieren saber que cosas le pueden agregar a las condiciones, o quieren repasar las funciones SQL, les recomiendo :

http://www.1keydata.com/sql/sql-commands.html

PD : Diganme si hay algo mal, asi lo corrijo.

Edited by Guest
Link to comment

Re bueno edikosh gracias a ti ya entendi SQl :) Muchas gracias

EDIT: esto estaria bien ?

  
addEventHandler("onResourceStart", getResourceRootElement(getThisResource()),  
function() 
executeSQLQuery("CREATE TABLE IF NOT EXISTS Skins (Cuenta STRING,Level NUMBER)") 
end 

pero que otro eventos tendria que utilizar ? :3

Link to comment

Esta perfecto lo que pusiste Mota.

Cada vez que crees una tabla, usa el resourceStart...

Despues, si por ejemplo queres que cuando loguea tipo se le inserte los datos haces :

  
  
local consulta = executeSQLQuery("SELECT * FROM Skins WHERE Cuenta = '"..getPlayerName(source).."'") 
  
  
for index,value (consulta) do 
  
local Level = value["Level"] 
outputChatBox("Eres level : "..tostring(Level),source) 
setElementData(source,"su.level",Level) -- Usas elementData para no tener que extraer de SQL todo el tiempo 
  
  

Eso lo podes hacer desde el onPlayerLogin por ejemplo...

Link to comment
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...