Y en el paquete estándar, puedes hacer muchas cosas con él. Pero sea como sea, tiene un número características útiles, que se puede habilitar por separado. En este artículo, revelaremos características adicionales PhpMyAdmin y vea cómo nos pueden ser útiles.

Entorno

Antes de comenzar, asegúrese de que PhpMyAdmin esté funcionando. Si inicia sesión, es posible que observe un mensaje como este:

El almacenamiento de configuración de phpMyAdmin no está completamente configurado, algunas funciones extendidas se han desactivado. Para saber por qué haz clic aquí.
(El almacén de configuración de phpMyAdmin no está configurado correctamente, algunas funciones están deshabilitadas. Haga clic aquí para averiguar por qué)

$cfg["Servidores"][$i]["usuariocontrol"] = "pma"; $cfg["Servidores"][$i]["controlpass"] = "pmapass"; $cfg["Servidores"][$i]["pmadb"] = "phpmyadmin"; $cfg["Servidores"][$i]["bookmarktable"] = "pma__bookmark"; $cfg["Servidores"][$i]["relación"] = "pma__relación"; $cfg["Servidores"][$i]["table_info"] = "pma__table_info"; $cfg["Servidores"][$i]["pdf_pages"] = "pma__pdf_pages"; $cfg["Servidores"][$i]["table_coords"] = "pma__table_coords"; $cfg["Servidores"][$i]["column_info"] = "pma__column_info"; $cfg["Servidores"][$i]["historia"] = "pma_history"; $cfg["Servidores"][$i]["reciente"] = "pma__reciente"; $cfg["Servidores"][$i]["table_uiprefs"] = "pma__table_uiprefs"; $cfg["Servidores"][$i]["usuarios"] = "pma_users"; $cfg["Servidores"][$i]["grupos de usuarios"] = "pma__grupos de usuarios"; $cfg["Servers"][$i]["navigationhiding"] = "pma__navigationhiding"; $cfg["Servidores"][$i]["seguimiento"] = "pma_seguimiento"; $cfg["Servidores"][$i]["userconfig"] = "pma__userconfig"; $cfg["Servidores"][$i]["designer_coords"] = "pma__designer_coords"; $cfg["Servidores"][$i]["favorito"] = 'pma__favorito'; $cfg["Servidores"][$i]["búsquedas guardadas"] = "pma__búsquedas guardadas";

Cambie el nombre de usuario, la contraseña y el nombre de la base de datos según sus preferencias. Los valores de configuración restantes son nombres de tablas. Si los deja en blanco, se desactivarán sus funciones respectivas. Pero, en general, recomendaría dejar estos nombres como están. Dependiendo de la versión de PhpMyAdmin, no todos los valores estarán disponibles por defecto. En este caso, utilicé PhpMyAdmin versión 4.2.x.

Cuando haya terminado con la configuración, deberá crear una base de datos. Cree una base de datos con el nombre que especificó en su archivo de configuración. Luego, busque un archivo llamado create_tables.sql en su máquina. Más como, archivo dado se ubicará en el directorio raíz del PhpMyAdmin instalado, o en el subdirectorio de scripts. Si está en Linux, la ubicación será /usr/share/phpMyAdmin/examples/ o /usr/share/doc/phpmyadmin/scripts/ . Ejecute este archivo contra la base de datos creada. Si cambió los nombres de las tablas en la configuración anterior, no olvide cambiarlos también en la base de datos.

CONCEDER USO EN mysql.* A "pma"@"localhost" IDENTIFICADO POR "pmapass"; EN mysql.user TO "pma"@"localhost"; OTORGAR SELECCIÓN EN mysql.db A "pma"@"localhost"; OTORGAR SELECCIÓN EN mysql.host A "pma"@"localhost"; GRANT SELECT (Host, Db, Usuario, Table_name, Table_priv, Column_priv) ON mysql.tables_priv TO "pma"@"localhost"; CONCEDER SELECCIONAR, INSERTAR, ACTUALIZAR, ELIMINAR EN phpmyadmin.* TO "pma"@"localhost";

Después de cerrar sesión en PhpMyAdmin y volver a iniciar sesión, deberíamos ver que la advertencia desaparece. Si no falta, haga clic en el enlace para averiguar lo que falta.

Veamos opciones adicionales.

Marcadores

Al habilitar la extensión de marcador, podrá marcar consultas. Al crear una consulta, puede marcarla como favorita. Además, si la solicitud ya se ha lanzado, puede marcarla desplazándose hasta la parte inferior de la página y completando el formulario.

Cuando vaya a la pestaña SQL, en la parte inferior verá un panel donde puede seleccionar una consulta de los marcadores. Seleccione el que desee e indique qué desea hacer con él: ejecutar, ver o eliminar.

Conexiones

