Usar SQL para generar SQL

El principio para la creación de cadenas SQL a partir de SQL consiste, básicamente, en recorrer la metadata (information schema) de una base de datos y armar strings sql a partir de la concatenación strings constantes y del nombre de los objetos (nombre de tablas, nombre de campos, nombre de constraints, etc.) de la base de datos.

Las consultas SQL utilizadas pueden variar en cuanto a los nombres de los campos, tablas involucradas u objetos del sistema de acuerdo al sistema de gestión de base de datos utilizado, pero el funcionamiento es el mismo. El único esfuerzo extra a realizar será investigar el diccionario de datos de cada DBMS.

Los ejemplos mencionados en el artículo original, correspoden a consultas de Oracle, en nuestro caso, veremos ejemplos similares para una base de datos MySQL:

(more…)

La intención de esta publicación es hacer un breve resumen de los distintos tipos de JOINs disponibles en SQL y para finalizar, un ejemplo práctico de cada uno de ellos.

  • INNER JOIN: es el caso de unión interna clásico, combina dos o más tablas descartando todas las filas resultados que no se correspondan en ambas.
  • LEFT OUTER JOIN (o LEFT JOIN): combina dos tablas con la diferencia que selecciona todas las filas de la primer tabla sin importar tengan o no coincidencia en la segunda. RIGHT OUTER JOIN (o RIGHT OUTER): es la opción inversa a la anterior. En la mayoría de las bases de datos actuales se puede omitir OUTER.
  • FULL OUTER JOIN: combina los resultados de dos o más tablas, tengan o no coincidencia entre sí.
  • CROSS JOIN: retorna el producto cartesiano de dos o más tablas, es decir, combina cada fila de una tabla con cada fila de otra tabla. CROSS JOIN no debería llevar la clausula ON.
  • NATURAL JOIN: Es un caso especial de INNER JOIN que compara por cuenta propia la equivalencia de columnas con el mismo nombre y tipo de dato entre dos o más tablas para hacer la combinación de ambas. Hay que tener especial cuidado con su uso, pues puede producir resultados ambiguos o generar problemas si se añaden, quitan, o renombran las columnas.

(more…)

MySQL tiene una sintaxis bastante flexible comparada con MS SQL al momento de hacer JOINs. En MySQL puedes hacer un JOIN de dos maneras, sin embargo, sería conveniente hacerlo de la forma de MS SQL de manera de que el código sea más portable.

(more…)

Inyección SQL

Un poco de humor con SQL Inyection…


Búsqueda personalizada

Suscripción

       Add to Google Reader or Homepage

      

       Subscribe in NewsGator Online

       Add to netvibes

       Subscribe in Bloglines

Categorias

Licencia de uso

Usuarios

       web counter