¡Esta es una revisión vieja del documento!


MySQL

Ayuda general de sintaxis:

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 simplemente mae_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 Getsió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%';
f1/mysql-sintaxis.1507220033.txt.gz · Última modificación: 2017/10/05 16:13 por lmachuca
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0