1 / 30

Informatika II PAA

Informatika II PAA. DOTAZOVACÍ JAZYKY 6.3.2001. Dotazy v DBS. Účel dotazovacích jazyků:. zprostředkovat informace uživateli umožnit různé pohledy na uložená data zajistit jednoduchý způsob formulace dotazu předat požadovanou odpověď rychle a

uriah-cruz
Download Presentation

Informatika II PAA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Informatika II PAA DOTAZOVACÍ JAZYKY 6.3.2001

  2. Dotazy v DBS Účel dotazovacích jazyků: • zprostředkovat informace uživateli • umožnit různé pohledy na uložená data • zajistit jednoduchý způsob formulace dotazu • předat požadovanou odpověď rychle a • ve srozumitelné podobě

  3. Dotazy - základní operace • operace projekce • operace selekce • logický součin - operátor AND • logický součet - operátor OR • logická negace - operátor NOT • spec. operátory Like, Blank, Today • zástupné operátory .. • operace spojení • join

  4. Obecné charakteristikydotazovacích jazyků • relační operátory se používají pro celé relace • výsledkem operace (dotazu) je vždy nová relace • operátory pracují s hodnotami atributů

  5. Dotazovací jazyky Podle způsobu zadávání rozlišujeme: • procedurální jazyky • nutné zadat algoritmus pro získání požadované odpovědi  určeny pro profesionální programátory • neprocedulární jazyky • jednodušší, zadávají se jen podmínky, které má požadovaná odpověď splňovat • QBE, SQL

  6. - založené na množinách relační algebra SQL relační kalkul QBE Relační dotazovací jazyky - založené na predikátové logice

  7. Relační kalkul Kalkul = způsob formalizovaného zápisu. Relační kalkul – formalizovaný a symbolický způsob zápisu stejných operací, které vymezuje relační algebra. • n-ticový kalkul – na relaci se nahlíží jako na množinu řádků • doménový kalkul – na relaci se nahlíží jako na množinu sloupců (domén).

  8. QBE – Query By Example • zadávání dotazů v grafické podobě na základě interaktivní komunikace mezi DBS a uživatelem

  9. QBE – MS Access Spuštění dotazu

  10. QBE – MS Access

  11. QBE – MS Access

  12. SQL – Structured Query Language • při jeho tvorbě dodržena zásada přiblížit specifikování dotazu principu kladení otázek v přirozeném jazyce, tj. angličtině • je deklarativní – příkazy jazyka specifikují „co“ se má provést a ne „jak“

  13. SQL - představení • SQL - Structured Query Language • 1974 Sequel, počátky • vývoj - nejdříve jednouživatelské SŘBD s SQL • přístup k lokální databázi • později DB servery založené na SQL • víceuživatelské přístupy (klient / server) • Časti SQL: • DDL - Data Definition Language, pro definici dat • DML - Data Manipulation Lang., pro manipulaci s daty • DCL - Data Control Lang., definice přístupových práv

  14. SQL – typografické konvence • volitelné části příkazu v [] • seznam atributů, kterých se příkaz týká: • atrib1 [, atrib2…..] • Select * znamená všechny atributy (sloupce) • Distinct (Unique) zajistí unikáty ve výsledné relaci • | použité v některých příkazech znamená větvení • {} povinná část příkazu • Having podmínka = splňující podmínku (-y)

  15. SQL – vytvoření tabulky • CREATE TABLE • syntaxe CREATE TABLE jméno_tabulky (jméno_sloupce typ_sloupce, ... ) • př. CREATE TABLE Zamestnanci ( OsobniCislo int NOT NULL, Jmeno varchar(40), RC varchar(11), Adresa varchar(60), Plat float, PRIMARY KEY (OsobniCislo) );

  16. SQL – přidání záznamu • INSERT INTO • syntaxe INSERT INTO jméno_tabulky VALUES (hodnota1, ..., hodnotaN) • př. INSERT INTO Zamestnanci VALUES ( 1023, 'Novák Jan', '561220/0235', 'Levá 13, Praha 4', 12000);

  17. SQL – modifikace struktury • ALTER TABLE • syntaxe ALTER TABLE jméno_tabulky ADD (jméno_sloupce datový_typ, …) • př. ALTER TABLE Zamestnanci ADD Telefon varchar(8);

  18. SQL – rušení záznamů • DELETE • syntaxe DELETE FROM jméno_tabulky [WHERE podmínka] • př. DELETE FROM Zamestnanci WHERE OsobniCislo = 1023;

  19. SQL – opravy dat • UPDATE • syntaxe UPDATE jméno_tabulky SET položka=hodnota, ... WHERE podmínka • př. UPDATE Zamestnanci SET Plat = 14000 WHERE OsobniCislo = 1023;

  20. SQL – rušení relace • DROP TABLE • syntaxe DROP TABLE jméno_tabulky • př. DROP TABLE Zamestnanci;

  21. SQL – výběr a prohlížení • SELECT • syntaxe SELECT * FROM jméno_tabulky • SELECT * FROM Zamestnanci; • selektivní výběr • podmínka za klíčové slovo WHERE • př. SELECT * FROM Zamestnanci WHERE Jmeno LIKE 'Novák Jan'; • SELECT * FROM Zamestnanci WHERE Jmeno LIKE 'Nov*';

  22. SQL – výběr a prohlížení • SELECT * FROM Zamestnanci WHERE OsobniCislo = 1230; • SELECT * FROM Zamestnanci WHERE Plat > 10000; • lze použít i logické operátory AND a OR • SELECT * FROM Zamestnanci WHERE Jmeno LIKE 'Novák *' AND Plat < 6000;

  23. SQL – výběr a prohlížení • za SELECT lze uvést seznam atributů, jež se ve výsledku zobrazí • př. SELECT Jmeno, Plat FROM Zamestnanci WHERE Plat > 15000; • třídění výstupu – ORDER BY • za jménem sloupce buďto DESC (sestupně) nebo ASC (vzestupně) • př. SELECT * FROM Zamestnanci ORDER BY Plat ASC;

  24. SQL – agregované funkce • pracují s hodnotami ve sloupci v rámci celé tabulky (vrací 1 výsledek pro celý sloupec tabulky) • COUNT(*) • COUNT(jméno_sloupce) • SUM(jméno_sloupce) • MIN(jméno_sloupce) • MAX(jméno_sloupce) • AVG(jméno_sloupce)

  25. SQL – agregované funkce • SELECT COUNT(*) FROM Zamestnanci WHERE Plat > 14000; • doplnění o textový řetězec • SELECT ‘Počet zaměstnanců =‘,COUNT(*) FROM Zamestnanci WHERE Plat > 14000; • SELECT MAX(Plat), MIN(Plat), AVG(Plat) FROM Zamestnanci;

  26. Predikáty ve výběrové podmínce • BETWEEN, IN a LIKE • SELECT * FROM Zamestnanci WHERE Plat BETWEEN 12000 AND 15000; • SELECT * FROM Zamestnanci WHERE Plat IN (12000, 15000); • ODPOVÍDÁ WHERE Plat = 12000 OR Plat = 15000 • SELECT * FROM Zamestnanci WHERE Jmeno LIKE “N*”;

  27. Další zástupné znaky • * - pro libovolný počet znaků • ? – odpovídá jednomu libovol. abecednímu znaku • [ae] – odpovídá jednomu ze znaků uvedených v [] • [!ae] – odpovídá libovolnému znaku, který není uveden v závorkách • [a-e] – odpovídá znakům v daném rozsahu • # - odpovídá jakékoliv číslici • př. …WHERE Plat LIKE “12*” • WHERE Plat LIKE “12??” nebo WHERE Plat LIKE “12##” • WHERE Jmeno LIKE “Nov[ae]*” nebo “Nov[!a]*”

  28. Spojení (join) • umožňuje zpracovávat data ze dvou či více tabulek • vnitřní spojení kombinuje tabulky na základě porovnání hodnot ve sloupcích, které jsou tabulkám společné • INNER JOIN jm_tabulky ON společné sloupce • používá se „tečková notace“ jm_relace.jm_sloupce

  29. Vyrobky Kategorie idkategorie idvyrobku nazevvyrobku idkategorie nazevkategorie 1 1 Cola 1 Napoje 1 2 Pepsi 2 Pokrmy 1 3 Víno 2 4 Steak Příklad spojení 2 tabulek • př. SELECT idvyrobku, nazevvyrobku, nazevkategorie FROM kategorie INNER JOIN vyrobky ON vyrobky.idkategorie = kategorie.idkategorie;

  30. Vyrobky Objednavky Rozpisobj idvyrobku nazevvyrobku idobjednavky kodzakaznika idobjednavky idvyrobku mnozstvi 1000 1 10 1000 Vinet 1 Cola 1000 2 15 1001 Vinet 2 Pepsi 1001 1 24 1002 Ben 3 Víno 1001 3 16 1002 2 18 Příklad spojení 3 tabulek • SELECT objednavky.idzakaznika, rozpisobj.idobjednavky, vyrobky.nazevvyrobku, rozpisobj.mnozstvi FROM (rozpisobj INNER JOIN objednavky ON rozpisobj. idobjednavky = objednavky. idobjednavky) INNER JOIN vyrobky ON rozpisobj.idvyrobku = vyrobky. idvyrobku WHERE objednavky. idzakaznika ="vinet";

More Related