La opción de relación es probablemente lo mejor que he usado. Si utiliza claves externas, se podrá hacer clic en dichas claves. Cuando haga clic en una clave externa, será transferido a otra tabla: al registro al que se refiere la clave externa.

Además, al agregar o editar una clave externa, en lugar de un campo de entrada de texto, se le presentará una lista de todas las opciones posibles.

Información de la tabla

Por supuesto, vea la lista con todos valores posibles para una clave externa es bueno. Pero sería aún mejor si se nos mostrara una columna específica en lugar de una ID. Para lograr esto, debe habilitar able_info . Vaya a la tabla principal, vaya a la pestaña "Estructura" y haga clic en el enlace de vista de enlace. Si se desplaza hasta la parte inferior de la página, verá qué columna se mostrará para esta clave.

si creo nuevo record con una clave externa, junto al valor de la clave principal, veré el valor de la columna que especifiqué. Ahora no hay necesidad de recordar el identificador.

páginas PDF

Las relaciones entre tablas se pueden exportar a PDF. Para hacer esto, debe activar pdf_pages, table_coords y la relación en la configuración. El siguiente paso es abrir la base de datos que desea exportar a PDF. Haga clic en la pestaña "Operaciones". A continuación, haga clic en el enlace "Editar o exportar diagrama de enlace". Rellene todos los campos y haga clic en "Enviar". Si llenó el formulario, entonces tendrá archivo PDF con todos los datos necesarios.

Información de la columna

Con la opción de información de columna, puede agregar comentarios a los nombres de las columnas. Esto puede ser útil cuando desea transmitir a otras personas qué es esta columna y qué datos se almacenan en ella. Puede hacer esto cambiando los datos de la columna. Puede notar que se ha agregado un nuevo comentario a la columna. Si ingresa un comentario, aparecerá justo debajo del nombre de la columna.

De la misma manera, las transformaciones se pueden aplicar a las columnas. Con las transformaciones, puede convertir un nombre de archivo en un hipervínculo que abrirá el archivo especificado.

Historia

Si habilita el historial, todas las solicitudes realizadas a través de PhpMyAdmin se guardarán en su historial hasta que finalice la sesión o cierre el navegador. El historial se puede ver llamando al cuadro de diálogo "Consulta" y haciendo clic en el botón "Historial SQL"

Reciente

Sobre el barra de navegación Es posible que observe el botón "Reciente", que contiene una lista desplegable de tablas que ha visto recientemente. Esta lista se muestra de forma predeterminada. Pero si desea almacenarlo permanentemente entre sesiones, puede habilitar la opción reciente en la configuración y su historial de navegación se guardará en la base de datos.

Configuración de visualización de la tabla

Al ver tablas, puede cambiar el orden de las columnas arrastrándolas. Estos cambios solo son visibles para usted. El orden real de las columnas no cambia. Además, también puede ordenar las columnas en orden ascendente y descendente. Dichos cambios se almacenan dentro de la sesión y, cuando se desconecten, se restablecerán y reemplazarán con la configuración predeterminada. Sin embargo, si desea que las tablas se vean a su manera todo el tiempo, habilite la opción table_uiprefs.

Usuarios y grupos de usuarios

Es posible que no desee mostrar todas las funciones para todos los usuarios. En este caso, puede dividirlos en grupos en la pestaña "Usuarios". Crear nuevo grupo y defina lo que pueden ver los usuarios de ese grupo. Luego puede agregar usuarios a este grupo y puede estar seguro de que solo verán los elementos del menú que usted les permita ver. Para que pueda otorgar acceso varios usuarios a varias características del sistema, así como ocultar opciones no utilizadas.

Ocultar navegación

Con navegación oculta puede ocultar algunas tablas en la barra de navegación. Al hacer clic en el ícono de la bombilla junto al nombre de la tabla, se ocultará. También puede volver a hacerlo visible haciendo clic en el ícono de la bombilla nuevamente. De esta forma, descargará la barra de navegación de las tablas no utilizadas.

Seguimiento

Con esta función, puede realizar un seguimiento de todos los cambios que se han realizado en tablas específicas utilizando PhpMyAdmin. Al ir a la tabla y abrir la pestaña Seguimiento, puede crear una versión de la tabla actual. Ahora se guardarán todos los cambios que se han realizado en esta tabla usando PhpMyAdmin. De la misma manera, puede determinar fácilmente qué cambios se han realizado en la tabla desde que se creó la última versión.

Ajustes de usuario

Todas las configuraciones de usuario se almacenan por defecto en su navegador. Esto significa que si decide usar un navegador diferente o borrar el caché de su navegador, se perderán todas sus configuraciones. Al activar userconfig, guarda su configuración de forma permanente en la base de datos.

Coordenadas del diseñador de la base de datos

