Como usar la extensión Spatial de MySQL

10 marzo 2009

Si necesitas almacenar datos espaciales en MySQL, pero sobre todo realizar operaciones espaciales sobre ellos, te recomiendo que estudies la extensión Spatial de MySQL (disponible desde MySQL 5.x).

En el siguiente enlace obtendrás un manual de uso (en inglés):
How to use MySQL Spatial extension.

La referencia oficial en:

MySQL Spatial extension.


MySQL – Selección (select) parametrizando el nombre de tabla y un campo

13 febrero 2009

En el siguiente ejemplo se muestra como crear un procedimiento almacenado que recibe dos parámetros (nombre de tabla y nombre de columna) y realiza una selección (select) en esa tabla y campo, creando así un método para hacer selecciones (select) parametrizando el nombre de tabla y un campo.


DELIMITER $$

DROP PROCEDURE IF EXISTS ejemplo$$
CREATE PROCEDURE ejemplo(IN tabla CHAR(64), IN columna CHAR(64))
READS SQL DATA
COMMENT 'Hace select de una tabla y campo parametrizado'
BEGIN

   SET @s = CONCAT('SELECT ' , columna , ' FROM ' , tabla);
   PREPARE stmt FROM @s;
   EXECUTE stmt;

END $$

DELIMITER ;

Ahora tan solo hay que llamarlo con el nombre de tabla y campo que queramos:

call ejemplo('mitabla', 'micampo');


WWW SQL Designer – Realizar diagramas entidad/relación desde el navegador

12 febrero 2009

Con la aplicación WWW SQL Designer podremos realizar diagramas de entidad/relación desde nuestro navegador.

Esta aplicación permite especificar:

  • Claves.
  • Restricciones de claves foráneas.
  • Comentarios.
  • Índices.

Algunas de sus funcionalidades son:

  • Salvar un diseño y modificarlo más tarde.
  • Imprimirlo.
  • Exportar como un script SQL.

Permite importar esquemas directamente desde base de datos existentes. Soporta: MySQL, MSSQL, SQLLite y Web2py.

Desde el siguiente enlace accederás a la web oficial para descargárte la aplicacioń y obtener más información y documentación:

WWW SQL Designer.

Desde este otro enlace puedes acceder a una demo online:

Demo online de WWW SQL Designer.


Modelo entidad/relación de la base de datos de la wikipedia

31 enero 2009

En el siguiente enlace accederéis al modelo relacional completo de la base de datos de la wikipedia.

Modelo entidad/relación de la base de datos de la wikipedia.

Modelo entidad/relación de la base de datos de la wikipedia

Modelo entidad/relación de la base de datos de la wikipedia


Hacer selección (SELECT) por orden aleatorio en MySQL

12 enero 2009

Si queremos hacer una consulta (select) en MySQL que nos obtenga un conjunto de registros con un orden aleatorio, tendremos que usar la función RAND(), tal y como muestro en el siguiente ejemplo:

SELECT * FROM tbl_elbitcampeador ORDER BY RAND();

Esta consulta obtiene todos los registros, con todos sus campos, de la tabla tbl_elbitcampeador y ordena dichos registros aleatoriamente.

Este método combinado con LIMIT es una manera muy útil de obtener un muestreo aleatorio de N elementos. Por ejemplo:

SELECT * FROM tabla_elbitcampeador ORDER BY RAND() LIMIT 100;

Obtiene 100 elementos aleatoriamente de la tabla tbl_elbitcampeador.

La función RAND() no está implementada haciendo uso de un perfecto algoritmo de generación aleatoria, pero nos ofrece una poderosa y rápida herramienta de selección aleatoria en una tabla.


Preparar MySQL en Linux para que sea accesible desde la red

22 diciembre 2008

Cuando instalamos MySQL en nuestro sistema Linux, normalmente, la instalación por defecto solo permite acceder al motor de la base de datos desde la misma máquina y como localhost (o 127.0.0.1) pero en ningún caso con la IP local propia, y mucho menos desde otros ordenadores, desde nuestra red local o desde Internet. Esto es así por motivos de seguridad.

Si queremos que sea accesible en local desde la IP de la propia máquina, o queremos que sea accesible desde la red local o Internet tendremos que realizar una breve modificación en el fichero de configuración my.cnf. Dicho fichero, en instalaciones normales, se encuentra en el directorio /etc/mysql.

Buscaremos la línea

bind-address = 127.0.0.1

y la sustituiremos por

bind-address = IP_local_maquina

donde IP_local_maquina es la IP local de la máquina en la que está instalado MySQL, por ejemplo 192.168.1.10, quedando:

bind-address = 192.168.1.10

Ahora simplemente tendremos que reiniciar nuestro MySQL:

/sbin /service mysqld restart

Y ya tendremos nuestro MySQL configurado para ser accedido desde el exterior. No olvidar abrir su puerto, por defecto 3306, si tenemos instalado un software de firewall, o en el router si va ser accedido desde Internet.


Chuleta de MySQL

17 diciembre 2008

Curiosa y completa chuleta para MySQL. Consta de: Funciones, tipos de datos, funciones en PHP y algunos ejemplos.

Chuleta MySQL (1)

Chuleta MySQL (1)

Chuleta MySQL (2)

Chuleta MySQL (2)

Está disponible en PNG y PDF.

Puedes descargarte esta hoja de referencia desde el siguiente enlace:

Chuleta de MySQL.


Planificador de eventos por fecha/hora en MySQL 5.1

15 diciembre 2008

Como comentaba en un artículo anterior, MySQL 5.1 provee de una nueva característica que permite especificar que hacer a una determinada fecha/hora o cada cierto tiempo una sentencia SQL o llamada a un procedimiento almacenado.

Pues bien, en los siguiente enlaces de la web oficial de MySQL 5.1 especifican que hacer y cómo:

Usando el planificador de eventos.

El planificador de eventos y la asignación de permisos.

Mostrar eventos creados.


Chuleta para Oracle PL/SQL

12 diciembre 2008

Está en HTML y puedes acceder a esta hoja de referencia de Oracle PL/SQL desde el siguiente enlace:

Chuleta para Oracle PL/SQL.


XML en MySQL 5.1

12 diciembre 2008

En un artículo que escribí hace muy poco, llamado “MySQL 5.1 disponible para producción“, comentaba que uno de los aspectos novedosos de esta versión respecto a la anterior es la posibilidad de manipular cadenas XML almacenadas en nuestras tablas.

Pues bien, pongo a continuación un enlace a la web oficial de MySQL donde detallan muy claramente que ofrecen al respecto con ejemplos de uso:

Funciones XML en MySQL 5.1.


Seguir

Get every new post delivered to your Inbox.