Archivo de la categoría Bases de datos

votar

Uso de la función soundex() en MySQL

Uso de la función soundex() en MySQL en Scribd, páginas 34 y 35. También toca Full Text Search y Sphinx. Via viciño !

votar

Gráficas de MySQL en modo texto

Partiendo de esto...

MySQL:
  1. CREATE TABLE visitas (
  2.     Mes VARCHAR(3) NOT NULL,
  3.     Visitas FLOAT NOT NULL,
  4.     Pageviews FLOAT NOT NULL
  5. );
  6.  
  7. INSERT INTO visitas VALUES
  8. ('Ene', 100, 100),
  9. ('Feb', 92, 145),
  10. ('Mar', 96, 201),
  11. ('Abr', 100, 101)
  12.  
  13. SELECT Mes,
  14. REPEAT("%", (Visitas-0.0)*0.2+1) Visitas,
  15. REPEAT("#", (Pageviews-0.0)*0.2+1) Pageviews
  16. FROM visitas;

Podemos generar un simple "overview" desde consola como este:

+-----+-------------+-----------------------+
| Mes | Visitas     | Pageviews             |
+-----+-------------+-----------------------+
| Ene | %%%%%%%%%%% | ###########           |
| Feb | %%%%%%%%%%  | ###############       |
| Mar | %%%%%%%%%%  | ##################### |
| Abr | %%%%%%%%%%% | ###########           |
+-----+-------------+-----------------------+
4 rows in set (0.01 sec)
votar

Novedades sobre el caso Ivan Nikitin

Ayuda a IvanAlgunos amigos y conocidos del mundillo laboral/internet me pidieron en su día que comunicase cualquier novedad que supiese al respecto de este tema, y la palabra es deuda de caballeros.

Andrii Nikitin, su mujer y sus hijos han llegado a Alemania hoy. Su compañero en Soporte de MySQL Axel Schwenke les ha llevado del aeropuerto a Heidelberg, donde Ivan ha pasado su primer chequeo médico en el Hospital Uiversitario.

Georg Richter ha organizado y arreglado un pequeño apartamento para ellos durante los primeros dias, al menos hasta que consigan algunos muebles para el que alquilarán en la ciudad germana.

Hasta el momento, la familia lo lleva bien; respecto a Ivan, todavia es pronto para adelantar acontecimientos.

Por si no recuerdas el caso de Ivan, te lo resumo aqui:

Se están recabando donaciones para ayudar a Andrii Nikitin, uno de los ingenieros de soporte de MySQL AB en Ukrania, a pagar el tratamiento de su hijo Ivan que necesita un transplante de médula ósea. El coste total de la operación se estima entre 150,000€ y 250,000€ (235,000$ - 400,000$). Por favor, ayúdanos a dar a Ivan una oportunidad de vivir.

Enlace para donaciones:

http://www.mysql.com/about/help-ivan.html

O desde aqui mismo:

votar

MySQL … tratame bien que soy tontito

Probablemente no sepas que existe una opción para la linea de comandos del cliente de MySQL que reza, literalmente --i-am-a-dummy (soy tontito, o soy novato)

Es una opción pensada para novatos en el uso de esta herramienta, que tiene eñ mismo efecto que el switch --safe-updates. La opción --i-am-a-dummy es tremendamente útil porque te permite evitar "accidentes" dolorosos, por ejemplo un:

DELETE FROM tabla

eliminaría todo el contenido de la tabla X, sin embargo, con la opción --i-am-a-dummy:

  • No puedes eliminar o modificar registros si no especificas la clave principal (id habitualmente)que los identifica, o fijas un LIMIT en la consulta.
  • Todos los SELECT que hagas serán limitados automáticamente a 1000 resultados a menos que especifiques un LIMIT de forma manual.
  • Los SELECT ejecutados sobre múltiples tablas que puedan verse obligados a examinar más de 1.000.000 de combinaciones de registro son automáticamente anuladas y no se ejecutan.

Por ejemplo:

mysql --i-am-a-dummy -uUSUARIO -pCONTRASEÑA

mysql> delete from tabla;

ERROR 1175: You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column

votar

AYUDA: SELECT * FROM mysql_users WHERE ethic>0

He utilizado el servidor de base de datos MySQL desde que trabajo en desarrollo web, tanto para aplicaciones comerciales como para pequeños proyectos personales. De hecho he jugado con múltiples servidores web, múltiples lenguages de programación y múltiples herramientas de escritorio, pero la base de datos ha sido (y creo que será por mucho tiempo) inamovible: MySQL

