Zarządzanie bazą danych. Bazy Danych i Systemy informacyjne Wykład 4. Piotr Syga

Podobne dokumenty
SQL 4 Structured Query Lenguage

Wyzwalacze (triggery) Przykład

PODSTAWY BAZ DANYCH 13. PL/SQL

Bazy danych 11. SQL Procedury składowane, kursory i wyzwalacze

Bazy danych 8. Procedury składowane i kursory. P. F. Góra

Ćwiczenia 2 IBM DB2 Data Studio

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

Oracle PL/SQL. Paweł Rajba.

Procedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Kursory i wyjątki. (c) Instytut Informatyki Politechniki Poznańskiej 1

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie.

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz

Programowanie po stronie serwera w SZBD. Robert A. Kłopotek Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

PL/SQL. Zaawansowane tematy PL/SQL

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

BAZY DANYCH Cz III. Transakcje, Triggery

Język PL/SQL Procedury i funkcje składowane

Procedury i funkcje składowane

Plan wykładu BAZY DANYCH II WYKŁAD 3. Zasięg zmiennych. Zasięg zmiennych

Deklarowanie kursora

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

Systemowe aspekty baz danych

Bloki anonimowe w PL/SQL

Programowanie w SQL. definicja bloku instrukcji BEGIN...END, warunkowe wykonanie instrukcji IF...ELSE, wyrażenie CASE,

Język PL/SQL. Rozdział 2. Kursory

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Kursor. Rozdział 10a Kursory. Otwieranie kursora. Deklarowanie kursora

Comarch ERP XL Business Intelligence Start. Migracja do wersji 2018

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

Plan wykładu BAZY DANYCH II WYKŁAD 4. Co to jest kursor? Rodzaje kursorów

Paweł Rajba

CREATE USER

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

Październik Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska. Systemy baz danych - wykład III. dr inż.

1. Wyzwalacze BD (ang. triggers)

Internetowe bazy danych

Systemowe aspekty baz

Transakcje jednocześnie ACID

Tabele wykorzystywane w przykładach

Kursor jawny. Rozdział 10a Kursory. Deklarowanie kursora (1) Deklarowanie kursora (2)

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

ORACLE (Wykład 1) aragorn.pb.bialystok.pl/~aonisko. Typy rozproszonych baz danych. Systemy klient-serwer. Klient-serwer: Przykład

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu):

Plan wykładu Projekt fizyczny bazy danych Wprowadzenie PL/SQL PL/SQL Cechy PL/SQL

Zarzadzanie transakcjami. Transakcje

1 Kursory 1. 2 Wyjątki Wyjątki predefiniowane Wyjątki niezdefiniowane wcześniej Definiowanie własnych wyjątków...

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Microsoft SQL Server Podstawy T-SQL

Indeksy. Indeks typu B drzewo

050 SQL ELEMENTY ZAAWANSOWANE. Prof. dr hab. Marek Wisła

Deklarowanie kursora. CURSOR nazwa [ ( param1 typ1 [,param2 typ2]... ) ] [RETURN typ zwracany] IS zapytanie SQL;

Bazy danych Język SQL część 2 Wykład dla studentów matem

Struktura bazy danych

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Bloki anonimowe w PL/SQL

Systemy GIS Tworzenie zapytań w bazach danych

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

W SQL Serwerze 2008 wprowadzono parametry tablicowe (Table Valued Parameters - TVP).

Oracle PL/SQL. Paweł Rajba.

Bazy danych 6. Klucze obce. P. F. Góra

BAZA DANYCH SIECI HOTELI

Relacyjne bazy danych. Podstawy SQL

1. ELEMENTY JĘZYKA PL/SQL

Zaawansowane bazy danych i hurtownie danych semestr I

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Wykład V. Indeksy. Struktura indeksu składa się z rekordów o dwóch polach

Wykład 8. SQL praca z tabelami 5

Obowiązuje od wersji

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Hurtownia Świętego Mikołaja projekt bazy danych

Język PL/SQL. Rozdział 6. Procedury wyzwalane

PODZAPYTANIE (SUBSELECT)

