PHP, díl 6. – spolupráce se SQL servery

V minulém dílu jsme si probrali formuláře, teď se dostáváme k tématu, které dokáže údaje z formulářů beze zbytku využít.
Teprve spolupráce PHP s nějakým databázovým serverem umožňuje naplno rozvinout možnosti interaktivního webu. Přiznejme si na rovinu, že již delší dobu stoupá procento stránek generovaných z databází a růst jejich počtu se neustále zrychluje. Zprovoznit SQL server by pro pokročilejšího uživatele (zvláště znalce Unixu) neměl být problém.

Protože spolupráce PHP se SQL je téma velice obsáhlé, je lepší ho rozdělit na dva samostatné díly. V tomto díle se krátce seznámíme s vlastním jazykem SQL, v dalším pokračování se pak dostane na vlastní spolupráci s PHP.

Nejdříve ale pár slov o výběru SQL serveru. Pokud si doma zkoušíte PHP na Linuxu, pak lze doporučit PostgreSQL (dodáváno např. s nedávno vyšlou CZ distribucí RedHatu od Computer Pressu) nebo velmi rychlý MySQL. Oba dva jsou zdarma, za MySQL je potřeba zaplatit pouze při komerčním použití. Pro ty, co si PHP zkouší na platformě Windows, pak existuje verze MySQL (zdarma), nebo MS SQL Server (ten už ale stojí slušné peníze), pro jeho použití pro web je potřeba další licence (asi 100.000,- Kč).

Pro staženíchtivé čtenáře v krátkosti uvedu odkazy na domovské stránky:

Popis instalace a nastavení je vždy podrobně (někdy dokonce přehledně) popsán v dokumentaci.

Jenom dodatečně se zmíním o dalších známých SQL serverech, které PHP podporuje: Informix, Oracle, Sybase, ... Jedná se většinou o drahé, nicméně vynikající systémy. Jinou možností jak využít databáze v PHP je použití starších souborových databází (dBase, dbm).

Jsou možná výhodné pro začátečníky na vyzkoušení, nemusí se nic instalovat (pouze v souboru php.ini je potřeba příslušnou knihovnu povolit - smazáním středníku), v praxi se už ale téměř nepoužívají. Tady se ale nejedná o žádné SQL, takže tyto typy zde dál rozebírat nebudeme.

Základem všeho je databáze. Může být jedna, mohou jich být stovky - záleží pouze na výkonu serveru. Každá databáze pak může obsahovat neomezené množství tabulek. Tabulka pak může mít několik sloupců, které definují její strukturu. Řádky pak obsahují vlastní data. Např. tabulka s názvem LIDI:

Jmeno prijmeni rocnik
Petr Novák 1975
Pavel Nový 1964
Jirka Nováček 1955
Jazyk SQL je i pro neangličtináře dobře srozumitelný. Nejlepší pro pochopení je vrhnout se hned do praxe. Z uvedených příkladů bude všechno jasné.

Nejdříve je nutno tabulku vytvořit:

příkaz:

CREATE TABLE lidi(
jmeno varchar (20),
prijmeni varchar (35),
rocnik integer)
výsledek:

pokud jste se nepřeklepli, máte právo vytvářet nové tabulky atd., server Vám odpoví většinou velmi stručně: CREATE (nebo velmi podobně).

Jednotlivé datové typy, které je možno použít, vyčtete opět z dokumentace, nicméně ve všech SQL serverech je podporován standartní typ jako TEXT, ČÍSLO, DATUM, ANO/NE atd. Většina serverů má navíc i svoje vlastní specifické formáty, jejich použití může ale v budoucnu ztížit přechod na jiný systém, který je nepodporuje.

Dalším krokem je naplnění tabulky nějakými daty:

příkaz:

INSERT INTO lidi VALUES (`Petr`,`Novák`,1975)

výsledek:

Query OK, 1 row(s) affected

Tímto jsme přidali jeden řádek (row) do tabulky.

