¡Esta es una revisión vieja del documento!
Tabla de Contenidos
MySQL
Ayuda general de sintaxis para MySQL >= 5.0.
Búsqueda de Información
SELECT campos FROM tablas WHERE (condicion1 [AND/OR] condicion2 [AND/OR]...) [ORDER BY orden [ASC/DESC] ] ;
En la consulta:
campos
puede ser una lista de uno o más campos, conteos o fórmulas. Asterisco (“*
”) se usa para indicar mostrar todos los campos de una tabla.tablas
puede ser una lista de una o más tablas o uniones de tablas (JOIN, UNION, etc), con o sin su fuente de base de datos (por ejemplo,crux.mae_usuarios
o simplementemae_usuarios
).condicion1, condicion2
es una lista opcional de condiciones en el lenguaje lógico de MySQL. Una condición puede ser comparar el valor de un campo, por ejemplo “WHERE mae_nombre_empresa LIKE '%Lily%'
”.orden
es una lista de campos o de fórmulas, del más prioritario al menos prioritario, para ordenar los resultados. Por ejemplo “ORDER BY cantidad_vendida, WEEKDAY(fecha_venta)
” ordenaría una lista de ventas de la que vendió más a menos y luego por el día de semana de la venta.
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]'
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 '%"%';
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%';