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.