Pojmy popisující tabulku

  • Skalární typ
    • pojmenovaná nejvýše spočetná množina hodnot
    • Např:
      • Pro každé přirozené číslo je varchar(i) typem, který pojmenovává množinu všech řetězců délky nejvýše
      • integer je typem, který dává jméno množině celých čísel od do .
      • Typ text pojmenovává množinu všech řetězců
      • A další…
    • Konkrétně:
      • “The Avengers” je typu varchar(12), ale už není typu varchar(11).
      • Hodnoty a jsou typu integer.
  • Typ řádku
    • -tice skalárních typů
    • např. <text, integer>
  • Null
    • speciální hodnota označující prázdnotu
  • Řádek
    • Neprázdná -tice se nazývá řádek. Například <¨The Avengers¨, 2012> je řádek.
  • Záhlaví sloupce
    • Skládá se z názvu a skalárního typu.
    • Např. title text je záhlaví jménem title typu text.
    • Pokud je typ záhlaví určený kontextem, můžeme typ vynechat.
  • Typ tabulky
    • Je neprázdná -tice skládající se ze záhlaví sloupců
    • Např. <title text, year integer>.

Tabulky

  • Tabulka je hodnota, která se skládá z typu tabulky je -tice a -tice řádků, kde každý řádek je typu .

  • Typ tabulky se nazývá záhlaví tabulky a -tice řádků tabulky jejím tělem.

  • Například uvažujme tabulku se záhlavím <title text, year integer> a tělem <<¨The Avengers¨, 1998>, <¨The Avengers¨, 2012>, <¨The Matrix¨, 1999>>.

  • Tuto tabulku můžeme přirozeně zapsat následující tabulkou:

title textyear integer
The Avengers1998
The Avengers2012
The Matrix1999
  • Pokud tabulka nemá v těle žádný řádek, říkáme, že je prázdná:
titleyear

Vztah k relacím

  • Tabulka nemusí mít unikátní jména sloupců. Například:
titlenumnum
The Avengers199889
The Avengers2012143
The Matrix1999136
  • Ale tabulka, která má jedinečné názvy sloupců, neobsahuje null hodnoty a duplicitní řádky, nazýváme relací.
  • Tabulka, která je relací:
titleyearlength
The Avengers199889
The Avengers2012143
The Matrix1999136
  • Pokud je tabulka relací, můžeme k ní uvažovat klasickou relaci známou z diskrétní matematiky. Předchozí tabulka určuje relaci {⟨‘The Avengers’,1998,89⟩,⟨‘The Avengers’,2012,143⟩,⟨‘The Matrix’,1999,136⟩}
  • Pokud chápeme tabulku jako relaci, nespoléháme se na pořadí řádků v tabulce. Tělo tabulky, která je relací, může být podobně jako klasická množina určeno charakteristickou vlastností.
  • Pokud má být hodnota tabulky relace, měli bychom zformulovat její charakteristickou vlastnost. V případě základní tabulky v posledním obrázku by to byla vlastnost: “Vlastním film title, vytvořený roku year, který má délku length minut”.

Příkazy

Vytvoření prázdné tabulky:

CREATE TABLE movies (
	title text,
	year integer,
	length integer
);

Zobrazení hodnoty základní tabulky

SELECT * FROM movies;
 
 title | year | length
-------+------+--------
(0 rows)

Přidání řádků do tabulky

INSERT INTO movies VALUES
       ( 'The Matrix', 1999, 136 ),
       ( 'The Avengers', 2012, 143 ),
       ( 'The Avengers', 1998, 89 );
 
-- Vypsání tabulky:
SELECT * FROM movies;
    title     | year | length
--------------+------+--------
 The Matrix   | 1999 |    136
 The Avengers | 2012 |    143
 The Avengers | 1998 |     89
(3 rows)

Přídání jednoho řádku:

INSERT INTO movies VALUES ('A Space Odyssey', 1968, 149);

Vymazání tabulky

DROP TABLE movies;

Předchozí: Správa diskového prostoru - oddíly, souborové systémy, zajištění konzistence dat Následující: Výraz SELECT v SQL Celý okruh: 2. Informační technologie