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



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

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

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

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

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

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

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

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

Použití databází na Webu

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

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

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

Databáze SQL SELECT. David Hoksza

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

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

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

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

Databázové a informační systémy

Databázové systémy, MS Access. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1130_Databázové systémy, MS Access_PWP

Databázové systémy a SQL

Michal Krátký, Miroslav Beneš

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

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

SQL SQL-SELECT. Informační a znalostní systémy. Informační a znalostní systémy SQL- SELECT

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

KIV/ZIS - SQL dotazy. stáhnout soubor ZIS- 04_TestovaciDatabaze accdb. SQL dotazy. budeme probírat pouze SELECT

Databázové a informační systémy Jana Šarmanová

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

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

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

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

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

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

Zápisování dat do databáze

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

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

Základy relačních databází, jejich využití v programování webu

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years

Úvod do databázových systémů 3. cvičení

Ukládání a vyhledávání XML dat

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

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

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

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

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.

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

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

Základní přehled SQL příkazů

Operátory ROLLUP a CUBE

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

Datové modelování II

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

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

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

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

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

NÁVRH A TVORBA HUDEBNÍ DATABÁZE

Databázové systémy I

KMI / TMA Tvorba mobilních aplikací. 6. seminář ZS 2016/2017 Středa 13:15-15:45

SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá:

MS Access Dotazy SQL

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

Architektury databázových

6. blok část C Množinové operátory

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

KIV/ZIS - SELECT, opakování

Databázové systémy úvod

Databázové systémy trocha teorie

Verzování a publikace dat na webu za pomoci PostgreSQL

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

Databázové systémy a SQL

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

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

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

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

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

Temporální databáze. Jan Kolárik Miroslav Macík

SPŠS Č.Budějovice Obor Geodézie a Katastr nemovitostí 3.ročník ATRIBUTY ZÁKLADN POJMY VÝBĚR PRVKŮ DLE ATRIBUTŮ

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

Databázové systémy a SQL

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

Databáze Databázové systémy MS Access

Roční periodická zpráva projektu

Internetová filmová databáze IFDB

Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/

POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE

Semináˇr Java X JDBC Semináˇr Java X p.1/25

13. blok Práce s XML dokumenty v databázi Oracle

Administrace Oracle. Práva a role, audit

4IT218 Databáze. 4IT218 Databáze

Databázové systémy I

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

Semestrální práce z DAS2 a WWW

Programování v Pythonu

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

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

Databáze v MS ACCESS

Instalace. Produkt je odzkoušen pro MS SQL server 2008 a Windows XP a Windows 7. Pro jiné verze SQL server a Windows nebyl testován.

Jazyk S Q L základy, příkazy pro práci s daty

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 arthur.dent@hhgttg.net Graham Chapman chap@python.org Samuel Wimes sw@discworld.uk

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 arthur.dent@hhgttg.net 2 Graham Chapman chap@python.org 3 Samuel Wimes sw@discworld.uk

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 Email3... 1 Arthur Dent arthur.dent@hhgttg.net ad@gmail.com 2 Graham Chapman chap@python.org 3 Samuel Wimes sw@discworld.uk 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í 1 Arthur Dent 2 Graham Chapman 3 Samuel Wimes ID človeka Email 1 arthur.dent@hhgttg.net 1 ad@gmail.com 2 chap@python.org 3 sw@discworld.uk

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 1 1 2 1 2 2 3 2 ID filmu ID Jméno 1 The Holy Grail 2 Life of Brian

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 filmu Role 1 1 Sir Bevedere 2 1 King Arthur 2 2 Brian 3 2 Pontius Pilate 3 2 Ex-Leper ID Jméno 1 The Holy Grail 2 Life of Brian

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 arthur.dent@hhgttg.net 2 Graham Chapman chap@python.org 3 Samuel Wimes sw@discworld.uk

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, rd@nature.net ); INSERT INTO Lidi (Jméno,Příjmení,Email) VALUES ( Richard, Dawkins, rd@nature.net ); 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= new@gmail.com WHERE ID=1; UPDATE Lidi SET Email= new@gmail.com WHERE Příjmení= Dent ; UPDATE Lidi SET Email= new@gmail.com WHERE Email= old@gmail.com ;

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 ID Jméno Příjmení 1 Arthur Dent 2 Graham Chapman 3 Samuel Wimes Maily ID človeka Email 1 arthur.dent@hhgttg.net 1 ad@gmail.com 2 chap@python.org 3 sw@discworld.uk

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 ID Jméno Příjmení 1 Arthur Dent 2 Graham Chapman 3 Samuel Wimes Maily ID človeka Email 1 arthur.dent@hhgttg.net 1 ad@gmail.com 2 chap@python.org 3 sw@discworld.uk

Více o SELECT Join Herci 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 ID Jméno Příjmení 1 Terry Jones 2 Graham Chapman 3 Michael Palin ID herce ID filmu Role 1 1 Sir Bevedere 2 1 King Arthur 2 2 Brian 3 2 Pontius Pilate 3 2 Ex-Leper Filmy ID Jméno 1 The Holy Grail 2 Life of Brian

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% ;