Al habilitar designer_coords, puede ver las relaciones entre sus tablas en la vista del diseñador de la base de datos. Al ir a la base de datos y hacer clic en la pestaña "Diseñador", verá algo similar a la imagen a continuación, que muestra las relaciones entre las tablas. Sin embargo, puede administrar visualmente las relaciones entre tablas usando esta ventana.

Favoritos

Al habilitar la opción favorita, al navegar por la base de datos, es posible que observe la aparición de iconos de asterisco junto a los nombres de las tablas. Para agregar una mesa a sus favoritos, simplemente haga clic en la estrella. En la barra de navegación, verá una lista desplegable de Favoritos. Las mesas que haya agregado a sus favoritos aparecerán en esta lista.

Guardar opciones de búsqueda

Al abrir la base de datos y dirigirse a la pestaña "Consulta", puede configurar una búsqueda avanzada. Las opciones de búsqueda se pueden marcar. Tenga en cuenta que estos no son marcadores de consulta SQL discutidos anteriormente. Con esta opción puede guardar los parámetros de búsqueda y usarlos más tarde.

Conclusión

Habilitar estas funciones es simple y realmente puede ayudar con la administración de la base de datos a través de PhpMyAdmin. Me gusta especialmente la capacidad de navegar a través de claves foráneas para poder ver registros relacionados. Espero que actives estas funciones y te sean útiles en tu trabajo diario.

Los registros de eventos son la primera y más sencilla herramienta para determinar el estado del sistema e identificar errores. Hay cuatro registros principales en MySQL:

  • registro de errores- registro de errores estándar que se recopila durante el funcionamiento del servidor (incluido el inicio y la detención);
  • Registro binario- un registro de todos los comandos de cambio de base de datos, necesarios para la replicación y las copias de seguridad;
  • Registro general de consultas— el registro principal de solicitudes;
  • Registro de consultas lentas- Iniciar sesión consultas lentas.

Registro de errores

Este registro contiene todos los errores que ocurrieron mientras se ejecutaba el servidor, incluidos errores críticos, así como apagados, inicios del servidor y advertencias. Aquí es donde debe comenzar en caso de falla del sistema. De forma predeterminada, todos los errores se imprimen en la consola (stderr), también puede escribir errores en syslog (predeterminado en Debian) o en un archivo de registro separado:

Log_error=/var/log/mysql/mysql_error.log

# Los errores se escribirán en mysql_error.log

Le recomendamos que mantenga este registro habilitado para identificar rápidamente los errores. Y para entender lo que significa este o aquel error, MySQL tiene la utilidad perror:

Shell> perror 13 64 Código de error del sistema operativo 13: Permiso denegado Código de error del sistema operativo 64: La máquina no está en la red

# Explica el significado de los códigos de error

Registro binario (también conocido como binario)

Todos los comandos para cambiar la base de datos se registran en el registro binario, lo cual es útil para la replicación y la recuperación.

Se enciende así:

log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 5 max_binlog_size = 500M

# Indica la ubicación, fecha de vencimiento y talla máxima expediente

Tenga en cuenta que si no va a escalar el sistema e implementar la tolerancia a fallas, es mejor no habilitar el registro binario. Requiere muchos recursos y reduce el rendimiento del sistema.

Solicitud de registro

Este registro contiene todas las consultas SQL recibidas, información sobre conexiones de clientes. Puede ser útil para el análisis y la optimización de índices, así como para identificar consultas erróneas:

Archivo_registro_general = /var/log/mysql/mysql.log registro_general = 1

# Incluye registro y especifica la ubicación del archivo

También se puede habilitar/deshabilitar mientras se ejecuta el servidor MySQL:

ESTABLECER GLOBAL general_log = "ON"; SET GLOBAL general_log = "DESACTIVADO";

# No necesita reiniciar el servidor para aplicar

Registro de consultas lentas

El registro es útil para identificar consultas lentas, es decir, ineficientes. Lea más en este artículo.

Ver los registros

Para ver los registros en Debian (Ubuntu), debe ejecutar:

# Cola de registro de errores -f /var/log/syslog # Cola de registro de consultas -f /var/log/mysql/mysql.log # Registro de solicitudes lentas cola -f /var/log/mysql/mysql-slow.log

# Si los registros no se especifican por separado, se encuentran en /var/lib/mysql

Rotación de registros

No olvide comprimir (archivar, rotar) los archivos de registro para que ocupen menos espacio en el servidor. Para hacer esto, use la utilidad logrotate editando el archivo de configuración /etc/logrotate.d/mysql-server:

