SQL – kde najít seznam tabulek?

Přestože náš miniseriál o SQL skončil již takřka před rokem, dodnes od vás dostávám zajímavé otázky či žádosti o radu s řešením různorodých problémů.
Přestože náš miniseriál o SQL skončil již takřka před rokem, dodnes od vás dostávám zajímavé otázky či žádosti o radu s řešením různorodých problémů. Nejnovější dotaz zněl "Jak mohu pomocí SQL získat seznam tabulek?" Vzhledem k tomu, že se jedná o problém obecnějšího rázu, podívejme se na něj podrobněji.

Prakticky každý SŘBD uchovává informace o tabulkách v tzv. systémovém katalogu (někdy se na základě anglického originálu Data Dictionary můžete také setkat s pojmem datový slovník). Zpravidla je katalog realizován ve formě několika desítek interních tabulek, o jejichž obsah se stará sám systém – uživatel tedy ani nemusí vědět, že nějaký systémový katalog existuje. Tomu může být obsah systémového katalogu zpřístupněn několika způsoby, například jednoúčelovou utilitou umožňující klást jednoduché dotazy ve formátu QBE či správcovskou konzolou. Nejčastěji však uživatelé přistupují k jednotlivým tabulkám systémového katalogu (či k předpřipraveným pohledům vytvořeným nad těmito tabulkami) prostřednictvím příkazu SELECT. A odtud je již jen kousek k odpovědi na výše uvedený dotaz. Ale aby to nebylo zase tak jednoduché, mají v každém systému tabulky katalogu jinou podobu. Následující příklady ukazují, jak problém vyřešit v produktech Oracle 8.x, MS SQL 7.0 a Sybase Adaptive Server Anywhere 6.0 (ke kterým dotaz směřoval):

Oracle 8.x
Seznam všech tabulek, které jsou ve vlastnictví uživatele, lze získat z pohledu USER_TABLES (synonymum pro tento pohled je TABS):

SELECT table_name FROM user_tables
Seznam všech pohledů ve vlastnictví uživatele lze obdobně získat z pohledu USER_VIEWS:

SELECT view_name FROM user_views

MS SQL 7.0
Seznam objektů vytvořených v databázi je obsažen v tabulce SYSOBJECTS, přičemž atribut xtype {char(2)} určuje, o jaký typ objektu se jedná (U=uživatelská tabulka, S=systémová tabulka, V=pohled apod.), a atribut uid {smallint} určuje vlastníka objektu:

SELECT name,uid FROM sysobjects WHERE xtype=`U`

Sybase Adaptive Server Anywhere 6.0
Seznam tabulek vytvořených v databázi je v tomto prostředí možné získat dotazem na tabulku SYSTABLE, přičemž atribut table_type {char(10)} určuje, zda se jedná o tabulku (BASE) či pohled (VIEW), a atribut creator {smallint} určuje vlastníka objektu:

SELECT table_name,creator FROM systable WHERE table_type=`BASE`
Uvedená řešení není možné chápat jako jediná možná – cest je vždy více, především díky tomu, že požadované informace bývají obsaženy ve více různých pohledech/tabulkách systémového katalogu.

Uvědomte si také, že systémový katalog obsahuje podstatně více informací – od definice všech objektů v databázi přes přístupová práva až po uživatelské komentáře k objektům či protokoly o provedených akcích. Nespornou výhodou v SQL systémech je, že k jednotlivých pohledům/tabulkám katalogu můžete přistupovat právě pomocí standardních příkazů SQL (vlastně ne všech, málokdy totiž můžete měnit obsah systémového katalogu přímo pomocí příkazů UPDATE, INSERT či DELETE). Určitou nevýhodou je skutečnost, že katalog má v každém systému jinou podobu – musíte se tedy takřka vždy obrátit se žádostí o pomoc na dokumentaci k danému produktu. A nebo se zeptejte nás – nezapomínejte, že nabídka na řešení vašich problémů s SQL pořád platí.

Diskuze (3) Další článek: Týden: I Love You a zbývající bezvýznamnosti

Témata článku: Software, Programování, Tab, From, Starý kousek, Určitý objekt, Creator, SQL, Select, Pre


Určitě si přečtěte

Šmírování kamerami Googlu: Koukněte, co šíleného se objevilo na Street View

Šmírování kamerami Googlu: Koukněte, co šíleného se objevilo na Street View

Google stále fotí celý svět do své služby Street View. A novodobou zábavou je hledat v mapách Googlu vtipné záběry. Podívejte se na výběr nejlepších!

redakce | 4

redakce
Mapy GoogleStreet View
Dostali jste nový počítač? Tohle s ním udělejte, než ho začnete používat

Dostali jste nový počítač? Tohle s ním udělejte, než ho začnete používat

** Každý nový počítač si zaslouží počáteční péči ** Odinstalujte bloatware a nezapomeňte na vhodné nastavení ** Poradíme, jak se o počítač s Windows 10 postarat

David Polesný, Stanislav Janů | 71

David PolesnýStanislav Janů
PočítačeNotebooky
10 míst na mapách Googlu, která nesmíte vidět. Nahradily je čtverečky

10 míst na mapách Googlu, která nesmíte vidět. Nahradily je čtverečky

** Deset míst, které nesmíte vidět ve webových mapách ** Jsou to letiště, základny i elektrárny ** Nejvíce míst tají Francie

Jakub Čížek | 21

Jakub Čížek
Mapy GoogleMapy
Uživatelé hlásí problémy s jednou z listopadových záplat pro Windows 10
Karel Kilián
Windows UpdateAktualizaceWindows 10
Vodafonu se zhroutila kabelovka. Síť bývalého UPC má výpadky
Lukáš Václavík
VodafoneUPC

Aktuální číslo časopisu Computer

Jak prodloužit výdrž notebooku

Velké testy: gamepady a inkoustové tiskárny

Důkladný test Sony Playstation 5