DUAL tabulka - DUAL table
The DVOJÍ tabulka je speciální jednořádkový, jednosloupcový stůl ve výchozím nastavení přítomno v Věštec a další databáze instalace. V Oracle má tabulka jeden sloupec VARCHAR2 (1) s názvem DUMMY, který má hodnotu 'X'. Je vhodný pro použití při výběru pseudo sloupce, jako je SYSDATE nebo USER.
Příklad použití
Oracle SQL syntaxe vyžaduje Z klauzule, ale některé dotazy nevyžadují žádné tabulky - v těchto případech lze použít DUAL.
VYBRAT 1+1Z dvojí;VYBRAT 1 Z dvojí;VYBRAT UŽIVATEL Z dvojí;VYBRAT SYSDATE Z dvojí;VYBRAT * Z dvojí;
Dějiny
Charles Weiss vysvětluje, proč vytvořil DUAL:
Vytvořil jsem tabulku DUAL jako podkladový objekt v Oracle Data Dictionary. Nikdy to nemělo být vidět samo, ale místo toho použito uvnitř pohledu, který měl být dotazován. Myšlenka byla, že byste mohli udělat JOIN do tabulky DUAL a ve výsledku vytvořit dva řádky pro každý jeden řádek v tabulce. Potom lze pomocí funkce GROUP BY shrnout výsledné spojení, aby se zobrazilo množství úložiště pro rozsah DATA a pro rozsahy INDEX. Název, DUAL, vypadal vhodně pro proces vytváření dvojice řádků z jediné.[1]
Optimalizace
Počínaje verzí 10 g verze 1 již Oracle neprovádí fyzické nebo logické I / O v tabulce DUAL, ačkoli tabulka stále existuje.[2]
DUAL je snadno dostupný pro všechny uživatele v databázi.
V jiných databázových systémech
Několik dalších databází (včetně Microsoft SQL Server, MySQL, PostgreSQL, SQLite a Teradata) umožňuje jedné zcela vynechat klauzuli FROM, pokud není potřeba žádná tabulka. Tím se vyhnete potřebě jakéhokoli fiktivního stolu.
- Fénix má jednorázovou systémovou tabulku RDB $ DATABASE, která se používá stejným způsobem jako Oracle DUAL, i když má také svůj vlastní význam.
- IBM DB2 má pohled, který při použití Oracle Compatibility řeší DUAL.[3] Má také tabulku s názvem sysibm.sysdummy1, která má podobné vlastnosti jako Oracle DUAL.
- Informix: Informix verze 11.50 a novější má tabulku s názvem
sysmaster:"informix".sysdual
se stejnou funkcí, ale podrobnějším názvem.[4] Můžeš použítVYTVOŘIT VEŘEJNOST SYNONYMUM dvojí PRO sysmaster:"informix".sysdual
vytvořit názevdvojí
v aktuální databázi se stejnou funkčností. - Microsoft Access: Může být vytvořena tabulka s názvem DUAL a jednořádkové omezení vynuceno prostřednictvím ADO (Tabulkový dotaz UNION v MS Access )
- Microsoft SQL Server: SQL Server nevyžaduje fiktivní tabulku. Dotazy jako „select 1 + 1“ lze spustit bez klauzule „from“ / názvu tabulky.[5]
- MySQL umožňuje specifikovat DUAL jako tabulku v dotazech, které nepotřebují data z žádné tabulky.[6] Je vhodný pro použití při výběru funkce výsledků, jako je SYSDATE () nebo UŽIVATEL(), i když to není podstatné.
- PostgreSQL: Pro usnadnění portování z Oracle lze přidat zobrazení DUAL.[7]
- Sněhová vločka: DUAL je podporován, ale není výslovně dokumentován. To se objeví v ukázkovém SQL pro další operace v dokumentaci.
- SQLite: VÝHLED s názvem „dual“, který funguje stejně jako Oracle „dual“ tabulka, lze vytvořit následovně:
VYTVOŘIT POHLED dvojí TAK JAKO VYBRAT 'X' TAK JAKO figurína;
- SAP HANA má tabulku nazvanou DUMMY, která funguje stejně jako tabulka Oracle „dual“.
- Teradata databáze nevyžaduje fiktivní tabulku. Dotazy jako „select 1 + 1“ lze spustit bez klauzule „from“ / názvu tabulky.
Poznámky
- ^ „Více o historii Oracle“. Oracle Magazine. Leden – únor 2002. Archivovány od originál 5. prosince 2004. Citováno 4. září 2013.
- ^ Oracle Database SQL Language Reference 11g Release 2 (11.2), výběr z tabulky DUAL
- ^ DB2 10.1 InfoCenter :: DB2 verze 10.1 pro Linux, UNIX a Windows - tabulka DUAL
- ^ Informix 12.10 InfoCenter :: Referenční příručka :: Databáze sysmaster :: Tabulky rozhraní pro monitorování systému :: sysdual
- ^ Jaký je ekvivalent Oracle v tabulce „Dual“ v SqlServeru?
- ^ "MySQL :: MySQL 5.0 Reference Manual :: 13.2.8 SELECT Syntax". Archivovány od originál dne 03.01.2012. Citováno 2009-03-14.
- ^ PostgreSQL :: PostgreSQL Wiki :: Převod Oracle na Postgres