IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Základy jazyka SQL

Jazyk SQL je veľmi jednoduchý a zrozumiteľný. Jeho syntax vychádza z angličtiny a príkazy sa podobajú normálnym vetám, takže ak viete anglicky, máte napoly vyhraté. Ak nie, nevadí, budem prekladať.

Syntaktické pravidlá

  • Nezáleží na pozíciách a "bielom miestu" medzi slovami. Môžete úplne ľubovoľne odsadzovať, potom medzerníka a entrovat. Má to len jeden háčik: príkaz musíme vopchať do parametra funkcie mysql_query, takže ho nakoniec budeme musieť zosypať na jeden riadok.
  • Nezáleží na veľkosti písmen v kľúčových slovách. Je jedno, či napíšeme "SELECT", "select" alebo "SELECT", fungovať to bude zakaždým rovnako. V ďalšom texte je budem písať veľkými písmenami len kvôli prehľadnosti.
  • Identifikátory sa normálne skladajú z písmen (A..Z, A..Z), číslic (0..9, číslicou môžu i začínať), podčiarkovníkov (_) a dolárov ($) a nesmie sa zhodovať s kľúčovými slovami. Ak sa vám to nepáči, môžete písať aj s diakritikou a medzerami (len to medzerou nesmie končiť), mať identifikátor zo samých čísel alebo aj rovnaký ako nejaké kľúčové slovo, ale také hrôzy potom musíte uzatvárať do obrácených apostrofů, aby sa z nich systém nezvencnul. Obrátený apostrof sa píše na anglickej klávesnici takú tou klávesou úplne vľavo hore medzi Escape, jednotkou a tabulátorom.
  • Mená databáz interne zodpovedajú menám adresárov a mená tabuliek menám súborov, takže pozor, na linuxových serveroch (ktorých je medzi hostingoch väčšina) záleží na veľkosti písmen. Inak pre nich platia všetky pravidlá pre identifikátory.
  • Pre mená stĺpcov v tabuľkách platia všetky pravidlá pre identifikátory a na veľkosti písmen u nich nezáleží.
  • Reťazce sa uzatvárajú buď do 'apostrofov' alebo do "úvodzoviek", rovnako ako v PHP.
  • Príkazy sa oddeľujú bodkočiarkou, ale to nás nezaujíma, pretože mysql_query berie vždy len jeden a bodkočiarka sa za neho nedáva.
  • Údajne existujú tri typy komentárov: # prvý, - druhý (obaja platí do konca riadku) a / tretí /, ale v živote som ich nepotreboval :-) .

Vytváranie tabuliek

Všetky dáta v databáze musí byť uložená v tabuľkách, takže týmto musíme začať. Príkaz sa volá CREATE TABLE (čiže "vytvor tabuľku") a pre skôr uvedenú tabuľku áut by mohol vyzerať napríklad takto:

CREATE TABLE auta
 (
 spz     CHAR(8)     PRIMARY KEY,
 typ     VARCHAR(30) NOT NULL,
 majitel TINYTEXT
 );

Tým sme povedali, že chceme vytvoriť tabuľku menom auta, v ktorej budú stĺpce spz, typ a majitel. Pri každom stĺpca je potreba uviesť dátový typ (teda čo sa do neho bude ukladať) a ďalej môžu nasledovať ďalšie upresňujúce informácie: že je to kľúč, že nesmie byť prázdny a pod ..

Dátové typy

Pre prehľadnosť tu do dvoch tabuliek zhrniem úplne všetko, s čím sa počas celého seriálu možná stretneme. Zatiaľ si ich len tak preletia; vrátiť sa sem môžete neskôr, až niečo budete potrebovať. Konkrétne použitie a podrobnejšie popisy si rovnako preberieme na príkladoch.

Celé čísla:
TINYINT osembitové číslo
SMALLINT 16-bitové číslo
MEDIUMINT 24b číslo
INT 32b
BIGINT 64b
Keď za typom uvedieme upresňujúce slovo unsigned, čísla budú bez znamienka (teda prirodzená), s rozsahom 0..2 počet bitov. Ak neuvedieme nič, čísla sú celá so znamienkom a rozsahom posunutým o polovicu do zápornej (teda napr. Namiesto 0..255 bude -127..128).
texty:
TINYTEXT max. 255 B
TEXT max. 64 KB
MEDIUMTEXT max. 2 24 B
LONGTEXT max. 2 32 B
VARCHAR (max. Počet znakov) počet znakov aký si zvolíte, max. 64 KB
CHAR (počet znakov) pevný počet znakov aký si zvolíte, max. 255
V ASCII textoch platí uvedenej maximálnej dĺžky priamo pre znaky (1 znak = 1 B). V kódovanie Unicode je potrebné počítať s tým, že jeden znak môže zabrať viac bytov.
Ostatné:
DATE dátum ako textový reťazec v tvare 'rrrr-mm-dd', rozsah od '1000-01-01' do '9999-12-31'
TIME čas ako textový reťazec v tvare 'hh: mm: ss'
DATETIME prakticky je to zreťazenie dátumu a času: 'rrrr-mm-dd hh: mm: ss'
TIMESTAMP Navonok sa správa rovnako ako datetime, ale interne je to dword s počtom sekúnd uplynulých od 1.1.1970. Rozsah mu končí v januári 2038, takže tento typ moc neodporúčam a uvádzam ho len pre úplnosť.
BLOB a spol. Všeobecná dáta v binárnom tvare, použitie analogické k typom TEXT. Nebudeme ich potrebovať.

Upresňujúce informácie k dátovým typom:
UNIQUE Hovorí, že nesmie existovať viac riadkov, ktoré majú v tejto položke rovnakú hodnotu (s výnimkou hodnoty NULL). Zmysel to má iba u kľúčov.
NOT NULL Tahle hodnota nesmie byť prázdna - nepôjde do nej vložiť hodnota NULL.
PRIMARY KEY Tým sa určí, že sa tento stĺpec (v každej tabuľke max. Jeden) bude používať ako kľúč. Vhodné pre nejaké relatívne krátkej identifikačné kódy, podľa ktorých budeme riadky najčastejšie hľadať. Primárny kľúč je vždy NOT NULL a UNIQUE; aj keď to nenařídíme, dostane tyhle vlastnosti implicitne.
AUTO_INCREMENT Len pre čísla. Pri vkladaní riadku dajte tejto položke hodnotu NULL a systém jej automaticky pridelí hodnotu o 1 väčšia ako dal minulému riadku (prírastok sa teoreticky dá zmeniť, ale tým sa teraz nebudeme zaťažovať). Výborná vec pre pohodlnú tvorbu unikátnych identifikačných kľúčov.
DEFAULT hodnota Východisková hodnota, ktorú položka dostane, keď ju pri vkladaní riadku neuvedieme. Nefunguje na Texty, BLOB a položky s AUTO_INCREMENT. Len pre úplnosť, prakticky to nevyužijeme.

 

Článok pre vás napísal Mircosoft
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor je amatérský pascalista, assemblerista a bastlíř. Profesionálně psal nebo píše v HLASM, Rexxu, Cobolu, ST, LAD, FBD, PHP, SQL, JS, Basicu a pár dalších jazycích, které kupodivu stále existují a používají se :-).
Aktivity