Plan wykładu PL/SQL. PL/SQL - historia TWORZENIE APLIKACJI BAZODANOWYCH

Używany kiedy pełna treść instrukcji SQL jest nieznana przed uruchomieniem programu.

Cele. Definiowanie wyzwalaczy

ACESS- zadania z wykorzystaniem poleceń SQL

Bazy danych 10. SQL Widoki, procedury składowane, kursory i wyzwalacze

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

Oracle11g: Wprowadzenie do SQL

Wykład 5. SQL praca z tabelami 2

LAB 6 BEGIN TRANSACTION, COMMIT, ROLLBACK, SET TRANSACTION ISOLATION LEVEL,

Relacyjne bazy danych. Podstawy SQL

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

SQL :: Data Definition Language

SQL w języku PL/SQL. 2) Instrukcje języka definicji danych DDL DROP, CREATE, ALTER, GRANT, REVOKE

Kursory. A. Pankowska 1

PL/SQL. Zaawansowane tematy PL/SQL. Piotr Medoń

Transkrypt:

Bazy Danych i Systemy informacyjne Wykład 4 Piotr Syga 26.10.2018

Procedury review Przypomnienie składni procedur Tworzenie DELIMITER $$ CREATE PROCEDURE zliczacz (OUT wynik INT) BEGIN operacje... END $$ DELIMITER ;

Pętle i kursory Pętle LOOP etykieta LOOP komendy END LOOP etykieta; WHILE (etykieta) WHILE komendy END WHILE (etykieta);

Pętle i kursory Przykłady Przykład loop CREATE PROCEDURE ShaltThouCountToThree(c INT) BEGIN countloop: LOOP IF c > 3 THEN SET c = 0; ITERATE countloop; ELSEIF c < 3 THEN SET c = c + 1; ITERATE countloop; ELSE LEAVE countloop; END IF; END LOOP countloop; SET @countnumber = c; END;

Pętle i kursory Przykłady Przykład while CREATE PROCEDURE ThreeShaltBeTheNumberThouShaltCount(c INT) BEGIN IF c > 3 THEN SET c = 0; END IF; WHILE c < 3 THEN SET c = c + 1; END WHILE; SET @countnumber = c; END;

Pętle i kursory Kursory idea Umożliwienie iteracji po wyniku zapytania Brak możliwości update u tabel przez kursor Brak możliwości skoków po wyniku Asensitive vs Insensitive

Pętle i kursory Kursory używanie 1 Tworzenie: DECLARE cursor_name CURSOR FOR (SELECT... ); DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; 2 Inicjacja: OPEN cursor_name; 3 Pobieranie: FETCH cursor_name INTO (... ); 4 Zamykanie: CLOSE cursor_name;

Pętle i kursory Kursory przykład DELIMITER // CREATE PROCEDURE p1() BEGIN DECLARE done INT DEFAULT FALSE; DECLARE C,I INT; DECLARE ConcertCount CURSOR FOR (SELECT zespol, count(*) as number FROM Koncerty GROUP BY zespol); DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; OPEN ConcertCount; read_loop: LOOP FETCH ConcertCount INTO I,C; IF done THEN LEAVE read_loop; END IF; IF C > 10 THEN SELECT z.name FROM Zespoly z WHERE z.id=i; END IF; END LOOP; CLOSE ConcertCount; END; //

Szukanie i uaktualnianie Dla przypomnienia update Używanie kilku tabel UPDATE Koncerty k JOIN Zespoly z ON z.id = k.zespol AND z.kraj = USA SET k.data = DATE_ADD(k.data, INTERVAL 7 DAY) WHERE k.miejsce = Black Rock Desert AND k.data>now();

Szukanie i uaktualnianie Indexy Idea zapamiętanie wartości w kolumnie (części kolumny lub kolumnach) w celu uniknięcia przetwarzania każdego wiersza poprawa efektywności kosztem miejsca korzystanie z indeksów odbywa się automatycznie, optimizer decyduje kiedy skorzystać z indeksów podobne zapytania mogą być traktowane odmiennie: LIMIT, LIKE %abc vs abc%

