SQL (Structured Query Language je neprocedurální jazyk definice dat a pro manipulaci s nimi. Vysvětleme si podrobněji, co toto tvrzení znamená.
Procedurální jazyky (např. Pascal, C, Simula) jsou založeny na postupech, jak získat určitou informaci, jak ji zpracovat, eventuálně zobrazit. Ať už se jedná o neobjektově orientované jazyky, kde prvotní je algoritmus pracování dat, nebo o objektově orientované jazyky, kde jsou pro data definovány operace jejich zpracování, základní otázkou, kterou si klademe, je JAK ZPRACOVAT.
Neprocedurální jazyky jsou založeny spíše na představě, co chceme udělat. Základní otázkou je JAKÁ DATA CHCEME ZÍSKAT nebo JAK SE MAJÍ DATA ZMĚNIT.
Definice dat umožňuje jejich popis, určuje, zda jsou numerická nebo znaková, určuje jejich obor hodnot, počet platných míst (znaků nebo číslic). Dále určuje, jaká data souvisí s jinými, např. že datový typ zaměstnanec se skládá z položek jméno, osobní číslo, plat, oddělení, telefon, atd.
Pod pojmem manipulace s daty chápeme vytvoření, změnu a zrušení určité datové struktury.
Vysvětleme si nyní některé důležité základní pojmy:
Doména
Doména je množina hodnot stejného významového typu. Doménou může být číslo materiálu nebo jeho množství na skladu. Hodnoty v doméně jsou stejného datového typu - číslo, logická hodnota, řetězec znaků, datum atd.
Kartézský součin množin A, B
Kartézský součin množin dvojic [x,y], pro které platí že (x € A) a zároveň (y € B). Počet prvků v kartézském součinu je dán součinem počtu prvků v množině A a počtu prvků v množině B.
Př. Mějme množinu A osob, např. {Franta, Pepík} a množinu B denní doby {ráno, poledne, večer}. Pak kartézský součin C = A x B obsahuje tyto dvojice {[Franta, ráno],[Franta, poledne],[Franta, večer],[Pepík, ráno],[Pepík, poledne],[Pepík, večer]}.
Pozor: Nepleťte si kartézský součin dvou množin (obecně různého typu) s průnikem dvou množin stejného typu C = A*B, kde prvky množiny C jsou současně obsaženy jak v A, tak v B.
Relace
Relace je libovolná podmnožina kartézského součinu.
Př. Tabulka zaměstnanců je relace mezi kartézským součinem domén jejích položek (jméno, osobní číslo,plat …).
Atribut
Atribut je název domény pro použití v relaci. Pokud uvažujeme, že data jsou v tabulkách, pak atribut je název sloupce.
Tabulka
Tabulka je praktický, upravený a zjednodušený pohled na relaci. Pořadí řádek v tabulce je podstatné, pořadí sloupců je nepodstatné. Sloupec odpovídá atributu, resp. doméně, řádek instanci entitního typu.
Klíč nebo identifikátor
Klíč nebo identifikátor je sloupec nebo skupina sloupců v tabulce identifikující řádek tabulky.
Primární klíč
Klíč, který jednoznačně identifikuje řádek v tabulce. Pokud je takových klíčů více, pak je primárním klíčem obvykle ten, který má nejmenší délku.
Kandidátní klíč
Kandidátní klíč také jednoznačně identifikuje řádek v tabulce. Mohl by stát primárním klíčem, pokud by nám primární klíč z nějakého důvodu nevyhovoval.
Cizí klíč
Cizí klíč je sloupec nebo skupina sloupců použitá jako odkaz v jiné tabulce.