Obsah obrázku voda, exteriér, budova, vsedě Popis byl vytvořen automaticky Z3104 GEODATABÁZE – LEKCE 1 Mgr. Martina Klocová OBSAH HODINY •Organizační okénko • •Instalace aj. •Trocha teorie – databáze, tabulka, primární klíč… •Praxe – tvorba databáze a první SQL příkazy ORGANIZAČNÍ OKÉNKO •Prezenčně, případně MS Teams • První část hodiny teorie, poté praktické zkoušení SQL příkazů •Příkazy se budou ukládat na localhost/školní server •Cvičení se budou vytvářet jako součást cvik, proběhne konzultace a kontrola •Zápočet – min. 61 ze 100 bodů •Teoretický kontrolní test v průběhu semestru (30b.) •Zápočtový test – teoretický (20b.) a praktický (50b.) INSTALACE A PŘIPOJENÍ •Ptejte se J DATABÁZE •Uspořádaná množina informací • •Množina určitým způsobem organizovaných a strukturovaných dat SQL - STRUCTURED QUEERY LANGUAGE •Dotazovací jazyk •Vznikl v 70. letech 20. století v IBM • •4 základní části •DDL – definiční příkazy (CREATE; DROP…) •DML – příkazy pro manipulaci s daty (SELECT; DELETE…) •DCL – řízení transakcí a omezování práv (ROLLBACK; GRANT…) •Ostatní RELAČNÍ DATABÁZE •Databáze využívající principů relační algebry (relačního kalkulu). • •Relace – relace nad množinami A,B je podmnožina kartézského součinu R≈ AxB • TABULKA •Způsob zobrazení relace •Skládá se z řádků a sloupců •Řádky – záznamy •Sloupce – atributy •Průnikem atributu a záznamu vzniká pole • • PRIMÁRNÍ KLÍČ •Jednoznačná identifikace záznamu CIZÍ KLÍČ •Jedno nebo více polí tabulky odkazující na primární klíč v jiné tabulce • •Jedna z možností integritního omezení • •Při propojení tabulek je pak možné jednu akci zadat jednou INTEGRITNÍ OMEZENÍ •Slouží k definování pravidel, která omezují či definují způsob použití databáze/tabulek •Datové typy •Primární klíč •UNIQUE •NOT NULL •CHECK • DATOVÉ TYPY •Numerické •Znakové •Bool •Datum/čas •Geometrické •... NUMERICKÉ •Intiger (-2 147 483 648 až +2 147 483 647) – pouze celá čísla, existují i verze Smallint, Bigint, které jsou celočíselné a pouze definují množství alokované paměti pro záznam •Float – desetinná čísla s pevnou čárkou •Real – desetinná čísla s pohyblivou desetinnou čárkou •Doubble – desetinná čísla s pohyblivou desetinnou čárkou, dvojnásobná alokace paměti než u real • • ZNAKOVÉ •char(n) - Znakový řetězec o definované délce • •character varying(n) - Znakové řetězce s proměnnou délkou (omezeno n) •varchar(n) - Znakové řetězce s proměnnou délkou (omezeno n) •character(n) - Znakové řetězce s proměnnou délkou (omezeno n) – opravdu je to stejné, postupným vývojem vzniklo více způsobů zápisu • •Text – neomezený zápis stringu BOOL •Boolean - TRUE (1)/ FALSE(0) DATUM/ČAS •Timestamp (YYYY-MM-DD HH:MM:SS) •Date (YYYY-MM-DD) •Time (HH:MM:SS ) GEOMETRICKÉ •point •line •box •path •polygon •circle NULL •Prázdná hodnota, není záznam – lze ošetřit omezením NOT NULL • •Neplést s nulou jako hodnotou! • •Př. Teploty ve městě •0 – 0°C •NULL – nezměřeno, výpadek v měření… ACID •Atomic – atomicita, příkaz se provede kompletně nebo vůbec •Consistency – konzistence, zůstane zachována databázová integrita •Isolation – více probíhajících transakcí se zároveň neovlivňuje •Durability – trvalost, změny v datových záznamech zůstanou uloženy KARDINALITA •Tabulky mohou mít souvislost či vztah •1:1 •1:M •N:M Obsah obrázku hodiny, kreslení, visící Popis byl vytvořen automaticky NORMÁLNÍ FORMA •Datový záznam je v 1. NF, když jsou všechny jeho komponenty atomické (tj. atributy nejsou složené datové struktury) = Co položka to jeden údaj. Ne více informací v jedné položce. •Datový záznam je v 2. NF, pokud je v 1. NF a každá neklíčová položka (atribut) v záznamu je plně funkčně závislá na každém kandidátním klíči = Každý atribut souvisí s celým kandidátním (primárním) klíčem. Ne pouze s jeho součástí. •Datový záznam je ve 3.NF, pokud je ve 2.NF a každý atribut je funkčně závislý na klíči a pouze na klíči = Neexistuje atribut, který není závislý na primárním klíči. •Datový záznam je ve 4.NF, pokud je ve 3.NF a v datových záznamech nejsou podmíněné funkční závislosti = Neobsahuje hodnoty NULL. ZÁKLADNÍ PŘÍKAZY •CREATE TABLE nazevTabulky • ( • nazevSloupce INT, • nazevSloupce_2 VARCHAR(10) • ); •Př.: •CREATE TABLE zamestnanci • (prijmeni TEXT, mesto VARCHAR(10), vek INT); ALTER •ALTER TABLE nazevTabulky • ADD COLUMN jmenoSloupce TEXT; • • •Př.: •ALTER TABLE zamestnanci ADD COLUMN jmeno TEXT; INSERT INTO •INSERT INTO nazevTabulky • (sloupec1, sloupec2, sloupec3) •VALUES • (hodnota1, hodnote2, hodnota2); • •Př,: •INSERT INTO zamestnanci (jmeno, prijmeni, mesto, vek) • VALUES ('Jan', 'Novak', 'Brno', 62), (‚Josef', ‚Hradek', ‚Ostrava‘, 58); SELECT •SELECT sloupec1, sloupec2 FROM nazevTabulky; • •SELECT * FROM nazevTabulky; • •SELECT sloupec1, sloupec2 FROM nazevTabulky WHERE sloupec1 = hodnota1; • •Př.: •SELECT jmeno, vek FROM zamestnanci WHERE prijmeni = 'Novak'; DĚKUJI ZA POZORNOST •