# - Puse todo en un bloque y agregué scripts compartidos, para que mysql obtenga # registros de descarga solo una vez. # De lo contrario, los registros binarios aumentarían automáticamente n veces cada día. # - El registro de errores está obsoleto, los mensajes van ahora a syslog./var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log(rotación diaria 7 faltanteok crear 640 mysql adm comprimir scripts compartidos postrotate test -x /usr/bin/mysqladmin || exit 0 # ¡Si esto falla, revise debian.conf! MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf" if [ -z "`$MYADMIN ping 2>/dev/null`" ]; entonces # ¿Realmente no hay mysqld o más bien falta un usuario de debian-sys-maint? # Si esto ocurre y no es un error, informe un error. #si ps cax | grep -q mysqld; entonces si killall -q -s0 -umysql mysqld; luego salga 1 fi else $MYADMIN flush-logs fi endscript )

# Comprime y archiva los registros necesarios, limpia archivos

Registro DDL

MySQL también mantiene un registro de lenguaje de descripción de datos. Recopila datos de operaciones como DROP_TABLE y ALTER_TABLE. El registro se usa para recuperarse de fallas que ocurrieron durante dichas operaciones. DDL Log es un archivo binario que no debe ser leído por el usuario, así que no lo modifique ni elimine.

La cosa más importante

Habilite siempre el registro de errores, use el registro de consultas para verificar la conexión de la aplicación a la base de datos, verifique las solicitudes y el trabajo. El registro de consultas lentas es útil para optimizar el rendimiento de MySQL.

Pregunta: historial de consultas de ms sql


¿Cómo ver el historial de solicitudes (eliminar, actualizar...)?

Responder:
profiler es la auditoría más lenta imaginable. Los eventos extendidos se pueden personalizar según sus necesidades y también se pueden cargar, etc., pero cualquiera de estas opciones requiere recursos.

Pregunta: Solicitud de historial de ejecución


Preguntar, si es posible buscar en algún lugar de MS SQL quién y qué solicitudes se ejecutaron en una base de datos específica.

Responder: iluxa1810, esta información solo está parcialmente disponible. Pruebe una consulta como:

Código T-SQL
1 2 3 4 SELECCIONE deqs.last_execution_time COMO [Hora], dest.TEXT COMO [Consulta] DESDE sys.dm_exec_query_stats COMO deqs CRUCE APLICAR sys.dm_exec_sql_text (deqs.sql_handle) COMO dest ORDEN POR deqs.last_execution_time DESC

Para historia completa las consultas deben registrarse o usar utilidades como SQL Profiler.

Pregunta: consulta Sql para devolver valores anteriores en la base de datos


¡Hola!

¿Puede decirme cómo devolver los estados del penúltimo pedido en todos los pedidos a partir de una fecha determinada en la base de datos?

Tal vez haya algún tipo de consulta de sql o tal vez algún tipo de script... Estaría muy agradecido.

El programador no vio un poco al integrarse con mi almacén y todos los pedidos cambiaron su estado al que estaba en la configuración del módulo de integración y no sabe cómo devolverlo.

No se dieron cuenta de inmediato y ya era demasiado tarde para restaurar la copia anterior de la base de datos. Ya hay nuevos pedidos en la tienda.

Responder: poesía,
InnoDB puede almacenar el historial de consultas.

intento
1 ~/.mysql_history

Haga rodar la última copia de seguridad y repita los comandos.
Bueno, en general, antes de cada integración, debes hacer una copia de seguridad y, mejor aún, probarla en un servidor de prueba.

Pregunta: consulta sql en la búsqueda de varias tablas


Buena tarde. Ayúdenme a entender si puedo hacer esto o si necesito rehacer la base de datos o si no se puede implementar dicha búsqueda.
Escribo en delphi rad xe10.
Escribo información sobre el empleado en una línea en la tabla Empleados, una línea en tallas de ropa y el historial que se le entregó (muchas líneas y la diferencia es solo por ID_rab).

quiero hacer una busqueda
para que cuando me lo pidan por apellido o numero de ficha me den inf:
Sobre el trabajador de la primera pestaña en dbgrid1,
sus dimensiones de la segunda tabla en dbgrid2
y el historial relacionado con este trabajador de la tabla 3 (puede haber muchas filas que difieren solo por ID_rab) en dbgrid3

En la primera tabla:

en el segundo:

sql
1 2 3 4 5 6 7 8 9 10 11 CREAR TABLA Tamaño (ID_razmOdejdi INT NOT NULL IDENTITY (1, 1), Ropa VARCHAR (4), ID_rab INT, CLAVE PRINCIPAL (ID_razmOdejdi), CLAVE EXTERNA (ID_rab) REFERENCIAS Trabajadores,);

en el tercero:

sql
1 2 3 4 5 6 7 8 9 10 11 ;

¿Hacer 3 ADOQuery a la vez con diferentes consultas?
No sé cómo hacer que salga información de otra tabla que pertenece a la primera.
Si fuera posible hacer esto: Ingresé a una persona en la búsqueda y la encontré y por su ID_rab encontraría información en otras tablas y al mismo tiempo la mostraría en 3 dbgrids diferentes.

Responder:

Mensaje de Rogzar

