ccc

Mostrando entradas con la etiqueta MySQL. Mostrar todas las entradas
Mostrando entradas con la etiqueta MySQL. Mostrar todas las entradas

MySQL: AES_ENCRYPT y AES_DECRYPT

A la hora de insertar:

INSERT INTO usuarios(email, tfno) VALUES (AES_ENCRYPT('uno@gmail.com','enunlugar'),AES_ENCRYPT('666777888','enunlugar'));

Y luego para obtener los datos desencriptados:

SELECT AES_DECRYPT(email,'enunlugar'), AES_DECRYPT(tfno,'enunlugar') FROM usuarios

Para insertarlo desde una web en PHP:
$sql = "INSERT INTO solicitud
SET nombre='$nombre',
email=AES_ENCRYPT('$email','enunlugar'),
telefono=AES_ENCRYPT('$telefono','enunlugar'),
fecha = NOW()";

$id_nueva_solicitud = $db->insertar($sql);

MySQL: Convertir un campo escrito en la BD con caracteres utf-8 a modo correcto

SELECT CAST(BINARY(nombre) AS CHAR CHARACTER SET utf8) AS nombre, password, nick, email, validado, pais.descripcion as nomPais, rol.descripcion as nomRole FROM usuario inner join pais on pais.id_pais = usuario.pais inner join rol on rol.id_rol = usuario.rol

MySQL: Ejemplo de Having (se usa con group by)

select id_art_youtube, count(id_art_youtube) as total, nom_art_youtube, nom_foto from hist_youtube
inner join art_youtube on art_youtube.id = hist_youtube.id_art_youtube
group by id_art_youtube having total > 4 order by total desc, nom_art_youtube

MySQL y SQLServer: Concatenar el valor de dos o más campos en un único campo

select concat(campo1,"<br><br>",campo2,"<br><br>",campo3) as resumen, campo4, campo5 from tabla

El resutado de la query:
resumen, campo4, campo5

MySQL: Ordenar por un campo que cumpla una condición específica

// Ordena primero los de Madrid capital y luego ordena por provincia, población
order by if (cp div 100 = 280,0,1), provincia, poblacion // Ordenar Sevilla en order inverso al CP pero en el resto de provincias que siga igual
order by provincia, if (cp div 1000 = 41,1/cp,cp), poblacion

Backup de toda una base de datos con PHP (tanto para MySQL como para SQL Server)

SQL Server:
$log_backup_file = "C:\Backups\TestDB_Log_Backup.bak";
$sql = "BACKUP LOG TestDB TO DISK = '".$log_backup_file."'";
$stmt = sqlsrv_query($conn, $sql);
if($stmt === false)
{
    die(print_r(sqlsrv_errors()));
}
else
{
    echo "Transaction log backed up to $log_backup_file";
}

MySQL:
$backup_file = "EDC_".date("Ymd_His").".sql";
$commands = array(
        "mysqldump --opt -h $host_name -u $user_name -p$password -v $database > $backup_file","bzip2 $backup_file"
);

// ejecución y salida de éxito o errores
foreach ( $commands as $command ) {
   system($command,$output);
   echo $output;
}

MySQL: Fechas

SELECT * FROM mitabla
WHERE fecha_creacion BETWEEN '2013-11-26 18:00:00' AND '2014-12-31 18:00:00' limit 0,200 


// saca los últimos 30 días
select * from mitabla where fh_alta BETWEEN (date_sub(NOW(), INTERVAL 30 DAY)) AND NOW()


Funciones:
date_sub(..., ...);
date_add(..., ...);

-----------------------------------------------------------

select * from mitabla where fh_alta < NOW()

Mysql: Insert múltiple con un select

insert into tabla(id_tabla, nom_tabla) select id_otra_tabla, ciudad from otra_tabla where id < 200

MySQL: Concatenar búsqueda

SELECT * FROM mitabla

where CONCAT(nombre, ' ',apellido1,' ', apellido2) LIKE '%Gil%' limit 5;