El por qué de esta decisión o este modelo de "Fanboy" no viene al caso de este post, simplemente explica el motivo del mismo, y es que el estar apuntado a la lista de desarrollo de MySQL community me ha permitido enterarme de una aciaga noticia, que aunque es más común de lo que nos gustaría pensar, esta vez parece que me "tocase" un poco más de cerca de lo habitual.

Ivan es el hijo de Andrii Nikitin (Ingeniero de soporte en MySQL AB), y como en algunos Spam fraudulentos y redactados en Spanglish que recibimos a diario, necesita un trasplante de médula ósea. Sólo que esta vez ni es Spam, ni es un fraude, ni tiene puta gracia.

La nota de Andrii la cito traducida a continuación, y está extractada de la propia web de MySQL AB, donde están dando difusión a esta noticia:

Ayuda a IvanMi familia tiene mala noticias - los doctores dicen que un transplante de médula ósea es la única esperanza que queda de salvar la vida de mi hijo Ivan.

8 meses de intensos y carísimos tratamientos de supresión inmunológica han arrojado algunos resultados positivos, asi que esperamos que su recuperación sea sólo cuestión de tiempo.

Ivan es un chico muy valiente - no todos los seres humanos deberán lidiar con tantísimo sufrimiento en toda su vida como el que Ivan ha conocido ya en sus 2 años y medio de vida, pero aún nos queda un largo camino por delante hasta lograr su total recuperación - y estamos dispuestos para afrontarlo.

Las clínicas Ukranianas no disponen de los recursos técnicos necesarios para realizar una operación tan complicada, asi que necesitamos entre 150 y 250 mil EUROS para poder realizar la operación, sea en Israel, Europa o en los EEUU. La decisión final dependerá de la cantidad que seamos capaces de reunir. Quizá mi familia sea capaz de conseguir alrededor del ~60% del dinero necesario de la venta del apartamento donde los padres viven y algunos otros bienes, pero aún asi seguiremos necesitando ayuda externa para reunir esa cantidad.

Andrii Nikitin

Desde luego, "C'a uno es c'a uno" ... y K2 una piragua, no seré yo quien vaya a indicarle a nadie lo ético de ayudar a este hombre en un momento asi, pero si tienes una empresa que haya trabajado con MySQL, si alguna vez lo has utilizado para un proyectillo personal del que te sientes orgulloso, si alguna vez te has parado a pensar en la gente que durante años se ha roto los cuernos desarrollando, puliendo y dando soporte a esta fantástica base de datos... ¿ por qué no agradecerlo ayudando a salvar la vida al hijo de una de estas personas ?

No hablo de donar a MySQL AB, empresa, ni siquiera a MySQL Community, proyecto Open Source, sino a una persona, para salvar a su hijo, y en este caso concreto, a "uno de los nuestros" por partida doble: Ser humano y colega de profesión.

Piensa si este fin de semana podrás o no prescindir de un cubata (4 euros), un paseito con el coche (2 euros), una cajetilla de tabaco (3 euros) , ir al cine a ver un estreno (6 euros), o cenar fuera (30 euros) y si es asi... anímate.

Para realizar una donación, sea ésta más pequeña (por pequeña que sea) o más grande (esas empresas 2.0...), puedes realizarlo desde el botón de Paypal en su sitio web

Update: O, si no lo encuentras, desde aqui mismo:

Update 2: Puedes colaborar a difundir la noticia votándola en menéame (enlaza, por supuesto, a la fuente original)

Update 3: Lo prometido es deuda, avances del caso en http://www.propiedadprivada.com/novedades-sobre-el-caso-ivan-nikitin/604/

votar

MySQL – Post Totales en un blog por Mes y Año, en formato humano

Para que luego digan que WordPress y similares están superoptimizados y no hay más donde ir... tse.. tse... dedicado al viciño r0sk, que es quien se lo está currando:

Consulta

MySQL:
  1. SELECT DATE_FORMAT( CONCAT( YEAR( date_created ) , "-", MONTH( date_created ) , "-", DAY( date_created ) ) , "%Y-%m" ) AS fecha, COUNT( 0 ) AS cuantos_posts
  2. FROM posts
  3. GROUP BY CONCAT( MONTH( date_created ) , "-", YEAR( date_created ) )
  4. ORDER BY fecha DESC

