Kronus - mysql adatbázis struktúra egy lekérdezéshez
[MySQL] Adatbázishoz egy lekérdezéshez
- Az information_schema.tables-ból az első táblázat nevét és az első adatbázis nevét vesszük, amelyre utal. Egyéni változókban tároljuk őket.
- Az information_schema.columns táblázatból sorba állítjuk az összes oszlop nevét.
- Mindegyiküknél ellenőrizzük a következő feltételeket:
- hogy a táblázat megváltozott-e.
- ha igen, megváltozott az adatbázis?
- Ha mind a táblát, mind az adatbázist megváltoztatjuk, akkor az új adatbázis nevét és az új táblázat nevét adjuk ki.
- Ha csak a táblát változtatja meg, akkor az új tábla nevét adjuk ki.
- ha a táblázat nem változott, még mindig látjuk, hogy az adatbázis megváltozott-e.
- ha igen, akkor megjelenik a neve az új adatbázis és az új tábla nevét (ez meglehetősen ritka esemény - ez akkor történik, amikor az adatbázis n-1 utolsó táblát A és n az adatbázist a neve az első táblázat).
- ha semmi sem változott, akkor semmi sem származik.
- ha igen, megváltozott az adatbázis?
- hogy a táblázat megváltozott-e.
- Egyszerűen jelenítse meg a mező nevét.
Szintén jó lenne minden egyes adatbázisban kimenni a táblák számát (ez nem számít a kezeknél), és minden táblázathoz a bejegyzések számát. Az első az űrlap lekérdezésével valósul meg
SELECT (@n) FROM (SELECT @n: = 0x20 (/ * Ez a SELECT biztosít inicializálási releváns változók * / SELECT (CONCAT (@a: = TABLE_SCHEMA, / * Az első DB * / @b: = table_name, / * Az első táblázat * / / * változók csökkentésére a hossza a lekérdezés * / @c: = 0x3c62723e, / * karakterlánc Translation
. Mivel használjuk
, lehetséges lenne, hogy egy egyszerű n * / @d: = 0x2d2d2d, / * akkor használatos, ha a formázás a kimenő adatok --- * / @s: = 0x2028, / * Space és (* / @q: = 0x29, / *) * / / * ez a változó halmozódik kimeneti adatsort * / @n: = / * neve az első adatbázis és az első táblázat * / CONCAT (0x3c7072653e, / *- tiszta, bármi könnyebb olvasni (fix szélességű betűtípussal, és így tovább) * / @a, @s, (SELECT (COUNT (*)) FROM (information_schema.TABLES) WHERE (TABLE_SCHEMA = @) pont), / * számának megjelenítése táblázatok Ebben az adatbázisban * / @q, @c, @d, @b, @s, IFNULL ((SELECT (table_rows) FROM (information_schema.TABLES) WHERE (table_name = @ b) pont), 0x2d) / * a kijelző a bejegyzések számát Ebben a táblázatban * / @q))) tól (information_schema.tables) LIMIT / ** / 1 / * ez egy tér, amely nem megszabadulni * /), (SELECT (COUNT (*)) tól (information_schema.columns) / * a hozzá ciklus danyh táblák és oszlopok az adatbázisban elhatárolt húr * / WHERE (@n :! = CONCAT_WS (@c, @n, CONCAT (IF (table_name = @ b, (/ * táblázat változtatni * / IF (TABLE_SCHEMA ! = @ a, (/ * megváltozott asztal pomenyatsya egyezéstelismerem DB * / SELECT (CONCAT (@a: = TABLE_SCHEMA, @s, (SELECT (COUNT (*)) FROM (information_schema.TABLES) WHERE (TABLE_SCHEMA = (@) pont)), / * A kijelző táblák száma az adatbázisban * / @q, @c, @d, @b: = tábla_neve, @s, IFNULL ((SELECT (table_rows) aZ (information_schema.TABLES) ahol (TABLE_NAME = @ b) és (TABLE_SCHEMA = @ a)), 0x2d ) / * a kijelző a bejegyzések száma a táblázatban * / @q, @c, 0x2d))), (/ * a műszak táblázat DB nem Pomena * / SELECT (CONCAT (@d, @b: = tábla_neve, @s, IFNULL ((SELECT (table_rows) FROM (information_schema.TABLES) WHERE (table_name = @ b) és (TABLE_SCHEMA = @) pontja), 0x2d) / * a kijelző a bejegyzések száma ebben a táblázatban * / @q, @c, 0x2d) )))) (/ * a táblázat nem változik * / IF (TABLE_SCHEMA! = @ a, (/ * a táblázat nem változott, megváltozott az adatbázis (Véletlenül, ugyanabban az adatbázisban, egy asztal nevére Otori neve ugyanaz, mint az első tabiltsy a nyomvonalat. Db) * / SELECT (CONCAT (@a: = TABLE_SCHEMA, @s, (SELECT (COUNT (*)) FROM (information_schema.TABLES) WHERE (TABLE_SCHEMA = (@) pont)), / * A kijelző táblák száma az adatbázisban * / @q, @c, @d, @b: = tábla_neve, @s, IFNULL ((SELECT (table_rows) aZ (information_schema.TABLES) ahol (TABLE_NAME = @ b) és (TABLE_SCHEMA = @ a)), 0x2d ) / * a kijelző a bejegyzések száma ebben a táblázatban * / @q, @c, 0x2d))) (/ * tábla nem változott, az adatbázis nem változott * / SELECT (0x2d))))) / * Végül levezetni oszlop neve * / 0x2d2d2d2d2d, oszlop_neve)))> 0)) A-Szörnyű formában a lekérdezés így néz ki:
Kapcsolódó cikkek