Comandos para consulta en MySQL útiles

Este artículo enumera algunos comandos de MySQL que pueden resultarle útiles.

1. Comandos MySQL

1.1. CONTAR y AGRUPAR POR

Si desea mostrar una lista de cuántos tutoriales escribe cada usuario, puede usar CONTAR y AGRUPAR POR.
Por ejemplo, tenemos la tabla Blogs de la siguiente manera:

SELECT operator_id, count(*) as count FROM blogs group by operator_id

Resultado:

1.2. MySQL consulta muchas bases de datos diferentes en los mismos servidores

Si la consulta combina 2 Tablas en 2 Bases de Datos Diferentes (en el mismo servidor), todo es muy fácil con el siguiente comando:
Ejemplo:

SELECT a., b. FROM SchemaA.blogs as a
LEFT JOIN SchemaB.blogs as b ON a.category_id = b.category_id

1.3. Cambio de contraseña de root de MySQL

Ejecutar en el editor MySQL:

SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘mypass’);
FLUSH PRIVILEGES;

Cambio de contraseña de root de MySQL

1.4. MySQL LEFT JOIN con condición:

Tenemos las siguientes 2 tablas:

– tblUsers: ID_usuario, nombre_usuario
– tblUserHistories: ID_usuario, fecha_entrada, fecha_salida

SELECT a., b.
FROM tblUsers as a
LEFT JOIN tblUserHistories as b
ON a.user_id = b.user_id
AND
a.user_id = (SELECT user_id FROM tblUserHistories WHERE user_id = m1.user_id ORDER BY id DESC LIMIT 1)

WHERE
b.date_in >= ‘2021-01-01’
ORDER BY
b.date_in ASC, a.user_name ASC

1.5. ¿Cómo puedo encontrar todas las tablas en MySQL con nombres de columnas específicos?

SELECT DISTINCT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE ‘%file_name%’
AND TABLE_SCHEMA = ‘database_name’

2. MySQL múltiples bases de datos diferentes servidores


– Un servidor remoto con una tabla de base de datos, el tipo de tabla de la tabla remota puede ser cualquier tipo admitido por el servidor mysqld remoto, incluidos MyISAM o InnoDB.

– Un servidor local con una tabla de base de datos, donde la definición de la tabla coincide con la de la tabla correspondiente en el servidor remoto. No hay ningún archivo de datos en el servidor local. En cambio, la definición de la tabla incluye una cadena de conexión que apunta a la tabla remota.

CREATE TABLE test_table (
id     INT(20) NOT NULL AUTO_INCREMENT,
name   VARCHAR(32) NOT NULL DEFAULT ”,
other  INT(20) NOT NULL DEFAULT ‘0’,
PRIMARY KEY  (id),
INDEX name (name),
INDEX other_key (other)
)
ENGINE=MyISAM
DEFAULT CHARSET=utf8mb4;

Para utilizar el primer método, debe especificar la cadena CONNECTION después del tipo de motor en una instrucción CREATE TABLE.
Por ejemplo:

CREATE TABLE federated_table (
id     INT(20) NOT NULL AUTO_INCREMENT,
name   VARCHAR(32) NOT NULL DEFAULT ”,
other  INT(20) NOT NULL DEFAULT ‘0’,
PRIMARY KEY  (id),
INDEX name (name),
INDEX other_key (other)
)
ENGINE=FEDERATED
DEFAULT CHARSET=utf8mb4
CONNECTION=’mysql://fed_user@remote_host:9306/federated/test_table’;

El formato de la cadena de conexión es el siguiente:

scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name

Dónde:

– esquema: protocolo de conexión reconocido. En este momento, solo se admite mysql como valor del esquema.
– nombre_usuario: el nombre de usuario para la conexión. Este usuario debe haber sido creado en el servidor remoto y debe tener privilegios adecuados para realizar las acciones requeridas (SELECCIONAR, INSERTAR, ACTUALIZAR, etc.) en la tabla remota.
– contraseña: (opcional) la contraseña correspondiente para nombre_usuario.
– nombre_host: el nombre de host o la dirección IP del servidor remoto.
– port_num: (opcional) el número de puerto del servidor remoto. El valor predeterminado es 3306.
– db_name: el nombre de la base de datos que contiene la tabla remota.
– tbl_name: el nombre de la tabla remota. El nombre de la tabla local y remota no tiene que coincidir.

Consulte: https://dev.mysql.com/doc/refman/8.0/en/federated-description.html

Deja un comentario