Jak se na server volá...



Podobné dokumenty
Databázové systémy Cvičení 5.2

Úvod do databázových systémů

8.2 Používání a tvorba databází

Databáze I. Přednáška 4

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

DUM 12 téma: Příkazy pro tvorbu databáze

Databázové systémy trocha teorie

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče.

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Databázové systémy. Cvičení 6: SQL

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

Databázový systém označuje soubor programových prostředků, které umožňují přístup k datům uloženým v databázi.

5. POČÍTAČOVÉ CVIČENÍ

1. Umístěte kurzor do sloupce Datový typ na řádek s polem, ve kterém vytvořit chcete seznam.

Úvod do databázových systémů

KIV/ZIS cvičení 5. Tomáš Potužák

RELAČNÍ DATABÁZOVÉ SYSTÉMY

Databáze I. 5. přednáška. Helena Palovská

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Databázové systémy. Ing. Radek Holý

Jazyk SQL databáze SQLite. připravil ing. petr polách

MS SQL Server 2008 Management Studio Tutoriál

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Primární klíč, cizí klíč, referenční integrita, pravidla normalizace, relace

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

Tiskové sestavy. Zdroj záznamu pro tiskovou sestavu. Průvodce sestavou. Použití databází

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Matice přechodu. Pozorování 2. Základní úkol: Určete matici přechodu od báze M k bázi N. Každou bázi napíšeme do sloupců matice, např.

VYTVÁŘENÍ DATABÁZÍ, VKLÁDÁNÍ ÚDAJŮ

Slučování tabulek. Sloučení dvou tabulek

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

Střední průmyslová škola Zlín

STATISTICA Téma 8. Regresní a korelační analýza, regrese prostá

Měřící systém se vzdáleným přístupem. Databáze

Úvod do databázových systémů

S databázemi se v běžném životě setkáváme velmi často. Uvádíme běžné použití databází velkého rozsahu:

2. přednáška. Databázový přístup k datům (SŘBD) Možnost počítání v dekadické aritmetice - potřeba přesných výpočtů, např.

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

Microsoft. Access. Výběrové dotazy. Mgr. Jan Veverka Střední odborná škola sociální Evangelická akademie

Příprava projektů v programu Databox CONTACT Professional 5

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

1 Linearní prostory nad komplexními čísly

10. Editor databází dotazy a relace

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

Databáze. Logický model DB. David Hoksza

Analýza výkonu HELIOS Green

A5M33IZS Informační a znalostní systémy. Relační databázová technologie

Popis ovládání. Po přihlášení do aplikace se objeví navigátor. Navigátor je stromově seřazen a slouží pro přístup ke všem oknům celé aplikace.

17. července :51 z moravec@yahoo.com

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D.

RELAČNÍ DATABÁZE ACCESS

6. blok část B Vnořené dotazy

Obsah. 1.1 Práce se záznamy Stránka Dnes Kontakt se zákazníkem... 5

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

Databáze SQL SELECT. David Hoksza

Relační databáze. V dnešní době existuje řada komerčních DBMS, nejznámější jsou:

Hromadná korespondence

Sada 1 - PHP. 14. Úvod do jazyka SQL

Úvod do databázových systémů

JAK ČÍST ZÁZNAM O VYUŽÍVÁNÍ ÚDAJŮ V REGISTRU OBYVATEL

Excel a externí data KAPITOLA 2

Práva a role. Martin Polák. NDBI013 Administrace Oracle

37. Indexování a optimalizace dotazů v relačních databázích, datové struktury, jejich výhody a nevýhody

Databázové modelování. Analýza Návrh konceptuálního schématu

Dotazy tvorba nových polí (vypočítané pole)

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

První kroky v tvorbě databáze v Access 2007

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Manuál. Omluvenky online

UŽIVATELSKÝ MANUÁL PERSONALIZACE MOJE SODEXO V

MS Excel 2007 Kontingenční tabulky

