Případ je jednoduchý: Máte databázi MySQL, kde máte pouze rozhraní dotazů SQL a chcete znát strukturu databáze s dotazy. Tabulky můžete zobrazit pomocí příkazu show tables;
, Ale jak vidíte názvy jednotlivých sloupců?
(příkaz SELECT
ukazuje Empty set
, pokud nejsou k dispozici žádná data a NEMŮŽETE je tedy použít.)
Nejlepší řešení, které jsem zjistil sám, bylo desc table_name
příkaz. Více informací je na Seznam MySQL tabulek. Tento příkaz uvádí popis jedné databázové tabulky, což je přesně to, co jsem se snažil zjistit.
select column_name from information_schema.columns where table_name='table'
Chcete-li se ujistit, že jsou v aktuální databázi uvedeny sloupce v tabulce, použijte funkci DATABASE () nebo SCHEMA () . Pokud nejste v aktuální databázi, vrátí NULL. Tento dotaz zobrazí sloupce v tabulce v pořadí, v jakém byly sloupce definovány:
SELECT column_name,column_type
FROM information_schema.columns
WHERE table_schema = DATABASE()
AND table_name='table'
ORDER BY ordinal_position;
Nejsem si jistý, že rozumím tomu, co máte na mysli s tabulkami tituly , ale většinu informací o tabulkách a jejich sloupcích můžete získat z INFORMATION_SCHEMA
jak vidíte jednotlivé názvy tabulek?
Myslíš komentáře v tabulce ?
use stack;
create table t(v integer primary key) comment 'My Special Table';
show tables;
+-----------------+
| Tables_in_stack |
+-----------------+
| t |
+-----------------+
select table_name, table_comment from information_schema.tables where table_name='t';
+------------+------------------+
| table_name | table_comment |
+------------+------------------+
| t | My Special Table |
+------------+------------------+
SHOW COLUMNS FROM mydb.mytable;
where mydb - je databáze, která obsahuje potřebnou tabulku
mytable - je potřebná tabulka
Vrací informace o sloupcích (např. Pro názvy sloupců, typ, e t c)
Musíte se připojit information_schema.tables
a information_schema.columns
dohromady získáte seznam tabulek a podrobnosti o jejich sloupcích.
information_schema.columns
nejen zobrazuje podrobnosti o tabulkách, ale také pohledy. Z tohoto systémového pohledu nelze filtrovat pouze podrobnosti tabulky.
Proto se musíte připojit.
Příklad dotazu:
select t.TABLE_SCHEMA, t.TABLE_NAME, c.COLUMN_NAME, c.COLUMN_TYPE, c.DATA_TYPE
from information_schema.tables t , information_schema.columns c where 2=2
and t.table_schema=c.table_schema
and t.table_name=c.table_name
and t.table_type ='BASE TABLE'
order by t.table_schema, t.table_name, c.column_name
;