Y si elimina por completo toda la información sobre un empleado, su tamaño, historial y se supone que debe hacerlo, ¿se puede hacer con una sola solicitud?

Si habilita la eliminación en cascada en la tabla Empleados, al eliminar una fila en ella se eliminarán los datos de las tablas subordinadas. De lo contrario, deberá realizar varias solicitudes de ELIMINACIÓN.

Agregado después de 14 horas 31 minutos
Dicho código es vulnerable a los ataques de nombre. Debe utilizar consultas con parámetros.

Pregunta: Una solicitud, ¿en serio?


¡Buenas tardes damas y caballeros!
Por favor dime como resolver el siguiente problema...
Hay tres tablas: bienes (realmente hay pocos, alrededor de 60-80 piezas), historial de ventas y saldos...

EN simplificado la estructura es la siguiente:
bienes:
identificación
nombre

Historial de pedidos:
identificación
s_date
buen_id
precio

equilibrio:
identificación
s_date
Solicitar ID
contar

Las tres tablas están vinculadas por ID (goods.id - order_history.good_id, order_history.id - balance.order_id).
¡La tarea es obtener el saldo total de todos los bienes para cualquier fecha arbitraria! Es decir, para cada producto, tengo que obtener el registro más cercano en fecha del saldo y el historial de ventas (del saldo, respectivamente, la cantidad, del historial de ventas, el precio).

Está claro que puede recorrer todos los productos por ID y ejecutar una consulta SQL en cada iteración, pero de alguna manera... ¡No me gusta esta opción! :) Si existe la posibilidad de resolver la tarea con gracia, ¿una solicitud?

Estaría agradecido por cualquier idea!

Responder: No veo ninguna contraindicación. Si pones la estructura en orden.

¡Desafilado!
Introdujo cierta redundancia en la base de datos.
Ella es demasiado para ti. Además, es potencialmente contradictorio. No veo ninguna restricción que me impida hacer un nuevo registro en balance, de modo que la diferencia entre este y el registro anterior en cantidad no corresponda a la cantidad total de order_history para el mismo período.

Pregunta: Subconsulta, ayuda a combinar algunos


¡Buena tarde! Estaré muy agradecido por la ayuda)) Me he estado devanando los sesos durante mucho tiempo.
Un poco de historia. Hay un grupo de solicitudes con una URL relacionada con ellas, el objetivo es emitir solicitudes superpuestas para alguna lista de URL, que también está determinada por la solicitud.

Y así hay varias consultas que se ejecutan en orden:
$sql2 = SELECCIONAR url DE la lista DONDE `group` = "1" AND `proekt`= "1" GRUPO POR url ORDEN POR CONTEO (*) DESC LIMIT 3 - captura de pantalla
Selecciono una lista de URL en la cantidad de 3 piezas, luego las recopilo en una vista para la solicitud

$retorno=matriz();
$maxcount=mysql_query($sql2);
while($url = mysql_fetch_array($conteo máximo)) (
$retorno = $url;
}
foreach ($return as $url1) (/recoge una cadena de URLs para Muscle de la matriz
if ($frag2==0) ( $urls = "`url`="."".$url1."""; $frag2=1; ) else $urls .= " OR `url` = "". $url1.""";
}

En este caso $urls = `url` = "http://www.MosDance.com/" O `url`="http://raisky.com/" etc.

Muestro una lista de claves relacionadas con estas URL
seleccione `clave` de (SELECCIONE `clave`, CUENTA(*) COMO total DESDE la lista DONDE `grupo` = "1" Y `proekt`= "1" Y (".$urls.") GRUPO POR `clave` ORDEN POR `total` DESC) como t2 DONDE t2.total >=3

En realidad, la pregunta principal es ¿cómo reducir este negocio? ¿Cómo recopilar la URL correctamente, de modo que pueda deshacerse de la secuencia de comandos php crutch que recopila la URL en el orden correcto y hacerlo todo, por ejemplo, con una solicitud a la base de datos? en general, ¿cómo obtener el resultado final de una solicitud más inteligente que mis muletas?

Responder:

¡Buenos días!
Nunca escriba COUNT(*). COUNT(`id`) sería mejor.
Además, no escriba RAND (*). Es mejor escribir, por supuesto, de manera diferente: hay comentarios en ellos, funciones y tal caso.
Todos los métodos anteriores para seleccionar registros de la base de datos cargan mucho el servidor mysql. A menos que, por supuesto, tenga 30 mil registros en la base de datos, no será tan doloroso para usted.

En cuanto a la solicitud:
Excavar hacia INNER JOIN. O tírame un basurero de tu tabla, te ayudo si cuentas la tarea con más detalle, ya que lo que leí me da flojera ahondar en todo el queso boro =)

-----
- lecciones de programación aquí. También hay fichas interesantes =)

