Obsah

Relační datový model a jazyk SQL

Relační databázový model

Relational database, Relational model

To důležité ukazuje obrázek napravo. Relaci tvoří domény (sloupce), tělo relace pak tvoří řádky.

Každý řádek relace má tzv. primární klíč2). Je to hodnota která ho v tabulce jednoznačně identifikuje. Musí tedy být jednoznačný a minimální (neredukovatelný). Primární klíč je jedním z kandidátních klíčů, což jsou prostě sloupce které musí být unikátní.

FIXME Chtělo by to asi ještě něco dopsat, ale ta teorie je taková… meh :-?

Jazyk SQL

SQL

FIXME Úvodni kecy

Příkazy

SELECT

Select (SQL)

Slouží k získání dat z databáze.

SELECT jmeno, prijmeni FROM telefonni_seznam WHERE mesto = "Brno" ORDER BY prijmeni;

Pomocí SELECTu lze vytvářet tzv. pohledy – jakoby virtuální tabulky.

Výběr z více tabulek se provádí parametrem JOIN. FIXME Dost lamersky napsaný

INSERT

Insert (SQL)

Slouží k vkládání nových dat.

INSERT INTO telefonn_seznam (jmeno, prijmeni, mesto, NUMBER) VALUES ('Karel', 'Vomacka', 'Brno', 123456);

UPDATE

Update (SQL)

Slouží k změně již existujících dat.

UPDATE telefonni_seznam SET jmeno = 'Lojza' WHERE cislo = 123456;

DELETE

Delete (SQL)

Slouží k mazání dat.

DELETE FROM telefonni_seznam WHERE mesto = 'Praha';

Transakce

Atomicity, consistency, isolation, durability

Všechny SQL příkazy se provádějí atomicky3). Pokud ale chceme atomicky provést posloupnost příkazů (nejčastěji takovou, která by při svém přerušení způsobila nekonzistenci databáze) musíme příkazy uzavřít do transakce. Provedení transakce pák můžeme potvrdit příkazem COMMIT nebo vrátit databázi do stavu před transakcí příkazem ROLLBACK.

START TRANSACTION;
  UPDATE Account SET amount=amount-200 WHERE account_number=1234;
  UPDATE Account SET amount=amount+200 WHERE account_number=2345;
IF ERRORS=0 COMMIT;
IF ERRORS<>0 ROLLBACK;

CREATE, ALTER, DROP

Data Definition Language

Tyto příkazy slouží k manipulaci s tabulkami a indexy.

CREATE TABLE telefonni_seznam (jmeno VARCHAR(50) NOT NULL, cislo INT PRIMARY KEY);
ALTER TABLE telefonni_seznam ADD prijmeni INT NOT NULL;
DROP TABLE telefonni_seznam;

Shrnutí

1)
řeší klíče
2)
Bývá to celý sloupec, nejčastěji pojmenovaný id, typu co nejdelší celé číslo bez znaménka a automaticky rostoucí.
3)
čili v jednom kroku, a buď se provedou celé nebo vůbec