Všimněte si, že textová data musí být uzavřena v uvozovkách. Na konkrétním systému pak záleží, použijeme-li uvozovky jednoduché nebo dvojité.

Jakmile máme v tabulce nějaká data, můžeme pomocí příkazu SELECT (vyber) provádět "výběr".

Snad jen pro jistotu: hvězdička má funkci jako zástupný znak pro celou strukturu tabulky.

příkaz:

SELECT * FROM lidi WHERE jmeno = `Petr`

výsledek:

Petr Novák 1975

příkaz:

SELECT prijmeni FROM lidi WHERE rocnik<1970

výsledek:

Nový
Nováček

příkaz:

SELECT prijmeni FROM lidi WHERE (jmeno = `Jirka`) AND (rocnik<1970)

výsledek:

Nováček

Pozn. místo rovnítka je možno použít příkaz LIKE, jestliže chceme vybrat všechny, jejichž příjmení začíná třeba na písmena "Nová":

SELECT * FROM lidi WHERE prijmeni LIKE `Nová%`

Příkaz SELECT má docela pestrou škálu dalších parametrů. Těmto pokročilejším prvkům jazyka SQL možná věnujeme část příštího dílu.

Pokud chceme záznam vymazat (např. zaměstnanec byl propuštěn):

příkaz:

DELETE FROM lidi WHERE prijmeni = `Nováček`

výsledek:

Vymaže z databáze VŠECHNY záznamy, kde je příjmení Nováček.

V tomto okamžiku je vhodné zmínit se o tzv. primárním klíči (PK). Jako PK slouží prostě jeden sloupec tabulky, který obsahuje v každém řádku jedinečný, neopakovatelný údaj, podle kterého je např. daný člověk jednoznačně identifikovatelný. V předchozím případě by totiž mohl nastat problém - pokud bychom zaměstnávali více Nováčků.

V našem případě by ideální bylo rodné číslo. Přidáme proto do struktury tabulky další sloupec - rod_cislo.

příkaz:

ALTER TABLE lidi ADD (rod_cislo integer)

výsledek:

Tabulka má novou strukturu:

jmeno prijmeni rocnik rod_cislo
Je nutno upozornit, že takovýto postup by v praxi nebyl příliš vhodný. Měnit datovou strukturu tabulky "za běhu" může způsobit takové problémy jako nutnost doplnit rodná čísla u stávajících zaměstnanců atd.

Před vytvořením tabulky je proto nanejvýš vhodné hluboce se zamyslet nad tím, jaké údaje by měla obsahovat, a vzít v potaz i nároky do budoucna.

Pokračujme dále. Nyní je tedy potřeba doplnit rodná čísla u některých zaměstnanců.

příkaz:

UPDATE lidi SET rod_cislo=7509073858 WHERE prijmeni = `Novák`

výsledek:

Panu Novákovi bylo přidáno jeho RČ.

Nyní jsme ale zjistili, že sloupec ročník už není potřeba, protože rok narození jsme schopni zjistit z rodného čísla. Zrušíme tedy celý sloupec rocnik. Pozor: zrušený sloupec již nelze zpětně obnovit!

příkaz:

ALTER TABLE lidi DROP rocnik

výsledek:

Tabulka má novou strukturu:

Jmeno prijmeni rod_cislo
Zrušením sloupce jsme navíc ušetřili místo a zrychlili práci s tabulkou. Samozřejmě čím menší tabulka, tím rychlejší je odezva SQL serveru. V našem případě by změna v rychlosti byla samozřejmě nezměřitelná, ale u tabulek s mnoha miliony záznamů by změna v rychlosti mohla být velice citelná.

Probrali jsme si několik základních prvků práce s tabulkou v SQL (vytváření, zadávaní a mazání dat, jejich změna, přidání a ubrání sloupce).

Možnosti SQL jsou mnohem a mnohem větší, pokud toto téma někoho zaujme, tak na trhu je v současné chvíli dostupných několik kvalitních titulů na téma SQL (dokonce od českých autorů).