Pregunta: consulta de dos tablas por múltiples criterios


¡Buenas noches!

Por favor ayúdenme con la siguiente consulta:
1. Hay una tabla de transacciones con campos: nombre de moneda, fecha, tipo de tasa y otros campos
2. Hay una tabla con el historial de tipos de cambio en los campos: nombre de moneda, fecha, tipo de tasa, tasa.

La consulta debe formarse sobre la base de todos los campos y registros de la primera tabla, y el tipo de cambio de la segunda tabla. Además, debe haber una coincidencia de los 3 criterios de selección: el nombre de la moneda, la fecha y el tipo de cambio.

¡Gracias por adelantado!

Responder:
Se sentirá más cómodo con el constructor de consultas.

Descubrí cómo hacer una alegría interior a través de SQL, a primera vista es simple. Pero hay una pregunta:
1. Hay un campo "Tipo de transacción" en la tabla de transacciones
2. La consulta que estoy haciendo primero saca para cada registro de la tabla de transacciones "Tipo de cambio" de la tabla "Tipos de transacciones"
3. La solicitud se retira de la tabla con tarifas según el criterio "Tipo de curso" recibido en el párrafo 2.

En otras palabras: primero, se combinan 2 tablas (de transacciones y tipos de transacciones), y luego, debido a la información común, se les agregan datos de la tabla "Tipos de cambio".

Pregunta: Averigüe en qué registro de la tabla falla la consulta


Encontré una situación en la que una consulta a la tabla de hechos devuelve un error, pero no puedo detectar las entradas en el directorio que conducen a un error (la pregunta está en las fechas)
La consulta en sí devuelve todos los registros de la tabla de hechos, además de un campo calculado de la búsqueda. Si la búsqueda se completó correctamente, la subconsulta devolvería un valor por registro de la tabla de hechos. Pero, de hecho, en el directorio de los registros del error, que no puedo atrapar.
¿Tal vez pueda ver de alguna manera en qué registro de la tabla de hechos ocurre el error?

Responder: No es divertido. Hace mucho tiempo era (textualmente):
Bueno, tan pronto como el detector de delirio funcionó, inmediatamente corrió ... ¿Qué pasa?
Antes de escribir heroicamente súper solicitudes (para todas las ocasiones), debe encender su cerebro, bueno, al menos durante un par de minutos ...
Bueno, personalmente, su "sufrimiento" fue exactamente suficiente para una solicitud loca, cuyo lugar es una papelera.
Y "volabas zapatillas" solo por su semántica y sintaxis...
¡Buena idea!
Y cuando pueda, sáquelo del estante (¡bueno, al menos!) - y "estudie, estudie y estudie" (c). Definitivamente hay un intercambio AGRUPAR POR y TENER...

Pregunta: Programas para perfilar solicitudes


¡Saludos!

Dígame quién (programas, IDE, etc.) utiliza para analizar consultas, en particular, están interesados ​​en herramientas de análisis de consultas para optimizarlas. Donde puede ver el plan de consulta: índices de consulta, análisis completo y más.

11) | FECHA | FECHA | nombre_del_conductor | VARCHAR(100) | por ciento | INT (11) | suma_recibida_del_cliente | DECIMAL (9 , 2 ) | sum_tariff_for_driver | DECIMAL (9 , 2 ) | summa_for_payed | DECIMAL (9 , 2 ) | estado_pagado | minúsculo(1) | porcentaje_empresa | ENT(11)

El campo "paid_status" almacena el estado del pago. Necesario en una consulta como:

obtener todos los datos. Debería ser así, si "paid_status = 1", entonces en lugar del número que está en el campo "summa_for_payed", siempre obtenga "0".

Si agrego "y pagado_status no como "1"" en la solicitud, resultará que la salida de esta línea no se recibirá en absoluto, pero todo debería recibirse, solo con el campo "summa_for_payed" ya cambiado, dependiendo en el estado "payed_status"

Agregado después de 25 minutos
Agregaré, también es necesario que durante la solicitud con el comando sum(summa_for_payed) para cierta fecha, para recibir el importe, teniendo en cuenta el valor del campo "paid_status", o sea, donde "payed_status = 1", entonces en el importe los campos "summa_for_payed" se consideraron como "0" si "payed_status = 1"

Responder: Sí, eso pensé, pero el problema es que si restablezco la línea y si se seleccionó el usuario incorrecto por error, no podré devolverlo, ya que su antigua deuda se ha borrado, así que pensé de este indicador y determinar el pago, y si es necesario devolverlo nuevamente, viendo su monto de deuda. Bueno, en general, sería mejor para la historia ver su deuda que cerró.

Agregado después de 34 minutos
Estimados gurús.
Encontré lo que se puede hacer.

sql
1 SELECCIONE SUMA (SI (`estado_pagado` = 1, 0, `suma_por_pago`)) DESDE mitabla

