Uživatelské nástroje

Nástroje pro tento web


pitel:isz:sql

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.

  • Neexistují duplicitní řádky1)
  • Nezáleží na pořadí řádků a sloupců
  • Hodnoty jsou atomické

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í

  • relační databáze: matematický model, množiny a relace
  • relace je tabulka, definují ji domény (sloupce), tělo relace pak n-tice (řádky), jeden řádek je pak konkrétní prvek těla relace
  • neexistují duplicitní n-tice, atributy a n-tice jsou neuspořádané, hodnoty jednoduchých atributů jsou atomické
  • kandidátní klíč: unikátní a neredukovatelný
  • primární klíč: nejjednodušší z kandidátních klíčů relace
  • integritní omezení obecná: pravidla kandidátních klíčů, existence primárního klíče
  • integritní omezení specifická: vzdálené klíče, referenční integrita
  • relační algebra: množina n-tic, množinové operace (sjednocení, průnik, …) + relační operace
  • relační operace: selekce (výběr řádků, where), projekce (výběr sloupců, select X, Y, Z), spojování (více tabulek podle podmínek)
  • relační kalkul: alternativa pro manipulaci s daty, jazyk podle kalkulu je pak například SQL jazyk
  • SQL definice dat: create, alter, drop (table, index, view, procedure)
  • SQL operace s daty: insert, update, delete, select
  • join: inner (kartézský součin a následná aplikace podmínek), natural, outer (podobně jako inner, ale když není podle podmínky nalezeno, tak doplňuje NULL), left a right outer (směr přístupu ke spojování)
  • where: určování podmínek - filtrování po vyhledání
  • group by: seskupení podle sloupce (při 1:N), například při agregačních funkcích
  • having: filtrování až po group by
  • pohledy, procedury, triggery
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
/var/www/wiki/data/pages/pitel/isz/sql.txt · Poslední úprava: 30. 12. 2022, 13.43:01 autor: 127.0.0.1