MONITORING OBCHODNÍCH PARTNERŮ

Datové modelování II

ISPOP 2019 MANUÁL PRO PRÁCI V REGISTRU ODBORNĚ ZPŮSOBILÝCH OSOB

UŽIVATELSKÝ MANUÁL PERSONALIZACE MOJE SODEXO V

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Standardní operační postup (SOP) ČNRDD/M01/verze03. Práce s databází RDKD

Technologické postupy práce s aktovkou IS MPP

PRŮBĚHOVÝ TEST Z PŘEDNÁŠEK

Statistica Enterprise

soubor dat uspořádaných do řádků a sloupců

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Konceptuální modelování. Pavel Tyl

Dokumentace k modulu. podnikový informační systém (ERP) Zálohové faktury. Zaúčtování úhrad s ohledem na kontrolní hlášení

Konceptuální modelování a SQL

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

DATABÁZE A SYSTÉMY PRO UCHOVÁNÍ DAT 61 DATABÁZE - ACCESS. (příprava k vykonání testu ECDL Modul 5 Databáze a systémy pro zpracování dat)

UNIVERZITA PALACKÉHO V OLOMOUCI

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

B Organizace databáze na fyzické úrovni u serveru Oracle

Databáze v Excelu EU peníze středním školám Didaktický učební materiál

ZÁSOBY PLÁNOVÁNÍ VÝROBY Materiál pro samostudium +1532

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

Transkript:

Databáze standardu SQL, díl 5. Jak se na server volá... V dnešním pokračování přikročíme k vysvětlení základů strukturovaného dotazovacího jazyka SQL. Tento jazyk slouží k dorozumívání klientu se serverem. Nejprve si vysvětlíme, o co přesně jde. V počítačové terminologii jsme zvyklí na používání pojmu server. Chápeme tím většinou zcela konkrétní počítač, který má výsadní postavení v celé počítačové síti a obsluhuje s využitím vhodného hardwaru a softwaru všechny ostatní počítače. Pokud budeme hovořit o jazyce SQL, budeme pojem serveru chápat trochu jinak. Je to nejen jeho hardware, ale zejména speciální software, který je specializován na příjem SQL dotazů a generování odpovědí na ně pro potřeby ostatních počítačů v síti. SQL server je jednoúčelové zařízení, které nedělá nic jiného, než že pečlivě naslouchá, zda se ho okolní Obr. 1. Klientovo volání na SQL server. počítače na něco neptají, a pokud nějaký dotaz z klientských stanic uslyší, pak podle pravdy na každý dotaz odpoví. Vzpomeňme si na staré české přísloví: Jak se do lesa volá, tak se z lesa ozývá. Představme si na chvilku, že by v lese skutečně existoval inteligentní hajný, který je schopen v dostatečně krátké době odpovědět každému, kdo zařve svůj dotaz směrem k lesu. Hajného se můžeme ptát dvojím způsobem. Otázky prvního typu vypadají například následovně: Kolik je hodin? Kolik je v lese stromů? Kolik je Obr. 2. SQL server a jeden klient. ti let, hajný? Jaké počasí bude zítra? Odpovědí na takovouto otázku většinou bývá jedna prostá věta a všichni jsou spokojeni. Pomineme-li mírné deformace hlasivek hajného, při takových otázkách a odpovědích nedochází k žádným evidentním změnám v lese. Hajného se ale můžeme ptát na otázky druhého typu, které už ke změnám stavu lesa vedou. Opět několik příkladů: Mohu si utrhnout hřib obecný, na který se právě dívám? Mohu se napít ze studánky? Mohu pokácet strom? Mohu jít domů? Na takové otázky bývají typické odpovědi buď ANO, nebo NE. Pokud budou všichni lidé dostatečně čestní a budou čekat, až jim hajný řekne své ANO, pak je vše zdánlivě v pořádku. Až na jeden malý detail: Co kdyby se náhodou dva nebo více lidí zeptali na tutéž houbu současně a slyšeli to své ANO? Komu potom tato houba bude patřit? Podle zákona schválnosti podobné malé detaily mohou ochromit velké myšlenky a systémy. Takto navržená organizace lesa, byť to zní paradoxně, ještě není užitečná a bezchybná. Je totiž velmi nutné, aby v lese byl trochu dokonalejší řád a předešlo se hazardům. Jediná dovolená otázka na utržení houby musí vypadat následovně: Pane hajný, prosím vás, utrhl byste mi tu houbu, na kterou se právě koukám, a hodil mi ji do košíku? Pokud hajný řekne ANO, až když máme muchomůrku zelenou v košíku, nemusíme se strachovat, že nám ji jiný znalec mezitím vyfoukl, a že tchýně bude o hladu. Jestliže hajný řekne své NE, znamená to, že máme smůlu, neb houba není k dispozici například proto, že ji mezitím hodil hajný do jiného košíku. Pokud se hajný v každém okamžiku zabývá nejvýše jedním dotazem, bude spokojen i ten, kdo se v průběhu plenění lesa jinými lovci zeptá na počet živých medvědů v lese. Dostane aktuální odpověď o okamžitém počtu. Pak ovšem musí být přísně zakázán přímý sběr hub či střelba na cokoli jako aktivity působící chaos pouze hajný musí být velmi odolný a spolehlivý jedinec. Uvedené podobenství nám pomůže pochopit, proč je SQL server velmi bezpečným systémem pro práci s daty. SQL serveru se ovšem ptáme na úplně jiné věci. Jak je uvedeno na obrázku 1, nejčastěji se SQL serveru ptáme na data. Obr. 3. Více klientù a jeden server. Můžeme se zeptat, zda smíme vytvořit tabulku s určitým názvem a s určitou vnitřní 224

