5. POČÍTAČOVÉ CVIČENÍ Databáze Databázi si můžeme představit jako místo, kam se ukládají všechny potřebné údaje. Přístup k údajům uloženým v databázi obstarává program, kterému se říká Systém Řízení Báze Dat (SŘBD). Anglicky: DataBase Management Systém (DBMS). Mezi SŘBD patří programy jako Oracle (komerčný) a programy a šířené zdarma jako MySQL a PostgreSQL. Převážná většina dnes používaných SŘBD při uspořádání údajů v databázi vychází z relačního modelu dat. V tomto modelu jsou údaje uspořádány do tabulek. Tabulka zpravidla shromažďuje údaje o jednom druhu objektů. Můžeme tak mít například tabulku s osobními údaji zaměstnanců. Jednotlivé řádky odpovídají jednotlivým zaměstnancům. Sloupce pak obsahují informace např.: osobní číslo, jméno, rodné číslo, adresa a výše platu. Sloupcům tabulky obvykle říkáme v databázové terminologii položky nebo atributy. Jednotlivé řádky se pak nazývají záznamy. Viz. obrázek 1. Databáze může samozřejmě obsahovat větší množství tabulek záleží na tom, co vše za údaje chceme do databáze zaznamenat. Každá tabulka má proto své jméno, které ji v rámci databáze jednoznačně identifikuje. V našem případě by tabulka měla nejspíše název Zaměstnanci. Primární klíč: Každá tabulka by měla obsahovat tzv. primární klíč. Primární klíč je atribut, jehož hodnota je pro každý záznam jedinečná. V našem případě tedy jako primární klíč může posloužit atribut Osobní číslo, protože každý zaměstnanec má své vlastní osobní číslo (nebo např. rodné číslo to má každý občan České republiky jedinečné). Atributy: Sloupcům tabulky obvykle říkáme v databázové terminologii položky nebo atributy. Pro každý atribut tabulky musíme určit jaký typ dat může obsahovat. Mezi nejběžněji používané typy patří celá čísla, znakové řetězce a logické hodnoty (ano/ne). Další velmi často používané typy jsou reálná čísla, měnové údaje, datum a čas. Mnoho SŘBD podporuje i složitější typy jako je obrázek, video či audio klip.
Administrace databáze Do libovolného webového prohlížeče napište adresu: http://databaze.fbmi.cvut.cz/mysql Vytvořit novou tabulku v databázi (např. Název: test, Sloupce: 2) Pozn.: Na serveru databaze.fbmi.cvut.cz každý student má vytvořenou (při registraci) vlastní databázi s názvem, která se shoduje s jeho příjmením. Definování sloupců (např. oscislo, jmeno)
Vložit záznam do tabulky
Projít záznamy v tabulce
Lehký úvod do SQL Naše skripty zapsané v PHP mohou obsahovat příkazy zapsané v jazyce SQL. To znamená, že nic nebrání tomu, aby byl přes Web zpřístupněn obsah nějaké databáze. Abychom si mohli SQL vyzkoušet, budeme potřebovat nějaký SQL-server. Server databaze.fbmi.cvut.cz nabízí službu databázového serveru MySQL. Přístupové jméno a heslo jste dostaly emailem. Vytvoření nové tabulky Nyní v databázi vytvoříme tabulku adresar a v ní sloupce Jméno a E-mail Pozn.: Názvy všech tabulek a položek je lepší zadávat bez diakritických znamének, protože ne všechny servery si zde s češtinou poradí. <? $DbLogin = "szabo"; // uzivatel - upravte dle emailu $DbPass = "paw5ogv"; // heslo - upravte dle emailu $DbName = "szabo"; // nazev databaze je to vase prijmeni $tb="adresar"; $sloupec1="jmeno"; $sloupec2="e-mail"; // nazev tabulky // nazev 1. sloupce // nazev 2. sloupce $spojeni= mysql_connect("localhost", $DbLogin, $DbPass); mysql_select_db($dbname, $spojeni); // definice SQL dotazu $sqlstr = "CREATE TABLE `$tb` (`$sloupec1` VARCHAR(20) NOT NULL,`$sloupec2` VARCHAR(40) NOT NULL)"; // vykonani SQL dotazu $result = mysql_query($sqlstr); // uzavreni databaze mysql_close(); echo "databaze byla uspesne vytvorena"?> Zde jsme již použili příkaz SQL pro vytvoření tabulky funkce. mysql_select_db($dbname, $spojeni); vybere databázi se kterou chceme pracovat (v našem případě je pouze jedna). mysql_query($sqlstr); je funkce zpracovávající kód SQL. VARCHAR(20) tento parametr SQL určuje kolik znaků může mít poznámka v daném sloupci. NOT NULL znamená, že data nebudou nulová. Přidání záznamu do tabulky Nyní přidáme záznam Jirka Mládek - jirka@seznam.cz - stejným způsobem budete moci vytvořit i ty ostatní. <? $DbLogin = "szabo"; // uzivatel - upravte dle emailu $DbPass = "paw5ogv"; // heslo - upravte dle emailu $DbName = "szabo"; // nazev databaze je to vase prijmeni
$tb="adresar"; $sloupec1="jmeno"; $sloupec2="e-mail"; // nazev tabulky // nazev 1. sloupce // nazev 2. sloupce $spojeni= mysql_connect("localhost", $DbLogin, $DbPass); mysql_select_db($dbname, $spojeni); // definice SQL dotazu $sqlstr = "INSERT INTO `$tb` ( `$sloupec1`, `$sloupec2` ) VALUES ('Jirka Mládek', 'jirka@seznam.cz')"; // vykonani SQL dotazu $result = mysql_query($sqlstr); // uzavreni databaze mysql_close(); echo "data byla uspesne vlozena"?> Vybrané datové typy MySQL Typ int float varchar(n) date time Popis celé číslo číslo s pohyblivou řádovou čárkou textový řetězec o maximální délce n datum ve tvaru RRRR-MM-DD čas ve tvaru HH:MM:SS Příklad testování připojení k databázi // spojení s DB serverem if (!($link = mysql_connect($dbserver, $DbLogin, $DbPass))) { echo "Chyba při připojení k databázi na serveru ".$DbServer."!"; exit; } // vyber databaze (pro Vas kontrola existence DB) if (!($spojeni = mysql_select_db($dbname, $link))) { echo "Chyba při připojení k databázi ".$DbName."!"; exit; }?>