Úvod do databází

Transkript

Úvod do databází
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

Ú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...

Více

9. Datové typy v MySQL, typy tabulek, funkce v MySQL

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...

Více

Recent advances in digital image forensics

Recent advances in digital image forensics Jak moc můžeme věřit publikovaným fotografiím? Babak Mahdian [email protected]

Více

FOTOPAST BUNATY FULL HD – uživatelský manuál

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...

Více

stahujte zde

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...

Více

7. Moduly

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...

Více

Chceme být ještě lepší liga!

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í...

Více

Pražské nábřeží - Prague City Line

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. ...

Více