Příště se dostaneme k vlastní spolupráci SQL s PHP, tedy jak se připojit k databázi, jak zadávat příkazy a zpracovávat výsledná data atd.

Diskuze (3) Další článek: Co když to nebude fungovat?

Témata článku: Software, Programování, PHP, Servery, Like, Výsledné dílo, Díl, Struktura, Select, SQL, From, Petr, Novák, Sloupec, SQL Server, Jedinečný parametr, Alter, Spolupráce, Spol, Celý sloupec


Určitě si přečtěte

Vyšel Windows 10 October 2020 Update. Poradíme, jak je stáhnout a co je nového
Vladislav Kluska
October 2020 UpdateWindows 10
Dostali jste nový počítač? Tohle s ním udělejte, než ho začnete používat

Dostali jste nový počítač? Tohle s ním udělejte, než ho začnete používat

** Každý nový počítač si zaslouží počáteční péči ** Odinstalujte bloatware a nezapomeňte na vhodné nastavení ** Poradíme, jak se o počítač s Windows 10 postarat

David Polesný, Stanislav Janů | 71

David PolesnýStanislav Janů
PočítačeNotebooky
Micro:bit V2: Tuto destičku plnou čipů dokáže naprogramovat i vaše babička

Micro:bit V2: Tuto destičku plnou čipů dokáže naprogramovat i vaše babička

** Chcete se teď hned naučit programovat čipy? ** Nechcete nic instalovat a číst zdlouhavé manuály? ** Naprogramujeme si Micro:bit, který zahraje Tichou noc

Jakub Čížek | 33

Jakub Čížek
Pojďme programovat elektronikuProgramování pro děti
Cableporn: Podívejte se na úžasná díla umělců z podnikových serveroven

Cableporn: Podívejte se na úžasná díla umělců z podnikových serveroven

** Uspořádání kabelů můžete vnímat i jako podivný druh umění ** To nejkrásnější se skrývá v datacentrech a serverovnách ** Podívejte se na skutečné „cableporn“ z optiky i kroucené dvojlinky

Vojtěch Malý | 51

Vojtěch Malý
DatacentraServery
Archivovat data do cloudu, na HDD, SSD, DVD, nebo Blu-ray? Co je nejvýhodnější?

Archivovat data do cloudu, na HDD, SSD, DVD, nebo Blu-ray? Co je nejvýhodnější?

** Kam doma natrvalo uložit data? Vyplatí se ještě optická média? ** Jaké kapacity disků a médií má smysl koupit? ** Cenovou výhodnost si ukážeme na příkladech s 2TB úložištěm

Lukáš Václavík | 118

Lukáš Václavík
ZálohováníÚložištěPevné disky
Co je to UWB? Nová technologie zastoupí Wi-Fi, Bluetooth i NFC a slibuje velké věci

Co je to UWB? Nová technologie zastoupí Wi-Fi, Bluetooth i NFC a slibuje velké věci

** V nových mobilech se začíná objevovat tajemná zkratka UWB ** Jde o další technologii, jak navzájem propojit různá zařízení ** Oproti Wi-Fi a Bluetooth má řadu výhod

Lukáš Václavík | 36

Lukáš Václavík
UWBIoTTechnologie
Jak v prohlížeči vypnout oznámení zasílaná webovými stránkami

Jak v prohlížeči vypnout oznámení zasílaná webovými stránkami

** Obtěžují vás neustálé dotazy webů, zda chcete zobrazovat oznámení? ** Můžete je zakázat, a to jak kompletně, tak i pro jednotlivé stránky ** Připravili jsme návody pro Chrome, Firefox, Edge a Operu

Karel Kilián | 11

Karel Kilián
Jak na InternetTipyProhlížeče

Aktuální číslo časopisu Computer

Jak prodloužit výdrž notebooku

Velké testy: gamepady a inkoustové tiskárny

Důkladný test Sony Playstation 5