Resultado

fecha cuantos_posts
2008-05 5
2008-04 14
2008-03 14
2008-02 21
2008-01 19
2007-12 17
2007-11 16
2007-10 24
2007-09 20
2007-08 2
2007-07 12
2007-06 15
2007-05 21

Rendimiento

Sobre 200 posts reales, generada en 0.001 segundos

votar

Test rápidos de MySQL – Test 9

MySQL
Test 9

Este test es cortesía de Diego Madina.

Utilizando una distribución de MySQL 5.0 bastante reciente, vemos que…

CODE:
  1. mysql> SELECT 1.1E0, 2.2E0, 3.3E0;
  2. +-------+-------+-------+
  3. | 1.1E0 | 2.2E0 | 3.3E0 |
  4. +-------+-------+-------+
  5. |   1.1 |   2.2 |   3.3 |
  6. +-------+-------+-------+
  7. 1 row in set (0.00 sec)and…

CODE:
  1. mysql> select 1.1+2.2=3.3;
  2. +-------------+
  3. | 1.1+2.2=3.3 |
  4. +-------------+
  5. |           1 |
  6. +-------------+
  7. 1 row in set (0.00 sec)But…

CODE:
  1. mysql> select 1.1E0+2.2E0=3.3E0;
  2. +-------------------+
  3. | 1.1E0+2.2E0=3.3E0 |
  4. +-------------------+
  5. |                 0 |
  6. +-------------------+
  7. 1 row in set (0.00 sec)

¿ Por qué sucede esto ?

Pulsa para Mostrar/Ocultar la solución

Traducido con permiso expreso de Mysql Test Quiz 9 Original

Creado por Carsten H. Pedersen

Otros Test anteriores:

votar

Simple Backup y Restore de Bases de datos MySQL

Para crear la copia con compresión:

mysqldump -uusuario -ppass BD | gzip -9 > copia.sql.gz

Para restaurar la copia comprimida:

gunzip < copia.sql.gz | mysql -uusuario -ppass BD

Para restaurar la copia comprimida si ya existe la BD:

mysqlimport -uusuario -ppass BD copia.sql

votar

Test rápidos de MySQL – Test 8

MySQL
Test 8

En el Test 5, trabajamos con los siguientes CREATE TABLE e INSERT:

MySQL:
  1. CREATE TABLE test (
  2.   id VARCHAR(1) NOT NULL,
  3.   PRIMARY KEY  (id)
  4. );
  5. INSERT INTO test VALUES ('0'), ('1'), ('2'), ('a'), ('b');

Los INSERT funcionaban como deberian y el resultado es que obteniamos los registros ‘0′, ‘1′, ‘2′, ‘a’ y ‘b’.

Los INSERT … VALUES (…), (…), … multiregistro son perfectamente válidos en MySQL. Pero…

Pregunta 1: ¿ Esto es portable a otros Sistemas de Bases de Datos Relacionales, como Oracle, MS-SQL, DB2, Firebird, Postgresql, …?
Pregunta 2: ¿ Esta sintaxis es SQL estandard ?

Pulsa para Mostrar/Ocultar la solución

Traducido con permiso expreso de Mysql Test Quiz 8 Original

Creado por Carsten H. Pedersen

Otros Test anteriores:

votar

Test rápidos de MySQL – Test 7

MySQL
Test 7

Supongamos la siguiente serie de comandos:

MySQL:
  1. CREATE TABLE pruebas (
  2.   key1 INT NOT NULL PRIMARY KEY,
  3.   key2 INT NOT NULL UNIQUE
  4. );
  5.  
  6. INSERT INTO pruebas VALUES (1,1), (2,2);

La tabla contiene ahora (1,1) y (2,2). Ahora hacemos

MySQL:
  1. REPLACE INTO pruebas VALUES (1,3);

Pregunta 1: La tabla contiene ahora (1,3) y (2,2). Explica por qué.

Ahora ejecutamos:

MySQL:
  1. REPLACE INTO pruebas VALUES (1,2);

Pregunta 2: La tabla ahora contiene una sóla columna (1,2). ¿ Por qué ?

Pregunta 3: ¿ Cual es el valor de "Rows affected" en tu cliente después de las dos consultas REPLACE ?

Pulsa para Mostrar/Ocultar la solución

Traducido con permiso expreso de Mysql Test Quiz 7 Original

Creado por Carsten H. Pedersen

Otros Test anteriores: