SQL Structured Query Language



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

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

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

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

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

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

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

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

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

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

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

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

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

Databáze SQL SELECT. David Hoksza

SQL. strukturovaný dotazovací jazyk. Structured Query Language (SQL)

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

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

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

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

Databázové systémy a SQL

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

Použití databází na Webu

Databázové systémy I

Kapitola 4: SQL. Základní struktura

6. SQL složitější dotazy, QBE

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

Kurz Databáze. Obsah. Návrh databáze E-R model. Datová analýza, tabulky a vazby. Doc. Ing. Radim Farana, CSc.

Jazyk SQL 3 - DML, DDL, TCL, DCL

Vkládání, aktualizace, mazání

Text úlohy. Systémový katalog (DICTIONARY):

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

Databáze II. 1. přednáška. Helena Palovská

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

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

Operátory ROLLUP a CUBE

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

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

Základy databází. O autorech 17 PRVNÍ ČÁST. KAPITOLA 1 Začínáme 19

XMW4 / IW4 Pokročilé SELECT dotazy. Štefan Pataky

RELAČNÍ DATABÁZOVÉ SYSTÉMY

Konceptuální modelování a SQL

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

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

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

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

Administrace Oracle. Práva a role, audit

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

Access. Tabulky. Vytvoření tabulky

Stručný obsah. část III Aktualizace dat Kapitola 10: Aktualizace databáze 257 Kapitola 11: Integrita dat 275 Kapitola 12: Zpracování transakcí 307

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

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

Oracle XML DB. Tomáš Nykodým

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

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

1. Relační databázový model

- sloupcové integritní omezení

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

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

Databázové systémy úvod

Replikace je proces kopírování a udržování databázových objektů, které tvoří distribuovaný databázový systém. Změny aplikované na jednu část jsou

Optimalizace dotazů a databázové transakce v Oracle

DUM 15 téma: Příkazy pro řízení přístupu

Integritní omezení (IO)

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

Co bude výsledkem mého SELECTu? RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

RELAČNÍ DATABÁZE ACCESS

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

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

Kapitola 6: Omezení integrity. Omezení domény

DATABÁZE MS ACCESS 2010

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í

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

Jazyk PL/SQL Úvod, blok

Fakulta elektrotechniky a informatiky Databázové systémy 2. Leden 2010 souhrn. Červené dobře (nejspíš), modré možná

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

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.

Materiál ke cvičením - SQL

Transformace konceptuálního modelu na relační

Programovací jazyk Pascal

OBJECT DEFINITION LANGUAGE. Jonáš Klimeš NDBI001 Dotazovací Jazyky I 2013

Dotazy v SQL. Výraz relační algebry R1( )[A1,A2,...,Aj] lze zapsat takto: SELECT A1,A2,...,Aj FROM R1 WHERE. Výraz (R1, R2... Rk)( )[A1,A2,...

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

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

Administrace Oracle Práva a role, audit. Kukhar Maria

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

Microsoft Access. Úterý 26. února. Úterý 5. března. Typy objektů databáze: Vytvoření a návrh nové tabulky

Databázové systémy trocha teorie

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

DJ2 rekurze v SQL. slajdy k přednášce NDBI001. Jaroslav Pokorný

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

Kontingenční tabulky v MS Excel 2010

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

Databázové systémy I

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

Informační systémy ve zdravotnictví. 6. cvičení

Databázové systémy a SQL

Databázové a informační systémy Informační systém prodejny nábytku. Jakub Kamrla, KAM087

Základy jazyka SQL. 87 Jazyk SQL SQL je dotazovací jazyk, takže přes propojenou aplikaci se serveru odevzdá dotaz

Transkript:

SQL Structured Query Language Referenční příručka Zdeněk Šerý

OBSAH 1. Základní informace...2 2. SQL.17 2.1. Proč používat SQL. 17 2.1.1. Relační operátory.. 17 2.1.2. Rekurze.21 2.1.3. Propojení (relace).. 24 2.1.4. Prvky SQL 26 2.2. Definice dat 30 2.2.1. ALTER TABLE 32 2.2.2. CREATE INDEX.. 34 2.2.3. CREATE TABLE. 36 2.2.4. CREATE VIEW 38 2.2.5. DROP 39 2.3. Editace dat.. 41 2.3.1. DELETE 42 2.3.2. INSERT. 44 2.3.3. UPDATE... 46 2.4. Dotazování dat... 49 2.4.1. SELECT 50 2.5. Řízení transakcí.. 56 2.5.1. COMMIT.. 56 2.5.2. ROLLBACK. 58 2.5.3. SAVEPOINT.60 2.6. Administrace dat 61 2.6.1. ALTER PASSWORD... 61 2.6.2. GRANT. 66 2.6.3. REVOKE.. 68 1

1. Základní informace Úvodem bych rád poznamenal, že tato kniha není určena pro specifický okruh lidí jako jsou pokročilí programátoři. Jejím úkolem je být pomocníkem každému, kdo používá nebo teprve chce používat SQL na LAN, WAN, internetu či intranetu. V rukou máte vynikajícího rádce pro přechod z databází Foxpro, Dbase, Microsoft Access a jim podobných na databázové servery. Zkušení programátoři a databázový nadšenci, kterým tato příručka nebude stačiti mohou detailní nebo specifické informace získat z materiálů dodaných k databázovému serveru. Při psaní této knihy jsem se snažil sladit obsah předkládané problematiky se stávajícím standardem SQL a SQL Anywhere professional. Pro většinu srovnávacích příkladů jsem použil databázi Foxpro 2.5, jelikož je tato databáze jednoznačně nejrozšířenější. Syntaktický diagram bude v grafické podobě ukazovat definici vysvětlovaného výrazu : 2. SQL SQL (Structured Query Language strukturovaný dotazovací jazyk) je používán na řízení relačních databází. Jeho počátek bychom nalezli v roce 1970 v kalifornii v IBM Research Laboratory v San Jose. SQL je určen pro programovací jazyk neboť neobsahuje formátovací příkazy pro reporty ani pro výstup na interaktivní konzoli. SQL je neprocedurální což znamená, že váš požadavek určuje co chcete dostat zpět za data, ale ne jak je získat. Řada z vás se jistě podiví proč používat databázový server, když stávající databáze Foxpro nebo obdobná jiná je zcela vyhovující. Použiji celkem vyhovující analogii s používáním automobilu. Pokud jste dosud neseděli v jaguáru tak nevíte jaká vlastně může jízda být a nešvary z provozu stávajícího trabanta považujete za běžné. Jako každá analogie i tato trochu pokulhává za skutečností v tom, že nepostihuje výhodu chráněného současného víceuživatelského přístupu. Databáze Foxpro vlastně není databází, ale pouze databázovou tabulkou. 2

Databáze je soubor dat spravovaný databázovým serverem. Je realizován jako jeden, dva, vyjímečně několik málo souborů což je odvislé od verze a druhu databázového serveru. Obr. 3.I. Kategorie SQL příkazů SQL obsahuje řadu příkazů pro operace seskupené do těchto kategorií : a) Definice dat vytváření databázových objektů jako jsou databáze, tabulky, indexy nebo pohledy Databáze obsahuje jednu nebo více tabulek, a ty obsahují sloupce a řádky : 3

ALTER TABLE CREATE INDEX CREATE TABLE CREATE VIEW DROP b) Editace dat aktualizace, přidávání mazání dat v databázi DELETE INSERT UPDATE c) Dotazování dat dotazy na data v databázi SELECT d) Řízení transakcí zajišťování integrity, když jsou prováděny změny dat v databázi COMMIT ROLLBACK SAVEPOINT e) Administrace dat řízení přístupu a ochrany databáze ALTER PASSWORD GRANT REVOKE 2.1. Proč používat SQL Seznam SQL příkazů : ALTER PASSWORD Dovolí uživateli změnit heslo ALTER TABLE Mění popis tabulky CHECK DATABASE Kontroluje integritu databáze COMMENT ON Nahradí nebo přidá komentář do popisu tabulky, pohledu nebo sloupce v systémovém katalogu COMMIT Zakončí logickou jednotku práce a přenese do databáze vámi provedené změny CREATE INDEX Vytváří index k tabulce CREATE SYNONYM Vytváří alternativní jméno pro tabulku nebo pohled CREATE TABLE Definuje tabulku CREATE VIEW Definuje pohled na jednu nebo více tabulek nebo pohledů DELETE Maže jeden nebo více sloupců v tabulce DROP Vyjme objekt ze systémového katalogu GRANT Přidělí databázovou autorizaci nebo práva na tabulky a pohledy INSERT Vloží jeden nebo více sloupců do existující tabulky LABEL Přidá nebo změní popisku v katalogu popisek REVOKE Vyjme databázovou autorizaci nebo privilegia z tabulek nebo pohledů ROLLBACK Zakončí logickou jednotku práce a vrátí zpět změny provedené od poslední transakce SELECT Dotazuje se na data v tabulkách nebo pohledech SAVEPOINT Přiřadí (spojí) kontrolní bod k transakci UNION Spojí výsledky ze dvou nebo více SELECTů UPDATE Nastaví sloupce v tabulkách nebo pohledech současnými hodnotami UPDATE STATISTIC Aktualizuje statistiky pro index dané tabulky 4

SQL je velmi silný nástroj pro práci s daty viz předešlých 5 bodů. Je snadný na používání a to velmi. Nyní vám představím 3 hlavní důvody proč používat databázový server : 1) z více aplikací a z více počítačů najednou, a to jak pro zápis tak pro čtení 2) množství dat svojí kvantitou nebo strukturou je již tak velké, že původní databázový prostředek (Foxpro) již řeší tento stav s problémy nebo vůbec sklady, fakturace 3) bezpečnost a integrita dat je natolik důležitá což je vlastně vždy, i když si to uživatel uvědomí až v případě jejich ztráty nebo zničení -, že databázový server je nutností. ad 1. chráněný síťový přístup ke sdíleným datům tento přístup k datům je již aplikační samozřejmostí. Uveďme si příklad : nadstavbový software pro management vytvořený v aplikaci MS Excel uživatel 1 přistupuje k datům databázového serveru k databázi Protect k tabulkám faktury, fakturydetail, uhrady, odberatele ; aplikační software sklad uživatel 2 z jiného počítače a z jiného místa ve stejnou dobu ke stejné databázi k tabulkám hlavnisklad, mezisklad, zbozi, odberatele; uživatel 3 ze vzdálené sítě obchodní ředitel napojený přes svého laptopa a internet k databázovému serveru ke stejné databázi k tabulce odberatele. Všichni tito uživatelé mohou díky databázovému serveru provádět jakékoliv operace s daty jim přístupnými. Jak vidíte na obrázku 3.I. lze s výhodou podpory produktu NetImpact Dynamo komunikovat s dnes velmi atraktivní a perspektivní oblastí s internetem. Vyvíjení aplikací pro internet je již nutností a databázový server na internetu je řešení pro větší množství dat např. pro prezentaci zboží a služeb určité firmy, jenž tímto způsobem nabízí k obchodování po internetu. Složitost a hlavně počet uživatelů je ve skutečnosti mnohem větší a to je hlavní důvod proč používat SQL. Jak již z názvu vyplívá je SQL standard a proto je nezávislý na použitém prostředku pro zpřístupnění dat. Jak aplikace MS Excel tak nezávislé programovací prostředky Delphi, Centura atd. tak vývojové prostředí různých databázových firem a řada dalších prostředků standard SQL podporují a lze všemi těmito prostředky nezávisle na sobě či databázovém serveru přistupovat k databázím tímto serverem spravovaným. Ve své podstatě je SQL jednoduchý programovací jazyk, kterým lze přistupovat k jakékoliv relační databázi a lze jej použít i v interaktivním režimu z konzolové aplikace, která je u Foxpro RQBE nástroj a u Anywhere je to ISQL. Jsme-li připojeni k jakékoliv databázi přes ODBC lze jako konzolovou aplikaci použít MSQRY32. ad. 2. Databáze stylu Foxpro nejsou navrženy pro větší počet vět, proto jsou také nazývány právem lokální. Při nárůstu velikosti těchto databází nad určitou hranici dochází k výraznému snížení rychlosti těchto databází nebo dokonce je tato velikost limitní a nesmí býti překročena. A zde nastupuje nutnost použít databázi vytvořenou pro práci s velkým množstvím dat. ad. 3. Bezpečnost a integrita dat je zajišťována na několika úrovních. Už samotné použití databázového serveru snižuje programovou náročnost vlastní aplikace, která musí zajistit operace a funkce zajišťované databázovým serverem. DB server je velmi dobře napsaná aplikace, která je také odladěná a vyzkoušená což je další faktor zvýšení bezpečnosti dat. Jak užívat SQL : SQL můžete používat dvěma způsoby : 1) Interaktivně skrze zprostředkovatelský program (interaktivní konzole) 2) Pomocí programovacího jazyka C, Delphi a jiných, kterými vytvoříte klientskou aplikaci, tiskovou sestavu nebo např. eventuelně service na Windows NT server. 5

Kdo používá SQL : 1) Koncoví uživatelé 2) Databázoví programátoři 3) Databázoví správci S rozdílem v přidělených právech počínaje uživateli konče správci. K datům spravovaným databázovým serverem nelze jinak přistoupit než přes tento databázový server (pokud je spuštěn) a při přístupu k databázovému souboru jinými prostředky a jinými způsoby je nemožný jsou vracena hlášení přístup odepřen, narušeno sdílení, Soubor nemůže být otevřen atd. což u lokáních databází neplatí. Pokud tyto databáze umístíme na Souborový server Novell, pak můžeme např. u Foxpro použít Novell modul pro řízení transakcí, ale databázový soubor není na tomto serveru (ani na jiném) spravován, udržován ani chráněn. Tabulky Paradoxu si vytvářejí na serveru zámky (soubory LCK), ale při pádu klientské stanice zůstane tento zámek na serveru a indikuje uzamčená data. V těchto příkladech bych mohl pokračovat ještě dosti dlouho a je jasné, že se tyto lokální databáze snaží všemi prostředky napodobovat databázové servery, ale pokud to budou činit pouze lokálními prostředky pak bude účinek nedokonalý a pokud to budou prostředky serverové pak se nejedná o nic jiného než o databázový server. Databázové servery mají řadu utilit pro zachování dat jako např. zálohování, obnovování dat z log. souborů log. soubory jsou soubory změn provedené v dané databázi od zapnutí logu či poslední obnovy, zrcadlení databází, konverze databáze do různých formátů a naopak. Pro přístup k databázi poskytují ochranu pomocí jména a hesla připojujícího se uživatele a následná získaná práva jsou na úrovni aplikace databázového serveru. Tyto práva spolu s právy na síťovém operačním systému tvoří téměř nepřekonatelnou ochranu dat. Bohužel se někteří programátoři snaží nahrazovat ochranu na úrovni databázového serveru vlastními programátorskými dialogy s vlastním rádoby dobře promyšleným systémem práv. SQL umožňuje uživateli vybudovat komplex dotazů. To je umožněno pomocí : relační operátory rekurze propojení (joins) 2.1.1. Relační operátory ( >,<,=,>=,<>,!= ) dovolují uživateli vyjádřit prohledávací podmínku pro dotaz. Např. jestliže tabulka ZAMEST obsahuje zaměstnanecké informace (položky = sloupce - jmeno, adresa, telefon, vek, plat, oddeleni) pak následující dva dotazy mohou být zodpovězeny pomocí relačních operátorů. příklady : Dej mi (vyber) telefonní číslo slečny Hájkové : SELECT JMENO, TELEFON FROM ZAMEST WHERE JMENO= Hájková Dej mi seznam všech zaměstnanců, kteří mají plat větší než 15000 : SELECT JMENO, PLAT FROM ZAMEST WHERE PLAT>15000 2.1.2. Rekurze v praxi znamená, že výstup jednoho SQL dotazu (poddotazu) je použit jako vstup do dotazu jiného. Tato technika je nazývána zahnízděním a je používána i v klasických programovacích jazycích. Hlavní select dotaz a subselect poddotaz se mohou odkazovat na stejnou tabulku. Použití poddotazu je v některých logických podmínkách pro výběr nevyhnutelné, ale musíte být opatrní při konstrukci tohoto dotazu. Poddotaz značně zpomaluje činnost dotazu neboť 6

zu. Poddotaz značně zpomaluje činnost dotazu neboť z matematického hlediska je počet zpracovávaných vět roven součinu počtu vět tabulky z prvního dotazu a tabulky z poddotazu. Příklad : Vyber jmeno z tabulky Zamest kde plat je větší nebo roven 12500 a musí mít samostatný telefon SELECT JMENO AS JMENO1 FROM ZAMEST WHERE PLAT>=12500 AND NOT TELEFON IN (SELECT TELEFON, JMENO FROM ZAMEST WHERE JMENO<>JMENO1) Druhý SELECT uvedený v příkladu je volán jako poddotaz a celý výraz by mohl být vyřešen mnohem pohodlněji, ale pouze z toho důvodu, že se jedná o poddotaz na stejnou tabulku. Tento postup se používá pokud nelze stejný problém vyřešit pomocí propojení neboť tento způsob je značně pomalejší. 2.1.3. Propojení (joins) slouží k přinesení dat (řádků) z rozdílných tabulek a spojení do řádku jednoho. Tyto propojení lze získat v poměru 1:1, 1:M, N:M, M:1. To v praxi znamená : pro jeden řádek (větu) tabulky první existuje pouze jeden řádek v tabulce druhé, např. pro každou fakturu v tabulce faktur existuje pouze jeden zaměstnanec, který ji vystavil v tabulce Zamest SELECT FAKTURY.CFAKT, ZAMEST.JMENO FROM FAKTURY, ZAMEST WHERE FAKTURY.KODZAM =ZAMEST.KODZAM pro jeden řádek (větu) tabulky první existuje 0 až bůhvíkolik řádků v tabulce druhé, např. pro každou fakturu v tabulce faktur existuje 0 až hodně úhrad v tabulce Uhrady (faktura nebyla uhrazena, nebo byla uhrazena několika platbami atd.) SELECT FAKTURY.CFAKT FROM FAKTURY, UHRADY WHERE UHRA- DY.CFAKT = FAKTURY.CFAKT - pro několik řádek (vět) tabulky první existuje 0 až bůhvíkolik řádků v tabulce druhé platných podle propojovacího výrazu. Toto propojení je dosti specifické a znamená, že v první tabulce jsou věty se stejnými daty, která jsou na výstupu a v tabulce druhé jsou věty k nim přiřazené dle propojení. Výsledkem může a nemusí být množina vět s duplicitními daty. Problematika propojení je rozsáhlejší a pokud začínáte s SQL jistě mnohokrát nastavíte špatně propojení mezi databázovými objekty. S propojením úzce souvisí problematika indexů a jedinečnosti, což probereme v oddíle vysvětlujícím syntaxi příkazů pro práci s INDEXI. Příklad : První tabulka 7

Druhá tabulka Příklad : SELECT NAME, ORDERNO FROM CUSTOMER, ORDERS WHERE CUSTOMER.CUSTNO = ORDERS.CUSTNO AND SALES REP = Tom Výsledek předešlého selectu : 8

Typy propojení : Rovné - příklad : SELECT NAME, ORDERNO FROM CUSTOMER, ORDERS WHE- RE CUSTOMER.CUSTNO = ORDERS.CUSTNO Vnější příklad : SELECT t1.col1, t2.col1, t1.col2, t2.col2 FROM t1, t2 WHERE t1.col1 = t2.col1 (+) AND t1.col2 = t2.col2 (+) Vlastní příklad : SELECT A.ORDERNO, A.ORDERDATE FROM ORDERS A, ORDERS B WHERE A.ORDERDATE = B.ORDERDATE AND A.ORDERDATE <> B.ORDERNO Nerovné příklad : SELECT NAME, ORDERNO, ORDERDATE FROM CUSTOMER, ORDERS WHERE CUSTOMER.CUSTNO = ORDERS.CUSTNO AND ORDERDATE BETWEEN 01-JUL-94 AND 30-SEP-94; 2.1.4. Prvky SQL Toto jsou základní prvky používané v SQL : - Jména (názvy) - Datové typy - Konstanty - Systémová klíčová slova - Funkce - Výrazy - Přísudky - Vyhledávací výrazy - Svázané proměnné Názvy jména jsou používána k identifikaci SQL objektů jako jsou jména uživatelů, tabulek, sloupců, indexů atd. Tyto identifikátory mohou být ordinální nebo oddělovací. Ordinální identifikátor začíná písmenem nebo speciálním znakem (#,@ nebo $) a obsahuje písmena, číslice a podtržítko. Identifikátory mají 2 délky : krátké a dlouhé. Krátké mají délku max.8 a dlouhé max. 18 znaků. Příklady názvů : CHYBY SCHRANKA_Z_WGPO :KONTROLNISOUCET $54844 JMENO A ID #UZIVATEL :9 9

Názvy jsou dlouhé nebo krátké identifikátory nebo identifikátory kvalifikující jiné identifikátory. Následující objekty mají jména. Autorizační identifikace např. tabulka SKLAD vytvořená uživatelem NOVOTNY má explicitně jméno NOVOTNY.SKLAD. Příklad autorizační identifikace je NOVOTNY a také např. SYSADM. Název sloupce - Název korelační dlouhý identifikátor popisující tabulku nebo pohled s příkazem Název databáze krátký identifikátor označující databázi Název indexu kvalifikující nebo nekvalifikující dlouhý identifikátor Heslo dlouhý identifikátor Jméno svázané proměnné tomuto jménu vždy musí předcházet dvojtečka Název příkazu dlouhý identifikátor Název synonymu dlouhý identifikátor označující tabulku nebo pohled Název tabulky dlouhý identifikátor Název pohledu dlouhý identifikátor Datové typy obecné datové typy používané na ukládání dat jsou : 10

- Znakové - Číselné - Datumové a časové Tyto datové typy jsou určeny délkou dat tak jak jsou uloženy v databázi a zobrazovacím formátem tak jak se zobrazují. Null hodnota indikuje absenci dat. Nějaké datové typy mohou obsahovat Null hodnotu. Null hodnota není ekvivalentní 0 nebo mezeře. Na tuto hodnotu si musíte dát pozor ve vyhledávacích výrazech neboť je rovna jakémukoliv výrazu a pokud ji nechceme musíme použít např. NOT NULL. Znakový datový typ řetězec znaků (písmen, číslic, speciálních znaků) CHAR pro tento typ musí být specifikována délka, která nemůže být větší než 254 a je pevně dodržována. U typu VARCHAR může být délka menší než deklarovaná. LONGVARCHAR tento typ může být delší než 254 znaků a pro detailní definici raději nahlédněte do manuálu vámi používaného DB serveru. Numerický datový typ DECIMAL rozsah hodnot -999999999999999 až +999999999999999 příklad DECIMAL (8,2) INTEGER rozsah hodnot -2147483648 až +2147483647 příklad INT SMALLINT rozsah hodnot -32768 až +32767 příklad SMALLINT NUMBER rozsah hodnot až 22 číslic příklad NUMBER DOUBLE PRECISION dvojnásobná přesnost čísla s plovoucí desetinnou čárkou (22 až 53) FLOAT číslo s plovoucí desetinnou čárkou s přesností 1 až 21 příklad FLOAT (9) REAL reálné číslo Poznámka : Pro přesné vymezení definicí těchto a i následujících typů musíte zkonzultovat s příslušným manuálem vašeho serveru. Date/Time datový typ DATETIME typ pro data s datovým i časovým údajem DATE - typ pro data s datovým údajem TIME - typ pro data s časovým údajem Konstanty řetězcové konstanty musíte uzavřít do uvozovek. Časové a datumové údaje jsou většinou ve formátu čísel oddělených pomlčkou nebo tečkou. Např. 10-27-98. Číselné konstanty mohou být v semilogaritmickém tvaru 1,24E4. Systémová klíčová slova jsou vázány na typ a verzi databázového serveru a proto zde nemohou být probírány detailně. Typický představitel je NULL. Dále to mohou být tato slova : USER, ROWID, SYSTIME, SYSDATE atd. Na výběr hodnot z vět databáze, které obsahují nulové hodnoty můžeme použít tuto klauzuli : 11

WHERE jméno_sloupce IS NULL Výrazy Schéma výrazu : Je-li ve výrazu položka s nulovou hodnotou (Null), potom vyhodnocení výrazu je null (neznámý nebo false). Vyhledávací výrazy WHERE výraz může být použit v těchto SQL příkazech : SELECT DELETE UPDATE Vyhledávací výraz obsahuje jeden nebo více přísudků spojených logickými operátory OR, AND a NOT. Předpokládejme, že P a Q jsou přísudky. První dva sloupce jsou kombinace hodnot, kterých mohou P a Q nabýt. Následné sloupce jsou hodnoty výrazů uvedených v záhlaví. 12

Vzhledem k předešlému celkem dosti suchému, ale nutnému výkladu vás musím upozornit, že výraznější změna nastane až při výkladu jednotlivých SQL příkazů. Pokud jste vydrželi až sem, pak jistě vydržíte i následující kapitoly. Pro oživení výuky můžete s klidným svědomým následující výklad přeskočit až ke kapitole 3.2, neboť jenom trochu složitější úkol vás donutí vrátit se zpět na tyto stránky a dobrat tyto vynechané kapitoly. Velmi častá chyba je použití vyhledávacího výrazu na sloupce s některými nulovými hodnotami. Hodnota Null není ekvivalentní s nebo 0 a proto musí klausule WHERE vypadat takto WHERE jméno-sloupce IS NULL. Přísudky přísudky ve WHERE nebo HAVING výrazu specifikují vyhledávací výraz, který je true, false nebo neznámý (unknown) se zřetelem na daný řádek nebo skupinu řádků v tabulce. Přísudky používají operátory, výrazy a konstanty na specifikování vyhodnocovaného výrazu. Následné typy přísudků jsou popsány v této sekci : Relační BETWEEN NULL EXISTS LIKE IN 13

Relační přísudky : Máme dva typy relačních podmínek (přísudků) : Srovnávací Množstevní Srovnávací : Příklad : SELECT JMENO FROM ZAKAZNICI WHERE ZAKAZNIKID=93571 Množstevní : Používá poddotaz nebo podvýběr (subselect, subquery). Příklad : WHERE X < ANY (SELECT Y) SELECT * FROM EMPSAL WHERE SALARY!= (SELECT AVG(SALARY) FROM EMPSAL); SELECT * FROM EMPSAL WHERE SALARY <> (SELECT AVG(SALARY) FROM EMPSAL); SELECT * FROM EMPSAL WHERE SALARY > (SELECT AVG(SALARY) FROM EMPSAL); SELECT * FROM EMPSAL WHERE SALARY < (SELECT AVG(SALARY) FROM EMPSAL); 14

SELECT * FROM EMPSAL WHERE SALARY >= ANY(SELECT SALARY FROM EMPSAL); Přísudek BETWEEN : srovnává hodnoty s rozmezím hodnot Příklad : SELECT * FROM EMPSAL WHERE SALARY BETWEEN 30000 AND 60000 NULL přísudek : testuje null hodnotu Příklad : SELECT * FROM EMP WHERE DEPTNO IS NULL EXISTS přísudek : testuje existenci nějakého řádku v tabulce Příklad : SELECT * FROM EMP WHERE EXISTS (SELECT * FROM EMPSAL WHERE SALARY= :1) LIKE přísudek : prohledává v řetězcích specifickou sekvenci znaků Znak podtržítko _ je zástupný znak pro jeden znak Znak procenta % je zástupný znak pro více znaků Příklad : SELECT * FROM EMP WHERE LNAME LIKE %son% ; 15

SELECT * FROM EMP WHERE JOB LIKE M_ ; SELECT * FROM EMP WHERE JOB LIKE A24\% ; SELECT * FROM EMP WHERE JOB LIKE A24\%% ; IN přísudek : porovnává hodnoty ve výběru hodnot Příklad : SELECT * FROM EMP WHERE DEPTNO IN (2500,2600,2700); SELECT * FROM EMP WHERE EMPNO NOT IN (SELECT EMPNO FROM EMPSAL WHERE SALARY< 40000); SELECT * FROM EMP WHERE @LEFT (LNAME, 1) IN ( J, M, D ); SELECT * FROM EMP WHERE LNAME NOT IN (:1,:2, Jones ) Funkce : funkce vrací hodnotu, která je vyhodnocením funkce s argumentem. Členění funkcí je odvislé od typu použitého databázového serveru. Může vypadat např. takto : Agregační funkce Řetězcové funkce Datumové a časové funkce Logické funkce Speciální funkce Matematické funkce Finanční funkce Podselect : vyhledávací podmínka, která je zahnízděná v SELECT příkazu (jako volaný podselect). Příklad : SELECT ORDERNO, ORDERDATE FROM ORDERS WHERE ORDER DATE = (SELECT ORDERDATE FROM ORDERS WHERE CUSTNO = 2) SELECT * FROM EMPSAL WHERE 16

SALARY (SELECT AVG (SALARY) FROM EMPSAL) Svázané proměnné : svázaná (propojená) proměnná je předaná hodnota asociovaná s SQL příkazem. Mohou být použity v : WHERE klauzuli VALUESS klauzuli v INSERT příkazu SET klauzuli v UPDATE příkazu Svázané proměnné musí začínat dvojtečkou :. 2.2. Definice dat 2.2.1. ALTER TABLE Tento příkaz se používá na následující funkce : Drop, Add a Modify pro sloupce Rename pro sloupce a tabulky Add přidá sloupec do tabulky Drop vyjme sloupec z tabulky Modify mění atributy pro sloupec Rename přejmenuje sloupec nebo tabulku Pro používání tohoto příkazu musí mít uživatel privilegia ALTER. Příklady : přidá nový sloupec JOB, který obsahuje max. 15 znaků do tabulky EMP : 17

ALTER TABLE EMP ADD JOB VARCHAR(15); Sníží velikost sloupce JOB na 40 znaků a nastaví NOT NULL podmínku : ALTER TABLE EMP MODIFY JOB VARCHAR(40) NOT NULL; Vyjme sloupec JOB a HIREDATE : ALTER TABLE EMP DROP JOB, HIREDATE; Změní jméno tabulky EMP na EMPLOYEE : ALTER TABLE EMP RENAME TABLE EMPLOYEE; Přidá NOT NULL atribut do sloupce HIREDATE : ALTER TABLE EMP MODIFY HIREDATE NOT NULL; Vyjme atribut NOT NULL : ALTER TABLE EMP MODIFY HIREDATE NULL; 2.2.2. CREATE INDEX Tento příkaz vytváří index na jeden nebo více sloupců tabulky. Indexy optimalizují přenášení dat (vracení) bez nutnosti prohledávání celé tabulky. Pro metodiku obnovování statistik si prostudujte manuál vašeho databázového serveru. Může např. nastat případ, že vytvoříte prázdnou tabulku (empty) a index vytvořený na takové tabulce by mohl podle druhu použitého serveru vyžadovat ruční spuštění UPDATE STATISTIC. 18

Jestliže vytváříte tabulku s primárním klíčem příkazem CREATE TABLE, musíte vytvořit jedinečný index na primárním klíčovaném sloupci. Příklady : Vytvoří index se jménem HIRE_IDX na sloupec HIREDATE : CREATE INDEX HIRE_IDX ON EMP (HIREDATE); Vytvoří spojený index složený z LNAME a FNAME: CREATE INDEX NAME_IDX ON EMP (LNAME, FNAME); Vytvoří sestupný index na EMP_IDX sloupci EMP tabulky se zakázáním duplicity čísel : CREATE UNIQUE INDEX EMP_IDX ON EMP (EMPNO DESC); CREATE TABLE Tento příkaz vytváří tabulku se specifikovanými sloupci. Musíte mít patřičná práva pro tuto operaci. Plně kvalifikované SQL jméno tabulky je : Autorizační-identif.tabulky-jméno 19

Autorizační-id. popis stvořitele tabulky Jestliže vytvoříte tabulku bez specifikování autorizačního id. Je nadefinováno default autorizační id. Příklady : Vytvoří tabulku EMP a EMPSAL CREATE TABLE EMP (EMPNO INTEGER NOT NULL, LNAME VARCHAR(15), FNAME CHAR(10), DEPTNO SMALLINT, HIREDATE DATE, JOB VARCHAR (15)); CREATE TABLE EMPSAL (EMPNO INTEGER NOT NULL, SALARY DECIMAL(5,9,2), REVIEW LONGVARCHAR; Vytvoří tabulku, která dovoluje cizí klíč EMPNO v EMPSAL tabulce s odkazem EMP- NO v EMP tabulce CREATE TABLE EMP (EMPNO INT NOT NULL, LNAME VARCHAR(15), FNAME CHAR(10), DEPTNO SMALLINT, HIREDATE DATE, JOB VARCHAR (15) PRIMARY KEY (EMPNO)); CREATE UNIQUE INDEX EMP_IDX ON EMP (EMPNO); CREATE TABLE EMPSAL (EMPNO INTEGER, SALARY DECIMAL (9,2), REVIEW LONG VARCHAR, FOREIGN KEY (EMPNO) REFERENCES EMP ON DELETE CASCADE); Související příkazy : ALTER TABLE CREATE INDEX 20

2.2.3. CREATE VIEW Tento příkaz vytváří pohled na jednu nebo více tabulek. Jeho použití úzce souvisí s příkazem GRANT (privilegia) : CREATE VIEW A_PAYAS SELECT FNAME, LNAME, SALARY FROM EMP, EMPSAL... V definici pohledu není možné použít UNION ani ORDER BY. Pohled jak již z názvu vyplívá je pouze abstrakce a má tím pádem příznak read-only (mimo následující výjimky) a proto nemůže provádět update dat (s jedinou výjimkou, kdy je pouze nad jednou tabulkou a nepoužívá funkce). CREATE VIEW PAY AS SELECT FNAME, LNAME, SALARY FROM EMP, EMPSAL WHERE EMP.EMPNO = EMPSAL.EMPNO; Následující příklad pohledu ukazuje možnost změny jmen sloupců v pohledu : CREATE VIEW STARTDATES (FIRST, LAST, DOH) AS SELECT FNAME, LNAME, HIREDATE FROM EMP; Následující pohled obsahuje asloupec, který je vypočítávaný (je na něm použita funkce) a to činí z tohoto pohledu pohled pouze pro čtení : CREATE VIEW DEPT_SAL (DEPT, TOTSAL) AS SELECT DEPTNO, SUM(SALARY) FROM EMP, EMPSAL WHERE EMP.EMPNO = EMPSAL.EMPNO GROUP BY DEPTNO; Tento pohled používá WITH CHECK OPTION klauzuli : CREATE VIEW WEEK2 AS SELECT * FROM ORDERS 21

WHERE ORDERDATE > = 05-JUL-94 WITH CHECK OPTION; Následující pohled je vytvořen ze dvou základních tabulek : CREATE VIEW MYVIEW (POSITION, ARG1,ADESCRIPT, ARG2, BDESCRIPT) AS SELECT TABLE1.POSITION, TABLE1.ARG1,A.DESCRIPT AS ADESCRIPT, TABLE1.ARG2, B.DESCRIPT AS BDESCRIPT FROM TABLE1, TABLE2 A, TABLE2 B WHERE TABLE1.ARG1=A.CODE AND TABLE1.ARG2=B.CODE; Související příkazy : CREATE TABLE SELECT 2.2.4. DROP Tento příkaz vyjme z databáze specifický objekt. Pro tento příkaz musíte mít patřičná práva DBA. DROP TABLE vyjme tabulku, všechna synonyma a indexy definované pro tuto tabulku a všechna práva přidělena k této tabulce. Systémové tabulky nemohou být vyjmuty. DROP INDEX vyjme index. Systémové indexy nemohou být vyjmuty. DROP VIEW vyjme pohled ze systémového katalogu. Všechny práva k tomuto pohledu jsou vyjmuta též. SYNONYM vyjme synonym. Pohledy založené na tomto synonymu jsou také vyjmuta. PUBLIC vyjme veřejné synonyma. Pohledy založené na tomto synonymu jsou také vyjmuta. Příklady : DROP INDEX CHKINDX; DROP VIEW MYEMP; DROP SYNONYM EASY_TO_REMEMBER; DROP PUBLIC SYNONYM EMP; DROP TABLE EMP; Související příkazy : CREATE INDEX; CREATE SYNONYM; CREATE TABLE; CREATE VIEW; 22

2.3. Editace dat 2.3.1. DELETE Tento příkaz smaže jeden nebo více řádků z jedné tabulky nebo pohledu. WHERE vyhledávací výraz podmínka pro výběr řádků vybraných pro smazání. Příklady : Tento příkaz smaže zaměstnance číslo 1234 z tabulky EMP: DELETE FROM EMP WHERE EMPNO = 1234; Smaže zaměstnance v oddělení 2500 z tabulky EMPSAL: DELETE FROM EMPSAL WHERE EMPNO IN (SELECT EMPNO FROM EMP WHERE DEPTNO = 2500); Smaže všechny řádky z tabulky: DELETE FROM ORDERS; Související příkazy : CREATE TABLE SET CURSORNAME 2.3.2. INSERT 23

Tento příkaz vkládá řádky dat do tabulky nebo pohledu. Příklady : Tento SQL příkaz vloží jeden kompletní řádek do EMP tabulky : INSERT INTO EMP VALUES (1001, Carver, Dan,2500,01- APR-1994, Manager ); Jestliže nejsou vkládány všechny sloupce musí být specifikována jejich jména : INSERT INTO EMP (EMPNO,LNAME,FNAME,HIREDATE) (1002, Murphy, Bill,17-APR-1994); Tento příkaz používá svázané proměnné na vložení více řádků dat : INSERT INTO EMP VALUES (:1,:2,:3,:4,:5,:6) 1004,Drape,Jane,2600,01-FEB-1994,Programator 1005,Foghorn,Ellen,2500,01-FEB-1994, Programator Použití poddotazu na odvození sloupců pro vkládání : CREATE TABLE RDEMP (RDNO INTEGER, RDLNAME CHAR(15), RDFNAME CHAR(10); INSERT INTO RDEMP (RDNO, RDLNAME, RDFNAME) SELECT EMPNO, LNAME,FNAME FROM EMP WHERE DEPTNO = 2500 ; Související příkazy : 24

SELECT SET CURSORNAME 2.3.3. UPDATE Tento příkaz aktualizuje hodnotu jednoho nebo více sloupců tabulek nebo základních pohledů podle výběrové podmínky. Na tuto operaci musíte mít patřičná privilegia (UPDATE). UPDATE příkaz aktualizuje tabulky s primárními i cizími klíči. Příklady : Aktualizuje tabulku employee s podmínkou EMPNO=1004. UPDATE EMPSAL SET SALARY = 45000 WHERE EMPNO= 1004; Zvýší plat všem zaměstnancům v kanceláři 2500 o 10%. UPDATE EMPSAL SET SALARY = SALARY*1.10 WHERE EMPNO IN (SELECT EMPNO FROM EMP WHERE DEPTNO = 2500); Aktualizuje všechny zaměstnání s písmenem P. Související příkazy : CREATE TABLE SELECT CURSORNAME 2.4. Dotazování dat 2.4.1. SELECT 25

Tento příkaz najde, získá a zobrazí data. SELECT příkaz je rekurzivní může být zahnízděn v hlavním SELECTu. Zapouzdřený SELECT příkaz je volán jako poddotaz. Pro příkaz SELECT musíte mít přidělena privilegia SELECT. Vysvětlivky graf. znázornění : ALL Default hodnota pro SELECT je získání všech řádků. DISTINCT Potlačí duplicitní řádky. SELECT TAB1.*, COL1 FROM TAB1, TAB2; Vrátí všechny sloupce z tabulky TAB1 a jeden sloupec COL1 z tabulky TAB2. WHERE klauzule specifikuje výběrovou podmínku pro základní tabulky nebo pohledy. GROUP BY seskupuje výsledné řádky dotazu. 26

Následující příklad najde celkový plat pro každé oddělení a seskupí dle kanceláře. SELECT DEPTNO, SUM(SALARY), AVG(SALARY), COUNT(SALARY) FROM EMP, EMPSAL WHERE EMP.EMPNO = EMPSAL.EMPNO GROUP BY DEPTNO; HAVING dovoluje výběrovou podmínku pro skupinu řádků výsledků z GROUP BY nebo seskupuje sloupce. SELECT DEPTNO, SUM(SALARY), AVG(SALARY), COUNT(SALARY) FROM EMP, EMPSAL WHERE EMP.EMPNO = EMPSAL.EMPNO GROUP BY DEPTNO HAVING AVG(SALARY) > 30000; ORDER BY setřídí řádky ve výskedové tabulce. ORDER BY nelze použít v poddotazu. Příklady : Vybere všechny řádky z CUSTOMER tabulky. SELECT * FROM CUSTOMER; Vytvoří seznam zaměstnání. SELECT DISTINCT JOB FROM EMP; Zobrazí číslo zaměstnance a měsíční plat lidí, kteří mají roční plat větší než 40000. SELECT EMPNO,SALARY/12 FROM EMPSAL WHERE SALARY > 40000; Najde minimum a průměr platů v každém oddělení. SELECT DEPTNO, MIN(SALARY), AVG(SALARY) FROM EMP, EMPSAL WHERE EMP.EMPNO=EMPSAL.EMPNO GROUP BY DEPTNO; SELECT * FROM EMP WHERE JOB IN (SELECT JOB FROM EMP WHERE LNAME = Drape ); SELECT * FROM ORDERS X WHERE PRICE = (SELECT LISTPRICE FROM PARTS WHERE PARTS.PNUM = X.PNUM); SELECT * FROM ORDERS 27

WHERE CUSTNO=2 ORDER BY ORDERDATE; UNION Tento příkaz spojí výsledky dvou nebo více SLECTů. Duplicitní řádky budou eliminovány. ALL Jestliže specifikujete ALL pak duplicitní řádky nebudou eliminovány. Příklady : Tento příkaz najde zaměstnance z kanceláře 2500 a ty jejichž plat je větší než 50000. SELECT EMPNO FROM EMP WHERE DEPTNO = 2500 UNION SELECT EMPNO FROM EMPSAL WHERE SALARY> 50000; 2.5. Řízení transakcí Řízení transakcí lze postavit (principem) na dvou metodách : použitím zámků CS Cursor Stability RL Release Locks RO Read Only RR Read Repeatability (default) použitím ROWID časový údaj Použití první metody zamykání vět, tabulek či celé databáze má své opodstatnění, ale pro běžný přístup k datům se jeví vhodnější metoda ROWID. Metoda ROWID je založena na principu časové jednoznačnosti. Každá tabulka má vytvořený sloupec ROWID, který databázový server používá pro rychlý přístup k položkám této tabulky. V tomto sloupci je též informace o datu poslední změny patřičného řádku. Při Načtení tabulky z DB serveru do vašeho počítače a změny nějakých hodnot načtete i sloupec ROWID. Před ukládáním (aktualizací) těchto dat zkontroluje výskyt SQL chyby a dále už pouze dáte podmínku, že ROWID v tabulce na DB serveru je stejné jako ROWID ve vaší tabulce např. v tabulce v MS Excel. Jestliže UPDATE neproběhne nebo se vyskytne SQL chyba znamená to, že ve většině případů se ROWID v tabulce na DB serveru neshoduje s ROWID ve vaší tabulce někdo změnil data, která jste měnili vy (nebo jste chtěli, aby se data nezměnila některé operace pro účetnictví). Vám nezbývá než provést ROLLBACK a operaci opakovat 28

od začátku. Pokud k tomuto stavu nesmí dojí pak lze provést zámek, a to na různé úrovni (např. závěrkové operace v účetnictví) a pak vámi načtená (nebo zamčená) data nikdo nezmění. Metoda zámků je spíše na fyzické úrovni a také ji řada DB serverů řeší s různými odlišnostmi jak ve významu tak v syntaxi příkazu. Z toho vyplývá, že aplikace napsané tímto způsobem jsou na jiný DB server přenositelné s určitými problémy a potřebou programátorských zásahů. Zámky v nejužším pojetí se dělí na zámky pro čtení (sdílené) a zámky pro zápis (výhradní). Dále dle typu serveru existují i jiné typy zámků (např. kombinace předešlých, přírůstkový zámek ). Existují dva různé požadavky, které musí být splněny : Kriteria pro výběr isolation stupně : 1, Data zpřístupněná spoustě uživatelů musí být konzistentní. 2, Uživatelé musí mít možnost přistupovat ke stejným datům souběžně. 2.5.1. COMMIT Tento příkaz ukončí aktuální (řídící) transakci (logickou jednotku práce s daty). Transakce má jeden nebo více SQL příkazů 1 2.6. Administrace dat Administrace dat je ve své podstatě správa uživatelů. Vytvoření uživatele standard SQL nepodporuje a provádí se prostředky, které jsou součástí DB serveru. Je-li uživatel již vytvořen má určitá práva a to obecná a systémová (u Oracle je jen systémových práv zhruba 80) jejichž rozsah závisí na kvalitě DB serveru. Rozsah těchto práv je nutno měnit, a to jak rozšiřovat tak naopak. Pro rozšíření dat slouží příkaz GRANT a pro vyjmutí práv příkaz REVOKE. Pro přihlášení uživatele k databázi je potřeba jeho jméno a heslo. Heslo je následně (po založení) uloženo do systémového katalogu, kde je zakódováno a přístup k němu je pouze přes funkci ALTER PASSWORD nebo s autorizací DBA. 29

2.6.1. ALTER PASSWORD Tento příkaz změní vaše heslo. Příklad : ALTER PASSWORD OLDPASSWORD TO NEWPASSWORD Související příkazy : GRANT, REVOKE 2.6.2. GRANT 2.6.3. REVOKE 30

Protect http:// http://web.telecom.cz/protect e-mail : adm@telecom.cz Zpracoval : ing. Zdeněk Šerý 31