Staňte se programátorem: Poodhalte základy SQL

Minule jste si s námi mohli napsat jednoduchý diář, který ukládal kontakty do XML. Dnes vás provedeme základy databázového jazyka SQL, který příště propojíme se správcem kontaktů.

V dnešním díle budeme pokračovat s tvorbou vlastního adresáře spravující naše kontakty. Data adresáře budeme ukládat do jednoduché Access databáze a pro veškerou práci s touto databází ( tedy ukládání, načítání, mazání a upravování dat) budeme používat jazyk SQL, který je mezi databázovými systémy nejrozšířenější. V dnešním díle si tedy ukážeme základní čtyři SQL příkazy pro manipulaci s databází a v příštím díle si ukážeme jak volat SQL příkazy nad databází prostřednictvím jazyka C#.

Co na SQL říká česká Wikipedie?

SQL standardizovaný dotazovací jazyk používaný pro práci s daty v relačních databázích. SQL je zkratka anglických slov Structured Query Language. Jeho počátky sahají až do sedmdesátých let minulého století, kdy v IBM probíhal výzkum relačních databází. Bylo třeba vytvořit sadu příkazů pro ovládání podobných databází a tak vznikl jazyk SEQUEL (Structured English Query Language). Cílem byl ovlastně vytvořit jazyk, ve kterém by se příkazy tvořily syntakticky co nejblíže tomu přirozenému, angličtině. K vývoji se později přidaly firmy Relational Software (Oracle), Progres, Informix a SyBase. Společně používaná varianta SEQUELu byla později přejmenovaná na SQL do dnešních dnů se dočkala několika implementací a standardů počínaje oblíbeným webovým MySQL serverem a konče třeba Microsoft SQL 2008.

Více si můžete o SQL přečíst zde


databaze.png

Struktura složitější relační databáze může vypadat podobně jako tato,
jejiž tabulky a sloupce jsou vzájemně bohatě propojené

Základními příkazy SQL jazyka je SELECT pro výběr, INSERT pro vkládání, UPDATE pro aktualizování a DELETE pro mazání informací v databázi. Tady jej jejich stručný popis a ukázky použití.

Příkaz SELECT

Příkaz SELECT je jediným SQL příkazem, který slouží k výběru dat z databáze a nijak je nepozměňuje. Syntaxe tohoto příkazu vypadá takto:

SELECT sloupce
FROM tabulky
WHERE podmínka
ORDER BY třídící kritérium [ASC | DESC]
LIMIT max. počet řádků

Významy klíčových slov:

  • SELECT – příkaz určený k výběru dat z tabulek. Jeho nejjednodušší podoba vypadá takto:

    SELECT * FROM tabulka  // Vybere všechny hodnoty všech sloupců tabulky
    SELECT x,y FROM tabulka // Vybere všechny hodnoty uložené v řádcích x a y

  • WHERE – vybere z tabulek pouze ty data, která v jednom či více sloupců obsahují konkrétní hodnoty, například následující příkaz vybere z tabulky Zaměstnanci křestní jména všech osob, jejichž příjmení je Novák:

    SELECT jmeno FROM Zaměstnanci WHERE Prijmeni = 'Novák'

  • ORDER BY – sloupec, dle jehož hodnot budou data setříděna. Pro vzestupné třídění dosadíme klíčové slovo ASC, pro sestupné třídění pak DESC. Například následující dotaz vybere vybere z tabulky Zaměstnanci příjmení všech zaměstnanců seřazené vzestupně dle jejich věku:

    SELECT Prijmeni FROM Zaměstnanci ORDER BY Vek ASC

  • LIMIT – určuje maximální počet prvních N řádků jež budou z tabulky vybrány. Například následující příkaz vybere z tabulky Zaměstnanci prvních pět zaměstnanci seřazeno dle jejich věku:

    SELECT Prijmeni FROM Zaměstnanci ORDER BY Vek ASC LIMIT 5

Příkaz INSERT

Příkaz INSERT slouží ke vkládání nových hodnot do databáze. Syntaxe tohoto příkazu je velmi jednoduchá a vypadá takto:

INSERT INTO tabulka (sloupec1, sloupec2, sloupec3..., sloupecN)
VALUES (hodnota1, hodnota2,... hodnotaN)

Za názvem tabulky musí být uveden výčet sloupců do kterých mají být nové hodnoty vloženy, ty jsou umístěny za klíčovým slovem VALUES a musí být ve stejném pořadí jako výčet sloupců. Například:

INSERT INTO Zaměstnanci (Jmeno, Prijmeni, Vek) VALUES ('Jan', 'Novák', 26)

Chceme-li jedním příkazem INSERT vložit více než jeden řádek, oddělíme jednotlivé hodnoty čárkou:

INSERT INTO Zaměstnanci (Jmeno, Prijmeni, Vek)
VALUES ('Jan', 'Novák', 26), ('Jana', 'Nováková', 46), ('Pavel', 'Janek', 33)

Příkaz DELETE

Příkaz DELETE slouží k mazání řádků dle stanovených kritérií. Jeho syntaxe vypadá takto:

DELETE FROM tabulka WHERE podmínka

Například následující příkaz smaže z tabulky „Zaměstnanci“ všechny zaměstnance jejichž příjmení je „Pavlásek“:

DELETE FROM Zaměstnanci WHERE Prijmeni = 'Pavlásek'

Příkaz UPDATE

Příkaz UPDATE slouží k editaci již existujících dat v databázi. Chceme-li nastavit všechny hodnoty určitého sloupce na konkrétní hodnotu, použijeme příkaz UPDATE v této formě:

UPDATE tabulka SET název sloupce = hodnota

Například následující příkaz nastaví všem zaměstnancům plat na 20 000 korun.

UPDATE Zamestnanci SET Plat = 20000

Pro přesné určení řádku, jež má být pozměněn nám poslouží klauzule WHERE představující podmínku, kterou určité řádky musí splňovat, aby mohly být pozměněny. Syntaxe příkazu UPDATE bude tedy vypadat takto:

UPDATE tabulky SET název sloupce WHERE podmínka

Například následující příkaz nastaví plat 20 000 korun pouze těm zaměstnancům, kteří mají příjmení Mareš:

UPDATE Zaměstnanci SET Plat = 20000 WHERE Prijmeni = 'Mareš'

A jak použít SQL v Microsoft .NET?

V dnešním díle jsme si ukázali, čtyři nejčastěji používané SQL příkazy pro práci s databází, jejichž pokročilá podoba samozřejmě může vypadat mnohem košatěji včetně propojovacího článku JOIN. Pro náš projekt nám však tyto základy budou vyhovovat.

V příštím díle atabázový jazyk SQL použijeme už v konrétním případě při tvorbě našeho adresáře v jazyce C#. Ukážeme si rozdíly mezi připojenými a odpojenými řešeními, druhy připojovacích řetězců k jednotlivým druhům databází a hlavně pak práci s třídami, které najdete ve jmenném prostoru System.Data a které jsou určené pro práci s databází.

Pokud si chcete vyzkoušet funkční adresář, podívejte se na předchozí článek, který se věnoval tvorbě jednoduchého adresáře pomocí jednoduchého strukturovaného úložiště v XML souboru.

Diskuze (14) Další článek: G.Skill GT1: 2GHz DDR3 paměti s aktivním chlazením

Témata článku: , , , , , , , , , , , , , , , , , ,