Hice varias solicitudes, parece ser lo que necesito, pero ¿pueden decirme, no hay trampas en tal solicitud, es esto lo que necesito? ¿Debo hacer esto o buscar otras soluciones? Aquí es donde los disparadores vienen a la mente. tal vez con ellos? Qué recomiendas. También pensé en cambiar los valores, si 0 entonces paga, si 1 entonces no, y luego en la elección de multiplicar el número por el indicador, y si es cero, entonces solo obtengo cero. si uno, entonces obtengo el número en sí. solo cálculos extra... ¿Tu opinión?

Este artículo está dedicado al estudio del tema "Fundamentos de la programación web", donde continuamos trabajando con la base de datos, pero con varias tablas, creando relaciones entre ellas y familiarizándonos con la instrucción SELECT.

  • Creando una base de datos en PHPMyAdmin. Trabajando con datos usando PHP, MySQL y HTML
  • Sistema de información para evaluar la eficiencia y eficacia del trabajo de un empleado de laboratorio.
  • Desarrollo de un sistema de información para el jefe de la base petrolera
  • Creación de un sistema de información para un despachador de servicio de automóviles
  • Descripción general de la funcionalidad de la herramienta de software para gestionar el ciclo de producción de una empresa

phpMyAdmin es un programa escrito en PHP y diseñado para gestionar servidor mysql a través de red mundial. phpMyAdmin admite una amplia gama de operaciones de MySQL, las operaciones más utilizadas se admiten a través de la interfaz de usuario (administración de bases de datos, tablas, campos, relaciones, índices, usuarios, permisos, etc.), puede ejecutar directamente cualquier consulta SQL al mismo tiempo. tiempo.

Peticiones es un objeto de base de datos que se utiliza para extraer datos de las tablas y proporcionárselos al usuario en una forma conveniente. La peculiaridad de las consultas es que extraen datos de tablas base y crean una tabla temporal basada en ellos. El uso de consultas evita la duplicación de datos en las tablas y proporciona la máxima flexibilidad para encontrar y mostrar datos en la base de datos.

Consultas SQL - Consultas creadas utilizando un conjunto unificado de instrucciones SQL (lenguaje de consulta estructurado - lenguaje de consulta estructurado). SQL no se puede atribuir completamente a los lenguajes de programación tradicionales, siempre que ingrese variables, describa el tipo y mucho más, contiene solo un conjunto de operadores de acceso a datos estándar almacenados en la base de datos.

Idiomasqlcomparte cuatro partes:

  • Operadores de definición de datos(Lenguaje de definición de datos, DDL): crear ("crear"), alterar ("cambiar"), soltar ("eliminar").
  • Operadores de manipulación de datos(Lenguaje de manipulación de datos, DML): seleccionar ("seleccionar"), insertar ("insertar"), actualizar ("actualizar") y eliminar ("eliminar").
  • Declaraciones de definición de acceso a datos(Lenguaje de Control de Datos, DCL): otorgar (“grant”) y revocar (“privar”).
  • Declaraciones de control de transacciones(Lenguaje de control de transacciones, TCL): compromiso ("completar"), retroceder ("retroceder"), punto de guardado ("guardar").

Consideraremos un comando del lenguaje SQL: el comando de obtención de datos SELECCIONE , por lo que gracias a este comando puedes organizar todas las solicitudes posibles.

Sintaxis del operadorSELECCIONE

SELECCIONE <список полей, которые вы хотите отразить в запросе> |*

DESDE <список таблиц, с которыми вы работаете>

[DONDE <предикат-условие выборки или неявное внутреннее соединение таблиц>]

[GRUPO POR <список полей группировки> [TENER <предикат-условия для группировки>]]

[PEDIDO POR <список полей, по которым упорядочивает вывод> ]

La información incluida en corchetes, como siempre es opcional.

Veamos algunos ejemplos de consultas en phpMyAdmin, para ello usaremos la base de datos anterior " Komp _ texnika ". En esta base de datos, ya hemos creado una tabla " producto ” (producto), que reflejaba las propiedades correspondientes de la entidad: producto_ IDENTIFICACIÓN ( Clave primaria ), fabricante ( fabricante ), modelo ( modelo ), Dios_ creado ( año de creación ) ytipo_ IDENTIFICACIÓN ( tipo de producto, es una clave foránea ) (ver Fig. 1).

También en esta base de datos, agregamos otra entidad " ordenador portátil ” (tipo de producto), que reflejaba las propiedades correspondientes de la entidad: tipo_ IDENTIFICACIÓN(Clave primaria), tipo(tipo), sistema operativo(Sistema operativo), procesador(UPC), pamjat(memoria), zvet(Color), peso(peso) y zena(precio) (ver Fig.2).

