Zobecn∞nß tabulka (SQL)
zobecn∞nß tabulka
::= { identifikßtor_tabulky [ specifikace_indexu ] |
identifikßtor_ulo₧enΘho_dotazu
| ( dotazov²_v²raz ) | join } [
p°ejmenovßnφ
]
specifikace_indexu ::= INDEX jmΘno_indexu
join ::=
zobecn∞nß_tabulka druh_joinu
zobecn∞nß_tabulka
[ specifikace_joinu ]
druh_joinu ::= CROSS JOIN | [ NATURAL ] [ INNER | { LEFT | RIGHT | FULL } [ OUTER ] ] JOIN
specifikace_joinu ::= ON podmφnka | USING ( nßzev_sloupce { , nßzev_sloupce }à)
p°ejmenovßnφ
::= [ AS ] jmΘno [( jmΘno_sloupce { , jmΘno_sloupce }à)]
Pojem zobecn∞nß tabulka definuje, kterΘ objekty mohou v jazyce SQL plnit funkci tabulky. Krom∞ skuteΦnΘ tabulky nebo dotazu ulo₧enΘho v databßzi (VIEW) to m∙₧e b²t i dotazov² v²raz v zßvorkßch nebo join.
Pojem join vyjad°uje vytvo°enφ spojen²ch zßznam∙ ze dvou tabulek z°et∞zenφm hodnot sloupc∙ z jednoho zßznamu prvnφ tabulky a jednoho zßznamu druhΘ tabulky. Druh joinu a specifikace joinu urΦujφ, kter² zßznam s kter²m se takto spojφ:
- CROSS JOIN znamenß spojenφ ka₧dΘho zßznamu s ka₧d²m. V praxi se p°φliÜ nepou₧φvß, v²sledkem je v∞tÜinou p°φliÜ velkß mno₧ina zßznam∙.
- NATURAL znamenß, ₧e ob∞ zobecn∞nΘ tabulky musφ mφt sloupec stejnΘho jmΘna. Spojφ se ty dvojice zßznam∙, kterΘ majφ v tomto sloupci stejnou hodnotu. Specifikace joinu pak nesmφ b²t uvedena.
- specifikace joinu ve tvaru ON podmφnka znamenß, ₧e se spojφ dvojice zßznam∙, pro n∞₧ je spln∞na zadanß podmφnka. Podrobnosti o jejφm sestavenφ viz podmφnka.
- specifikace joinu ve tvaru USING ( nßzev_sloupce { , nßzev_sloupce }à) znamenß, ₧e se spojφ ty dvojice zßznam∙, ve kter²ch jsou ve vÜech uveden²ch sloupcφch stejnΘ hodnoty. Sloupce zadan²ch nßzv∙ musφ existovat v obou tabulkßch. Jde tedy o zobecn∞nφ varianty NATURAL.
- nenφ-li uvedena specifikace joinu ani NATURAL, spojuje se ka₧d² zßznam s ka₧d²m.
- LEFT [ OUTER ] JOIN znamenß, ₧e ka₧d² zßznam prvnφ tabulky se musφ spojit s n∞kter²m (alespo≥ jednφm) zßznamem druhΘ tabulky. Nenφ-li v druhΘ tabulce nalezen ₧ßdn² zßznam vyhovujφcφ podmφnkßm spojenφ, pak se zßznam z prvnφ tabulky spojφ s hodnotami NULL.
- RIGHT [ OUTER ] JOIN znamenß, ₧e ka₧d² zßznam druhΘ tabulky se musφ spojit s n∞kter²m (alespo≥ jednφm) zßznamem prvnφ tabulky. Nenφ-li v prvnφ tabulce nalezen ₧ßdn² zßznam vyhovujφcφ podmφnkßm spojenφ, pak se zßznam z druhΘ tabulky spojφ s hodnotami NULL.
- FULL [ OUTER ] JOIN znamenß, ₧e ka₧d² zßznam z ka₧dΘ tabulky se musφ spojit s n∞kter²m (alespo≥ jednφm) zßznamem prot∞jÜφ tabulky. Nenφ-li v prot∞jÜφ tabulce nalezen ₧ßdn² zßznam vyhovujφcφ podmφnkßm spojenφ, pak se zßznam spojφ s hodnotami NULL.
- INNER JOIN nebo JOIN znamenß spojenφ t∞ch zßznam∙, kterΘ vyhovφ specifikaci joinu.
Specifikace indexu u jmΘna tabulky vnutφ pou₧itφ konkrΘtnφho indexu bez ohledu na volbu optimalizßtoru.
P°φpadnΘ p°ejmenovßnφ na konci zobecn∞nΘ tabulky dovoluje zadat jmΘno, jim₧ se bude mo₧no na tuto tabulku dßle odkazovat, a p°φpadn∞ takΘ jmΘna sloupc∙ tΘto tabulky. PoΦet uveden²ch jmen sloupc∙ musφ b²t stejn² jako poΦet sloupc∙ v zobecn∞nΘ tabulce.
Odchylky od Intermediate level sm∞rem k Full level nebo k SQL 3
- Pou₧itφ dotazovΘho v²razu v zßvorkßch ve funkci zobecn∞nΘ tabulky pat°φ do Full level.
RozÜφ°enφ jazyka SQL proti norm∞
- Pou₧itφ specifikace indexu je rozÜφ°enφm WinBase602.
Viz takΘ: Sbφrka dotaz∙