Úvod do databází
Transkript
Databáze Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu Bedřich Košata K čemu jsou databáze ● Ukládání dat ve strukturované podobě ● Možnost ukládat velké množství dat ● Rychlý přístup k datům a vyhledávání podle různých kritérií Jak vypadá databáze ● ● Základem databáze je tabulka Databáze může obsahovat libovolný počet tabulek ● Tabulka se skládá ze sloupců a řádek ● Každý sloupec představuje údaj určitého druhu ● Každý řádek představuje jeden záznam ● Řádek jde přirovnat k pythonímu slovníku (s pevně danými klíči), tabulku k listu takových slovníků Jak vypadá tabulka ● ● Tabulka má pevnou strukturu definovanou sloupci Sloupce mají jméno a typ (text, integer, float, apod.). (speciální hodnota NULL slouží jako None v Pythou, ale sloupec jí musí podporovat) Jméno Příjmení Email Arthur Dent [email protected] Graham Chapman [email protected] Samuel Wimes [email protected] Primární klíče ● ● ● Jeden ze sloupců je tzv. primární klíč, který je unikátní v celé tabulce Jako primární klíč se často používá automaticky se zvyšující integer Primární klíč slouží jako ID, které umožňuje odkazování z jiných tabulek ID Jméno Příjmení Email 1 Arthur Dent [email protected] 2 Graham Chapman [email protected] 3 Samuel Wimes [email protected] Propojení tabulek ● Co dělat, když nevím kolik dat patří k jednomu záznamu? ● např. člověk může mít víc emailových adres ID Jméno Příjmení Email1 Email2 1 Arthur Dent [email protected] [email protected] 2 Graham Chapman [email protected] 3 Samuel Wimes Email3... [email protected] Co když se najde někdo se čtyřmi adresami? Propojení tabulek ● Řešení jsou dvě tabulky propojené pomocí ID ● Neplýtvám místem v prázdných sloupcích ● Můžu mít emailů kolik chci ● Tzv. vztah one-to-many ID Jméno Příjmení ID človeka Email 1 Arthur Dent 1 [email protected] 2 Graham Chapman 1 [email protected] 3 Samuel Wimes 2 [email protected] 3 [email protected] Složitější propojení ● ● Např. herec–film: ve filmu hraje mnoho herců, herec hraje v mnoha filmech (vztah many-tomany) Řešení je propojovací tabulka ID Jméno Příjmení 1 Terry Jones 2 Graham Chapman 3 Michael Palin ID herce ID filmu ID Jméno 1 1 1 The Holy Grail 2 1 2 Life of Brian 2 2 3 2 Ještě složitější propojení ● ● ● Herec hraje v každém filmu jinou roli. Herec může mít ve filmu víc rolí. Role nesouvisí s hercem, ani s filmem ale s kombinací herec–film. Řešení: rozšíříme propojovací tabulku ID Jméno Příjmení 1 Terry Jones 2 Graham Chapman 3 Michael Palin ID herce ID Role filmu ID Jméno 1 1 Sir Bevedere 1 The Holy Grail 2 1 King Arthur 2 Life of Brian 2 2 Brian 3 2 Pontius Pilate 3 2 Ex-Leper Jak vypadá typická databáze ● ● ● ● Databázový server (program) běží na serveru (počítač) :) Klienti běží na jiných počítačích, připojují se pomocí TCP Většina programů obsahuje defaultně pouze textového klienta Různá grafická rozhraní jsou dostupná navíc Nejznámější databázové programy ● Oracle Database ● MySQL ● PostgreSQL ● SQLite ● MS Access Jak pracujeme s daty v databázi ● ● Různé programy nabízejí možnost klikacích klientů, např. MS Access SQL - “Structured Query Language” ● ● ● Standardizovaný jazyk určený speciálně pro databáze Implementovaný všemi databázovými programy Data lze z databáze vyexportovat jako sérii SQL příkazů a poté opět nahrát zpátky. SQL úvod – SELECT ● ● ● ● Nejčastější operace – výběr dat z databáze SELECT Email FROM Lidi WHERE Příjmení=”Dent”; SELECT ID,Email FROM Lidi WHERE Jméno=”Arthur” AND Příjmení=”Dent”; SELECT * FROM Lidi; Tabulka Lidi: ID Jméno Příjmení Email 1 Arthur Dent [email protected] 2 Graham Chapman [email protected] 3 Samuel Wimes [email protected] SQL úvod – INSERT ● ● ● Používá se pro vkládání nových záznamů (řádek) INSERT INTO Lidi (ID,Jméno,Příjmení,Email) VALUES (4,”Richard”,”Dawkins”,”[email protected]”); INSERT INTO Lidi (Jméno,Příjmení,Email) VALUES (”Richard”,”Dawkins”,”[email protected]”); ● Pokud je primární klíč automaticky přiřazen k novým záznamům SQL úvod – UPDATE ● ● ● ● Používá se pro modifikaci existujících záznamů (řádek) UPDATE Lidi SET Email=”[email protected]” WHERE ID=1; UPDATE Lidi SET Email=”[email protected]” WHERE Příjmení=”Dent”; UPDATE Lidi SET Email=”[email protected]” WHERE Email=”[email protected]”; SQL úvod – DELETE ● Používá se pro mazání řádků ● DELETE FROM Lidi WHERE Příjmení=”Dent”; ● DELETE FROM Lidi WHERE ID=1; ● DELETE FROM Lidi WHERE ID>3; ● DELETE FROM Lidi; Některé zajímavé funkce ● ● Aggregate functions: ● Pracují s mnoha záznamy ● SUM, COUNT, AVG, MIN, MAX ● SELECT SUM(Cena) FROM Sklad; Scalar functions: ● Pracují s jednou hodnotou ● UCASE, LCASE, LEN, ROUND... ● SELECT LEN(Příjmení),Příjmení FROM Lidi WHERE Jméno=”John”; Více o SELECT – řazení a limit ● ● ● ● ● SELECT * FROM Lidi ORDER BY Příjmení; SELECT * FROM Lidi ORDER BY Příjmení,Jméno; SELECT * FROM Lidi WHERE Age>18 ORDER BY Age DESC; SELECT * FROM Lidi WHERE Age>18 ORDER BY Age DESC LIMIT 10; (jen 10) SELECT * FROM Lidi WHERE Age>18 ORDER BY Age DESC LIMIT 5,10; (10 od pátého) Více o SELECT – Join ● ● ● Join slouží pro vyhledávání ve více tabulkách najednou Nejčastěji použijeme implicit join SELECT Jméno, Email FROM Lidi, Maily WHERE Maily.ID_člověka=Lidi.ID AND Lidi.Příjmení=”Dent”; Lidi Maily ID Jméno Příjmení ID človeka Email 1 Arthur Dent 1 [email protected] 2 Graham Chapman 1 [email protected] 3 Samuel Wimes 2 [email protected] 3 [email protected] Více o SELECT – Join ● ● Join má i explicitní vyjádření SELECT Jméno, Email FROM Lidi JOIN Maily ON Maily.ID_člověka=Lidi.ID WHERE Lidi.Příjmení=”Dent”; Lidi Maily ID Jméno Příjmení ID človeka Email 1 Arthur Dent 1 [email protected] 2 Graham Chapman 1 [email protected] 3 Samuel Wimes 2 [email protected] 3 [email protected] Více o SELECT – Join ● SELECT Herci.Jméno,Herci.Příjmení,Role,Filmy.Jméno FROM Herci, Herec_To_Film, Filmy WHERE Herci.ID=Herec_To_Film.ID_herce AND Filmy.ID=Herec_To_Film.ID_filmu; Herec_To_Film Herci ID Jméno Příjmení 1 Terry Jones 2 Graham Chapman 3 Michael Palin ID herce ID Role filmu Filmy ID Jméno 1 1 Sir Bevedere 1 The Holy Grail 2 1 King Arthur 2 Life of Brian 2 2 Brian 3 2 Pontius Pilate 3 2 Ex-Leper Vyhledávání v textu ● ● ● SELECT * FROM Lidi WHERE Příjmení LIKE “D%”; SELECT * FROM Lidi WHERE Příjmení LIKE “%ata”; SELECT * FROM Dokument WHERE Text LIKE “%brabenci%”;
Podobné dokumenty
Úvod do MS Visual Basic 2010 - ISBN 978-80-87658-17-8
začátečníků a první osmibitové počítače ani programování v jiných jazycích neumožňovaly. Verzí tohoto jazyka
existuje velmi mnoho a programy napsané v různých verzích jsou n...
9. Datové typy v MySQL, typy tabulek, funkce v MySQL
řetězcové sloupce (větší než 4 bajty) jsou dynamické, každý záznam má určitou hlavičku
s informací o jeho délce, jsou složitější, vyžadují pravidelnou údržbu, aby nedocházelo
k fragmentaci
- kompri...
Recent advances in digital image forensics
Jak moc můžeme věřit
publikovaným fotografiím?
Babak Mahdian
[email protected]
FOTOPAST BUNATY FULL HD – uživatelský manuál
Pokud je tabulka nastavena zvolte tlačítko SELECT , zobrazí se Vám průzkumník
a vy vyberete cestu k SD kartě fotopasti a označíte jí! Pozor! Cestu jen k sd
kartě k žádné žluté složce, která by na s...
stahujte zde
začátečníků a první osmibitové počítače ani programování v jiných jazycích neumožňovaly. Verzí tohoto jazyka
existuje velmi mnoho a programy napsané v různých verzích jsou n...
7. Moduly
všech programů kancelářského balíku Microsoft Office. VBA je zjednodušenou verzí
samostatného programovacího jazyka Visual Basic. VBA se používá pro:
− Tvorbu uživatelských funkcí, které lze využív...
Chceme být ještě lepší liga!
Ten dělá to a ten zas tohle a všichni dohromady udělají co? Popsané procesy spolu
s metodikami a směrnicemi uchovávají znalosti v naší společnosti. Dobře popsaný proces představuje mapu, podle ní...
Pražské nábřeží - Prague City Line
Historická budova Právnické fakulty Univerzity Karlovy na praţském nábřeţí, byla postavena v roce 1926. Podle projetu Jana Kotěry a Ladislava Maňocha vznikla tato překrásná
novoklasicistní stavba. ...