Ahora bien, antes de proceder a la compilación de consultas, es necesario establecer una relación entre entidades (tablas). Para ello, trabajaremos con la tabla " ordenador portátil”, es decir, seleccione el elemento “ Conexiones » (ver Fig.3).

Después de eso, se abrirá una página donde deberá especificar los campos que son responsables de la relación entre las tablas (ver Fig. 4). También puede establecer una conexión de otra manera usando " Diseñador » (ver Fig.4)

Así, una vez establecidas las relaciones entre tablas, podemos proceder a la creación de consultas dirigiéndonos al menú superior” sql ».

Solicitud 1. Mostrar información sobre los equipos disponibles para la versión de 2012 (ver Tabla 1).

tabla 1

Para implementar esta solicitud, usamos el operador Seleccione – para mostrar información del campo fabricante ( fabricante ) y modelo ( modelo ) , desde - para describir la tabla desde la que desea emitir información; predicado donde – para la condición de seleccionar filas de la tabla de resultados, es decir, devuelve los datos con el año de creación ( Dios_ creado) era igual a 2012 ; pedido por – para ordenar los datos por campo fabricante ( fabricante ) .

Solicitud 2. Mostrar información sobre la cantidad de equipos de los fabricantes disponibles (ver Tabla 2).

Tabla 2

con contar es uno de los llamados agregando funciones”, que cuenta el número de tuplas no vacías, son herramienta poderosa construyendo consultas, en este caso ha agrupado la salida de datos por fabricante ( fabricantes ) .

Solicitud 3. Muestre el costo total de las computadoras portátiles por los fabricantes disponibles, ordenados por cantidad en orden ascendente (ver Tabla 3).

Tabla 3

EN solicitud dada necesitamos datos de dos tablas, para esto necesitamos unir las tablas " producto " (producto) y " ordenador portátil » (tipo de producto), para hacer esto, use el predicado entrar especificando los campos de combinación: la clave principal de la tabla ordenador portátil . tipo _ IDENTIFICACIÓN y clave foránea de la tabla producto . tipo _ IDENTIFICACIÓN . También tenga en cuenta que cuando se trabaja con dos o más tablas, en el operador Seleccione, al describir campos, es necesario indicar el nombre de la tabla de este campo, por ejemplo ordenador portátil . tipo . suma , así como contar se refiere a " agregando funciones”, que calcula la suma de los valores de las tuplas, en nuestro caso, la suma del costo de la técnica.

Solicitud 4. Recuperar datos de la computadora portátil de Sistema operativo Windows-8, con un costo de no más de 25 mil (ver Tabla 4).

Tabla 4

Solicitud 5. Mostrar información del producto: fabricante(fabricante), modelo(modelo), pamjat(memoria), procesador(procesador) y zena(precio), por categoría « encajar " y " no encajar » (ver Tabla 5).

Tabla 5

Resultado:

Programa :

Seleccione caso cuando (laptop.pamjat = 1000) y (laptop.processor >=2600) luego "podhodit" sino "not podhodit" termina como itog, product.maker, product.model, laptop.pamjat como pamjat_v_Gb, laptop.processor como proc_v_Mgz, laptop.zena from product join laptop on laptop.type_ID=product.type_ID where laptop.type like "l%" order by 1 desc, 6

con Plaza bursátil norteamericana fin - predicado de selección, utilizado para distribuir el producto en categorías, de acuerdo con los criterios. me gusta "1%" es un predicado que se utiliza para comparar cadenas con un patrón. El patrón es una cadena que puede usar dos caracteres especiales: " % " y " _ ", donde " % ' coincide con cualquier cadena (posiblemente vacía) y ' _ ' coincide con un solo carácter, cualquier otro carácter no especial solo puede coincidir con los caracteres especiales y con ellos mismos. pedido por [ asc| descripción] – diseñado para ordenar los resultados de la consulta [ascendente (predeterminado) | descendente], la clasificación es posible tanto para un campo como para más.

Operador SELECCIONE no es más que una expresión para obtener el conjunto de resultados de las tablas de la base de datos. Formamos una solicitud usando el operador. SELECCIONE , y este, a su vez, habiendo completado su trabajo, devuelve el conjunto de datos resultante. Estos datos se devuelven en forma de tabla, que a su vez puede ser procesada por la siguiente declaración SELECCIONE etc.

Bibliografía

  1. Anotación a phpMyAdmin [Recurso electrónico] / URL: http://php-myadmin.ru/about/notice.html
  2. Consultas a bases de datos y su uso. Tipos de solicitud. Tecnología de creación [Recurso electrónico] / URL: http://www.yaklass.ru/materiali?mode=cht&chtid=514
  3. Ostrovsky S.L. Fundamentos de la programación web para la "construcción de sitios" escolares. Lección 5. PHP + MySQL [Texto] / S.L. Ostrovsky // Informática. - 2008.-№21.-p.2-15

Cerrar