procedura
co to je?
- je pojemovaná sada sql příkazů, která je uložená přímo v databázi (předkompilovaná)
proč ji využívat?:
-
výkon; je rychlejší (už je předkompilovaná)
-
bezpečnost; uživatel může spustit proceduru, aniž by měl přístup k tabulkám
syntaxe:
-- vytvoření
create procedure P
as
begin
select * from tabulka -- a další příkazy
end
-- upravení
alter procedure P ....
-- smazání
drop procedure P;Typy procedur a spuštění
typy podle parametrů
-
bez parametrů
-
vstupní parametry (input) pošle data dovnitř
-
výstupní parametry (output) procedura vrátí hodnotu
jak spustit
příkazem EXEC nebo EXECUTE
EXEC ZmenZnamku @studentId = 5, @Znamka = 1;Procedura x Pohled
pohled:
-
virtuální tabulka
-
slouží ke čtení dat
-
nemůžem do něj přidávat parametry)
-
Používáš ho, když chceš zjednodušit složitý výběr dat
Procedura:
-
program/skript
-
slouží k provádění akcí
Trigger
Co to je?
- Trigger je vlastně procedura, která je přilepená k tabulce a čeká na konkrétní akci
Syntax
Create trigger T
ON TabulkaNázev
After Delete -- kdy se má spustit ( AFTER nebo INSTEAD OF) a při jaké akci (INSERT, UPDATE, DELETE)
AS
begin
-- zbytek kódu
end
-- smazání a úprava stejná jako u procedurKlíčové části:
-
**ON [Tabulka]**: Určuješ, kterou tabulku trigger hlídá. -
**AFTER**vs.**INSTEAD OF**:-
AFTER: Akce proběhne, a pak se spustí trigger (nejčastější pro kontroly). -
INSTEAD OF: Místo původní akce se spustí jen trigger (původní akce se ignoruje).
-
-
**[Akce]**: Můžeš dát**INSERT**,**UPDATE**,**DELETE**(nebo je kombinovat čárkou).
Magické tabulky (Inserted/Deleted):
-
INSERT:
inserted(nová data),deleted(prázdná). -
DELETE:
deleted(smazaná data),inserted(prázdná). -
UPDATE:
deleted(staré hodnoty před úpravou),inserted(nové hodnoty po úpravě).
Funkce
procedury x Funkce
-
Procedura: Hlavně vykonává akci (INSERT, UPDATE…). Může vracet data, ale nemusí.
-
Funkce: Musí vždy vrátit hodnotu pomocí
RETURN. Nemá na výběr.
Typy funkcí
-
Skalární funkce (Scalar): Vrátí jedinou hodnotu (jedno číslo, jedno datum, jeden text).
- Příklad:
AVG(znamka)vrátí jedno číslo (průměr).
- Příklad:
-
Tabulkové funkce (Table-Valued): Vrátí celou tabulku (sadu řádků a sloupců).
-
Příklad: Funkce
VratDlužníky()by vrátila seznam všech lidí, co nezaplatili.
-
Syntaxe
create function SpocitejPrumer(@ZakID int)
returns decimal
as
begin
return(select AVG(znamka) from znamky where ZakID = @ZakID)
endŽivotní cyklus databáze
-
Nejdůležitější fáze: Analýza požadavků (zjištění, co klient vlastně chce a jaká data potřebuje).
-
Důvod: Chyba v této fázi je nejdražší na opravu, protože ovlivňuje celý systém.
Příčina ukončení: Technologická zastaralost, změna legislativy nebo zánik potřeby (firma zkrachuje).
Plánování ➡️ **Analýza** ➡️ Návrh (Design) ➡️ Implementace ➡️ Testování ➡️ Provoz a údržba
-
Co nám prozradí analýza: Výsledkem je konceptuální model (často ER diagram). Odhalí nám logickou strukturu dat bez ohledu na technické řešení.
-
Klíčové prvky ER modelu (stavební kameny):
-
Entita: Objekt reálného světa, o kterém uchováváme informace (např. Student, Auto). Je to tabulka.
-
Atribut: Vlastnost entity (např. Jméno, SPZ, Barva). Je to sloupec.
-
Vztah (Relace): Vazba mezi entitami (např. Student si zapsal Kurz).
-
Pohledy
Definice:
Virtuální tabulka. Data se v ní nedublují, je to jen uložený SQL dotaz (SELECT).
Syntaxe
-- Vytvoření
CREATE VIEW NazevPohledu AS
SELECT Sloupec1, Sloupec2
FROM Tabulka
WHERE Podminka;
-- Smazání
DROP VIEW NazevPohledu;Kdy je vhodné vytvářet pohledy:
-
Zjednodušení: Když často spojujeme 5 tabulek, uděláme si na to jeden pohled.
-
Bezpečnost dat: Uživatelům dáme přístup jen k pohledu, ne k celé tabulce. Můžeme tak skrýt citlivé sloupce (např. rodné číslo, plat), které do
SELECTv pohledu prostě nedáme.