Una consola de prueba
Para probar consultas SQL en el motor JSSQL desarroll esta pequea aplicación web: La consola JSSQL
En esta consola podemos seleccionar una base de datos JSBD (estas bases de datos fueron generadas con el objeto JSBD_Conversor). Tambin podemos ver las tablas de la base de datos con sus campos y tipos de datos, ingresar sentencias SQL, ejecutarlas, ver los resultados y algunas otras estadsticas y parmetros de debug.
Espero que el uso de la consola les resulte intuitivo, ya que no voy a reparar en explicar como utilizarla, lo importante aqu es ver como es la sintaxis SQL que utiliza el motor JSSQL y sus funcionalidades bsicas.
Atención!: La consola JSSQL es solo una aplicación de demostración y testeo, JSSQL puede ser integrado en cualquier aplicación web y
es una herramienta para que los desarrolladores puedan acceder a un conjunto de datos mediante SQL y JavaScript.
Algunas consultas de prueba
Dentro de la consola seleccione la base de datos neptuno (espero que le resulte familiar), podr ver las tablas, campos y tipos de datos de la base.
Vale aclarar que JSSQL se esta ejecutando en su navegador, de manera offline, no hay ningun servidor de base de datos ni interprete del lado del servidor, simplemente la pgina HTML y código JavaScript ejecutandose en su mquina.
Veamos algunas consultas que permitan ver algunas caracteristicas de JSSQL:(Para ejecutar las sentencias simplemente cópielas, pguelas en la consola y presione Ejecutar o pulse el boton 'Probarla' abajo de la consulta)
Uso del WHERE con funciones JavaScript:
Select NombreProducto, CantidadPorUnidad, UnidadesEnExistencia from productos where IdCategoria==2 && NombreProducto.match(/salsa/i)!=null
Fíjese que los operadores que utiliza JSSQL son los de Javascript (==,<=,>=,<,>,!=,&&,||) y además se pueden utilizar cualquier función de JavaScript (match, length, etc.), siempre teniendo en cuenta que el resultado del WHERE debe ser true o false
Uso de alias en el SELECT y en el FROM:
Select p.NombreProducto as NOM, p.CantidadPorUnidad as CANT, p.UnidadesEnExistencia as STOCK from productos p where p.IdCategoria==2 && NombreProducto.match(/salsa/i)!=null
Podemos darle un alias a un campo o a una tabla.
Juntando tablas:
select prov.NombreCompania as Proveedor, prod.NombreProducto as Producto, cat.NombreCategoria as Tipo from productos prod, categorias cat, proveedores prov where prod.IdCategoria == cat.IdCategoria && prod.IdProveedor == prov.IdProveedor
Para juntar las tablas ponemos en la clausula WHERE los campos que las unen (por ejempo: prod.IdCategoria == cat.IdCategoria), esto hace un filtro sobre el producto cartesiano.
Ordenando los resultados:
select NombreCompania, NombreContacto, CargoContacto from clientes order by 3, 2 desc
En este caso se ordena los resultados por CargoContacto y luego por NombreContacto de manera descendente.
Solo es posible referenciar al ORDER BY con los nmeros de los campos listados en la clusula SELECT.
Para ver mas ejemplos vea la seccin de Documentacin
Como usar el motor JSSQL en tres simples pasos:
Primero incluimos el motor JSSQL
<SCRIPT LANGUAGE="JavaScript1.2" type="text/javascript" SRC="JSSQL.js"></SCRIPT>
Cargamos la base de datos:
//Creacion del motor JSSQL var myJSSQL= new JSSQL(); //Apertura de la base de datos neptuno if (!myJSSQL.Open('neptuno')) { //si falla se muestra un mensaje de error alert(myJSSQL.GetError()); }
Ejecutamos la consulta e imprimimos el resultado
//Consulta SQL var sql="select NombreCompania as comp, NombreContacto as cont, CargoContacto as cargo from clientes order by 3, 2 desc" ; //Ejecucion de la consulta var res=myJSSQL.Query(sql) if(res===false) {//si falla se muestra un mensaje de error alert( myJSSQL.GetError() ); } else { //Impresin de resultados document.write("<table border='1'>"); document.write("<tr><th>COMPANIA</th>") document.write("<th>CONTACTO</th><th>CARGO</th></tr>"); for (i=0;i<res.length;i++){ document.write(" <tr><td>"); document.write(res[i]["comp"]); document.write(" </td><td>"); document.write(res[i]["cont"]); document.write(" </td><td>"); document.write(res[i]["cargo"]); document.write("</td></tr>"); } document.write("</table>"); }
Aquí esta el resultado: Ver