strukturou. Pokud SQL server odpoví ANO, pak to znamená, že tabulka je už vytvořena. V případě, že odpoví NE, znamená to, že nastaly velmi vážné důvody, proč požadovanou tabulku nevytvořit. Buď požadujeme vytvoření tabulky, která má nějaké vnitřní formální chyby, a pak je správné, že se server brání vytvořit defektní tabulku, nebo nás mezitím někdo jiný předběhl a vytvořil tabulku se stejným názvem. On ještě slyšel ANO, ale nám patří právem NE. Mít dvě tabulky se stejným názvem je také nepřípustné. V případě sklerózy mohlo první ANO patřit právem nám a druhé NE stejným právem také. SQL serveru se můžeme zeptat na celý obsah konkrétní tabulky nebo jenom na vybrané řádky a sloupce. V případě, že tabulka existuje a dotaz je po formální stránce korektní, je odpověď tvořena záhlavím tabulky a za ním následujícími požadovanými řádky. V ostatních případech přijde odpověď NE. Přitom odpověď typu NE je ve skutečnosti řetězcem znaků obsahujícím chybové hlášení. Na obrázku 2 vidíme komunikaci mezi klientem a SQL serverem. Situace je zjednodušena na případ, kdy SQL server obsluhuje pouze jeden klient. Je to nejjednodušší uspořádání pro kladení SQL dotazů. Je zřejmé, že směrem od klientu k SQL serveru proudí jednotlivé dotazy, zatímco zpět od SQL serveru ke klientu proudí jednotlivé odpovědi na ně. Obrácený tok informace není možný. Server se klientu nikdy na nic neptá a klient není povinen serveru odpovídat. Na obrázku 3 vidíme komplikovanější schéma, kde je zobrazena komunikace jednoho serveru se čtyřmi klienty. Mechanismus kladení dotazů a příjmu odpovědí je tentýž. Několik klientů se typicky ptá jednoho SQL serveru na nejrůznější dotazy v blíže neurčeném pořadí. Dotaz a odpovìï V předchozí části jsme několikrát použili pojmy DOTAZ a ODPOVĚĎ, aniž by se přesně konstatovalo, co to skutečně je a co vlastně proudí po příslušných síťových kabelech mezi počítači. Když pomineme technické detaily typu protokol na síti, ošetření standardního začátku a konce zprávy a kontrolní bity, pak nám vychází velmi jednoduchý tvar dotazu a odpovědi. Každý SQL dotaz je obyčejný textový řetězec. Je zadán v symbolické strukturované formě v jazyce vycházejícím z angličtiny. Odpověď, ať už jakákoli, je opět textový řetězec nesoucí požadovanou informaci nebo chybové hlášení. Dotazy mohou vést k vytváření nových tabulek, indexů, pohledů, spouštěčů (triggerů) nebo procedur. Jiné typy dotazů mohou uvedené struktury modifikovat nebo rušit. Další typy dotazů vedou k aktualizaci hodnot uložených v tabulkách. Uživatele obvykle nejvíce zajímají ty dotazy, které umožňují zobrazit v požadované formě obsah tabulek v daném okamžiku. Na první tři typy dotazů zní odpověď buď ANO, nebo NE s uvedením čísla chyby. Takové NE pak znamená, že operace vytvoření, SQL ADD AND ALTER BETWEEN CHAR CHECK COLUMN CREATE DATE DROP IN INDEX INTEGER LOGICAL NOT význa m pøidej modifikace, aktualizace nebo rušení, kterou nebylo možné uskutečnit, vůbec ani nezačala. Odpověď ANO obdrží klient až po úspěšném provedení požadované operace. Pokud se SQL serveru bezchybně ptáme na vnitřní obsah tabulek nebo jiné souvislosti, potom je odpověď dána tabulkou mající v prvním řádku v textovém režimu názvy všech položek, které nás zajímaly, a v následujících řádcích má jednotlivé hodnoty požadovaných položek. DDL pro zaèáteèníky a obmìò mezi znakový øetìzec ovìø, zda sloupec vytvo ø datum zruš je prvkem množin y indexový soubor celé èíslo logická hodnota ne N ULL nic (prázdnota ) REAL TABLE reálné èíslo tabulka U NIQUE unikátní (jedineèný ) Tabulka 1. Klíèová slova DDL. Důležitou součástí jazyka SQL je DDL. Zkratka vychází z anglického označení Data Definition Language a není to nic jiného než jazyk pro definici dat. Pokud chceme rychle proniknout do základů SQL, stačí se seznámit s jazykem DDL v této fázi výkladu jen rámcově. V tabulce 1 vidíte abecedně seřazena důležitá slovíčka jazyka DDL a jejich český význam. To nám usnadní práci při porozumění jednotlivým dotazům. Pustíme se do prvního příkladu. Představme si, že bychom chtěli s využitím jazyka DDL vytvořit tabulku, která bude obsahovat osobní údaje tak, jak jsou uvedeny v tabulce 2. Z tabulky je vidět, jak by se měly jmenovat zamýšlené sloupce tabulky, a je zde i ukázka konkrétních hodnot pro jednu konkrétní osobu. Nyní bude potřeba takovou tabulku vytvořit. Pokusme se nejprve vytvořit základ tabulky obsahující pouze rodné číslo, příjmení a jméno. Přitom využijeme pro názvy sloupců vhodných zkratek, které zkrátí zápis SQL dotazu. S využitím slovíček z tabulky 1 snadno napíšeme první dotaz, který umožní tuto třísloupcovou malou tabulku vytvořit: CREATE TABLE OSOBA ( RC CHAR(11), PRIJMENI CHAR(20), JMENO CHAR(20) ); Do hotové tabulky OSOBA můžeme snadno přidávat další sloupce. Ukažme si přidání sloupce, který obsahuje datumovou položku: DATNAR DATE; Podobným způsobem můžeme přidat též logickou proměnnou popisující, zda daná osoba je lhář či nikoli: LHAR LOGICAL; Následující skupina příkazů potom doplní do tabulky zbylá pole s příslušnými datovými typy: MISTONAR CHAR(20); DATUMR DATE; MISTOUMR CHAR(20); PRAXE Databáze standardu SQL 225

