Archivo Mensual de Agosto, 2008

Instrucciones menos habituales en MySQL (1a parte).

Utilizando la base de datos MySQL como acostumbro, constantemente estoy lidiando con las sintaxis más habituales para crear y modificar tablas, funciones, vistas y demás. No obstante, hay también por ahí un conjunto de instrucciones que alguna vez he utilizado y que solía tener que googlear porque nunca las recordaba desde la vez anterior. Hasta que me decidí a ir anotándolas, por tontas y breves que fueran. Y ahora, ya que estamos, me ha parecido buena idea compartirlas por si a alguien le sirven de algo.

Ver el código que en su día utilizamos para crear una vista.

Si por ejemplo hacemos un…

DESCRIBE tbl_tablenamex;

…sobre una tabla o una vista, nos devuelve la estructura de esa tabla o vista, con sus campos y tipos de datos y demás información básica. No obstante, en ocasiones con las vistas me interesa ver de una manera rápida con qué sintaxis exacta la creé (de dónde saqué los campos, cómo enlacé las tablas, etc.). Normalmente tengo esa información guardada en archivos de texto, ya que raramente creo una vista directamente en consola, sino que más bien suelo hacerlo a través de archivos planos. No obstante me resulta más rápido verlo directamente en la consola que tener que ir a buscar el archivo. Para ello me valgo de…

SHOW CREATE VIEW viw_viewnamexx;

…y obtengo, aunque de un modo no muy agradable de ver, la sintaxis que utilicé para crear la vista en su momento.

Reiniciar el contador autonumérico de una tabla.

A menudo utilizo campos autonuméricos en mis tablas. Aunque tienen algún inconveniente, si se utilizan únicamente a modo de campo identificador para uso fundamentalmente interno, suelen aportar mayores ventajas que inconvenientes presentan. ¿Pero cómo reiniciamos el contador autonumérico después de haber estado trasteando con la tabla? Muy fácil, en dos pasos. El primero es asegurarnos que la tabla está totalmente vacía de registros. El segundo consiste en aplicar…

ALTER TABLE tbl_tablenamex AUTO_INCREMENT = 1;

…y el contador habrá quedado convenientemente reseteado. Si queremos que se resetee pero que no comience de nuevo por el 1 sino por ejemplo por el 1001, también se lo podemos indicar con esta misma instrucción.

Listar todas las tablas en una base de datos.

En principio para hacer esto nos podemos valer de un simple…

SHOW TABLES;

…pero esto solo nos listará las tablas sin añadir mayor información, cosa que la mayor parte de las veces nos puede ser más que suficiente. Sin embargo si queremos obtener más información podemos utilizar…

SELECT *
FROM information_schema.tables
WHERE table_schema = 'nameofddbb';

…y obtendremos no solo el nombre sino también si se trata de una tabla o vista, qué motor utiliza (InnoDB, MyISAM…), el número de registros, la fecha de creación, aspectos sobre el tamaño, etc.

Listar todos los campos en una tabla.

Del mismo modo, para los campos podemos hacer como hemos dicho antes un…

DESCRIBE tbl_tablenamex;

…pero si queremos un poco más de información también podemos recurrir a…

SELECT *
FROM information_schema.columns
WHERE table_name = 'tbl_tablenamex';

…y como ocurría con las tablas obtendremos algo más de información.

Obtener información sobre rutinas.

Si lo que queremos es obtener información sobre funciones o procedimientos almacenados en una base de datos (incluyendo el código fuente con el que se crearon), podemos utilizar…

SELECT *
FROM information_schema.routines
WHERE routine_schema = 'nameofddbb';

Obtener información sobre vistas (otro método).

Si de lo que queremos obtener información más detallada (incluyendo nuevamente el código utilizado en la generación) es una vista, podemos utilizar…

SELECT *
FROM information_schema.views
WHERE table_schema = 'nameofddbb';

Obtener información sobre triggers (disparadores).

Y si lo que queremos es obtener información más detallada sobre disparadores o triggers (también incluyendo el código con el que se han generado), podemos utilizar…

SELECT *
FROM information_schema.triggers
WHERE trigger_schema = 'nameofddbb';

Copiar una tabla y opcionalmente rellenarla.

Si deseamos crear una copia de una tabla en la misma o en otra base de datos, podemos utilizar primero esta instrucción para copiar la estructura…

CREATE TABLE tbl_targettabl LIKE nameofddbb.tbl_sourcetabl;

…y nos creará una tabla destino igual que la tabla origen, solo que sin datos dentro. Para copiar a continuación todos los datos nos bastará con…

INSERT INTO tbl_targettabl
SELECT * FROM nameofddbb.tbl_sourcetabl;

De hecho, en caso de querer copiar tanto estructura como datos, también podríamos haberlo hecho en un solo paso con…

CREATE TABLE tbl_targettabl
SELECT * FROM nameofddbb.tbl_sourcetabl;

…pero para mí gusto, este método presenta el inconveniente de que si la tabla contiene claves principales no se trasladan a la copia, por lo cual yo prefiero siempre el método en dos pasos.

Y lo de añadir nameofddbb. antes del nombre de la tabla está claro que sólo será preciso cuando estemos operando con dos bases de datos distintas (si solo trabajamos con una no es preciso añadirlo).

Esto es todo por ahora. Seguro que me dejo más instrucciones de esas poco frecuentes que a veces necesitamos, así que titulo intencionadamente el post con lo de 1a parte en previsión de que más adelante pueda haber otras.

De Lancelona, vacaciones y pequeños cambios.