Szukanie i uaktualnianie Indexy Tworzenie Zawsze istnieje przynajmniej jeden index w tabeli CREATE INDEX name_idx USING BTREE ON Studenci (nazwisko, imię); możemy utworzyć indeks z wykorzystaniem części kolumny Uwagi: Indeksy wielokolumnowe tworzone są przez konkatenacje. Aby wykorzystywać indeks w zapytaniu wszystkie klauzule koniunkcji muszą wykorzystywać indeks. Struktury: B-drzewa, R-drzewa, Hashe

Szukanie i uaktualnianie Indeksy przykłady SELECT * FROM Studenci WHERE nazwisko LIKE Kowals% ; SELECT * FROM Studenci WHERE nazwisko LIKE %ski ; SELECT * FROM Studenci WHERE imię LIKE Ja% ; SELECT * FROM Studenci JOIN Studenci s ON Studenci.imię=s.imię WHERE s.nazwisko < Studenci.nazwisko;

Szukanie i uaktualnianie Indeksy koszty zużywana pamięć spowolnienie INSERT modyfikacja tabel i nie używane indeksy (EXPLAIN) problem Halloweenowy

Szukanie i uaktualnianie Indeksy koszty Halloween Problem Problem zdiagnozowany w 1976 (Chamberlin, Sellinger, Astrahan) Halloweenowa podwyżka dla pracowników zarabiających poniżej $25.000 rocznie: UPDATE EMPLOYEE SET SALARY = SALARY * 1.1 WHERE SALARY<25000 Po wykonaniu zapytania nie było pracowników zarabiających mniej niż $25.000 gdzie leży problem? Przykład rozwiązania problemu na podstawie T-SQL.

Transakcje Idea, czyli po co nam transakcje? Prosty scenariusz Załóżmy, że logujemy się na stronę banku i chcemy wykonać przelew ze swojego konta A na obce konto B (dla uproszczenia w tym samym banku). Pomińmy rozważania kwestii bezpieczeństwa. Klikamy wysłanie przelewu, jednak w momencie przesłania informacji, na skutek awarii połączenie z bazą danych zostało zerwane. Jaki jest efekt operacji?

Transakcje Możliwe opcje Opcja 1 Po kliknięciu wysłania, odpowiednia kwota została odpisana z konta A Połączenie zostało zerwane nim kwota została dopisana do konta B Efekt: Straciliśmy pieniądze, operacja nie została wykonana, zarabia bank

Transakcje Możliwe opcje Opcja 1 Po kliknięciu wysłania, odpowiednia kwota została odpisana z konta A Połączenie zostało zerwane nim kwota została dopisana do konta B Efekt: Straciliśmy pieniądze, operacja nie została wykonana, zarabia bank Opcja 2 Po kliknięciu wysłania, odpowiednia kwota została dopisana do konta B Połączenie zostało zerwane nim kwota została odjęta od stanu konta A Efekt: Wykreowaliśmy pieniądze (przywilej jedynie NBP) lub pomniejszyliśmy rezerwę banku

Transakcje Rozwiązanie problemu Cel Chcemy zrealizować podejście all-or-nothing, warunkując wykonanie jednej operacji drugą wykonać obie operacje jako jedną atomową instrukcję. Realizacja SET autocommit = 0; START TRANSACTION; SELECT @s:=saldo FROM rachunek WHERE num=a; UPDATE rachunek SET saldo=@s-kwota WHERE num=a; SELECT @s2:=saldo FROM rachunek WHERE num=b; UPDATE rachunek SET saldo=@s2+kwota WHERE num=b; COMMIT;

Transakcje Zagnieżdżanie MySQL SAVEPOINT identifier ROLLBACK [WORK] TO [SAVEPOINT] identifier RELEASE SAVEPOINT identifier Uwagi: 1 nazwanie savepointa nie rozpoczyna transakcji 2 powtórzenie savepointa nadpisuje stary

Transakcje Rollback ma swoje ograniczenia Tworzenie(CREATE), usuwanie(drop) i zmienianie(alter) (oraz RENAME): baz danych (i użytkowników) tabel, widoków, index procedur, funkcji, triggerów MySQL po wywołaniu powyższych kwerend, komituje aktualną transakcję przed wykonaniem kwerendy.