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. |