MySQL

MySql

MySQL es un gestor de bases de datos bastante popular y rápido. Normalmente lo puedes encontrar instalado en los sitios de hosting.

 

Realizando el proyecto catalogos, necesito poder crear una consulta donde me cambie el valor de una columna en unas determinadas filas.

Lo que tengo montado hasta ahora es un array con las consultas.

$consulta[$i] = 'UPDATE referenciascruzadas SET Estado ="'.$Estado.'" WHERE RecambioID ='.$Encontrado['RecambioID'].' AND IdFabricaCruzado ='.$Encontrado['IdFabricaCruzado'].' AND  Ref_Fabricante ="'.$Encontrado['Ref_Fabricante'].'"';

Pero esto implica que si tengo un array con 200 elementos, implica que haga 200 peticiones al servidor msqyl, algo que considero que es innecesario, ya que no necesito saber si fue correcta o no la actualización.

Bueno el código completo es el siguiente

foreach ( $ArrayEncontrados as $Encontrado) {
		$i++;
		if ($Encontrado['Buscado'] =='NoEncontrado') { 
			$Estado = 'Nuevo';
		} else {
			$Estado = 'Existe Referencia Cruzada';
		}
		$consulta[$i] = 'UPDATE referenciascruzadas SET Estado ="'.$Estado.'" WHERE RecambioID ='.$Encontrado['RecambioID'].' AND IdFabricaCruzado ='.$Encontrado['IdFabricaCruzado'].' AND  Ref_Fabricante ="'.$Encontrado['Ref_Fabricante'].'"';
	}

La mayoria de estos comando son ejecutables de phpmyadmin

COMANDO PARA CONTAR EN UN CAMPO LOS VALORES DISTINTOS.

Imagina que tienes un campo con los nombres  y quieres saber cuantos nombres diferentes hay.

SELECT count(DISTINCT `NombreCampo`) as variable FROM `NombreTabla`

Imagina que tarifa de precios con los siguiente campos:ReferenciaProducto, ReferenciaFamilia, IdCliente, Precio. Hay que tener en cuenta que las ReferenciasProductos pueden estaŕan duplicada ya que tenemos un precio para cada cliente.

Ahora queremos saber cuantos productos hay en cada familia en esta tabla, no da igual que tengan precios distintos, solo queremos saber el numero de productos en cada familia.

SELECT count(DISTINCT `NombreCampo`) as variable FROM `NombreTabla` where `ReferenciaFamilia`= FAMILIAQUEREMOSSABER

Otras consultas interesantes:

UPDATE 'referenciascruzadas' SET REPLACE('Estado',"ERROR[Referencia Principal]","");

UPDATE 'referenciascruzadas' SET 'Estado'= REPLACE('Estado',"ERR:[FABRICANTE cruzado no existe]","")

UPDATE 'referenciascruzadas' SET 'Estado'=REPLACE('Estado',"ERR:[CampoVacio]","")

Tienes la necesidad de copiar los datos de una tabla en otra de otra BD

INSERT INTO `NUEVA-BASEDATOS`.`TABLA-NUEVA` SELECT * FROM `BASEDATOS`.`TABLAQUEREMOSCOPIARDATOSo`

Recordar que la estructura tiene que ser la misma

Teniendo en cuenta que tienes que ser administrador del equipo y la versió MYSQL que tengo es 5.5.40-0ubuntu0.12.04.1 encontre la siguiente web donde lo explica muy bien.

Lo repito por ecapy.com se les da por quitar el post o otros.

Paramos el servidor:

sudo service mysql stop

Arrancamos “mysqld_safe”:

sudo mysqld_safe --skip-grant-tables

Dejamos esa consola con “mysqld_safe” corriendo. Abramos otra consola y hagamos lo siguiente:

sudo mysql -u root

Dbf (Data Base File) es formato simple para almacenar datos estructurados, utilizado por Dbase, Paradox, Clipper, FoxPro y seguro que nos olvidamos de alguno más.

Por esto, puede que os surja la necesidad de convertir esas tablas en una tabla de mysql, por ello en esta entrada vamos a ver las opciones que utilizamos.

DESDE LA PROPIA CONSOLA DE LINUX:

Desde la propia terminal de linux es bastante sencillo, solo necesitamos dbf2mysql.

Utilizando dfb2mysql, instalando en UBUNTU

sudo apt-get install dbf2mysql

Una vez lo tengamos instalado , solo tenemos que crear la BD en mysql, y luego con la siguiente instruccion:

dbf2mysql -h [SERVIDOR] -U [USUARIO] -P [CONTRASEÑA] -d [BASEDATOS] -t [NOMBRETABAL] -c -f /path/del/fichero/nombrefichero.dbf

No es un proceso rápido y por lo que la duración del proceso puede ser largo ya que depende de los registros y lo pesada que sea la tabla, como referencia os indico que:

" Duro un par de horas el importar una tabla 250.000 registros en servidor local "

Con esto, os digo que toca esperar a que termine el comando en la terminal antes de cerrarlo , ya que sino vuestra tabla puede que no este completa.

También debemos tener en cuenta que hay atributos que no tendrá en cuenta y uno ellos el auto incremento, por lo que deberemos modificar nosotros la estructura de el campo en cuestion.

Referencia:

Blog de manel perez

Github un proyecto con modificaciones dbf2mysql

 

Con esta nota de mysql queremos conseguir una pequeña guia para utiliza mysql desde terminal, al final del post podrás encontrar una relación de fuentes.

Paquetes necesarios para la instalación de MySql en Linux

Se necesitán varios paquetes para poder tener totalmente operativo myqsl en nuestro equipo.

  • mysql-server : Paquete Servidor de MYSQL
  • mysql-common : Paquete archivos comunes de MySql
  • mysql-client: Paquete  de Cliente de MYSQL

Tambien puede instalarte paquetes adicionarles como::

  • mysql-admin : Paquete entorno gráfico
  • mysql-query-browser: Paquete que sirve para hacer consultas.

Alguna Preguntas iniciales sobre MySQL:

¿Donde guarda la los ficheros de la bases datos ( tablas) ?

La base de datos las encontramos en un directorio por cada bd creada, en el lugar que nos indique el fichero my.cnf, que normalmente es /var/lib/mysql

¿Que ficheros nos vamos encontrar?

En cada directorio de cada BD creada, encontramos un fichero db.opt, que es el encargado de guardar las caracteristicas de cada base de datos.

Luego encontramos tambien los datos de las tablas creadas y según método de almacenamiento que hayamos seleccionado, tendremos uno o más ficheros.

Si seleccionamos como metodo de almacenamiento (tipo) MyISAM, es el que traía por defecto hasta las versión MySql 5.5 , este método de almacenamiento crea 3 ficheros por tabla.

Los nombre de los ficheros comienzan con el nombre de tabla que le hayamos asignado a la hora crear y con las extensiones:

  • frm
  • MYD ( MyData)
  • MYI ( Myindex)

Si embargo , si utilizamos InnoDB, solo veo un fichero por tabla. (.frm)

En el siguiente link , puedes ver las diferencias que hay entre un método u otro de almacenamiento.

 

Instrucciones iniciales de terminal

Para conectarse a MySql desde terminal:

mysql -u root -p

Nos pide la contraseña que pusimos en la instalación de root, una vez introducida nos aparece los siguiente o algo similar si va todo correcto.

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

Para desconectarse de terminal, utilizamos