Mono con MySQL

Hace un tiempo, di mis primeros pasos en Mono, con el desarrollo de unos programas muy básicos en Mono, que no iban mucho más allá del Hola Mundo.

Con dar unos pasos más en mi intrusión con Mono, en esta ocasión desarrollaré una aplicación básica, capaz de hacer altas y bajas en una base de datos MySQL.

(más…)

Imagina la situación de chequear si dos tablas o vistas tienen los mismos datos (en cantidad y valores). En ORACLE, esto no sería mayor inconveniente gracias al operador MINUS. MINUS devuelve aquellas filas que están en un primer ‘select’ y no están en un segundo ‘select’. Sin embargo ¿como podemos lograr esto con bases de datos SQL Server o MySQL?
(más…)

A continuación, intentaré nombrar algunos comandos útiles para ejecutar en MySQL. Cabe destacar, que estos comandos pueden ser ejecutados desde el shell del sistema operativo ($) y/o desde el shell de MySQL (mysql>). Por una cuestión de orden, los comandos serán clasificados en:

  • Descripción del sistema, bases de datos y tablas.
  • Definición de datos
  • Administración
  • Backups e importación de datos

(más…)

Una tarea que suele ser frecuente es la de tener que llevar toda una base de datos MySQL de un servidor a otro. Por ejemplo, en un servidor de desarrollo a un servidor en producción, o de un servidor local a un servidor remoto, o desde un servidor maestro a un servidor esclavo.

Para esto nos vamos a valer de dos aplicaciones, incluidas en la distribución de MySQL:

  • mysql: el shell client de MySQL, desde el puedes hacer todo (o casi todo) lo que realizas con un cliente gráfico, aunque sacrificando un poco la operatividad.
  • mysqldump: la aplicación con la que puedes hacer un volcado (dump) de una base de datos o colección de base de datos o de una tabla o colección de tablas. Por defecto, como resultado devuelve un script sql.

(más…)

Administrar la integridad de los datos a través del código de la aplicación le añade complejidad innecesaria al código, además de tener sus riesgos. A pesar de ser cuidadosos, bajo algunas condiciones podemos llegar quebrar la integridad referencial.

Un ejemplo clásico es el de registros “huérfanos”. Esto ocurre cuando eliminas de una tabla “padre” un registro y por alguna razón los “hijos” no son eliminados. Esto también puede ocurrir si actualizas el valor de un campo de la tabla “padre” y no actualizas los registros “hijos”.

(más…)

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.

(más…)

Instalar el servidor de base de datos PostgreSQL en Linux, es tan fácil como instalar cualquier otro programa en Linux. De todas formas, en esta publicación repasaremos un poco los pasos a seguir, para instalar PostgreSQL 8-3 en Ubuntu Hardy Heron.

(más…)

La versión 11g de la base de datos Oracle incorpora la cláusula PIVOT que resuelve, en parte, un problema que alguna vez se me presentó y que tuve que resolver con una consulta poco intuitiva y limitada.

Paso a explicar el tema en detalle con el siguiente ejemplo:

(más…)

Para monitorear el rendimiento de MySQL, que mejor que arrancar por las consultas, para hacer esto disponemos de una serie de alternativas:

  • Activar el Slow Query Log: loguea todas las consultas que se excedan de un tiempo dado (log_query_time) o bien, que no utilicen íncides (log-queries-not-using-indexes). Para activarlo, debemos editar el archivo my.cnf y agregar en la sección [mysqld]:

(más…)

Para reiniciar el MySQL (o cualquier otro servicio) una alternativa más rápida a las Herramientas Administrativas es mediante el comando net.

(más…)