POHLAVI CHAR(1); ZLODEJ LOGICAL; DOBRAK REAL; IQ INTEGER; JMENI REAL; MENA CHAR(3); Rodné èíslo 730411/3740 Pøíjmení Jméno Místo narození Carlo Horatius Praha Datum narození 11.4. 1973 Místo úmrtí Datum úmrtí Pohlaví Lháø Zlodìj M ANO NE D obrák 30 % IQ 93 Jmìní 10 000 000 Mìna USD Tabulka 2. Osobní údaje jedné osoby. Na tomto malém příkladě jsme zatím procvičili, jak vytvořit jádro tabulky a jak do této tabulky přidávat nové sloupce. U textových řetězců musíme zadat maximální délku. Tabulka OSOBA už vypadá celkem užitečně a je připravena k naplňování daty až na jeden detail. V takovéto tabulce osob musíme trvat na tom, aby rodné číslo představované sloupcem RC bylo unikátní a tvořilo klíč k přímému přístupu do této tabulky. Nezbyde nic jiného, než k dané tabulce OSOBA vytvořit unikátní indexový soubor příkazem: CREATE UNIQUE INDEX OSRC ON OSOBA (RC); Osud je osud, a tak mnohé tabulky jsou vytvářeny právě jen kvůli tomu, aby byly opět zničeny. Naše tabulka OSOBA má totiž několik nectností. Tak, jak byla zadána, vůbec nehlídá naši povinnost zadat příjmení, jméno, příp. datum narození osoby a další důležité údaje. Rovněž je velmi vhodné např. kontrolovat, zda stupeň dobráctví je skutečně mezi 0 a 100 % a zda IQ je od 40 do 160. Je to velmi důležité zejména kvůli prevenci závažných chyb v datové základně. Naproti tomu je třeba dbát na to, že skutečně místo a datum úmrtí nemusí být předem známo. Tyto kontroly, které se nazývají DO- MÉNOVÁ INTEGRITA, se dají snadno realizovat s využitím klíčových slov NOT NULL v případě zákazu vynechání položky, případně s využitím klíčového slova CHECK a logické podmínky pro omezení hodnot. Bohužel musíme nejprve za sebou zahladit sto- py, protože pokud bychom se znovu rozhodli zakládat tabulku OSOBA, server by nám odpověděl, že to prostě nejde. Proto musíme nejprve tabulku doslova zničit s využitím příkazu DROP. Ovšem tabulka, která je spojena s indexovým souborem OSRC, zničit nejde. Musíme tedy začít ničením indexového souboru příkazem: DROP INDEX OSRC; Potom už můžeme zničit celou tabulku příkazem: DROP TABLE OSOBA; A nyní můžeme s využitím příkazu CREA- TE TABLE vytvořit celou tabulku najednou s využitím všech rozumných kontrol integrity dat: CREATE TABLE OSOBA ( RC CHAR(11) NOT NULL UNIQUE, PRIJMENI CHAR(20) NOT NULL, JMENO CHAR(20) NOT NULL, DATNAR DATE NOT NULL, MISTONAR CHAR(20) NOT NULL, DATUMR DATE, MISTOUMR CHAR(20), POHLAVI CHAR(1) CHECK POHLAVI IN ( M, Z ), LHAR LOGICAL NOT NULL; ZLODEJ LOGICAL NOT NULL; DOBRAK REAL CHECK DOBRAK BEETWEEN 0 AND 100, IQ INTEGER CHECK IQ BETWEEN 40 AND 160; JMENI REAL; MENA CHAR(3)); 226

