Structura bazei de date Kronus - mysql pentru o interogare

[MySQL] Structura bazei de date pentru o interogare

  • Luăm de la information_schema.tables numele primei tabele și numele primei baze de date la care se referă. Le păstrăm în variabile personalizate.
  • Din tabelul information_schema.columns, tragem numele tuturor coloanelor.
  • Pentru fiecare dintre ele verificăm următoarele condiții:
    • dacă masa sa schimbat.
      • dacă da, a schimbat baza de date?
        • dacă atât tabelul, cât și baza de date sunt modificate, atunci emitem numele noii baze de date și numele tabelului nou.
        • Dacă se modifică numai tabelul, atunci vom emite numele tabelului nou.
      • dacă tabelul nu sa schimbat, vom vedea dacă baza de date s-a schimbat.
        • dacă este așa, extrageți numele noii baze de date și numele tabelului nou (acesta este un caz rar - apare dacă ultimul tabel numit A în baza de date n-1 și primul tabel numit A în baza de date n).
        • dacă nimic nu sa schimbat, atunci nu derivăm nimic.
  • Afișați pur și simplu numele câmpului.

Ar fi, de asemenea, placut sa iesi pentru fiecare baza de date numarul de tabele din el (care nu ar conta cu mainile) si pentru fiecare tabel numarul de intrari. Primul este realizat printr-o interogare a formularului







SELECT (@n) din (SELECT @n: = 0x20, (/ * Acest SELECT ofera initializare variabile relevante * / SELECT (CONCAT (@a: = table_schema, / * Prima DB * / @b: = table_name, / * Primul tabel * / / * Variabile pentru reducerea lungimii interogării * / @c: = 0x3c62723e, / * șir de traducere
. De când ne folosim

, ar fi posibil să se facă un simplu n * / @d: = 0x2d2d2d, / * este utilizat atunci când formatarea datelor de ieșire --- * / @s: = 0x2028, / * Spațiu și (* / @q: = 0x29, / *) * / / * această variabilă acumulează date linie de ieșire * / @n: = / * numele primei baze de date și primul tabel * / cONCAT (0x3c7072653e, / *
 - pur, ceea ce este mai ușor de citit (font echidistante și așa mai departe) * / @a, @s, (SELECT (COUNT (*)) din (information_schema.TABLES), unde (table_schema = @ a)), / * Afișează numărul de tabele în această bază de date * / @q, @c, @d, @b, @s, IFNULL ((SELECT (table_rows) dIN (information_schema.TABLES) UNDE (nume_tabelă = @ b)), 0x2d) / * Afișarea numărului de intrări în acest tabel * / @q))) FROM (information_schema.tables) LIMIT / ** / 1 / * Acesta este un singur spațiu, care nu a reușit să scape de * /), (SELECT (COUNT (*)) FROM (information_schema.columns) / * pentru adăugarea de ciclu danyh de tabele și coloane în baza de date acumulate șirul * / UNDE (@n = CONCAT_WS :! (@c, @n, CONCAT (IF (nume_tabelă = @ b, (/ * Tabelul schimbat * / IF (table_schema ! = @ a, (/ * Tabelul sa schimbat, schimbând DB * familiarizeze / SELECT (CONCAT (@a: = table_schema, @s, (SELECT (COUNT (*)) din (information_schema.TABLES), unde (table_schema = (@ a))), / * Afișarea numărului de tabele din baza de date * / @q, @c, @d, @b: = table_name, @s, IFNULL ((SELECT (table_rows) din (information_schema.TABLES) UNDE (nume_tabelă = @ b) și (table_schema = @ a)), 0x2d ) / * Afișează numărul de intrări în acest tabel * / @q, @c, 0x2d))), (/ * tabelul deviațiilor DB nu Pomena * / SELECT (CONCAT (@d, @b: = tABLE_NAME, @s, IFNULL ((SELECT (table_rows) din (information_schema.TABLES), unde (nume_tabelă = @ b) și (table_schema = @ a)), 0x2d), / * Afișează numărul de intrări în acest tabel * / @q, @c, 0x2d) )))) (/ * Tabelul nu este schimbat * / IF (table_schema! = @ a, (/ * Tabelul nu este schimbat, modificat baza de date (Întâmplător, în aceeași bază de date, un nume de tabel pentru a Otoroi coincide cu numele primului Tabiliti pe traseu. Db) * / SELECT (CONCAT (@a: = table_schema, @s, (SELECT (COUNT (*)) din (information_schema.TABLES), unde (table_schema = (@ a))), / * Afișarea numărului de tabele din baza de date * / @q, @c, @d, @b: = table_name, @s, IFNULL ((SELECT (table_rows) din (information_schema.TABLES) UNDE (nume_tabelă = @ b) și (table_schema = @ a)), 0x2d ) / * Afișează numărul de intrări în acest tabel * / @q, @c, 0x2d))), (/ * tabelă nu este schimbat, baza de date nu sa schimbat * / SELECT (0x2d))))), / * în cele din urmă deducem numele coloanei * / 0x2d2d2d2d2d, nume_pagină)))> 0)) a -







Într-o formă îngrozitoare, interogarea arată astfel:







Articole similare

Trimiteți-le prietenilor: