<?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/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>mysql &#8211; Programador</title>
	<atom:link href="https://agcapa.es/category/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>https://agcapa.es</link>
	<description>Just another WordPress site</description>
	<lastBuildDate>Tue, 03 Mar 2015 12:05:26 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.7</generator>
<site xmlns="com-wordpress:feed-additions:1">130542897</site>	<item>
		<title>Cómo cambiar el password del usuario root de MySQL por terminal</title>
		<link>https://agcapa.es/como-cambiar-el-password-del-usuario-root-de-mysql-por-terminal/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 03 Mar 2015 12:05:26 +0000</pubDate>
				<category><![CDATA[mysql]]></category>
		<guid isPermaLink="false">http://agcapa.es/?p=275</guid>

					<description><![CDATA[<p>service mysql stop Esto detuvo el servicio, ahora vamos a iniciarlo pero de forma diferente, una forma que no nos pedirá password luego: mysqld_safe --skip-grant-tables &#38; Listo, ahora accedamos a la terminal de MySQL: mysql -u root Verán que no les pidió password, verán que ya entraron a la consola o terminal de MySQL y&#8230;</p>
<p>La entrada <a rel="nofollow" href="https://agcapa.es/como-cambiar-el-password-del-usuario-root-de-mysql-por-terminal/">Cómo cambiar el password del usuario root de MySQL por terminal</a> se publicó primero en <a rel="nofollow" href="https://agcapa.es">Programador</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><code>service mysql stop</code></p>
<p>Esto detuvo el servicio, ahora vamos a iniciarlo pero de forma diferente, una forma que no nos pedirá password luego:</p>
<p><code>mysqld_safe --skip-grant-tables &amp;</code></p>
<p>Listo, ahora accedamos a la terminal de MySQL:</p>
<p><code>mysql -u root</code></p>
<p>Verán que no les pidió password, verán que ya entraron a la consola o terminal de MySQL y pueden hacer lo que les plazca, procedamos a cambiar el password del root de MySQL.</p>
<p>Primero entraremos a la base de datos de MySQL como tal:</p>
<p><code>use mysql;</code></p>
<p>Luego, cambiemos el password:</p>
<p><code>update user set password=PASSWORD("ElNuevoPassword") where user='root';</code></p>
<p>Ahora refresquemos los privilegios:</p>
<p><code>flush privileges;</code></p>
<p>Y por último salimos:</p>
<p><code>quit;</code></p>
<p>Listo, ya cambiamos el password del usuario root de MySQL, ahora vamos a detener el servicio e iniciarlo como debe ser:</p>
<p><code>service mysql stop</code></p>
<p><code>service mysql start</code></p>
<p>La entrada <a rel="nofollow" href="https://agcapa.es/como-cambiar-el-password-del-usuario-root-de-mysql-por-terminal/">Cómo cambiar el password del usuario root de MySQL por terminal</a> se publicó primero en <a rel="nofollow" href="https://agcapa.es">Programador</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">275</post-id>	</item>
		<item>
		<title>MySQL: script Bash para crear un backup de todas las bases de datos</title>
		<link>https://agcapa.es/mysql-script-bash-para-crear-un-backup-de-todas-las-bases-de-datos/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 18 Dec 2014 15:54:03 +0000</pubDate>
				<category><![CDATA[mysql]]></category>
		<guid isPermaLink="false">http://agcapa.es/?p=256</guid>

					<description><![CDATA[<p>He creado un simple script Bash para hacer un backup de todas las bases de datos de un servidor MySQL en archivos diferentes. El script utiliza la herramienta mysqldump para volcar cada base de datos, en forma de código SQL, en archivos separados (un archivo para cada base). Una característica interesante, es que no requiere&#8230;</p>
<p>La entrada <a rel="nofollow" href="https://agcapa.es/mysql-script-bash-para-crear-un-backup-de-todas-las-bases-de-datos/">MySQL: script Bash para crear un backup de todas las bases de datos</a> se publicó primero en <a rel="nofollow" href="https://agcapa.es">Programador</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>He creado un simple script Bash para hacer un backup de todas las bases de datos de un servidor MySQL en archivos diferentes. El script utiliza la herramienta mysqldump para volcar cada base de datos, en forma de código SQL, en archivos separados (un archivo para cada base). Una característica interesante, es que no requiere conocer a priori los nombres de las bases de datos, sino que los obtiene automáticamente con una consulta SQL. Para que el script funcione correctamente, sólo requiere un usuario con privilegio de lectura en todas las bases de datos (generalmente un usuario para backups).</p>
<p>A continuación dejo el script, junto con una explicación de su funcionamiento.</p>
<p>La ventaja de utilizar un archivo para cada base, es que al momento de restaurar es posible hacerlo de forma selectiva. Es decir, es posible recuperar sólo la/s base/s de datos que haga/n falta, a partir de su/s volcado/s (copias de seguridad).</p>
<p>#!/bin/bash</p>
<p>myuser=admin<br />
mypass=1234</p>
<p>args=»-u»$myuser» -p»$mypass» &#8211;add-drop-database &#8211;add-locks &#8211;create-options &#8211;complete-insert &#8211;comments &#8211;disable-keys &#8211;dump-date &#8211;extended-insert &#8211;quick &#8211;routines &#8211;triggers»</p>
<p>mysql -u$myuser -p$mypass -e &#8216;show databases&#8217; | grep -Ev «(Database|information_schema)» &gt; databases.list</p>
<p>echo «Se volcarán las siguientes bases de datos:»<br />
mysql -u$myuser -p$mypass -e &#8216;select table_schema «DATABASE»,convert(sum(data_length+index_length)/1048576, decimal(6,2)) «SIZE (MB)» from information_schema.tables where table_schema!=»information_schema» group by table_schema;&#8217;<br />
CONT=1<br />
while [ $CONT -eq 1 ]<br />
do<br />
echo -n «¿Desea continuar? (S/N): »<br />
read -n 1 K<br />
[[ «$K» == «N» || «$K» == «n» ]] &amp;&amp; { echo «»; exit 0; }<br />
[[ «$K» == «S» || «$K» == «s» ]] &amp;&amp; { CONT=0; }<br />
echo «»<br />
done</p>
<p>while read DB<br />
do<br />
dump=»dump_»$DB».sql»<br />
echo -n $dump»&#8230; »<br />
mysqldump ${args} $DB &gt; $dump<br />
echo «OK.»<br />
done &lt; databases.list</p>
<p>rm databases.list</p>
<p>Tanto para consultar los nombres de las bases de datos, como para hacer los volcados, hace falta un usuario (que tenga los privilegios necesarios, es decir, acceso de lectura en todas las bases) y su contraseña. Las variables myuser y mypass almacenan usuario y contraseña (MySQL).</p>
<p>La variable args almacena todas las opciones que se le pasarán a mysqldump durante el volcado de cada base de datos:</p>
<p>&#8211;add-drop-database: agrega la sentencia «DROP DATABASE» antes de cada sentencia «CREATE DATABASE».<br />
&#8211;add-locks: encierra cada volcado de tabla con un lock (resulta en inserts más rápidos al momento de restaurar).<br />
&#8211;create-options: incluye todas las opciones específicas de MySQL en las sentencias «CREATE TABLE».<br />
&#8211;complete-insert: incluye los nombres de columnas en las sentencias «INSERT».<br />
&#8211;comments: incluye información útil como versiones de la aplicación y servidor, hostname, etc.<br />
&#8211;disable-keys: crea los índices luego de insertar todas las filas (acelera el proceso de recuperación)<br />
&#8211;dump-date: agrega la fecha de volcado.<br />
&#8211;extended-insert: realiza insert de múltiples filas en una única sentencia.<br />
&#8211;quick: útil para hacer dump de tablas grandes, recupera una fila por vez.<br />
&#8211;routines: incluir en el dump las rutinas almacenadas (stored procedures y funciones).<br />
&#8211;triggers: incluir triggers en el dump.</p>
<p>Luego de definir estas variables, obtiene los nombres de todas las bases de datos ejecutando la consulta show databases y los guarda en el archivo «databases.list».</p>
<p>A continuación, obtiene nuevamente los nombres de todas las bases de datos, junto con el tamaño en disco que ocupa cada base, para que el administrador pueda decidir proceder o abortar el volcado porque considera que no hay espacio suficiente en la ubicación actual (los archivos de volcado se guardarán en el directorio actual, desde donde se ejecuta el script).</p>
<p>En el siguiente segmento de código, espera a que el usuario presione la tecla &#8216;S&#8217; (para responder «Sí») o &#8216;N&#8217; (para responder «No»). Si el usuario presiona &#8216;N&#8217;, finaliza la ejecución del script. Si en cambio presiona &#8216;S&#8217;, procede con el volcado de cada base de datos.</p>
<p>En la última sección de código, realiza el dump de cada base de datos a partir de los nombres almacenados en el archivo «databases.list». Ejecuta mysqldump utilizando los parámetros especificados en la variable args. Al finalizar el bucle, elimina el archivo «databases.list».</p>
<p>Ya que el archivo almacena credenciales de usuario de MySQL en forma de texto plano (especialmente la contraseña), por seguridad debe ser protegido cuidadosamente. Sólo el administrador (root) debe tener permiso de lectura sobre el archivo:</p>
<p>root@debian7# chown root:root backup_all_databases.sh<br />
root@debian7# chmod 500 backup_all_databases.sh</p>
<p>Ejemplo de ejecución del script:</p>
<p>root@debian7# ./backup_all_databases.sh<br />
Se volcarán las siguientes bases de datos:<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8211;+<br />
| DATABASE | SIZE (MB) |<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8211;+<br />
| blog-linuxito_2012 | 1.59 |<br />
| joomla27-2012 | 10.32 |<br />
| joomla-bd-testing | 1.69 |<br />
| joomla-db-desarrollo | 2.27 |<br />
| managementdb | 0.41 |<br />
| mysql | 0.66 |<br />
| producciondb | 0.77 |<br />
| producciondb2 | 0.27 |<br />
| sitio-back-www-2012-10-05_full | 1137.63 |<br />
| sitio-back-www-2012-10-06_diff | 0.06 |<br />
| soft-2014 | 37.42 |<br />
| test_2009 | 0.22 |<br />
| test_pepito_www | 0.82 |<br />
| test_joomla1.1 | 0.11 |<br />
| test_joomla-6.5912 | 2.46 |<br />
| www1 | 602.71 |<br />
| www1logs | 0.23 |<br />
| www-test | 0.06 |<br />
+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8211;+<br />
¿Desea continuar? (S/N): s<br />
dump_blog-linuxito_2012.sql&#8230; OK.<br />
dump_joomla27-2012&#8230; OK.<br />
dump_joomla-bd-testing&#8230; OK.<br />
dump_joomla-db-desarrollo&#8230; OK.<br />
dump_managementdb&#8230; OK.<br />
dump_mysql&#8230; OK.<br />
dump_producciondb&#8230; OK.<br />
dump_producciondb2&#8230; OK.<br />
dump_sitio-back-www-2012-10-05_full&#8230; OK.<br />
dump_sitio-back-www-2012-10-06_diff&#8230; OK.<br />
dump_soft-2014&#8230; OK.<br />
dump_test_2009&#8230; OK.<br />
dump_test_pepito_www&#8230; OK.<br />
dump_test_joomla1.1&#8230; OK.<br />
dump_test_joomla-6.5912&#8230; OK.<br />
dump_www1&#8230; OK.<br />
dump_www1logs&#8230; OK.<br />
dump_www-test&#8230; OK.<br />
root@debian7#</p>
<p>Listado de los archivos creados en el directorio actual:</p>
<p>root@debian7# ls -lh dump_*<br />
-rw-r&#8211;r&#8211; 1 root root 1.2M Jun 26 10:26 dump_blog-linuxito_2012.sql<br />
-rw-r&#8211;r&#8211; 1 root root 7.6M Jun 26 10:26 dump_joomla27-2012.sql<br />
-rw-r&#8211;r&#8211; 1 root root 1.7M Jun 26 10:26 dump_joomla-bd-testing.sql<br />
-rw-r&#8211;r&#8211; 1 root root 2.2M Jun 26 10:26 dump_joomla-db-desarrollo.sql<br />
-rw-r&#8211;r&#8211; 1 root root 337K Jun 26 10:26 dump_managementdb.sql<br />
-rw-r&#8211;r&#8211; 1 root root 521K Jun 26 10:26 dump_mysql.sql<br />
-rw-r&#8211;r&#8211; 1 root root 587K Jun 26 10:26 dump_producciondb.sql<br />
-rw-r&#8211;r&#8211; 1 root root 78K Jun 26 10:26 dump_producciondb2.sql<br />
-rw-r&#8211;r&#8211; 1 root root 1.2G Jun 26 10:27 dump_sitio-back-www-2012-10-05_full.sql<br />
-rw-r&#8211;r&#8211; 1 root root 26K Jun 26 10:27 dump_sitio-back-www-2012-10-06_diff.sql<br />
-rw-r&#8211;r&#8211; 1 root root 26M Jun 26 10:27 dump_soft-2014.sql<br />
-rw-r&#8211;r&#8211; 1 root root 78K Jun 26 10:27 dump_test_2009.sql<br />
-rw-r&#8211;r&#8211; 1 root root 578K Jun 26 10:27 dump_test_pepito_www.sql<br />
-rw-r&#8211;r&#8211; 1 root root 76K Jun 26 10:27 dump_test_joomla1.1.sql<br />
-rw-r&#8211;r&#8211; 1 root root 2.2M Jun 26 10:27 dump_test_joomla-6.5912.sql<br />
-rw-r&#8211;r&#8211; 1 root root 623M Jun 26 10:27 dump_www1.sql<br />
-rw-r&#8211;r&#8211; 1 root root 39K Jun 26 10:27 dump_www1logs.sql<br />
-rw-r&#8211;r&#8211; 1 root root 26K Jun 26 10:27 dump_www-test.sql</p>
<p>¡Espero que sea útil!</p>
<p>La entrada <a rel="nofollow" href="https://agcapa.es/mysql-script-bash-para-crear-un-backup-de-todas-las-bases-de-datos/">MySQL: script Bash para crear un backup de todas las bases de datos</a> se publicó primero en <a rel="nofollow" href="https://agcapa.es">Programador</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">256</post-id>	</item>
		<item>
		<title>Manejando MySQL desde la linea de comandos</title>
		<link>https://agcapa.es/manejando-mysql-desde-la-linea-de-comandos/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Tue, 09 Sep 2014 07:31:13 +0000</pubDate>
				<category><![CDATA[mysql]]></category>
		<guid isPermaLink="false">http://agcapa.es/?p=242</guid>

					<description><![CDATA[<p>Conectándose a la base de datos Esta guía asume que ya tienes creada una base de datos, así como un usuario con los privilegios necesarios para hacer las operaciones que se requieren en la base de datos. Los cuatro parámetros que necesitamos para establecer una conexión a la base de datos es el host donde&#8230;</p>
<p>La entrada <a rel="nofollow" href="https://agcapa.es/manejando-mysql-desde-la-linea-de-comandos/">Manejando MySQL desde la linea de comandos</a> se publicó primero en <a rel="nofollow" href="https://agcapa.es">Programador</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3 id="jveweb_es_029_01">Conectándose a la base de datos</h3>
<p>Esta guía asume que ya tienes creada una base de datos, así como un usuario con los privilegios necesarios para hacer las operaciones que se requieren en la base de datos.</p>
<p>Los cuatro parámetros que necesitamos para establecer una conexión a la base de datos es el host donde reside la base de datos, el nombre de usuario, la contraseña y el nombre de la base de datos que vamos a manipular.</p>
<p><code class="snippet">mysql -h [host] -D [base de datos] -u [usuario] -p</code></p>
<p>Esto te pedirá la contraseña, para que no sea guardada en el historial, por ejemplo:</p>
<p><code class="snippet">mysql -h servidor.jveweb.net -D nombre_base_de_datos -u juan -p</code></p>
<p>Puedes especificar la contraseña en el comando agregando la contraseña junto a <code>-p</code>, no dejes un espacio entre <code>-p</code> y la contraseña para conectarte de esta manera, aunque no usar la contraseña en el comando es recomendable, por ejemplo:</p>
<p><code class="snippet">mysql -h servidor.jveweb.net -D nombre_base_de_datos -u juan -punacontraseña</code></p>
<p>El parámetro <code>-D</code> para especificar la base de datos a usar desde que nos conectamos también es opcional, si no lo usas puedes ver una lista de las bases de datos disponibles usando <code>show databases;</code> y seleccionar la base de datos a usar con <code>use [nombre base de datos];</code> en la linea de comandos de mysql, por ejemplo: <code>use <b>usuarios</b>;</code></p>
<p>Si funcionó, obtendremos un resultado similar a este:</p>
<pre><code class="console">Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6324623
Server version: 5.1.39-log MySQL Server

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input 
statement.

mysql&gt;</code></pre>
<p>Para terminar la sesión escribe <code>quit</code>. Si te estás conectando a una base de datos ubicada en un host externo, es recomendable el uso de <code>SSL</code> al conectarse a la base de datos, para hacer esto usa el parámetro <code>--ssl</code></p>
<h3 id="jveweb_es_029_02">Enviando peticiones al shell de MySQL</h3>
<p>Una vez que estamos en el shell de <code>MySQL</code>, podemos enviar peticiones de MySQL. Para ejecutarlas tenemos que terminarlas con un punto y coma (<code>;</code>), o con <code>\g</code>, por ejemplo:</p>
<p><code class="snippet">show tables;</code></p>
<p>La petición no es ejecutada hasta que el punto y coma es encontrado, esto nos permite escribir peticiones de <code>MySQL</code> en lineas múltiples, por ejemplo:</p>
<p><code class="snippet">show<br />
tables<br />
;</code></p>
<p>Si queremos presentar los resultados verticalmente, necesitamos terminar las peticiones con <code>\G</code> en vez de un punto y coma o <code>\g</code></p>
<h3 id="jveweb_es_029_03">Usando el editor</h3>
<p>En sistemas basados en Unix como Linux, el comando <code>edit</code> desde dentro del shell de <code>mysql</code> lanza el editor que está definido en la variable de entorno EDITOR. Cuando usamos el comando <code>edit</code>, si habíamos hecho una petición previamente, el editor será abierto con esta petición, esto es muy útil para hacer correcciones a la última petición, de otra manera solo obtendremos un editor vacío para escribir lo que necesitemos. Una vez que terminemos de editar la petición, guardamos, salimos del editor, y entonces usamos un punto y coma o <code>\g</code> para ejecutar la petición(es) que acabamos de escribir.</p>
<p>Para configurar la variable de entorno <code>EDITOR</code>, usamos <code>export</code>, en este ejemplo yo configuro <code>vim</code> ya que es mi editor preferido, pero puedes utilizar uno más fácil como <code>nano</code>. El editor por default es <code>vi</code>:</p>
<p><code class="snippet">export EDITOR=vim</code></p>
<p>Para revisar el valor de la variable de entorno <code>EDITOR</code>, podemos utilizar:</p>
<p><code class="snippet">echo $EDITOR</code></p>
<h3 id="jveweb_es_029_04">Procesando un archivo por lotes</h3>
<p>Podemos ejecutar un archivo por lotes de peticiones <code>MySQL</code> utilizando:</p>
<p><code class="snippet">mysql -u usuario -pcontraseña -h host -D nombre_base_de_datos &lt; archivo_lotes.sql</code></p>
<p>O, si estamos dentro de el shell de <code>mysql</code>, podemos usar:</p>
<p><code class="snippet">source archivo_lotes.sql</code></p>
<h3 id="jveweb_es_029_05">Peticiones MySQL para manipular tablas</h3>
<p>Quien tenga el trabajo de crear scripts y programas que interactúan con <code>MySQL</code> seguramente está familiarizado con estas peticiones, pero ya que utilizo mi propio sitio web como referencia pondré aquí algunas peticiones comunes.</p>
<p id="jveweb_es_029_06"><b>Listar tablas existentes en la base de datos</b></p>
<p><code class="snippet">show tables;</code></p>
<p id="jveweb_es_029_07"><b>Mostrar información de las tablas en la base de datos</b></p>
<p><code>show tables</code> solo nos mostrará los nombres de las tablas en la base de datos, para ver toda la información sobre las tablas, usa:</p>
<p><code class="snippet">show table status;</code></p>
<p>La información presentada sobre la tabla es:</p>
<ul>
<li>Name &#8211; El nombre de la tabla</li>
<li>Engine &#8211; Mecanismo de la tabla (MyISAM, InnoDB, Memory, CVS, etc.)</li>
<li>Version &#8211; Número de versión del archivo .frm de la tabla</li>
<li>Row_format &#8211; El formato de almacenamiento de las filas (Dinámico, Redundante, etc.)</li>
<li>Rows &#8211; Número de filas en la tabla</li>
<li>Avg_row_length &#8211; Longitud promedio de las filas</li>
<li>Data_length &#8211; Longitud del archivo de datos</li>
<li>Max_data_length &#8211; La máxima longitud del archivo de datos</li>
<li>Index_length &#8211; La longitud del archivo índice</li>
<li>Data_free &#8211; Número de bytes asignados pero no usados</li>
<li>Auto_increment &#8211; El próximo valor de auto-incremento</li>
<li>Create_time &#8211; Cuando fue creada la tabla</li>
<li>Update_time &#8211; Cuando fue actualizado el archivo de datos por última vez</li>
<li>Check_time &#8211; Cuando fue revisada la tabla por última vez</li>
<li>Collation &#8211; El set de caracteres y la colación de la tabla</li>
<li>Checksum &#8211; El checksum vivo</li>
<li>Create_options &#8211; Opciones extras utilizadas cuando fue creada la tabla</li>
<li>Comment &#8211; El comentario de la tabla</li>
</ul>
<p>Podemos especificar de que tabla queremos ver la información utilizando:</p>
<p><code class="snippet">show table status like 'nombre_de_la_tabla';</code></p>
<p>Y podemos buscar en otro campo por cierto valor, por ejemplo, para mostrar todas las tablas que usan el mecanismo de almacenamiento MyISAM, podemos utilizar:</p>
<p><code class="snippet">show table status where `Engine` like 'MyISAM';</code></p>
<p id="jveweb_es_029_08"><b>Crear una nueva tabla</b></p>
<p>Este es un ejemplo del comando para crear una tabla, agregué muchos campos diferentes para la referencia de como declararlos.</p>
<p><code class="snippet">create table `nombre_base_de_datos`.`tabla_de_prueba` (<br />
`campo_id` int( 11 ) unsigned not null auto_increment comment 'clave primaria',<br />
`campo_indice1` int( 11 ) unsigned not null comment 'un índice',<br />
`campo_indice2` int( 11 ) unsigned not null comment 'un índice',<br />
`campo_indice3` int( 11 ) unsigned not null comment 'un índice',<br />
`campo_unico1` int( 11 ) unsigned not null comment 'un campo único',<br />
`campo_unico2` int( 11 ) unsigned not null comment 'un campo único',<br />
`campo_unico3` int( 11 ) unsigned not null comment 'un campo único',<br />
`campo_varchar` varchar( 100 ) not null comment 'un campo varchar',<br />
`campo_date` date not null comment 'un campo date',<br />
`campo_datetime` datetime not null comment 'un campo datetime',<br />
`campo_float` float not null comment 'un campo float',<br />
`campo_longtext` longtext not null comment 'un campo longtext',<br />
`campo_bool` bool not null comment 'un campo bool',<br />
`campo_char` char( 1 ) not null comment 'un campo char',<br />
`campo_tinyint` tinyint not null comment 'un campo tinyint',<br />
primary key ( `campo_id` ) ,<br />
index ( `campo_indice1` , `campo_indice2`, `campo_indice3` ) ,<br />
unique ( `campo_unico1` , `campo_unico2`, `campo_unico3`)<br />
) engine = myisam character set utf8 collate utf8_general_ci comment =<br />
'comentarios de tabla';</code></p>
<p id="jveweb_es_029_09"><b>Listar los campos en una tabla</b></p>
<p><code class="snippet">show columns from `tabla_de_prueba`;</code></p>
<p id="jveweb_es_029_10"><b>Cambiar el nombre de un campo en una tabla</b></p>
<p><code class="snippet">alter table `tabla_de_prueba` change `campo_indice_1` `nuevo_nombre_campo` int(11) unsigned not null;</code></p>
<p id="jveweb_es_029_11"><b>Agregar un campo a una tabla y hacerlo un índice</b></p>
<p><code class="snippet">alter table `tabla_de_prueba` add `nuevo_campo_indice` int(11) unsigned not null, add index(`nuevo_campo_indice`);</code></p>
<p id="jveweb_es_029_12"><b>Quitar un índice de una tabla</b></p>
<p><code class="snippet">alter table `tabla_de_prueba` drop index `nuevo_campo_indice`;</code></p>
<p id="jveweb_es_029_13"><b>Quitar un campo de una tabla</b></p>
<p><code class="snippet">alter table `tabla_de_prueba` drop `nuevo_campo_indice`;</code></p>
<p id="jveweb_es_029_14"><b>Agregar campos después de un campo especificado</b></p>
<p><code class="snippet">alter table `tabla_de_prueba` add `a_borrar` varchar(12) not null after `campo_date`;</code></p>
<p id="jveweb_es_029_15"><b>Agregar campos al comienzo de la tabla</b></p>
<p><code class="snippet">alter table `tabla_de_prueba` add `a_borrar_2` varchar(12) not null first;</code></p>
<p id="jveweb_es_029_16"><b>Agregar múltiples campos a la tabla</b></p>
<p><code class="snippet">alter table `tabla_de_prueba` add `a_borrar_3` varchar(12) not null after `a_borrar`, add `a_borrar_4` varchar(12) not null after `a_borrar_3`;</code></p>
<p id="jveweb_es_029_17"><b>Borrar campos en una tabla</b></p>
<p><code class="snippet">alter table `tabla_de_prueba` drop `a_borrar`, drop `a_borrar_2`, drop `a_borrar_3`, drop `a_borrar_4`; </code></p>
<p id="jveweb_es_029_18"><b>Renombrar una tabla</b></p>
<p><code class="snippet">rename table `nombre_base_de_datos`.`nombre_original` to `nombre_base_de_datos`.`nuevo_nombre`;</code></p>
<p id="jveweb_es_029_19"><b>Cambiar el comentario de una tabla</b></p>
<p><code class="snippet">alter table `tabla_de_prueba` comment='Los comentarios';</code></p>
<p id="jveweb_es_029_20"><b>Cambiar el valor de auto incremento de una tabla</b></p>
<p><code class="snippet">alter table `tabla_de_prueba` auto_increment=3;</code></p>
<p id="jveweb_es_029_21"><b>Reparar una tabla</b></p>
<p><code class="snippet">repair table `tabla_de_prueba`;</code></p>
<p id="jveweb_es_029_22"><b>Optimizar una tabla</b></p>
<p><code class="snippet">optimize table `tabla_de_prueba`;</code></p>
<p id="jveweb_es_029_23"><b>Borrar todos los registros en una tabla</b></p>
<p><code class="snippet">truncate table `tabla_de_prueba`;</code></p>
<p id="jveweb_es_029_24"><b>Borrar una tabla</b></p>
<p><code class="snippet">drop table `tabla_de_prueba`;</code></p>
<h3 id="jveweb_es_029_25">Peticiones MySQL para manipular registros en una tabla</h3>
<p>Voy a utilizar las siguientes dos tablas ficticias para los ejemplos que voy a estar utilizando referentes a la manipulación de registros.</p>
<table summary="Esta es una tabla de ejemplo que contiene estados" cellspacing="0" cellpadding="0">
<caption>Tabla de estados (estados)</caption>
<tbody>
<tr>
<th>estado_id</th>
<th>estado_nombre</th>
</tr>
<tr>
<td>1</td>
<td>Jalisco</td>
</tr>
<tr>
<td>2</td>
<td>Guanajuato</td>
</tr>
<tr>
<td>3</td>
<td>Hidalgo</td>
</tr>
</tbody>
</table>
<table summary="Esta es una tabla de ejemplo que contiene ciudades" cellspacing="0" cellpadding="0">
<caption>Tabla de ciudades (ciudades)</caption>
<tbody>
<tr>
<th>ciudad_id</th>
<th>ciudad_nombre</th>
<th>ciudad_poblacion</th>
<th>estado_id</th>
</tr>
<tr>
<td>1</td>
<td>Guadalajara</td>
<td>1494134</td>
<td>1</td>
</tr>
<tr>
<td>2</td>
<td>Tequila</td>
<td>33155</td>
<td>1</td>
</tr>
<tr>
<td>3</td>
<td>Zapopan</td>
<td>1243538</td>
<td>1</td>
</tr>
<tr>
<td>4</td>
<td>Tonalá</td>
<td>408729</td>
<td>1</td>
</tr>
<tr>
<td>5</td>
<td>Tlaquepaque</td>
<td>563006</td>
<td>1</td>
</tr>
<tr>
<td>6</td>
<td>Guanajuato</td>
<td>171709</td>
<td>2</td>
</tr>
<tr>
<td>7</td>
<td>Celaya</td>
<td>468064</td>
<td>2</td>
</tr>
<tr>
<td>8</td>
<td>León</td>
<td>1436733</td>
<td>2</td>
</tr>
<tr>
<td>9</td>
<td>Pachuca</td>
<td>275578</td>
<td>3</td>
</tr>
<tr>
<td>10</td>
<td>Tizayuca</td>
<td>100562</td>
<td>3</td>
</tr>
</tbody>
</table>
<p id="jveweb_es_029_26"><b>Mostrar los registros de una tabla</b></p>
<p><code class="snippet">select [campos] from `tabla_nombre` [where condiciones] [order by orden1 asc/desc,orden2 asc/desc] [limit inicio,limite];</p>
<p>select [x.campo,y.campo] from `tabla1` x, `tabla2` y where y.`id`=x.`indice` [condiciones extras] [order by x.campo,y.campo] [limit inicio,limite];</code></p>
<p>El número de combinaciones que podemos hacer con el comando <code>select</code> es enorme, así que trataré de cubrir algunos usos comunes en los siguientes ejemplos. Los campos que usamos siguiendo el <code>select</code> son los campos que serán mostrados, y el orden en que los especificamos es el orden en el que serán mostrados. Después de esto especificamos la tabla o tablas donde estamos buscando.</p>
<p>Definiendo el <code>where</code> podemos especificar múltiples condiciones separadas por espacios. Si estamos utilizando más de una tabla en la búsqueda, necesitamos hacer una comparación de igual entre los campos que ligan ambas tablas. Los últimos ejemplos son sobre hacer estas peticiones en más de una tabla.</p>
<p>Las condiciones pueden ser dadas con operadores de comparación, como <code>=</code>, <code>&lt;</code>, <code>&gt;</code>, <code>&lt;=</code>, <code>&gt;=</code>, <code>&lt;&gt;</code> or <code>!=</code>. La expresión <code>LIKE</code> nos permite hacer comparaciones simple de patrones, podemos utilizar <code>%</code> como carácter comodín. <code>between ... and ...</code> nos permite especificar un rango de valores. Y podemos especificar más de una condición utilizando los operadores lógicos <code>AND</code> o <code>&amp;&amp;</code>, <code>OR</code> o <code>||</code>, <code>NOT</code> o <code>!</code>, o <code>XOR</code>.</p>
<p>Podemos ordenar el resultado utilizando <code>order by</code> y especificando el campo que queremos utilizar para ordenar, y si queremos que el orden sea ascendente (<code>asc</code>) o descendente (<code>desc</code>), podemos usar más de un campo para hacer el ordenamiento, en cuyo caso el primer campo será usado primariamente para el orden, y el segundo campo será usado cuando el primer campo tenga más de una instancia.</p>
<p>Y finalmente, el valor <code>limit</code> define desde que registro comenzaremos a mostrar, y cuantos registros serán mostrados.</p>
<p>Espero que en los próximos ejemplos esto se volverá mucho más claro, toma las dos tablas como referencia para ver los resultados de cada comando.</p>
<p><code class="snippet">select * from `estados`;</code></p>
<pre><code class="console">+-----------+---------------+
| estado_id | estado_nombre |
+-----------+---------------+
|         1 | Jalisco       |
|         2 | Guanajuato    |
|         3 | Hidalgo       |
+-----------+---------------+
3 rows in set (5.14 sec)</code></pre>
<p><code class="snippet">select * from `ciudades` where `ciudad_id` = '3';</code></p>
<pre><code class="console">+-----------+---------------+------------------+-----------+
| ciudad_id | ciudad_nombre | ciudad_poblacion | estado_id |
+-----------+---------------+------------------+-----------+
|         3 | Zapopan       |          1243538 |         1 |
+-----------+---------------+------------------+-----------+
1 row in set (0.90 sec)</code></pre>
<p><code class="snippet">select `ciudad_nombre`,`ciudad_poblacion` from `ciudades` order by `ciudad_poblacion` asc;</code></p>
<pre><code class="console">+---------------+------------------+
| ciudad_nombre | ciudad_poblacion |
+---------------+------------------+
| Tequila       |            33155 |
| Tizayuca      |           100562 |
| Guanajuato    |           171709 |
| Pachuca       |           275578 |
| Tonalá        |           408729 |
| Celaya        |           468064 |
| Tlaquepaque   |           563006 |
| Zapopan       |          1243538 |
| León          |          1436733 |
| Guadalajara   |          1494134 |
+---------------+------------------+
10 rows in set (0.04 sec)</code></pre>
<p><code class="snippet">select `ciudad_nombre` from `ciudades` where `estado_id` = '2' order by `ciudad_nombre` desc;</code></p>
<pre><code class="console">+---------------+
| ciudad_nombre |
+---------------+
| León          |
| Guanajuato    |
| Celaya        |
+---------------+
3 rows in set (0.85 sec)</code></pre>
<p><code class="snippet">select * from `ciudades` limit 2,3;</code></p>
<pre><code class="console">+-----------+---------------+------------------+-----------+
| ciudad_id | ciudad_nombre | ciudad_poblacion | estado_id |
+-----------+---------------+------------------+-----------+
|         3 | Zapopan       |          1243538 |         1 |
|         4 | Tonalá        |           408729 |         1 |
|         5 | Tlaquepaque   |           563006 |         1 |
+-----------+---------------+------------------+-----------+
3 rows in set (0.06 sec)</code></pre>
<p><code class="snippet">select `ciudad_nombre` from `ciudades` where `ciudad_nombre` like 'G%';</code></p>
<pre><code class="console">+---------------+
| ciudad_nombre |
+---------------+
| Guadalajara   |
| Guanajuato    |
+---------------+
2 rows in set (0.04 sec)</code></pre>
<p><code class="snippet">select * from `ciudades` where `ciudad_poblacion` between '500000' and '1000000';</p>
<p>select * from `ciudades` where `ciudad_poblacion`&gt;='500000' and `ciudad_poblacion`&lt;='1000000';</code></p>
<pre><code class="console">+-----------+---------------+------------------+-----------+
| ciudad_id | ciudad_nombre | ciudad_poblacion | estado_id |
+-----------+---------------+------------------+-----------+
|         5 | Tlaquepaque   |           563006 |         1 |
+-----------+-------------+--------------------+-----------+
1 row in set (0.04 sec)</code></pre>
<p>Nota: Mientras que ambas peticiones regresarían los mismos registros, utilizar <code>between</code> es más rápido que utilizar dos comparaciones, así que si estás lidiando con un rango de valores, siempre utiliza <code>between</code>.</p>
<p><code class="snippet">select c.`ciudad_nombre`,s.`estado_nombre` from `estados` s, `ciudades` c where c.`estado_id`=s.`estado_id` order by c.`ciudad_nombre`;</code></p>
<pre><code class="console">+---------------+---------------+
| ciudad_nombre | estado_nombre |
+---------------+---------------+
| Celaya        | Guanajuato    |
| Guadalajara   | Jalisco       |
| Guanajuato    | Guanajuato    |
| León          | Guanajuato    |
| Pachuca       | Hidalgo       |
| Tequila       | Jalisco       |
| Tizayuca      | Hidalgo       |
| Tlaquepaque   | Jalisco       |
| Tonalá        | Jalisco       |
| Zapopan       | Jalisco       |
+---------------+---------------+
10 rows in set (0.06 sec)</code></pre>
<p><code class="snippet">select c.`ciudad_nombre`,s.`estado_nombre` from `estados` s, `ciudades` c where c.`estado_id`=s.`estado_id` and c.`ciudad_nombre` like 'G%';</code></p>
<pre><code class="console">+---------------+---------------+
| ciudad_nombre | estado_nombre |
+---------------+---------------+
| Guadalajara   | Jalisco       |
| Guanajuato    | Guanajuato    |
+---------------+---------------+
2 rows in set (0.05 sec)</code></pre>
<p><code class="snippet">select c.`ciudad_nombre`,s.`estado_nombre`,c.`ciudad_poblacion` from `estados` s,`ciudades` c where s.`estado_id`=c.`estado_id`;</code></p>
<pre><code class="console">+---------------+---------------+------------------+
| ciudad_nombre | estado_nombre | ciudad_poblacion |
+---------------+---------------+------------------+
| Guadalajara   | Jalisco       |          1494134 |
| Tequila       | Jalisco       |            33155 |
| Zapopan       | Jalisco       |          1243538 |
| Tonalá        | Jalisco       |           408729 |
| Tlaquepaque   | Jalisco       |           563006 |
| Guanajuato    | Guanajuato    |           171709 |
| Celaya        | Guanajuato    |           468064 |
| León          | Guanajuato    |          1436733 |
| Pachuca       | Hidalgo       |           275578 |
| Tizayuca      | Hidalgo       |           100562 |
+---------------+---------------+------------------+
10 rows in set (0.05 sec)</code></pre>
<p><code class="snippet">select c.`ciudad_nombre`,s.`estado_nombre`,c.`ciudad_poblacion` from `estados` s, `ciudades` c where s.`estado_id`=c.`estado_id` order by s.`estado_nombre` desc,c.`ciudad_poblacion` asc;</code></p>
<pre><code class="console">+---------------+---------------+------------------+
| ciudad_nombre | estado_nombre | ciudad_poblacion |
+---------------+---------------+------------------+
| Tequila       | Jalisco       |            33155 |
| Tonalá        | Jalisco       |           408729 |
| Tlaquepaque   | Jalisco       |           563006 |
| Zapopan       | Jalisco       |          1243538 |
| Guadalajara   | Jalisco       |          1494134 |
| Tizayuca      | Hidalgo       |           100562 |
| Pachuca       | Hidalgo       |           275578 |
| Guanajuato    | Guanajuato    |           171709 |
| Celaya        | Guanajuato    |           468064 |
| León          | Guanajuato    |          1436733 |
+---------------+---------------+------------------+
10 rows in set (0.15 sec)</code></pre>
<p id="jveweb_es_029_27"><b>Contar los registros de una tabla</b></p>
<p><code class="snippet">select count(*) from `tabla_nombre` [where condiciones];</code></p>
<p>Las condiciones son opcionales, y pueden tener el mismo formato de las condiciones que utilizamos en peticiones <code>select</code>, esto simplemente nos devuelve el número de registros, por ejemplo:</p>
<p><code class="snippet">select count(*) from `ciudades`;</code></p>
<pre><code class="console">+----------+
| count(*) |
+----------+
|       10 |
+----------+
1 row in set (0.06 sec)</code></pre>
<p id="jveweb_es_029_28"><b>Sumar los registros de una tabla</b></p>
<p><code class="snippet">select sum(`ciudad_poblacion`) from `ciudades`;</code></p>
<pre><code class="console">+-------------------------+
| sum(`ciudad_poblacion`) |
+-------------------------+
|                 6453216 |
+-------------------------+
1 row in set (0.05 sec)</code></pre>
<p id="jveweb_es_029_29"><b>Insertar un registro</b></p>
<p><code class="snippet">insert into `estados` (`estado_nombre`) values ( "Oaxaca");</p>
<p>insert into `ciudades` (`ciudad_nombre`,`ciudad_poblacion`,`estado_id`) values ('Oaxaca','258008',LAST_INSERT_ID());</code></p>
<p>En este caso agrego un nuevo estado, y una nueva ciudad, nota que en el campo estado_id estoy utilizando como valor la función LAST_INSERT_ID(), que me da el valor de la última ID que fue insertada. Si quisiera insertar más de un registro con esta ID, podemos usar la misma petición de insertar para la inserción de más de un campo. Voy a tomar la petición pasada e insertar en vez de eso tres registros:</p>
<p><code class="snippet">insert into `estados` (`estado_nombre`) values( "Oaxaca");</p>
<p>insert into `ciudades` (`ciudad_nombre`,`ciudad_poblacion`,`estado_id`) values<br />
('Oaxaca','258008',LAST_INSERT_ID()),<br />
(`Salina Cruz`,`76219`,LAST_INSERT_ID()),<br />
(`Zaragoza`,`85869`,LAST_INSERT_ID());</code></p>
<p>Otra función útil que utilizo para llenar un valor es la función <code>NOW()</code> en campos de tipo datetime, utilizo esto mucho para manejar el tiempo de creación o modificación de registros. Por ejemplo, asumiendo que tuviéramos un campo llamado tiempo_de_creacion, podríamos usar:</p>
<p><code class="snippet">insert into `estados` (`estado_nombre`,`tiempo_de_creacion`) values ('Sonora', NOW());</code></p>
<p id="jveweb_es_029_30"><b>Actualizar un registro</b></p>
<p><code class="snippet">update `ciudades` set `ciudad_nombre`='Algún nombre',`ciudad_poblacion`='1000000' where `ciudad_id`='5';</code></p>
<p>Cuando estamos actualizando un registro, necesitamos especificar que registro es el que queremos actualizar, usualmente la llave primaria es utilizada para este propósito debido a que es un valor único. Por supuesto, podemos modificar muchos registros en la misma petición si más de un registro cumple con la condición. Por ejemplo digamos que todos los registros creados el 12 de Febrero de 2010 se volverán «activos» cambiando el valor de un campo llamado <code>activo</code> de &#8216;0&#8217; a &#8216;1&#8217;, aquí está lo que haríamos:</p>
<p><code class="snippet">update `cuentas` set `activo`='1' where `fecha_de_creacion` between '2010-02-12 00:00:00' and '2010-02-12 23:59:59';</code></p>
<p id="jveweb_es_029_31"><b>Borrar un registro</b></p>
<p><code class="snippet">delete from `estados` where `estado_id`='8';</code></p>
<p>La petición <code>delete</code> es más sencilla que una petición <code>update</code> pero algo similar, todos y cada uno de los registros que cumplan la condición(es) serán borrados. Se muy cuidadoso con esta petición, si estás apuntando a registros específicos, siempre usa la llave primaria para no golpear otro registro por accidente.</p>
<h3 id="jveweb_es_029_32">Peticiones MySQL preparadas</h3>
<p>La razón por la que aprendí sobre peticiones preparadas fue debido a la seguridad que ofrecen cuando estoy utilizando <code>PHP</code> para realizar las peticiones a la base de datos en un sitio web. Sin embargo, el uso de peticiones preparadas desde la linea de comandos nos ofrece la habilidad de definir una petición una vez y entonces llamarla cuantas veces queramos, cambiando solamente el parámetro que usamos. Por ejemplo, para mostrar un registro de la tabla de ciudades, mostrando el nombre del estado en vez de estado_id, siempre tendría el mismo formato:</p>
<p><code class="snippet">select c.`ciudad_nombre`,s.`estado_nombre` from `estados` s, `ciudades` c where c.`estado_id`=s.`estado_id` and c.`ciudad_id` = ?;</code></p>
<p>En el ejemplo, estamos utilizando el ? como un apartado para la ID de el registro que queremos mostrar de esta manera. Esto es útil también cuando estamos utilizando una petición como esta desde <code>PHP</code> y necesitamos usar un valor que recibimos de alguien más. Antes de la existencia de peticiones preparadas, necesitábamos filtrar muy cuidadosamente la entrada de un usuario para poder prevenir un ataque de inyección de sql que tiene el potencial de borrar nuestra base de datos o darle acceso a una persona no autorizada. Al separar la lógica de <code>MySQL</code> de los datos evitamos este problema, ya que <code>MySQL</code> no interpreta el parámetro, simplemente lo maneja como datos. Otra ventaja es que es más rápido utilizar peticiones preparadas de <code>MySQL</code>.</p>
<p>Hasta donde se, las peticiones preparadas solo funcionan con <code>SELECT</code>, <code>INSERT</code>, <code>UPDATE</code>, <code>REPLACE</code>, <code>DELETE</code> y <code>CREATE TABLE</code>. Veamos un ejemplo utilizando la petición previa. Primero que nada, creamos la petición preparada y la nombramos <code>mostrar_ciudad</code>:</p>
<p><code class="snippet">prepare mostrar_ciudad from "select c.`ciudad_nombre`,s.`estado_nombre` from `estados` s, `ciudades` c where c.`estado_id`=s.`estado_id` and c.`ciudad_id` = ?";</code></p>
<p>Después preparamos el parámetro, llamado <code>una_ciudad</code>, en este caso:</p>
<p><code class="snippet">set @una_ciudad = "2";</code></p>
<p>Y ejecutamos la petición preparada <code>mostrar_ciudad</code> usando el parámetro <code>una_ciudad</code>:</p>
<p><code class="snippet">execute mostrar_ciudad using @una_ciudad;</code></p>
<pre><code class="console">+---------------+---------------+
| ciudad_nombre | estado_nombre |
+---------------+---------------+
| Tequila       | Jalisco       |
+---------------+---------------+
1 row in set (0.04 sec)</code></pre>
<h3 id="jveweb_es_029_33">Notas al pie</h3>
<p>Recuerda marcar como índice los campos que planeas usar frecuentemente para las búsquedas, esto hará más rápidas las peticiones a la base de datos.</p>
<p>Todos los ejemplos de uso, especialmente las peticiones preparadas al final, son en preparación para una serie de publicaciones sobre como utilizar <code>MySQL</code> desde <code>PHP</code> y <code>python</code>, ya que esos lenguajes son los que he estado utilizando más recientemente, y ash, pero esa es otra historia.</p>
<p>La entrada <a rel="nofollow" href="https://agcapa.es/manejando-mysql-desde-la-linea-de-comandos/">Manejando MySQL desde la linea de comandos</a> se publicó primero en <a rel="nofollow" href="https://agcapa.es">Programador</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">242</post-id>	</item>
		<item>
		<title>Mysql comandos basicos consola en GNU/Linux</title>
		<link>https://agcapa.es/mysql-comandos-basicos-consola-en-gnulinux/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Wed, 25 Sep 2013 14:43:06 +0000</pubDate>
				<category><![CDATA[mysql]]></category>
		<guid isPermaLink="false">http://agcapa.es/?p=151</guid>

					<description><![CDATA[<p># mysql -uusurio -ppassword mysql &#62; show databases; &#8211; Listar todas las bases de datos. drop [database]; &#8211; borrar la base de datos. create [database]; &#8211; crear la base de datos. connect [database]; &#8211; Conectarse a esa base de datos. show tables; &#8211; Listar todas las tablas de una base de datos. show table status;&#8230;</p>
<p>La entrada <a rel="nofollow" href="https://agcapa.es/mysql-comandos-basicos-consola-en-gnulinux/">Mysql comandos basicos consola en GNU/Linux</a> se publicó primero en <a rel="nofollow" href="https://agcapa.es">Programador</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p># mysql -uusurio -ppassword</p>
<p>mysql &gt;</p>
<p>show databases; &#8211; Listar todas las bases de datos.<br />
drop [database]; &#8211; borrar la base de datos.<br />
create [database]; &#8211; crear la base de datos.<br />
connect [database]; &#8211; Conectarse a esa base de datos.<br />
show tables; &#8211; Listar todas las tablas de una base de datos.<br />
show table status; &#8211; Muestra informacion sobre las tablas de la base de datos.<br />
describe [table]; &#8211; Muestra la estructura de una tabla de la base de datos.</p>
<p>Verificacion y reparacion de errores en las bases de datos Mysql :</p>
<p>check table [table]; &#8211; Verificar la tabla.<br />
repair table [table]; &#8211; Reparar la tabla rota.</p>
<p>Manejo de bases de datos Mysql :</p>
<p>drop table [table]; &#8211; Elimina la tabla, incluyendo registros y estructura.<br />
drop table if exists [table]; &#8211; Elimina la tabla de la base de datos, pero antes verifica que exista.<br />
truncate table [table]; &#8211; Elimina los registros, pero mantiene la esrtuctura de la tabla.<br />
rename table [table] to [nuevo nombre de tabla]; &#8211; Renombra una tabla de la base de datos.</p>
<p>Bases de datos Mysql en consola del sistema operativo:</p>
<p># mysqladmin -u -p create &#8211; crear base de datos.<br />
# mysqladmin -u -p drop &#8211; borrar la base de datos.<br />
# mysqladmin -u root -p proc &#8211; listar procesos en ejecucion en el servidor de bases de datos Mysql.<br />
# mysqladmin -u root -p -i 5 status &#8211; verificar status cada 5 segundos.<br />
# mysqldump &#8211;opt -u -h -p &gt; /path/to/file &#8211; Exportar base de datos a un archivo.<br />
# mysqldump &#8211;opt -u -h &#8211;all-databases -p &gt; /path/to/file &#8211; Exportar TODAS las bases de datos a un archivo.<br />
# mysql -h -u -p &lt; /path/to/file &#8211; Importar un archivo a la base de datos a mysql<br />
# mysqlcheck -o -u root -p &#8211;all-databases &#8211; Optimizar las bases de datos mysql.<br />
en GNU/Linux</p>
<pre>mysqlcheck -u root -p --auto-repair --optimize --all-databases</pre>
<p>Para saber el tamaño de las bases de datos:</p>
<p>SELECT table_schema «Data Base Name», sum( data_length + index_length ) / 1024 / 1024 «Data Base Size in MB»  FROM information_schema.TABLES GROUP BY table_schema;</p>
<p>Muchas veces en tu server MySQL vez las Dbs crecer, pero no sabes exactamente cuales son las tablas que estan aumentando su tamaño. Esta query que esta a continuación, nos muestra el tamaño de las tablas del server MySQL (de todas las dbs) ordenado como para hacer un TOP.</p>
<p>SELECT CONCAT(table_schema, &#8216;.&#8217;, table_name), CONCAT(ROUND(table_rows / 1000000, 2), &#8216;M&#8217;) rows, CONCAT(ROUND(data_length / ( 1024 * 1024 * 1024 ), 2), &#8216;G&#8217;) DATA, CONCAT(ROUND(index_length / ( 1024 * 1024 * 1024 ), 2), &#8216;G&#8217;) idx, CONCAT(ROUND(( data_length + index_length ) / ( 1024 * 1024 * 1024 ), 2), &#8216;G&#8217;) total_size, ROUND(index_length / data_length, 2) idxfrac FROM information_schema.TABLES ORDER BY data_length + index_length DESC LIMIT 20;</p>
<p>La entrada <a rel="nofollow" href="https://agcapa.es/mysql-comandos-basicos-consola-en-gnulinux/">Mysql comandos basicos consola en GNU/Linux</a> se publicó primero en <a rel="nofollow" href="https://agcapa.es">Programador</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">151</post-id>	</item>
	</channel>
</rss>
