Tabla de Contenidos

MySQL

Ayuda general de sintaxis para MySQL >= 5.0.

Ver también la documentación oficial.

Búsqueda de Información

  SELECT campos
  FROM tablas
  WHERE (condicion1 [AND/OR] condicion2 [AND/OR]...)
  [ORDER BY orden [ASC/DESC] ]
  ;

En la consulta:

Ejemplos de búsquedas en bases de datos de Helpcom

Buscar aquellos clientes en una tabla de clientes que pertenecen a cierta comuna:

  SELECT * FROM mae_clientes 
  WHERE cli_comuna LIKE '%comuna%'

Top 5 de las comunas con más clientes:

  SELECT cli_comuna, COUNT(*) AS cantidad FROM mae_clientes 
  GROUP BY cli_comuna
  ORDER BY cantidad DESC LIMIT 5

Buscar todos aquellos folios de un CAF (identificado por su tipo de documento y folio de partida de ingreso) que no están en uso:

  SELECT dte_folios.* FROM dte_folios JOIN dte_folios_ingreso USING foi_id 
  WHERE tdo_id = 33 AND foi_desde = 123456 AND fol_usado = 'NO'

Buscar todos los RUT de los clientes que están mal ingresados porque no corresponden al formato del RUT:

  SELECT * from mae_clientes
  WHERE cli_rut NOT REGEXP '[1-9][0-9]+\-[0-9kK]'

Explicación del filtro:

REGEXP Significado
[1-9] Un caracter del grupo dígito del 1 al 9 (para iniciar un número)
[0-9] …seguido de un caracter dígito
+ …al menos una vez
\- …seguido de un caracter guión
[0-9kK] …seguido de un caracter del grupo dígito
o del grupo de las letras k y K
https://www.regular-expressions.info/tutorial.html

A veces tener comillas simples o dobles como parte de un campo puede causar errores en bases de datos de MySQL no sanitizadas. Busquemos todos los clientes que tengan comillas dobles en la dirección (cosas como O'Brian, O'Higgins pero mal escritas: O"Brian, O"Higgins, como sucede en la base de datos de Rodeo) y veamos cómo se ven si les cambiamos las comillas simples por comillas tipográficas Unicode (“”):

  SELECT cli_id, cli_rut, cli_direccion as nombre_antes, replace(cli_direccion, '"', '’') as nombre_despues FROM mae_clientes
  WHERE cli_direccion LIKE '%"%'

Actualizaciones (UPDATE)

  UPDATE tablas SET cambios
  WHERE (condicion1 [AND/OR] condicion2 [AND/OR]...)
  ;

En la consulta:

Ejemplos de búsquedas en bases de datos de Helpcom

Actualizar el nombre de una comuna mal escrita:

  UPDATE mae_clientes 
  SET cli_comuna = 'LAUTARO' 
  WHERE cli_comuna = 'LAITARO'

Corregir todos los RUT con “-k” para que tengan mayúsculas:

  UPDATE mae_clientes
  SET cli_rut = replace(cli_rut, '-k', '-K')

Cambiar las comillas normales por comillas tipográficas, siguiendo el ejemplo del SELECT en la sección anterior:

  UPDATE mae_clientes
  SET cli_direccion= replace(cli_direccion, '"', '’') 
  WHERE cli_direccion LIKE '%"%';

Marcar un grupo de folios de nota de crédito DTE como no impresos:

  UPDATE dte_folios
  SET fol_archivo_generado = 'NO'
  WHERE tdo_id = 61 AND fol_numero IN (101, 102, 104, 107, 109)

Consultas de Gestión

Las siguientes consultas permiten obtener información sobre la base de datos propiamente tal, en vez de sobre la información que está adentro. Pueden requerir permiso de superusuario para poder ejecutarse.

Mostrar estado de la base de datos

como root:

SHOW STATUS \G

Buscar solamente las configuraciones que tienen “clave” en el nombre:

SHOW STATUS LIKE '%clave%' \G

Mostrar la lista de procesos en la base de datos

SHOW [FULL] PROCESSLIST;

Mostrar los usuarios permitidos en la base de datos

SELECT user,host FROM mysql.user;

Mostrar los privilegios disponibles para un usuario específico

SHOW GRANTS FOR 'usuario'@'hostconexion';

SHOW GRANTS FOR 'usuario'@'%';

Mostrar la configuración de privilegios para una base de datos en específico

SELECT * FROM mysql.db 
WHERE Db LIKE '%base_datos%' \G

Contar la información en una base de datos

Esta consulta muestra una lista de todas las tablas y cuántos registros tiene cada una:

SELECT table_name,table_rows 
FROM information_schema.tables 
WHERE table_schema='nombre_db';

Buscar en una base de datos una tabla por nombre

SELECT table_name
FROM information_schema.tables
WHERE table_schema='nombre_db' AND table_name LIKE '%patron%';

Buscar una columna en la base de datos por nombre

SELECT table_name, column_name
FROM information_schema.columns
WHERE table_schema='nombre_db' AND column_name LIKE '%patron%';