<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Craftyman Blog &#187; MySQL</title>
	<atom:link href="http://craftyman.net/category/desarrollo-web/mysql/http:/craftyman.net/category/desarrollo-web/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://craftyman.net</link>
	<description>Redes Sociales, WordPress, Desarrollo Web, SEO</description>
	<lastBuildDate>Wed, 01 Feb 2012 00:57:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Exportar consultas SQL a CSV con MySQL</title>
		<link>http://craftyman.net/exportar-consultas-sql-a-csv-con-mysql/</link>
		<comments>http://craftyman.net/exportar-consultas-sql-a-csv-con-mysql/#comments</comments>
		<pubDate>Tue, 09 Nov 2010 04:19:37 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[CSV MySQL]]></category>
		<category><![CDATA[Exportar CSV PHP]]></category>

		<guid isPermaLink="false">http://craftyman.net/?p=1232</guid>
		<description><![CDATA[Al exportar registros en formato csv por lo general utilizamos PHP y vamos recorriendo los registros
Una manera fácil y rápida para generar archivos csv de nuestros registros en la base de datos las podemos hacer con una consulta sencilla desde MySQL.

[sql]
SELECT id,nombre,email,direccion
FROM usuarios
INTO OUTFILE '/rp/usuarios.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
[/sql]

donde:

<ul>

	<li><strong>INTO OUTFILE :</strong> directorio y archivo donde se guardara.</li>

	<li><strong>FIELDS TERMINATED BY :</strong> separador de cada campo.</li>

	<li><strong>ENCLOSED BY :</strong> delimitación de campo.</li>

	<li><strong>LINES TERMINATED BY :</strong> separador de fila.</li>
</ul>




Este simple script puede hacer backups directamente, si utilizas PHP tal vez te interese <a target="_blank" href="http://craftyman.net/exportar-importar-archivos-csv-php/">generar archivos CSV con PHP</a>, con esto puedes personalizar mejor el modo de exportación de registros ya que PHP recorrerá cada campo para generarlo.

vía: <a target="_blank" href="http://www.tech-recipes.com/rx/1475/save-mysql-query-results-into-a-text-or-csv-file/">Tech Recipes</a><p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/exportar-importar-archivos-csv-php/" title="Exportar e Importar archivos CSV con PHP">Exportar e Importar archivos CSV con PHP</a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/exportar-consultas-sql-a-csv-con-mysql/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Screencast: Trabajando con INNER JOIN en MySQL</title>
		<link>http://craftyman.net/screencast-inner-join-mysql/</link>
		<comments>http://craftyman.net/screencast-inner-join-mysql/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 03:07:55 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[INNER JOIN]]></category>
		<category><![CDATA[Videos MySQL]]></category>

		<guid isPermaLink="false">http://craftyman.net/?p=1166</guid>
		<description><![CDATA[<a target="_blank" href="http://net.tutsplus.com">Nettuts+</a> nos trae este corto pero buen Screencast sobre como trabajar con INNER JOIN en MySQL.
El <a target="_blank" href="http://bit.ly/bKvPbX">INNER JOIN</a> se utiliza para relacionar tablas de la base de datos, estas se relacionan mediante algún campo clave para su combinacion.

<object width="600" height="385"><param name="movie" value="http://www.youtube.com/v/G6jRcj3qy0k&color1=0x3a3a3a&color2=0x999999&hl=en_US&feature=player_embedded&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/G6jRcj3qy0k&color1=0x3a3a3a&color2=0x999999&hl=en_US&feature=player_embedded&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="600" height="385"></embed></object>

vía: <a target="_blank" href="http://net.tutsplus.com/tutorials/databases/quick-tip-working-with-mysql-and-inner-join/">Nettuts+</a>


<a href="http://www.miempresaenlinea.com/paginas-web/herramientas-y-aplicaciones-para-crear-paginas-de-internet.aspx" target="_blank">Diseñar páginas Web.</a><p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/video-instalando-apache-php-y-mysql/" title="Video: Instalando Apache, PHP y MySQL">Video: Instalando Apache, PHP y MySQL</a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/screencast-inner-join-mysql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>10 consejos SQL para acelerar tu Base de datos</title>
		<link>http://craftyman.net/10-consejos-sql-para-acelerar-tu-base-de-datos/</link>
		<comments>http://craftyman.net/10-consejos-sql-para-acelerar-tu-base-de-datos/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 19:08:32 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[Destacados]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Base de datos]]></category>

		<guid isPermaLink="false">http://craftyman.net/?p=1071</guid>
		<description><![CDATA[La mayoría de sitios en la Web depende de una o varias Bases de datos, ya sean para consultar, ingresar, borrar registros. Y en todas es necesaria la optimización para el aceleramiento y ahorrar recursos de nuestro Servidor, este articulo trae 10 consejos muy útiles para optimizar y acelerar nuestras bases de datos.

<h3>1. Optimizar las consultas con el Cache de Consultas SQL</h3>

Utilizando la función date de PHP podemos consultar en el cache de la base de datos:

<pre name="code" class="php">
$today = date("Y-m-d");  
$r = mysql_query("SELECT username FROM user WHERE signup_date >= '$today'");
</pre>  


<h3>2. No olvidar agregar índices a los campos</h3>

Esto acelerara considerablemente sus consultas a la base de datos, para ver si olvido poner índice en algunos campos puede utilizar EXPLAIN, colocándolo delante de la consulta SQL.

<pre name="code" class="sql">
EXPLAIN SELECT ...
FROM usuarios u
JOIN comentarios c ON u.id=c.usuario_id
</pre>

<h3>3. Utilizar LIMIT 1 para obtener una única fila</h3>

Cuando sabemos que nuestra consulta nos devolverá solo un registro, por ejemplo al consultar por un id de usuario, es recomendable utilizar LIMIT 1, esto hará que cuando el registro sea encontrado, ya no recorrerá las demás filas para comparar.

<pre name="code" class="php">
$rs = mysql_query("SELECT 1 FROM user WHERE id = '1' LIMIT 1");  
</pre>

<h3>4. Agregar índice a los campos de búsqueda</h3>

<div style="text-align:center"><img width="500px" src="http://nettuts.s3.amazonaws.com/500_mysql/search_index.jpg" /></div>

Al tener en una tabla, campos con los que hacemos búsqueda, es bueno que esos campos sean índices para acelerar la consulta.

<h3>5. Utilizar el mismo tipo de columnas para los JOIN</h3>

Cuando relacionamos tablas tenemos que agregar índices, luego de esto asegurarnos que los dos campos tengan el mismo tipo de dato <em>(DECIMAL, INT, etc.)</em>. Ya que esto afectara a procesos y operaciones internas de MySQL.

<pre name="code" class="php">
 $r = mysql_query("SELECT company_name FROM users 
     LEFT JOIN companies ON (users.state = companies.state) 
     WHERE users.id = $user_id"); 
</pre>

<h3>6. No utilizar el ORDER BY RAND()</h3>

Si queremos sacar un registro de una tabla aleatoriamente, es mejor sacar el valor por código PHP, ya que al utilizar <em>RAND()</em> en MySQL estaremos llamando a la función por cada registro en la tabla para obtener un resultado.

<pre name="code" class="php">
// mal
$r = mysql_query("SELECT username FROM user ORDER BY RAND() LIMIT 1");

// bien

$r = mysql_query("SELECT count(*) FROM user");
$d = mysql_fetch_row($r);
$rand = mt_rand(0,$d[0] - 1);

$r = mysql_query("SELECT username FROM user LIMIT $rand, 1");
</pre>

<h3>7. Evitar utilizar el SELECT *</h3>

Traer toda la data es casi siempre innecesario y hace procesar más al motor de base de datos, es muy recomendable cambiar el habitual * por los campos necesarios.

<pre name="code" class="php">
// mal
$r = mysql_query("SELECT * FROM user WHERE user_id = 1");
$d = mysql_fetch_assoc($r);
echo "Welcome {$d['username']}";

// bien
$r = mysql_query("SELECT username FROM user WHERE user_id = 1");
$d = mysql_fetch_assoc($r);
echo "Welcome {$d['username']}";
</pre>


<h3>8. Utilizar NOT NULL</h3>

A menos que tengas buenas razones para poner NULL a un campo, trata siempre de evitar esto y colocarlas con NOT NULL, ya que este tipo de columnas (NULL) requieren de un espacio adicional y de una complejidad interna en las sentencias de comparación

<h3>9. Guardar direcciones IP en campos UNSIGNED INT</h3>

Muchos de los desarrolladores (me incluyo) guardamos las direcciones IP en un campo VARCHAR sin saber que las podemos almacenar en campos INT que tiene solo 4 bytes de espacio, tenemos que asegurarnos que el campo sea UNSIGNED INT para aceptar valores más altos, ya que la dirección IP utiliza el rango de 32 bit.


Para transformar las IP a campo numérico y viceversa podemos utilizar funciones MySQL y PHP.

<pre name="code" class="php">

//mysql
$r = "UPDATE users SET ip = INET_ATON('{$_SERVER['REMOTE_ADDR']}') WHERE user_id = $user_id";  

//php
$ip_num = ip2long($_SERVER['REMOTE_ADDR']);
$ip_normal = long2ip($row['ip_address']);
</pre>

<h3>10. Evitar ejecutar consultas dentro de bucles</h3>

Un claro ejemplo es al actualizar una serie de filas en la BD, esto se podría resumir en una sola consulta para optimizar recursos en nuestro servidor.

<strong>PHP</strong>

<pre name="code" class="php">
foreach  ($display_order  as $id => $ordinal) {
    $sql = "UPDATE categories SET display_order = $ordinal WHERE id = $id";
    mysql_query($sql);
}
</pre>

<strong>MySQL</strong>

<pre name="code" class="sql">
UPDATE  categories
    SET display_order = CASE id
        WHEN 1 THEN 3
        WHEN 2 THEN 4
        WHEN 3 THEN 5
    END
WHERE id IN (1,2,3)
</pre>

Post Original: <a target="_blank" href="http://net.tutsplus.com/tutorials/other/top-20-mysql-best-practices/">Nettuts+</a><p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/top-10-librerias-graficos-php/" title="Top 10 librerías para gráficos en php">Top 10 librerías para gráficos en php</a></li><li class="rltpost"><a href="http://craftyman.net/5-librerias-para-generar-pdf-con-php/" title="5 librerías para generar PDF con PHP">5 librerías para generar PDF con PHP</a></li><li class="rltpost"><a href="http://craftyman.net/mvc-en-php/" title="Tutorial MVC con PHP">Tutorial MVC con PHP</a></li><li class="rltpost"><a href="http://craftyman.net/tabs-css-simples-con-jquery/" title="Tabs CSS simples con jQuery">Tabs CSS simples con jQuery</a></li><li class="rltpost"><a href="http://craftyman.net/mostrar-archivos-ocultos-en-mac/" title="Mostrar archivos ocultos en Mac">Mostrar archivos ocultos en Mac</a></li><li class="rltpost"><a href="http://craftyman.net/20-plantillas-css-gratuitas/" title="20 Plantillas CSS Gratuitas">20 Plantillas CSS Gratuitas</a></li><li class="rltpost"><a href="http://craftyman.net/el-mejor-ide-para-php/" title="El mejor IDE para PHP">El mejor IDE para PHP</a></li><li class="rltpost"><a href="http://craftyman.net/10-excelentes-plugins-jquery-para-formularios/" title="10 Excelentes plugins jQuery para formularios">10 Excelentes plugins jQuery para formularios</a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/10-consejos-sql-para-acelerar-tu-base-de-datos/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>SQL Para Principiantes: Base de Datos</title>
		<link>http://craftyman.net/sql-para-principiantes-base-de-datos/</link>
		<comments>http://craftyman.net/sql-para-principiantes-base-de-datos/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 20:07:51 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Para Principiantes]]></category>

		<guid isPermaLink="false">http://craftyman.net/?p=1043</guid>
		<description><![CDATA[Siguiendo con los tutoriales de SQL basico, esta vez trataremos funciones y opciones que tenemos para trabajar con bases de datos.

<h3>CREATE DATABASE: Creando una Base de datos:</h3>

<div style="text-align:center"><img src="http://craftyman.net/wp-content/images/mysqlbeg21.jpg" /></div>

Este script será el primero que ejecutemos, ya que crea la base de datos, para esto debemos pasar como parámetro el nombre que asignaremos a nuestra BD.

<pre name="code" class="sql">
CREATE DATABASE DB_DEMO;
</pre>

Mostrándolo en la consola de comandos, si no tuvimos ningún error al momento de ejecutarlo, los errores comunes que debemos evitar son:

- Olvidar colocar el signo <em>"punto y coma" (;)</em> al final de una consulta.
- Crear una BD ya existente.
- Poner comillas al nombre de la BD.

Tomando en cuenta esto, nos debería salir un mensaje: <strong>"Query OK, 1 row affected"</strong> que nos dice que la consulta se ejecuto normalmente.

<div class="note"><strong>Nota:</strong> &nbsp;Las consultas SQL son <em>"case insensitive"</em>, quiere decir que sí codificamos en minúsculas o mayúsculas es igual.
</div>
<p>&nbsp;</p>
<h3>Character Set and Collation: Elegir el tipo de codificación</h3>

Esta opción que brinda no solo MySQL, no permite elegir el tipo de codificación de los datos a ingresar.

<pre name="code" class="SQL">
CREATE DATABASE my_first_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
</pre>

Para detallar sobre este tema, pueden leer más en <a target="_blank" href="http://dev.mysql.com/doc/refman/5.1/en/charset-general.html">Character Sets and Collations in General</a> del sitio oficial de MySQL. 
<p>&nbsp;</p>

<h3>SHOW DATABASES: Listando las bases de datos.</h3>

<div style="text-align:center"><img src="http://craftyman.net/wp-content/images/mysqlbeg22.jpg" /></div>

Este script nos ayudara a listar todas las bases de datos creadas hasta el momento,

<pre name="code" class="SQL">
SHOW DATABASES
</pre>
<p>&nbsp;</p>

<h3>DROP DATABASE: Eliminando bases de datos.</h3>

<div style="text-align:center"><img src="http://craftyman.net/wp-content/images/mysqlbeg23.jpg" /></div>

Esta opción se debe utilizar con mucho cuidado, previamente siempre es mejor realizar un backup, ya si al ejecutarlo no habrá vuelta atrás.

<pre name="code" class="SQL">
DROP DATABASE DB_DEMO;
</pre>
<p>&nbsp;</p>

<h3>USE: Seleccionando una base de datos</h3>

<div style="text-align:center"><img src="http://craftyman.net/wp-content/images/mysqlbeg24.jpg" /></div>

Esta secuencia SQL nos cambia de bases de datos para poder utilizarla y crear tablas (no requiere el "punto y coma al final").

<pre name="code" class="SQL">
USE DB_DEMO
</pre><p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/sql-para-principiantes-introduccion/" title="SQL Para Principiantes: Introducción">SQL Para Principiantes: Introducción</a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/sql-para-principiantes-base-de-datos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SQL Para Principiantes: Introducción</title>
		<link>http://craftyman.net/sql-para-principiantes-introduccion/</link>
		<comments>http://craftyman.net/sql-para-principiantes-introduccion/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 14:15:17 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[SQL Para Principiantes]]></category>

		<guid isPermaLink="false">http://craftyman.net/?p=1042</guid>
		<description><![CDATA[SQL <em>(Structured Query Language)</em> es un lenguaje diseñado trabajar con Sistemas de Administración de bases de datos relacionales <em>(RDBMS)</em>, entre estos tenemos los siguientes: <em>MySQL, SQL Server, Postgress, Oracle, Sqlite</em>.

Este tutorial esta dirigido a usuarios con conocimientos básicos sobre SQL, aquí trataremos temas como: <em>instalar el servidor de base de datos SQL, conceptos, consultas más usadas, como obtener registros de la base de datos, crear tablas y bases de datos, insertar, modificar y eliminar registros, entre otras rutinas mas usadas en SQL</em>.

<div style="text-align:center"><img src="http://craftyman.net/wp-content/images/mysqltools.jpg" /></div>

<h3>Qué necesitamos para empezar?</h3>

Para este tutorial utilizaremos MySQL, por ser muy ligero y de código abierto, para poder instalar el paquete completo utilizaremos XAMPP, si utilizamos Linux o Mac hay alternativas.

Este tutorial: <a target="_blank" href="http://craftyman.net/xampp/">Instalando XAMPP</a>, te enseñara paso a paso la instalación para los diferentes tipos de sistemas operativos.

<h3>Empecemos</h3>

Para conectarnos por consola, tendremos que setear en el path a MySQL, este ejemplo es para Windows:
Haciendo click derecho en MiPC:

<em>&gt; Propiedades &gt; Opciones Avanzadas &gt; Variables de entorno</em>

<div style="text-align:center"><img src="http://craftyman.net/wp-content/images/mysqlbeg1.jpg" /></div>

Ahora abriremos la consola de comandos y escribiremos lo siguiente:

<pre name="code" class="sql">
mysql -u [usuario] -p [clave]
</pre>

Este script nos conectara al servidor MySQL, tenemos que especificar el usuario y clave, si han instalado el paquete XAMPP, el usuario por defecto es <strong>root</strong> sin clave.

<div style="text-align:center"><img src="http://craftyman.net/wp-content/images/mysqlbeg2.jpg" /></div>

Para una mejor ayuda, podemos instalarnos herramientas para la mejor administración, esta herramientas las podemos comparar en este post: <a target="_blank" href="http://craftyman.net/excelentes-herramientas-libres-para-mysql/">Herramientas para MySQL</a> 



En el próximo tutorial trataremos los temas de Creación de Bases de datos.
<p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/sql-para-principiantes-base-de-datos/" title="SQL Para Principiantes: Base de Datos">SQL Para Principiantes: Base de Datos</a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/sql-para-principiantes-introduccion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Excelentes herramientas libres para MySQL</title>
		<link>http://craftyman.net/excelentes-herramientas-libres-para-mysql/</link>
		<comments>http://craftyman.net/excelentes-herramientas-libres-para-mysql/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 13:32:27 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Herramientas MySQL]]></category>
		<category><![CDATA[MySQL GUI Tools]]></category>
		<category><![CDATA[PHPMyAdmin]]></category>
		<category><![CDATA[SQLyog]]></category>

		<guid isPermaLink="false">http://craftyman.net/?p=1031</guid>
		<description><![CDATA[Si estamos desarrollando aplicaciones ya sean para escritorio o para Web y estamos utilizando como motor de base de datos a <strong>MySQL</strong> es ideal que tengamos algunas herramientas para mejorar y agilizar la etapa de modelamiento de base de datos, implementación y administración.

Estas excelentes herramientas para MySQL que nos trae <a target="_blank" href="http://www.w3avenue.com/2009/12/03/free-tools-for-mysql-design-and-administration/">W3Avenue </a>, nos ayudaran a tener una mejor calidad de trabajo en lo que respecta bases de datos, esta lista muestra aplicaciones de escritorio y Web, también por tipos de sistemas operativos.


<h3>Aplicaciones multiplataforma</h3>

<div style="text-align:center"><img src="http://craftyman.net/wp-content/images/mysqltools-1.jpg" /></div>
<p>&nbsp;</p>
<strong>MySQL GUI Tools</strong>

Este programa nos trae herramientas para la administración, ejecución de consultas SQL, y herramientas para migración.

<a class="download" href="http://dev.mysql.com/downloads/gui-tools/" target="_blank">Descargar</a>
<p>&nbsp;</p>
<strong>MySQL Workbench</strong>

Es un modelador de base de datos, puedes armar gráficamente tu estructura y te generara automáticamente el script necesario para la creación.

<a class="download" href="http://wb.mysql.com/" target="_blank">Descargar</a>
<p>&nbsp;</p>
<strong>MySQL Control Center</strong>

Es un programa para la creación y administración de bases de datos MySQL, permite múltiples conexiones a servidores de bases de datos MySQL.

<a class="download" href="http://sourceforge.net/projects/mysqlcc/" target="_blank">Descargar</a>
<p>&nbsp;</p>

<h3>Aplicaciones para Mac Os X</h3>

<div style="text-align:center"><img src="http://craftyman.net/wp-content/images/mysqltools-2.jpg" /></div>
<p>&nbsp;</p>
<strong>Sequel Pro</strong>

Es un administrador de base de datos MySQL muy rápido, permite conexiones locales y remotas.

<a class="download" href="http://www.sequelpro.com/" target="_blank">Descargar</a>
<p>&nbsp;</p>
<strong>yourSQL</strong>

Esta aplicación es un administrador y editor de MySQL muy fácil de usar, excelente para usuarios principiantes como para avanzados.

<a class="download" href="http://yoursql.ludit.it/" target="_blank">Descargar</a>
<p>&nbsp;</p>

<h3>Aplicaciones para Windows</h3>

<div style="text-align:center"><img src="http://craftyman.net/wp-content/images/mysqltools-3.jpg" /></div>
<p>&nbsp;</p>

<strong>SQLyog</strong>
Es una aplicación de escritorio para la administración, ejecución de consultas SQL, backups, restores y otras opciones para mejorar el trabajo con MySQL.

<a class="download" href="http://webyog.com/en/downloads.php#sqlyog" target="_blank">Descargar</a>
<p>&nbsp;</p>

<strong>HeidiSQL</strong>

cliente para la administración de base datos MySQL, permite sincronizar datos entre 2 base de datos, manejar privilegios de usuario, importar y exportar data, puedes correr el programa en Linux con Wine

<a class="download" href="http://www.heidisql.com/" target="_blank">Descargar HeidiSQL</a>&nbsp;|&nbsp;<a class="download" href="http://www.winehq.org/" target="_blank">Descargar Wine</a>

<p>&nbsp;</p>

<strong>Toad for MySQL</strong>

Es una herramienta para el desarrollo de base de datos y la administración de ellas, permite diseñar base de datos, administrarla, generar reportes y consultas SQL.

<a class="download" href="http://www.toadsoft.com/toadmysql/Overview.htm" target="_blank">Descargar</a>
<p>&nbsp;</p>

<strong>MyDB Studio</strong>

Esta es una poderosa herramienta para la administración de un servidor de base de datos MySQL. soporta conexión SSH para mayor seguridad.

<a class="download" href="http://www.mydb-studio.com/" target="_blank">Descargar</a>
<p>&nbsp;</p>

<h3>Basados en Web</h3>

<div style="text-align:center"><img src="http://craftyman.net/wp-content/images/mysqltools-4.jpg" /></div>
<p>&nbsp;</p>

<strong>phpMyAdmin</strong>

El más popular administrador Web para MySQL, esta herramienta esta en PHP y viene por defecto en las instalaciones XAMMP, su funcionalidad es muy buena y rápida, tiene características como: <em>realizar consultas SQL, Backups, administración de BD, entre otras</em>.

<a class="download" href="http://www.phpmyadmin.net/home_page/index.php" target="_blank">Descargar</a>
<p>&nbsp;</p>

<strong>AeroSQL</strong>

Es una aplicación Web para la administración de Base de datos MySQL escrita en PHP, entre sus principales características esta que su interfaz esta hecha en <a target="_blank" href="http://www.extjs.com/">Ext.JS</a>.

<a class="download" href="http://www.burlaca.com/aerosql/" target="_blank">Descargar</a>
<p>&nbsp;</p>

<p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/top-10-librerias-graficos-php/" title="Top 10 librerías para gráficos en php">Top 10 librerías para gráficos en php</a></li><li class="rltpost"><a href="http://craftyman.net/5-librerias-para-generar-pdf-con-php/" title="5 librerías para generar PDF con PHP">5 librerías para generar PDF con PHP</a></li><li class="rltpost"><a href="http://craftyman.net/mvc-en-php/" title="Tutorial MVC con PHP">Tutorial MVC con PHP</a></li><li class="rltpost"><a href="http://craftyman.net/tabs-css-simples-con-jquery/" title="Tabs CSS simples con jQuery">Tabs CSS simples con jQuery</a></li><li class="rltpost"><a href="http://craftyman.net/mostrar-archivos-ocultos-en-mac/" title="Mostrar archivos ocultos en Mac">Mostrar archivos ocultos en Mac</a></li><li class="rltpost"><a href="http://craftyman.net/20-plantillas-css-gratuitas/" title="20 Plantillas CSS Gratuitas">20 Plantillas CSS Gratuitas</a></li><li class="rltpost"><a href="http://craftyman.net/el-mejor-ide-para-php/" title="El mejor IDE para PHP">El mejor IDE para PHP</a></li><li class="rltpost"><a href="http://craftyman.net/10-excelentes-plugins-jquery-para-formularios/" title="10 Excelentes plugins jQuery para formularios">10 Excelentes plugins jQuery para formularios</a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/excelentes-herramientas-libres-para-mysql/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Acortador de URL con PHP y MySQL</title>
		<link>http://craftyman.net/acortador-de-url-con-php-y-mysql/</link>
		<comments>http://craftyman.net/acortador-de-url-con-php-y-mysql/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 13:30:31 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[htaccess]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Acortar URL]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Short URL]]></category>

		<guid isPermaLink="false">http://craftyman.net/?p=989</guid>
		<description><![CDATA[Este tutorial esta pensado en realizar paso a paso la instalación e implementación de un acortador de URL propio, escrito en PHP y MySQL.

<a href="http://briancray.com/" target="_blank">Brien Cray</a> es el creador de este script <em><a href="http://briancray.com/2009/08/26/free-php-url-shortener-script/" target="_blank">(PHP URL SHORTENER)</a></em> con ayuda de otros colaboradores nos brinda esta fenomenal aplicación en PHP para tener nuestro propio acortador de URL, la cual dispongo a ustedes en un tutorial de instalación e implementación.

<h3>Estas son las características del script</h3>

<ul>
	<li>Generar más de 42 mil millones de url con 5 caracteres.</li>
	<li>Utilización mínima de recursos de servidor ya que cuenta con un sistema de cache.</li>
	<li>Limitar accesos por IP para un uso personal y prevenir abusos de terceros.</li>
	<li>Comprueba direcciones reales antes de acortarlo.</li>
	<li>Utiliza redireccionamientos 301 para SEO y análisis yumminess.</li>
</ul>

<h3>Instalación</h3>

<strong>1. Primero asegurarnos de que nuestro servidor cuente con los siguientes requisitos:</strong>

Tener instalado Apache, PHP y MySQL.
<div style="text-align:center"><img src="http://craftyman.net/wp-content/images/shorturl-1.jpg" alt="" /></div>

<strong>2. Descargar el script <em>PHP URL SHORTENER</em>.</strong>

<a class="download" href="http://briancray.com/files/shortener.zip" target="_blank">Descargar</a>

<strong>3. Subir el contenido de la carpeta a tu servidor Web.</strong>

<div style="text-align:center"><img src="http://craftyman.net/wp-content/images/shorturl-2.jpg" alt="" /></div>

<strong>4. Modifica el archivo <em>config.php</em> con los verdaderos accesos a tu BD.</strong>

<pre name="code" class="php">
// db options
define('DB_NAME', 'your db name');
define('DB_USER', 'your db usernae');
define('DB_PASSWORD', 'your db password');
define('DB_HOST', 'localhost');
define('DB_TABLE', 'shortenedurls');
</pre>

<strong>5. Correr el script <em>shortenedurls.sql</em> en tu BD MySQL.</strong>

<pre name="code" class="sql">CREATE TABLE `shortenedurls` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `long_url` varchar(255) NOT NULL,
  `created` int(10) unsigned NOT NULL,
  `creator` char(15) NOT NULL,
  `referrals` int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `long` (`long_url`),
  KEY `referrals` (`referrals`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
</pre>

<strong>7. Modifica el archivo <em>rename.htaccess</em> a <em>.htaccess</em> para que funcione.</strong>

<pre name="code" class="php">
php_flag register_globals off
php_flag magic_quotes_gpc off
php_value display_errors 0

FileETag none
ServerSignature Off

Options All -Indexes

RewriteEngine On
RewriteRule ^shorten/(.*)$ shorten.php?longurl=$1 [L]
RewriteRule ^([0-9a-zA-Z]{1,6})$ redirect.php?url=$1 [L]
</pre>

<strong>6. Para utilizar el sistema de cache, deberá crear una carpeta <em>"/cache"</em> con permisos <em>777</em>.</strong>

<div style="text-align:center"><img src="http://craftyman.net/wp-content/images/shorturl-3.jpg" alt="" /></div>

<h3>Utilizando el acortador en cualquier Web.</h3>

Para poder acortar automáticamente la pagina Web actual, deberás incluir este script que te devolverá una url acortada.

<pre name="code" class="php">
$script = 'http://yourdomain.com/shorten.php?longurl=';
$url_real = urlencode('http://'.$_SERVER['HTTP_HOST'].'/'.$_SERVER['REQUEST_URI']);

$shorturl = file_get_contents($script.$url_real);
</pre>

Ahora podemos publicar en internet ya sea en Twitter, Facebook, entre otras redes sociales una url corta con nuestro propio dominio.

[poll id="5"]<p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/xampp/" title="XAMPP">XAMPP</a></li><li class="rltpost"><a href="http://craftyman.net/crear-virtual-host-apache/" title="Crear un Virtual Host en Apache">Crear un Virtual Host en Apache</a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/acortador-de-url-con-php-y-mysql/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Cache de páginas con PHP</title>
		<link>http://craftyman.net/cache-de-paginas-con-php/</link>
		<comments>http://craftyman.net/cache-de-paginas-con-php/#comments</comments>
		<pubDate>Sat, 19 Sep 2009 04:09:47 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[cache con php]]></category>
		<category><![CDATA[tutoriales php]]></category>

		<guid isPermaLink="false">http://craftyman.net/?p=848</guid>
		<description><![CDATA[Para muchos sitios Web que utilizan la potencia de <em>PHP</em>, <em>MySQL</em> o alguna otra base de datos, siempre que carga una página realizan consultas a la DB y su debido procesamiento con el lenguaje de programación, en este caso PHP.

Para las páginas con poco cambio de contenidos como blogs por ejemplo, difícilmente editaríamos un Post cada rato, seria de gran utilidad y rendimiento ponerle cache.

<strong>Ejemplo de petición</strong>

<div style="text-align:center"><img src="http://craftyman.net/wp-content/images/phpcache_1.jpg" /></div>

Este grafico nos muestra como se realiza todo el proceso para mostrar el contenido al usuario que esta realizando una petición mediante Internet:

<ul>
<li>Primero se conecta a la base de datos.</li>
<li>Luego procesa las noticias para mostrarlas</li>
<li>Finalmente lee una plantilla para reemplazar variables y mostrar las noticia.</li>
</ul>

Para optimizar la rapidez de respuesta del servidor al usuario, se arma el cache con la ultima consulta que realizo el usuario, de este modo se obviarían los pasos que mencionamos anteriormente.

<strong>Este grafico muestra el proceso que se realizaría si la página tuviera u archivo cache.</strong>

<div style="text-align:center"><img src="http://craftyman.net/wp-content/images/phpcache_2.jpg" /></div>

Este script realiza esta función de guardar en cache toda la respuesta en html, para esto se debió crear una carpeta <em>"cache/"</em> con permisos de escritura, donde se almacenaran los archivos.

<pre name="code" class="php">
// iniciar el buffer de salida
ob_start();

//Aqui pones tu codigo HTML y PHP

$cachefile = "cache/home.html";
$fp = fopen($cachefile, 'w'); 
fwrite($fp, ob_get_contents()); 
fclose($fp); 
ob_end_flush(); 
</pre>

Esta función nos guardara el archivo, ahora debemos tener un script que compruebe que existe cache para evitar la interacción con la DB.

<pre name="code" class="php">
$cachefile = "cache/home.html";

if (file_exists($cachefile)) {
	include($cachefile); 
	exit;
}
</pre>

<strong>Agregar un tiempo de expiración para las páginas cache.</strong>

No es recomendable dejar una pagina con cache de por vida, para esto tenemos que darle un tiempo determinado y que renueve su información con datos más actuales.

<pre name="code" class="php">
$cachetime = 5 * 60; 

if (file_exists($cachefile) && 
   (time() - $cachetime < filemtime($cachefile))) 
{
      	include($cachefile);
       	echo "<!-- From cache generated ".date('H:i',filemtime($cachefile))." -->n";
       	exit;
}
</pre>

Esta seria la forma en que podría quedar el proceso para armar y consultar una pagina cache.

<pre name="code" class="php">
$cachefile = "cache/".$reqfilename.".html";
$cachetime = 5 * 60; // 5 minutes

if (file_exists($cachefile) && (time() - $cachetime
< filemtime($cachefile))) 
{
    include($cachefile);
    echo "<!-- Cached ".date('jS F Y H:i', filemtime($cachefile))." -->n";
    exit;
}
ob_start();

//.. Your usual PHP script and HTML here ...

$fp = fopen($cachefile, 'w'); 

fwrite($fp, ob_get_contents());
fclose($fp); 
ob_end_flush(); 
</pre>

<strong>Original de:</strong> <a href="http://www.theukwebdesigncompany.com/articles/php-caching.php">The UK Web Design Company</a><p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/errores-con-php-enviarlos-email/" title="Detectar errores con PHP y enviarlos por Email">Detectar errores con PHP y enviarlos por Email</a></li><li class="rltpost"><a href="http://craftyman.net/video-mejorando-el-rendimiento-en-php/" title="Video: Mejorando el Rendimiento en PHP">Video: Mejorando el Rendimiento en PHP</a></li><li class="rltpost"><a href="http://craftyman.net/forzar-descarga-de-archivos-con-php/" title="Forzar descarga de archivos con PHP">Forzar descarga de archivos con PHP</a></li><li class="rltpost"><a href="http://craftyman.net/captcha-con-php/" title="Captcha con PHP">Captcha con PHP</a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/cache-de-paginas-con-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Deshabilitar las revisiones de entradas en WordPress</title>
		<link>http://craftyman.net/deshabilitar-las-revisiones-de-entradas-en-wordpress/</link>
		<comments>http://craftyman.net/deshabilitar-las-revisiones-de-entradas-en-wordpress/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 18:37:43 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[Desarrollo Web]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://craftyman.net/?p=659</guid>
		<description><![CDATA[La revisión de entradas en Wordpress genera por cada cambio un nuevo registro en nuestra base de datos, esto realmente solo sirve cuando hay varios usuarios manejando contenidos del blog, pero cuando esto no se da hace que nos llenemos de registros totalmente innecesarios.

<div style="text-align:center"><img src="http://craftyman.net/wp-content/images/wp_1.png" /></div>

Para deshabilitar esta funcionalidad en WordPress solo bastara con encontrar el archivo <strong>wp-config.php</strong> en la carpeta inicial de tu instalación WordPRess y agregar al final este código:

<pre name="code" class="php">define('WP_POST_REVISIONS', false);</pre>


Si nuestro blog cuenta ya con varias entradas y queremos borrar las filas en nuestra tabla, podemos ejecutar la siguiente consulta en la base de datos <em>(por ejemplo desde phpMyAdmin)</em>.

<pre name="code" class="sql">DELETE FROM wp_posts WHERE post_type = "revision";</pre>

Este script SQL nos borrara todos los registros de la tabla "wp_posts" que tengan el campo "post_type" con el valor "revision", WordPress pone por defecto este valor a los post revisados

Fuente: <a target="_blank" href="http://wpthoughts.com/2009/01/post-revisions/">WP Thoughts</a>

<p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/top-10-librerias-graficos-php/" title="Top 10 librerías para gráficos en php">Top 10 librerías para gráficos en php</a></li><li class="rltpost"><a href="http://craftyman.net/5-librerias-para-generar-pdf-con-php/" title="5 librerías para generar PDF con PHP">5 librerías para generar PDF con PHP</a></li><li class="rltpost"><a href="http://craftyman.net/mvc-en-php/" title="Tutorial MVC con PHP">Tutorial MVC con PHP</a></li><li class="rltpost"><a href="http://craftyman.net/tabs-css-simples-con-jquery/" title="Tabs CSS simples con jQuery">Tabs CSS simples con jQuery</a></li><li class="rltpost"><a href="http://craftyman.net/mostrar-archivos-ocultos-en-mac/" title="Mostrar archivos ocultos en Mac">Mostrar archivos ocultos en Mac</a></li><li class="rltpost"><a href="http://craftyman.net/20-plantillas-css-gratuitas/" title="20 Plantillas CSS Gratuitas">20 Plantillas CSS Gratuitas</a></li><li class="rltpost"><a href="http://craftyman.net/el-mejor-ide-para-php/" title="El mejor IDE para PHP">El mejor IDE para PHP</a></li><li class="rltpost"><a href="http://craftyman.net/10-excelentes-plugins-jquery-para-formularios/" title="10 Excelentes plugins jQuery para formularios">10 Excelentes plugins jQuery para formularios</a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/deshabilitar-las-revisiones-de-entradas-en-wordpress/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>XAMPP</title>
		<link>http://craftyman.net/xampp/</link>
		<comments>http://craftyman.net/xampp/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 14:08:57 +0000</pubDate>
		<dc:creator>craftyman</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[XAMPP]]></category>

		<guid isPermaLink="false">http://craftyman.net/?p=434</guid>
		<description><![CDATA[Muchas personas saben por su propia experiencia que no es fácil instalar un servidor web Apache,
y se hace más difícil si desea añadir <a href="http://craftyman.net/category/desarrollo-web/mysql/" title="MySQL">MySQL</a>, <a href="http://craftyman.net/category/php/" title="PHP">PHP</a> y Perl.

XAMPP es un paquete fácil de instalar la distribución Apache que contiene MySQL, PHP y Perl.
Mediante este link pueden ver que tan fácil es la instalacion.

<a href="http://www.apachefriends.org/en/xampp-windows.html#522/">Instalación con instalador</a>

Y si no quieren instalarlo, pues tienen un paquete que solo necesita descomprimirse.

<a href="http://www.apachefriends.org/en/xampp-windows.html#521">Instalación sin instalador</a>

<div><img src="http://craftyman.net/wp-content/images/xampp_2.jpg" alt="" /></div>
XAMPP 1.7.1 es la versión reciente y estas son sus principales características:
<ul>
	<li>Apache HTTPD 2.2.11 + OpenSSL 0.9.8i</li>
	<li> MySQL 5.1.33</li>
	<li> PHP 5.2.9</li>
	<li> PhpMyAdmin 3.1.3.1</li>
	<li> XAMPP paquete CLI 1.3</li>
	<li> Servidor FTP FileZilla 0.9.31</li>
	<li> Sistema de transporte de correo Mercury 4.62</li>
</ul>
<div><img src="http://craftyman.net/wp-content/images/xampp_3.jpg" alt="" /></div>
Hay varias distribuciones de XAMPP:

<strong>XAMPP para Windows</strong>
La distribución para Windows 98, NT, 2000, 2003, XP y Vista.
Esta versión contiene: Apache, MySQL, PHP + PEAR, Perl, mod_php, mod_perl, mod_ssl, OpenSSL, phpMyAdmin, Webalizer, Mercury Mail Transport System para Win32 y NetWare Systems v3.32, JpGraph, FileZilla FTP Server, mcrypt, eAccelerator, SQLite, y WEB-DAV + mod_auth_mysql.

<strong>XAMPP para Mac OS X</strong>
La distribución para Mac OS X contiene:
Apache, MySQL, PHP & PEAR, SQLite, Perl, ProFTPD, phpMyAdmin, OpenSSL, GD, Freetype2, libjpeg, libpng, zlib, Ming, Webalizer, mod_perl, eAccelerator, phpSQLiteAdmin. 

<strong>XAMPP para Linux</strong>
La distribución para sistemas Linux (probados para SuSE, RedHat, Mandrake y Debian) contiene:
Apache, MySQL, PHP & PEAR, Perl, ProFTPD, phpMyAdmin, OpenSSL, GD, Freetype2, libjpeg, libpng, gdbm, zlib, expat, Sablotron, libxml, Ming, Webalizer, pdf class, ncurses, mod_perl, FreeTDS, gettext, mcrypt, mhash, eAccelerator, SQLite e IMAP C-Client. 

XAMPP es libre, con licencia GNU General Public License y lo puedes decargar en <a href="http://www.apachefriends.org/es/xampp.html">Apache Friends</a><p>&nbsp;</p><h3  class="related_post_title">Post Relacionados</h3><ul class="related_post"><li class="rltpost"><a href="http://craftyman.net/acortador-de-url-con-php-y-mysql/" title="Acortador de URL con PHP y MySQL">Acortador de URL con PHP y MySQL</a></li><li class="rltpost"><a href="http://craftyman.net/crear-virtual-host-apache/" title="Crear un Virtual Host en Apache">Crear un Virtual Host en Apache</a></li></ul>]]></description>
		<wfw:commentRss>http://craftyman.net/xampp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