Èíslo úètu 37683193 Typ operace Tabulka 3. Pohyb na úètu. Výdej Poøadí operace 13 Datum 31. 3. 1998 Èástka 3700,00 Mìna USD Povšimněte si realizace unikátního klíče a přímého přístupu podle RC bez nutnosti vytvářet indexový soubor. Hlídání unikátnosti klíče ať už pomocí indexu nebo přímo v tabulce se nazývá vznešeně ENTITNÍ INTEGRITA. Databázové systémy neslouží pouze k ukládání osobních údajů. Proto je v tabulce 3 uvedena ukázka dokladu pro sledování pohybu měn na účtech. Z dokladu je patrné, že rozlišujeme jednotlivá čísla účtů, pořadí operace na účtu v rámci běžného roku, datum operace, typ operace, částku, které se operace týká, a měnu, ve které se operace provádí. Nyní provedeme vytvoření tabulky POHYB s tím, že ji vytvoříme hned napoprvé spolu s příslušným indexovým souborem. Všimněte si, že unikátní nemůže být jen číslo účtu, ale trojice sloupců číslo účtu, pořadí operace a datum, neboť tato trojice jednoznačně určuje, o který pohyb jde. Následující dva SQL dotazy vytvoří tabulku a příslušný indexový soubor: CREATE TABLE POHYB ( UCET CHAR(14) NOT NULL, TYP CHAR(1) CHECK TYP IN ( P, V ), PORADI INTEGER NOT NULL, DATUM DATE NOT NULL, CASTKA REAL NOT NULL, MENA CHAR(3) NOT NULL); CREATE UNIQUE INDEX POHID ON POHYB (UCET,PORADI,DATUM); Pro rychlé vyhledávání důležitých informací v tabulce POHYB bude patrně nutné se co nejrychleji dostat ke všem pohybům na jednom účtu. Stačí vytvořit ještě jeden indexový soubor bez hlídání jedinečnosti klíče: CREATE INDEX POHUCET ON POHYB (UCET); Pokud se majitelé banky rozhodnou, že budou vést účty jen v jedné měně, je poslední Èíslo úètu 37683193 Rodné èíslo 730411/3740 Datum založení 1. 3. 1990 Datum zrušení Tabulka 4. Vlastnictví úètù. sloupec tabulky POHYB k ničemu. Zrušme ho z cvičných důvodů: ALTER TABLE POHYB DROP COLUMN MENA; Někdy má pro změnu neperspektivní myšlení správce systému a udělá: DROP INDEX POHID; Nad posledními dvěma nesmyslnými příkazy vzniká otázka, zda tragédie v koncepci je či není horší než tragédie provozní. V tabulce 4 vidíme ukázku dokladu o vlastnictví účtu. Účty bývají vlastněny osobami. Takové vlastnictví účtu je vlastně popsáno kombinací čísla účtu, rodného čísla osoby, datem založení účtu a nepoviným datem zrušení účtu. K takové tabulce je opět třeba vytvořit indexový soubor, kde unikátním klíčem je číslo účtu. Nesmíme zaměňovat vlastnictví účtu, které se týká vždy jedné osoby, s přístupovými právy k účtu, které se mohou týkat více osob. Následující dva SQL dotazy opět vytvářejí příslušnou tabulku UCET a indexový soubor UCETID: CREATE TABLE UCET( CISUCET CHAR(14) NOT NULL, RC CHAR(11) NOT NULL, DATUMZALO DATE NOT NULL, DATUMZRUS DATE); CREATE UNIQUE INDEX UCETID ON UCET (CISUCET); Odborníci na bankovní kriminalitu ocení zrychlení svých budoucích dotazů po vytvoření indexu: CREATE INDEX UCETRC ON UCET (RC); Komu se stýská po velmi starých časech, tomu patří, že chce udělat: DROP INDEX UCETRC; CREATE UNIQUE INDEX UCETRC ON UCET (RC); My ostatní přemýšlejme, proč to buď někdy nepůjde, nebo to nic nepřinese. Jaromír Kukal 228