No tenía intención de interrumpir tan bruscamente la frecuencia con la que posteo, pero lo cierto es que estas vacaciones están resultando una
desconexión mucho más grande de lo que preveía. Y lo necesitaba, la verdad, que el último año ha sido bastante intenso. Por lo pronto he estado una semanita por tierras andaluzas (Granada y Sevilla) tal como quedará recogido en unos días en mi photoblog, que por cierto es uno de los proyectos que confío que este próximo año (para mí los años comienzan en septiembre y no en enero) resurja con cierta fuerza, aunque para ello quiero hacerle algunos pequeños cambios, incluyendo la posibilidad de añadir comentarios. Tiempo al tiempo.

De todos modos he ido siguiendo, cómo no, las estadísticas de accesos y comentarios en el blog y debo decir que estoy muy contento. Algunos de los artículos están teniendo bastante éxito y vienen cada día aquí unas cuantas personas a leerlos. Genial si a alguien le sirven de ayuda, para eso los pongo. Incluso estoy comenzando a recibir unos cuantos comentarios-spam, que quieras que no siempre es un buen indicio. E incluso he descubierto que alguien más se ha suscrito a los RSS de este blog (¡sorprendente!). Pero para hablar de visitas y demás ya hay un post mensual, así que este no va de eso.

En este quería comentar fundamentalmente dos temas. El primero, que a través del blog de Asier Marqués al que estoy suscrito -por cierto, en cuanto termine este post actualizo el blogroll-, he conocido de la existencia de Lancelona, ya que Asier será ponente en una de las ponencias que allí se llevarán a cabo. No tenía ni idea de qué era esto de Lancelona y no sé si al final estará bien o no, pero me ha parecido interesante comentarlo por si alguien más está interesado en acudir a alguna de las ponencias. Yo concretamente iré a las de Emprendedores Digitales, Hacking, PHP Barcelona, Licencias No Privativas y Debate Sistemas Operativos. Todas ellas gratuitas y sin necesidad de registro previo según han tenido la bondad de informarme vía email desde la propia organización, así que genial. Ya contaré mis impresiones sobre el evento cuando haya pasado (días 29 a 31 de este mismo mes de agosto, en el Palau Sant Jordi de Barcelona).

El segundo tema es casi pedir disculpas por anticipado por si algún día el blog no está operativo. Quiero hacerle unos pequeños cambios, fundamentalmente para que las URLs se muestren no como http://www.albertmata.net/?p=70 sino más bien como algo parecido a esto otro algo más legible http://www.albertmata.net/2008/07/informe-en-net-con-crystal-reports-etc…. Creo que funcionará bastante bien y que los motores de búsqueda lo indexarán mejor que ahora. Y fundamentalmente quedará mucho más elegante. Lo ideal habría sido hacerlo desde un inicio, pero hasta hace cuatro días no había tocado nunca WordPress, así que… El caso es que para poder hacer estos cambios necesito primero hacer un cambio de alojamiento, ya que hasta ahora he estado utilizando el alojamiento Windows de Aruba, pero se me está quedando algo corto en prestaciones y flexibilidad, y como también trabajo con HostMonster y estoy encantado con sus servicios, he decidido pasarlo todo allí. Total, que por el camino habrá que hacer copias, restaurarlas, redirigir DNS y todas esas cosillas habituales, así que puede que en algún momento el blog esté KO… :-(

Estadística de visitas (200807).

Pues sí, se acabó el mes de julio. Hace cosa de un mes publiqué las estadísticas de visitas a este blog relativas al mes de junio (y algunos días de mayo), así que voy a dar continuidad a esa idea y sigo con ello. Además he de decir que estoy bastante sorprendido con las cifras. Este mes de julio he recibido casi 600 visitas, 500 de las cuales proceden fundamentalmente de Google (es impresionante comprobar cómo el resto de buscadores prácticamente no existen). Me parecen una barbaridad, la verdad, pero estoy contentísimo con ello y muy orgulloso si a alguno esta página le ha servido para resolver alguna duda. Pero no me enrollo más… ¡vamos allá!

Julio 2008

Número de visitas totales:       598      (+ 76,25%)
Páginas individuales vistas:     808      (+ 74,13%)
Promedio de tiempo en el sitio:  00:00:55 (+ 54,55%)
Porcentaje de rebote:            81,44%   (+  0,34%)
Porcentaje de visitas nuevas:    86,45%   (+  0,46%)

El día con más visitas del mes ha sido el 29 de julio con un total de 38.

Y los tres posts que durante el mes han sido más visitados son los siguientes:

1. Crear librería .dll en .NET… ¡y utilizarla! (13,86%)
2. Jugando con ArrayList en VisualBasic.NET (II). (5,07%)
3. Jugando con ArrayList en VisualBasic.NET (I). (4,95%)

Y este mes también incorporo la sección Premio Google del Mes, aunque debo reconocer que en esta ocasión ha sido más complicado porque prácticamente todas las búsquedas eran de lo más normalitas e informáticas (si es que esos dos adjetivos pueden ir juntos). En cualquier caso buscando buscando he encontrado algo, así que proclamo merecedor de este galardón en su segunda edición y por lo tanto…

Premio Google del Mes de Julio del 2008

…a quien hizo la búsqueda en Google:

apuntes a mano

La verdad es que no termino de entender qué debía estar buscando exactamente, pero por si acaso, me permito recomendar los cuadernos Moleskine, algo caros, cierto es, pero de gran calidad y realmente bonitos. ;-)




Creative Commons License
El blog de Albert Mata by Albert Mata is licensed under a Creative Commons Reconocimiento-Compartir bajo la misma licencia 2.5 España License.