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

Wielkość: px
Rozpocząć pokaz od strony:

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

Transkrypt

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

2 Deklarowanie zmiennych typ-danych typ-danych}; deklaruje nazwy zmiennych lokalnych (definiowanych przez użytkownika) oraz określa typy tych zmiennych = wyrażenie; podstawia obliczoną wartość wyrażenia pod zmienną o podanej nazwie

3 Instrukcja warunkowa IF wyrażenie-logiczne polecenie-sql [ELSE polecenie-sql]; UWAGI: Brak słowa THEN przed pierwszym poleceniem SQL, Brak słowa END na końcu instrukcji IF. Po IF wyrażenie-logiczne wykonywane jest tylko jedno polecenie SQL Po ELSE wykonywane jest tylko jedno polecenie SQL.

4 Instrukcja WHILE WHILE wyrażenie-logiczne polecenie-sql; UWAGI: Brak słowa END na końcu instrukcji WHILE. Po WHILE wyrażenie-logiczne wykonywane jest tylko jedno polecenie SQL

5 Bloki instrukcji BEGIN polecenie-sql; {polecenie-sql;} END; Blok BEGIN END pozwala na wykonywanie kilku zapytań w jednej instrukcji warunkowej IF lub pętli WHILE

6 Bloki instrukcji IF wyrażenie-logiczne BEGIN polecenie-sql; {polecenie-sql;} END [ELSE BEGIN polecenie-sql; {polecenie-sql;} END]; WHILE wyrażenie-logiczne BEGIN polecenie-sql; {polecenie-sql;} END

7 Wypisywanie tekstu PRINT UWAGA: Argumentami komendy PRINT muszą być zmienne typu znakowego. Z tego powodu wszystkie zmienne innych typów muszą zostać w jawny sposób skonwertowane na typ znakowy np. funkcją CAST lub CONVERT.

8 Przykład Tworzenie prostej strony HTML wyświetlającej wynik zapytania SQL

9 Podzapytania SELECT arg = (SELECT...), arg2,... FROM (SELECT...) a INNER JOIN (SELECT...) b ON a.pole = b.pole WHERE arg2 IN (SELECT arg3 FROM...)

10 Zasady tworzenia podzapytań Zdecydowanie unikaj wstawiania podzapytań do listy argumentów. Podzapytanie w klauzuli WHERE musi zwracać rozsądną ilość wartości. Np. sprawdzenie dla 1000 rekordów 1000 możliwych wartości może dać w wyniku milion sprawdzeń. Podzapytania w klauzuli WHERE muszą zawierać tylko jeden atrybut (kolumnę). Nadmierne rozbudowanie zapytania poprzez wstawianie wielu podzapytań może doprowadzić do znacznego spowolnienia wykonywania całego zapytania.

11 Operatory w warunku WHERE Operatory porównania argument operator-porównania [ANY ALL] (SELECT ) ANY wystarczy, że jeden z wierszy wyniku spełnia warunek porównania ALL wszystkie wiersze wyniku muszą spełniać warunek porównania Operator występowania argument [NOT] IN (SELECT ) sprawdza, czy podana wartość [nie] jest w zbiorze wierszy wyniku Operator istnienia [NOT] EXISTS (SELECT ) sprawdza, czy [nie] istnieje co najmniej jeden wiersz wyniku

12 Podzapytania skorelowane Zapytania wewnętrzne są wykonywane w kolejności od najgłębiej zagnieżdżonego do najbardziej zewnętrznego. Wyjątek stanowią tzw. podzapytania skorelowane. Podzapytanie skorelowane operuje na wartościach kolumn przekazywanych przez zapytanie zewnętrzne (nadrzędne). Z syntaktycznego punktu widzenia podzapytanie skorelowane różni się od podzapytania nieskorelowanego tym, że w podzapytaniu występuje odwołanie do nazwy kolumny wiersza, którego dotyczy zapytanie zewnętrzne.

13 Przykład Wyświetlić nazwiska, imiona i płace tych pracowników, którzy zarabiają więcej niż średnia płaca pracowników na tym samym stanowisku. SELECT p.nazwisko, p.imie, p.placa FROM pracownicy p WHERE p.placa > (SELECT AVG (placa) FROM pracownicy WHERE stanowisko = p.stanowisko) ORDER BY p.nazwisko, p.imie; Odwołanie do nazwy kolumny zapytania zewnętrznego musi wykorzystać alias tabeli zdefiniowanej w zapytaniu zewnętrznym.

14 Zasady programowania Unikaj podzapytań skorelowanych! Znacznie obniżają one efektywność zapytania. W większości przypadków można żądane wyniki uzyskać bez stosowania zapytań skorelowanych. SELECT p.nazwisko, p.imie, p.placa, s.srednia FROM pracownicy p INNER JOIN (SELECT stanowisko, srednia=avg (placa) FROM pracownicy GROUP BY stanowisko ) s ON s.stanowisko = p.stanowisko WHERE p.placa > s.srednia ORDER BY p.nazwisko, p.imie;

15 OPERACJE MNOGOŚCIOWE

16 Suma - Union SELECT ( ) UNION SELECT ( ) Daje w wyniku sumę (bez powtórzeń) relacji będących wynikami pierwszego i drugiego polecenia SELECT. Wyniki obydwu poleceń SELECT muszą zawierać tę samą liczbę kolumn o tych samych typach. Fraza ORDER BY może wystąpić tylko w ostatnim poleceniu SELECT.

17 Suma Union All SELECT ( ) UNION ALL SELECT ( ) Daje w wyniku sumę (z powtórzeniami) relacji będących wynikami pierwszego i drugiego polecenia SELECT. Pod względem formalnym wynik zapytania z UNION ALL może nie być relacją, ponieważ nie musi ona posiadać unikalnego klucza własnego.

18 Przykład SELECT Nazwisko, Imie FROM Studenci WHERE Kierunek = 'matematyka' UNION SELECT Nazwisko, Imie FROM Studenci WHERE Kierunek = informatyka';

19 Różnica SELECT ( ) EXCEPT SELECT ( ) Daje w wyniku różnicę relacji będących wynikami poleceń SELECT.

20 Zasady programowania Zamiast EXCEPT stosuj odpowiednie złączenie tabel. Na przykład różnicę Wydawców między tabelami NazwaWydawcy a Ksiazki można uzyskać następująco: SELECT NazwaWydawcy FROM Wydawcy w LEFT JOIN (SELECT DISTINCT NazwaWydawcy FROM Ksiazki ) k ON k.nazwawydawcy = w.nazwawydawcy WHERE k.nazwawydawcy IS NULL

21 Iloczyn SELECT ( ) INTERSECT SELECT ( ) Daje w wyniku iloczyn (przekrój) relacji będących wynikami poleceń SELECT Uwagi analogiczne, jak dla operacji sumy.

22 Zasady programowania Zamiast INTERSECT stosuj odpowiednie złączenie tabel. Na przykład wszystkich Wydawców, którzy opublikowali książkę można uzyskać następująco: SELECT NazwaWydawcy FROM Wydawcy w INNER JOIN (SELECT DISTINCT NazwaWydawcy FROM Ksiazki ) k ON k.nazwawydawcy = w.nazwawydawcy

23 OPERACJE RELACYJNE

24 Projekcja i selekcja Projekcja: (wyspecyfikowanie kilku kolumn mające na celu pominięcie informacji z pozostałych kolumn) SELECT nazwa-kolumny {, nazwa-kolumny} FROM nazwa-tabeli; Selekcja: wybranie z tabeli pewnego podzbioru wierszy spełniających warunek podany w klauzuli WHERE SELECT * FROM nazwa-tabeli WHERE warunek;

25 Złączenie Cross join Złączenie CROSS JOIN jest to tzw. złączenie krzyżowe, którego wynikiem jest iloczyn kartezjański wartości wybranych z łączonych tabel. SELECT nazwa-kolumny {, nazwa-kolumny} FROM nazwa-tabeli-1 CROSS JOIN nazwa-tabeli-2 SELECT nazwa-kolumny {, nazwa-kolumny} FROM nazwa-tabeli-1 t1, nazwa-tabeli-2 t2

26 Zasady programowania Złączenie CROSS JOIN może zwrócić bardzo dużą ilość rekordów. Np. złączenie tabel, w których każda ma po wierszy zwraca rekordów! Z tego względu należy korzystać z CROSS JOIN w wyjątkowych przypadkach i z pełną świadomością.

27 Złączenie Equi join W warunku złączenia (w klauzuli ON lub warunku WHERE) występuje zwykły znak równości. Warunek złączenia może być również koniunkcją kilku równości. SELECT nazwa-kolumny {, nazwa-kolumny} FROM nazwa-tabeli-1 t1 INNER JOIN nazwa-tabeli-2 ON t1.kolumna-1 = t2.kolumna-2 SELECT nazwa-kolumny {, nazwa-kolumny} FROM nazwa-tabeli-1 t1, nazwa-tabeli-2 t2 WHERE t1.kolumna-1 = t2.kolumna-2

28 Złączenie Natural join Złączenie natural join jest to szczególny typ złączenia equi-join, w którym kolumny łączonych tabel użyte w warunku łączenia mają tę samą nazwę. SELECT nazwa-kolumny {, nazwa-kolumny} FROM nazwa-tabeli-1 INNER JOIN nazwa-tabeli-2 ON t1.kolumna = t2.kolumna SELECT nazwa-kolumny {, nazwa-kolumny} FROM nazwa-tabeli-1 t1, nazwa-tabeli-2 t2 WHERE t1.kolumna = t2.kolumna

29 Złączenie Theta join Złączenia w których w warunku występuje inny symbol porównania wartości niż =, np. >, BETWEEN, <> SELECT nazwa-kolumny {, nazwa-kolumny} FROM nazwa-tabeli-1 t1 INNER JOIN nazwa-tabeli-2 ON t1.kolumna-1 >= t2.kolumna-2 SELECT nazwa-kolumny {, nazwa-kolumny} FROM nazwa-tabeli-1 t1, nazwa-tabeli-2 t2 WHERE t1.kolumna-1 >= t2.kolumna-2

30 Złączenie LEFT OUTER JOIN Złączenie typu LEFT OUTER JOIN pozwala nam na uwzględnienie w wyniku danych z głównej tabeli, które nie posiadają swoich odpowiedników w złączanych tabelach. Oznacza to, że jeśli w pierwszej tabeli pojawiają się wiersze, które nie posiadają odpowiedników w drugiej tabeli to zostaną wzięte pod uwagę podczas złączenia ale puste kolumny zostaną wypełnione wartościami NULL. SELECT nazwa-kolumny {, nazwa-kolumny} FROM nazwa-tabeli-1 LEFT OUTER JOIN nazwa-tabeli-2 ON warunek-złączenia

31 Przykład

32 Złączenie RIGHT OUTER JOIN Złączenie typu RIGHT OUTER JOIN działa analogicznie do LEFT OUTER JOIN ale w tabeli wynikowej uwzględnia wiersze z łączonej tabeli, które nie posiadają odpowiedników w tabeli głównej. SELECT nazwa-kolumny {, nazwa-kolumny} FROM nazwa-tabeli-1 RIGHT OUTER JOIN nazwa-tabeli-2 ON warunekzłączenia

33 Przykład

34 Złączenie FULL OUTER JOIN Złączenie obustronne FULL OUTER JOIN jest sumą złączenia lewostronnego i prawostronnego. Zawiera wszystkie wiersze obu złączonych tabel, w tym również te które nie mają swoich odpowiedników. SELECT nazwa-kolumny {, nazwa-kolumny} FROM nazwa-tabeli-1 FULL OUTER JOIN nazwa-tabeli-2 ON warunekzłączenia

35 Przykład

36 WIDOKI

37 Widoki Widoki, nazywane także perspektywami albo projekcjami pozwalają: ułatwić odczytywanie danych pochodzących z kilku tabel lub danych obliczanych, ograniczyć dostęp do danych poufnych (ich widzenie ), ukryć strukturę tabel bazy danych, ułatwić zarządzanie uprawnieniami użytkowników.

38 Tworzenie widoków IF OBJECT_ID('nazwa-widoku','V') IS NULL CREATE VIEW nazwa-widoku [(nazwa-kolumny {, nazwa-kolumny})] [WITH ENCRYPTION] AS polecenie-select [WITH CHECK OPTION] GO WITH ENCRYPTION zabezpiecza widok przed możliwością obejrzenia jego definicji. WITH CHECK OPTION wymusza zgodność wszelkich poleceń modyfikujących dane widoku z jego definicją.

39 Zmiana widoku IF OBJECT_ID('nazwa-widoku','V') IS NOT NULL ALTER VIEW nazwa-widoku [(nazwa-kolumny {, nazwa-kolumny})] [WITH ENCRYPTION] AS polecenie-select [WITH CHECK OPTION]; GO

40 Usuwanie widoku IF OBJECT_ID('nazwa-widoku','V') IS NOT NULL DROP VIEW nazwa-widoku;

41 Widoki Widok nie ma własnych danych, tworzy je wirtualna tabela będąca wynikiem działania polecenia SELECT podanego po słowie AS. W komendzie SELECT nazwa widoku może występować w miejscu nazwy tabeli, np. w frazie FROM. Lista nazw kolumn może nie wystąpić, nazwy pobiera się wówczas z tabeli będącej wynikiem polecenia SELECT. Polecenie SELECT nie może zawierać frazy ORDER BY.

42 Modyfikowanie danych Widok może służyć do modyfikowania danych (działają dla niej polecenia INSERT, UPDATE i DELETE), ale wówczas nie może zawierać: więcej niż jednej tabeli we frazie FROM, słowa DISTINCT, fraz GROUP BY i HAVING, kolumn zdefiniowanych wyrażeniami i funkcjami.

43 Zasady programisty W zdecydowanej większości przypadków widoki nie są obiektami indeksowanymi (jedynie przy dosyć restrykcyjnych założeniach można zdefiniować indeks na widoku). Z tego powodu pobieranie danych z widoku wydłuża (może również znacznie!) czas pobierania danych z bazy. Dlatego należy ostrożnie korzystać z widoków. W przypadku małych tabel, pobieranie danych za pomocą widoku będzie efektywne. Natomiast oparcie widoku o kilka dużych połączonych ze sobą tabel może znacznie spowolnić pracę aplikacji, a nawet całkowicie zablokować aplikację. W takich przypadkach zamiast widoków należy definiować procedury składowane.

44 PROCEDURY SKŁADOWANE I FUNKCJE

45 Procedury składowane Procedura składowana to nazwany i prekompilowany zestaw poleceń (instrukcji) przechowywany na serwerze, zapewniający szybszą i wydajniejszą realizację obsługi bazy danych. Typy procedur katalogowe procedury składowane pozwalają na pobieranie informacji ze zbioru tabel nazywanych katalogiem systemowym, np. informacje o bazach danych, tabelach, kluczach, indeksach, serwerze itp., systemowe procedury składowane narzędzia do zarządzania serwerem SQL, np. konfiguracja serwera, pomoc (sp_help), blokady, rozszerzone procedury składowane zaimplementowane jako oddzielne biblioteki poza serwerem SQL, interfejs dla innych aplikacji lub systemów.

46 Procedury użytkownika Procedury składowane zdefiniowane przez użytkownika: mogą być tworzone tylko w bieżącej bazie danych, są prekompilowane, redukują obciążenie sieci.

47 Tworzenie procedury IF OBJECT_ID('nazwa-procedury', 'P') IS NOT NULL DROP PROC[EDURE] nazwa-procedury GO CREATE PROC[EDURE] nazwa-procedury typ-danych [=wartość-domyślna] [OUTPUT] typ-danych [=wartość-domyślna] [OUTPUT]}] [WITH RECOMPILE ENCRYPTION RECOMPILE, ENCRYPTION] [FOR REPLICATION] AS polecenie-sql {polecenie-sql} GO

48 Opcje tworzenia procedury RECOMPILE nakazuje serwerowi rekompilację tzw. planu wykonania przy każdorazowym wywołaniu procedury ENCRYPTION zabezpiecza procedurę przed możliwością obejrzenia jej definicji FOR REPLICATION wykorzystywane przy replikacji bazy

49 Zmiana procedury ALTER PROC[EDURE] nazwa-procedury typ-danych [=wartość-domyślna] [OUTPUT] typ-danych [=wartość-domyślna] [OUTPUT]}] [WITH RECOMPILE ENCRYPTION RECOMPILE, ENCRYPTION] [FOR REPLICATION] AS polecenie-sql {polecenie-sql} GO UWAGA: Przed ALTER PROCEDURE nie może wystąpić żadne zapytanie. Z tego powodu przed zmianą procedury nie jest możliwe sprawdzenie, czy ta procedura istnieje. Alternatywnym rozwiązaniem jest usunięcie i ponowne utworzenie procedury.

50 Usuwanie procedury IF OBJECT_ID('nazwa-procedury', 'P') IS NOT NULL DROP PROC[EDURE] nazwa-procedury GO

51 Wywołanie procedury EXEC[UTE] nazwa-procedury typ-danych [=wartość-domyślna] [OUTPUT] typ-danych [=wartość-domyślna] [OUTPUT]}] [WITH RECOMPILE] Przykład wywołania procedury SQL

52 Tworzenie funkcji IF OBJECT_ID('nazwa-funkcji', 'FN') IS NOT NULL DROP FUNCTION nazwa-funkcji GO CREATE FUNCTION nazwa-funkcji ( [@nazwa-parametru skalarny-typ-danych [=wartość-domyślna] skalarny-typ-danych [=wartość-domyślna]}] ) RETURNS skalarny-typ-danych [AS] BEGIN polecenie-sql {polecenie-sql} RETURN wyrażenie-skalarne; END; GO

53 Zmiana funkcji ALTER FUNCTION nazwa-funkcji ( [@nazwa-parametru skalarny-typ-danych [=wartość-domyślna] skalarny-typ-danych [=wartość-domyślna]}] ) RETURNS skalarny-typ-danych [AS] BEGIN polecenie-sql {polecenie-sql} RETURN wyrażenie-skalarne; END; UWAGA: Przed ALTER FUNCTION nie może wystąpić żadne zapytanie. Z tego powodu przed zmianą funkcji nie jest możliwe sprawdzenie, czy ta funkcja istnieje. Alternatywnym rozwiązaniem jest usunięcie i ponowne utworzenie funkcji.

54 Usuwanie funkcji IF OBJECT_ID('nazwa-funkcji', 'FN') IS NOT NULL GO DROP FUNCTION nazwa-funkcji

55 Przykład wywołania funkcji IF OBJECT_ID('Staz','FN') IS NOT NULL DROP FUNCTION Staz GO CREATE FUNCTION Staz DATETIME) RETURNS INT BEGIN END GO -- Test funkcji SELECT Nazwisko, Zatrudniony, Staż=dbo.Staz(Zatrudniony) FROM Zatrudnieni

56 WYZWALACZE I KURSORY

57 Wyzwalacze (Triggers) Procedury wyzwalane (wyzwalacze, triggery) to procedury wywoływane przez system w momencie zajścia odpowiedniego zdarzenia dotyczącego tabel w bazie danych. Wyzwalacze pozwalają realizować zachowanie więzów spójności i dotyczą operacji INSERT, UPDATE lub DELETE.

58 Tworzenie wyzwalaczy IF OBJECT_ID('nazwa-wyzwalacza','TR') IS NOT NULL DROP TRIGGER nazwa-wyzwalacza GO CREATE TRIGGER nazwa-wyzwalacza ON nazwa-tabeli [WITH ENCRYPTION] FOR AFTER INSTEAD OF INSERT UPDATE DELETE AS polecenie-sql {polecenie-sql}; GO

59 Tworzenie wyzwalaczy Wyzwalacz definiuje procedurę o podanej nazwie, uruchamianą w momencie zajścia (FOR), po zajściu (AFTER) lub zamiast zajścia (INSTEAD OF) odpowiedniego zdarzenia o treści, którą tworzą polecenia SQL występujące po słowie AS. Podczas wykonywania wyzwalacza tworzone są dwie specjalne tabele: inserted i deleted. Ich zawartość można sprawdzać w treści procedury np. w celu wykrycia zmian: gdy usuwamy wiersze, są one usuwane z tabeli głównej i przenoszone do tablicy deleted, następnie wyzwalana jest procedura usuwająca, gdy wstawiamy wiersze, są one wstawiane do głównej tabeli i tabeli inserted, następnie wyzwalana jest procedura wstawiająca, gdy aktualizujemy tabelę, stare dane są wstawiane do tabeli deleted, a nowe do tabeli głównej i tabeli inserted, następnie wyzwalana jest procedura aktualizująca procedury wyzwalane mogą wywoływać inne procedury wyzwalane (wywołania kaskadowe).

60 Usuwanie wyzwalacza IF OBJECT_ID('nazwa-wyzwalacza','TR') IS NOT NULL GO DROP TRIGGER nazwa-wyzwalacza

61 Zmiana wyzwalacza ALTER TRIGGER nazwa-wyzwalacza ON nazwa-tabeli [WITH ENCRYPTION] FOR AFTER INSTEAD OF INSERT UPDATE DELETE AS polecenie-sql {polecenie-sql}; GO UWAGA: Przed ALTER TRIGGER nie może wystąpić żadne zapytanie. Z tego powodu przed zmianą wyzwalacza nie jest możliwe sprawdzenie, czy wyzwalacz istnieje. Alternatywnym rozwiązaniem jest usunięcie i ponowne utworzenie wyzwalacza.

62 Przykład: Aktualizacja po usunięciu wartości Z tabeli Oddzialy usuwamy oddział. Ponieważ oddziały są również zapisywane w tabeli Pracownicy, należy zamienić kod usuwanego oddziału wartością NULL. CREATE TRIGGER Puste_Oddzialy ON Oddzialy FOR DELETE AS UPDATE Pracownicy SET NrOddzialu = NULL WHERE NrOddzialu IN (SELECT NrOddzialu FROM deleted); GO

63 Przykład: Aktualizacja po zmianie wartości W tabeli Oddzialy zmieniamy kodowanie oddziałów. Ponieważ kody oddziałów są również zapisywane w tabeli Pracownicy, należy uaktualnić kody oddziałów w tej tabeli. CREATE TRIGGER Nowy_numer ON Oddzialy FOR UPDATE AS IF UPDATE (NrOddzialu) UPDATE Pracownicy SET NrOddzialu = (SELECT NrOddzialu FROM inserted) -- nowy WHERE NrOddzialu IN (SELECT NrOddzialu FROM deleted); -- stary GO

64 Przykład Z tabeli Pracownicy usuwamy pracownika. Można usunąć wiersz tabeli, ale pod warunkiem, że stanowisko usuwanego pracownika nie jest równe Kierownik. CREATE TRIGGER sprawdz_usuwanie ON Pracownicy FOR DELETE AS IF (SELECT COUNT (*) FROM Pracownicy p INNER JOIN deleted d ON p.id = d.id WHERE p.stanowisko = Kierownik ) > 0 BEGIN PRINT 'Nie można usunąć kierownika'; ROLLBACK TRANSACTION; END ELSE BEGIN PRINT 'Pracownik został usunięty' COMMIT TRANSACTION; END; GO

65 Zasady programisty Korzystaj z wyzwalaczy z wyjątkową ostrożnością. Nigdy nie modyfikuj danych w tabeli za pomocą wyzwalacza zdefiniowanego na tej samej tabeli. Może to doprowadzić do kaskadowego wywołania tego samego wyzwalacza i w konsekwencji pojawi się dead-lock bazy danych. Wyzwalacze są dobrym narzędziem do monitorowania czynności wykonywanych przez użytkownika i zapisywaniu ich w dziennikach. Wyzwalacze nie są dobrym narzędziem do utrzymania więzów integralności (spójności) bazy danych. Kaskadowe wywoływanie wyzwalaczy może spowodować wystąpienie blokad i w konsekwencji dead-lock bazy danych.

66 Kursory Kursory umożliwiają operowanie na zbiorze wyników uzyskanych w wyniku wykonania polecenia SELECT. 1. Kursor musi zostać zadeklarowany. Deklaracja kursora ma postać: DECLARE nazwa-kursora CURSOR FOR polecenie-select; 2. Kursor musi zostać otwarty. Otwarcie kursora ma postać: OPEN nazwa-kursora;

67 Kursory 3. Pobieranie informacji z kursora realizuje polecenie: FETCH NEXT PRIOR FIRST LAST ABSOLUTE n RELATIVE n FROM nazwa-kursora Gdzie: NEXT określa następny rekord (wiersz) w stosunku do bieżącego PRIOR określa poprzedni rekord w stosunku do bieżącego FIRST określa pierwszy rekord w kursorze LAST określa ostatni rekord w kursorze ABSOLUTE n określa n-ty rekord w kursorze RELATIVE n określa n-ty rekord w stosunku do bieżącego

68 Kursory 4. Ważną rolę pełni zmienna systemowa Po pobraniu danych do kursora (np. przy pomocy FETCH NEXT) warunek = 0 wskazuje, że rekordy (wiersze) zostały poprawnie pobrane do kursora.

69 Kursory 5. Kursor musi zostać zamknięty. Zamknięcie kursora ma postać: CLOSE nazwa-kursora; 6. Polecenie DEALLOCATE nazwa-kursora; usuwa odwołanie do kursora i zwalnia pamięć

70 Przykład W tabeli Oddzialy zmieniamy kodowanie oddziałów. Ponieważ kody oddziałów są również zapisywane w tabeli Pracownicy, należy uaktualnić kody oddziałów w tej tabeli. CREATE TRIGGER Zmiany ON Oddzialy FOR UPDATE AS BEGIN INT; DECLARE del CURSOR FOR SELECT ID_Oddzialu FROM deleted; DECLARE ins CURSOR FOR SELECT ID_Oddzialu FROM inserted; OPEN del; OPEN ins; FETCH FIRST FROM del FETCH FIRST FROM ins

71 Przykład c.d. WHILE = 0 BEGIN UPDATE Pracownicy SET ID_Oddzialu WHERE ID_Oddzialu FETCH NEXT FROM del FETCH NEXT FROM ins END; CLOSE ins; DEALLOCATE ins; CLOSE del; DEALLOCATE del; END;

72 Zasady programisty Kursory przypominają programistom pętlę WHILE dobrze znaną z języków programowania. Jednak w przeciwieństwie do języków programowania, w T-SQL kursory należy stosować wyłącznie w ostateczności, gdy nie są dostępne inne narzędzia. Nadmierne wykorzystywanie kursorów jest jednym z najbardziej podstawowych błędów programistów T-SQL. Kursory są bardzo niewydajnym narzędziem. Czas wykonywania podobnego zapytania z wykorzystaniem kursora i bez kursora jest wielokrotnie (nawet ponad 100 razy) krótszy na korzyść zapytania bez kursora. W trakcie wykonywania pętli kursora nie należy modyfikować danych, które są zwracane komendą SELECT w definicji kursora.

Administracja i programowanie pod Microsoft SQL Server 2000

Administracja i programowanie pod Microsoft SQL Server 2000 Administracja i programowanie pod Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 6 Wyzwalacze Wprowadzenie Tworzenie wyzwalacza Wyzwalacze typu,,po'' Wyzwalacze typu,,zamiast''

Bardziej szczegółowo

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika Programowanie w SQL procedury i funkcje UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika 1. Funkcje o wartościach skalarnych ang. scalar valued

Bardziej szczegółowo

PODSTAWY BAZ DANYCH 13. PL/SQL

PODSTAWY BAZ DANYCH 13. PL/SQL PODSTAWY BAZ DANYCH 13. PL/SQL 1 Wprowadzenie do języka PL/SQL Język PL/SQL - rozszerzenie SQL o elementy programowania proceduralnego. Możliwość wykorzystywania: zmiennych i stałych, instrukcji sterujących

Bardziej szczegółowo

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

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik Technologia Przykłady praktycznych zastosowań wyzwalaczy będą omawiane na bazie systemu MS SQL Server 2005 Wprowadzenie

Bardziej szczegółowo

Wykład 6. SQL praca z tabelami 3

Wykład 6. SQL praca z tabelami 3 Wykład 6 SQL praca z tabelami 3 Łączenie wyników zapytań Język SQL zawiera mechanizmy pozwalające na łączenie wyników kilku pytań. Pozwalają na to instrukcje UNION, INTERSECT, EXCEPT o postaci: zapytanie1

Bardziej szczegółowo

Autor: Joanna Karwowska

Autor: Joanna Karwowska Autor: Joanna Karwowska Jeśli pobieramy dane z więcej niż jednej tabeli, w rzeczywistości wykonujemy tak zwane złączenie. W SQL istnieją instrukcje pozwalające na formalne wykonanie złączenia tabel - istnieje

Bardziej szczegółowo

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15 T-SQL dla każdego / Alison Balter. Gliwice, cop. 2016 Spis treści O autorce 11 Dedykacja 12 Podziękowania 12 Wstęp 15 Godzina 1. Bazy danych podstawowe informacje 17 Czym jest baza danych? 17 Czym jest

Bardziej szczegółowo

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT Studia podyplomowe Inżynieria oprogramowania współfinansowane przez Unię Europejska w ramach Europejskiego Funduszu Społecznego Projekt Studia podyplomowe z zakresu wytwarzania oprogramowania oraz zarządzania

Bardziej szczegółowo

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, 2016 Spis treści Wprowadzenie Podziękowania xiii xvii 1 Podstawy zapytań i programowania T-SQL 1 Podstawy

Bardziej szczegółowo

1 DML - zapytania, część II Grupowanie Operatory zbiorowe DML - modyfikacja 7. 3 DCL - sterowanie danymi 9.

1 DML - zapytania, część II Grupowanie Operatory zbiorowe DML - modyfikacja 7. 3 DCL - sterowanie danymi 9. Plan wykładu Spis treści 1 DML - zapytania, część II 1 1.1 Grupowanie................................... 1 1.2 Operatory zbiorowe............................... 5 2 DML - modyfikacja 7 3 DCL - sterowanie

Bardziej szczegółowo

Microsoft SQL Server Podstawy T-SQL

Microsoft SQL Server Podstawy T-SQL Itzik Ben-Gan Microsoft SQL Server Podstawy T-SQL 2012 przełożył Leszek Biolik APN Promise, Warszawa 2012 Spis treści Przedmowa.... xiii Wprowadzenie... xv Podziękowania... xix 1 Podstawy zapytań i programowania

Bardziej szczegółowo

DECLARE VARIABLE zmienna1 typ danych; BEGIN

DECLARE VARIABLE zmienna1 typ danych; BEGIN Procedury zapamiętane w Interbase - samodzielne programy napisane w specjalnym języku (właściwym dla serwera baz danych Interbase), który umożliwia tworzenie zapytań, pętli, instrukcji warunkowych itp.;

Bardziej szczegółowo

Przestrzenne bazy danych Podstawy języka SQL

Przestrzenne bazy danych Podstawy języka SQL Przestrzenne bazy danych Podstawy języka SQL Stanisława Porzycka-Strzelczyk porzycka@agh.edu.pl home.agh.edu.pl/~porzycka Konsultacje: wtorek godzina 16-17, p. 350 A (budynek A0) 1 SQL Język SQL (ang.structured

Bardziej szczegółowo

Relacyjne bazy danych. Podstawy SQL

Relacyjne bazy danych. Podstawy SQL Relacyjne bazy danych Podstawy SQL Język SQL SQL (Structured Query Language) język umożliwiający dostęp i przetwarzanie danych w bazie danych na poziomie obiektów modelu relacyjnego tj. tabel i perspektyw.

Bardziej szczegółowo

Oracle11g: Wprowadzenie do SQL

Oracle11g: Wprowadzenie do SQL Oracle11g: Wprowadzenie do SQL OPIS: Kurs ten oferuje uczestnikom wprowadzenie do technologii bazy Oracle11g, koncepcji bazy relacyjnej i efektywnego języka programowania o nazwie SQL. Kurs dostarczy twórcom

Bardziej szczegółowo

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

Bazy danych Język SQL część 2 Wykład dla studentów matem Bazy danych Język SQL część 2 Wykład dla studentów matematyki 21 marca 2015 Zapytania na kilku tabelach Czasem poszukiwana informacja znajduje się w kilku tabelach. Aby zapytanie dotyczyło kilku tabel,

Bardziej szczegółowo

SQL 4 Structured Query Lenguage

SQL 4 Structured Query Lenguage Wykład 5 SQL 4 Structured Query Lenguage Instrukcje sterowania danymi Bazy Danych - A. Dawid 2011 1 CREATE USER Tworzy nowego użytkownika Składnia CREATE USER specyfikacja użytkownika [, specyfikacja użytkownika]...

Bardziej szczegółowo

Systemy GIS Tworzenie zapytań w bazach danych

Systemy GIS Tworzenie zapytań w bazach danych Systemy GIS Tworzenie zapytań w bazach danych Wykład nr 6 Analizy danych w systemach GIS Jak pytać bazę danych, żeby otrzymać sensowną odpowiedź......czyli podstawy języka SQL INSERT, SELECT, DROP, UPDATE

Bardziej szczegółowo

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

Programowanie w SQL. definicja bloku instrukcji BEGIN...END, warunkowe wykonanie instrukcji IF...ELSE, wyrażenie CASE, Programowanie w SQL definicja bloku instrukcji BEGIN...END, warunkowe wykonanie instrukcji IF...ELSE, wyrażenie CASE, kontynuacja działania od instrukcji za podaną etykietą GOTO etykieta, wyjście bezwarunkowe

Bardziej szczegółowo

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

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze 1 Funkcje i procedury pamiętane Następujące polecenie tworzy zestawienie zawierające informację o tym ilu jest na naszej hipotetycznej

Bardziej szczegółowo

3. Podzapytania, łączenie tabel i zapytań

3. Podzapytania, łączenie tabel i zapytań 3. Podzapytania, łączenie tabel i zapytań I. PODZAPYTANIE (SUBSELECT) oddzielna, ujęta w nawiasy instrukcja SELECT, zagnieżdżona w innej instrukcji SQL, zazwyczaj w instrukcji SELECT w instrukcji SELECT,

Bardziej szczegółowo

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

Język PL/SQL Procedury i funkcje składowane Język PL/SQL Procedury i funkcje składowane Podprogramy, procedury i funkcje składowane, typy argumentów, wywoływanie procedur i funkcji, poziomy czystości funkcji 1 Podprogramy Procedury (wykonują określone

Bardziej szczegółowo

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

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok; Temat: Funkcje, procedury i wyzwalacze. Oprócz tabel i widoków w bazach danych możemy tworzyć własne funkcje, procedury i specjalny typ procedur, które będą automatycznie wywoływanie przez MySQL w memencie

Bardziej szczegółowo

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

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1 Procedury wyzwalane procedury wyzwalane, cel stosowania, typy wyzwalaczy, wyzwalacze na poleceniach DML i DDL, wyzwalacze typu INSTEAD OF, przykłady zastosowania, zarządzanie wyzwalaczami 1 Procedury wyzwalane

Bardziej szczegółowo

Składowane procedury i funkcje

Składowane procedury i funkcje Składowane procedury i funkcje Procedury i funkcje są zestawem poleceń SQL, które są przechowywane na serwerze (tak jak dane w tablicach). Istnieją sytuacje, kiedy procedury i funkcje są szczególnie przydatne.

Bardziej szczegółowo

Wykład 8. SQL praca z tabelami 5

Wykład 8. SQL praca z tabelami 5 Wykład 8 SQL praca z tabelami 5 Podzapytania to mechanizm pozwalający wykorzystywać wyniki jednego zapytania w innym zapytaniu. Nazywane często zapytaniami zagnieżdżonymi. Są stosowane z zapytaniami typu

Bardziej szczegółowo

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

W SQL Serwerze 2008 wprowadzono parametry tablicowe (Table Valued Parameters - TVP). Procedury składowane c.d. Parametry tablicowe w Transact-SQL. W SQL Serwerze 2008 wprowadzono parametry tablicowe (Table Valued Parameters - TVP). Zadanie 1. Proszę napisad procedurę składowaną, która

Bardziej szczegółowo

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

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia Składowe wyzwalacza ( ECA ): określenie zdarzenia ( Event ) określenie

Bardziej szczegółowo

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

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów SQL3 wprowadza następujące kolekcje: zbiory ( SETS ) - zestaw elementów bez powtórzeń, kolejność nieistotna listy ( LISTS ) - zestaw

Bardziej szczegółowo

Relacyjne bazy danych. Podstawy SQL

Relacyjne bazy danych. Podstawy SQL Relacyjne bazy danych Podstawy SQL Język SQL SQL (Structured Query Language) język umoŝliwiający dostęp i przetwarzanie danych w bazie danych na poziomie obiektów modelu relacyjnego tj. tabel i perspektyw.

Bardziej szczegółowo

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

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście. Rodzaje triggerów Triggery DML na tabelach INSERT, UPDATE, DELETE Triggery na widokach INSTEAD OF Triggery DDL CREATE, ALTER, DROP Triggery na bazie danych SERVERERROR, LOGON, LOGOFF, STARTUP, SHUTDOWN

Bardziej szczegółowo

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop. 2016 Spis treści O autorach 11 Podziękowania 12 Część I Wprowadzenie do języka SQL 13 Godzina 1. Witamy w świecie języka SQL 15

Bardziej szczegółowo

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

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze Funkcje użytkownika Tworzenie funkcji Usuwanie funkcji Procedury składowane Tworzenie procedur składowanych Usuwanie procedur składowanych Wyzwalacze Wyzwalacze a ograniczenia i procedury składowane Tworzenie

Bardziej szczegółowo

Systemowe aspekty baz

Systemowe aspekty baz Systemowe aspekty baz danych Deklaracja zmiennej Zmienne mogą być wejściowe i wyjściowe Zmienne w T-SQL można deklarować za pomocą @: declare @nazwisko varchar(20) Zapytanie z użyciem zmiennej: select

Bardziej szczegółowo

Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/

Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/ Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/ Wprowadzenie Historia i standardy Podstawy relacyjności Typy danych DDL tabele, widoki, sekwencje zmiana struktury DML DQL Podstawy, złączenia,

Bardziej szczegółowo

Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL

Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL 1 Podstawy relacyjnego modelu danych. 3h UWAGA: Temat zajęć jest typowo teoretyczny i stanowi wprowadzenie do zagadnień

Bardziej szczegółowo

SQL (ang. Structured Query Language)

SQL (ang. Structured Query Language) SQL (ang. Structured Query Language) SELECT pobranie danych z bazy, INSERT umieszczenie danych w bazie, UPDATE zmiana danych, DELETE usunięcie danych z bazy. Rozkaz INSERT Rozkaz insert dodaje nowe wiersze

Bardziej szczegółowo

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych

Język SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych Politechnika Śląska Instytut Informatyki instrukcja laboratoryjna laboratorium Bazy Danych przygotowali: mgr inż. Paweł Kasprowski (Kasprowski@zti.iinf.polsl.gliwice.pl) mgr inż. Bożena Małysiak (bozena@ivp.iinf.polsl.gliwice.pl)

Bardziej szczegółowo

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

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, 2017 Spis treści O autorze 9 Wprowadzenie 11 Lekcja 1. Zrozumieć SQL 15 Podstawy baz danych 15 Język SQL

Bardziej szczegółowo

Elementy. języka SQL

Elementy. języka SQL Elementy języka SQL SQL SQL - Structured Query Language język czwartej generacji (4GL), opracowany w latach 70-tych przez IBM strukturalny język zapytań, przeznaczony do definiowania, wyszukiwania i administrowania

Bardziej szczegółowo

Szkolenie Oracle SQL podstawy. Terminy. 15 17 lutego 2010 First Minute! 1100zł!

Szkolenie Oracle SQL podstawy. Terminy. 15 17 lutego 2010 First Minute! 1100zł! Szkolenie Oracle SQL podstawy Terminy 15 17 lutego 2010 First Minute! 1100zł! Opis szkolenia Baza danych Oracle od dawna cieszy się zasłużona sławą wśród informatyków. Jej wydajność, szybkość działania

Bardziej szczegółowo

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

Wyzwalacze. do automatycznego generowania wartości kluczy głównych. Składnia instrukcji tworzacej wyzwalacz Wyzwalacze Wyzwalacze są specjalnymi procedurami składowanymi, uruchamianymi automatycznie w następstwie zaistnienia określonego typu zdarzenia. Ich główne zadanie polega na wymuszaniu integralności danych

Bardziej szczegółowo

15. Funkcje i procedury składowane PL/SQL

15. Funkcje i procedury składowane PL/SQL 15. Funkcje i procedury składowane PLSQL 15.1. SQL i PLSQL (Structured Query Language - SQL) Język zapytań strukturalnych SQL jest zbiorem poleceń, za pomocą których programy i uŝytkownicy uzyskują dostęp

Bardziej szczegółowo

Podstawy języka SQL cz. 2

Podstawy języka SQL cz. 2 Podstawy języka SQL cz. 2 1. Operatory zbiorowe a. UNION suma zbiorów z eliminacją powtórzeń, b. EXCEPT różnica zbiorów z eliminacją powtórzeń, c. INTERSECT część wspólna zbiorów z eliminacją powtórzeń.

Bardziej szczegółowo

Paweł Rajba

Paweł Rajba Paweł Rajba pawel@cs.uni.wroc.pl http://www.itcourses.eu/ Wprowadzenie Używanie kursorów Rodzaje kursorów Praca z kursorami Co to jest kursor? Cykl życia kursora utworzenie pobieranie wartości ewentualnie

Bardziej szczegółowo

Administracja i programowanie pod Microsoft SQL Server 2000

Administracja i programowanie pod Microsoft SQL Server 2000 Administracja i programowanie pod Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 5 Kursory w SQL Serverze Wprowadzenie Modele kursorów Używanie kursorów Rodzaje kursorów Praca

Bardziej szczegółowo

Pawel@Kasprowski.pl Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl

Pawel@Kasprowski.pl Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl Bazy danych Zapytania SELECT Dr inż. Paweł Kasprowski pawel@kasprowski.pl Przykład HAVING Podaj liczebność zespołów dla których najstarszy pracownik urodził się po 1940 select idz, count(*) from prac p

Bardziej szczegółowo

Bazy Danych. SQL Podstawy języka III: powtórzenie. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408

Bazy Danych. SQL Podstawy języka III: powtórzenie. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408 Bazy Danych SQL Podstawy języka III: powtórzenie Krzysztof Regulski WIMiIP, KISiM, regulski@agh.edu.pl B5, pok. 408 Modyfikacja schematu relacji Utwórz tabelę wg schematu: CREATE TABLE ODDZIAL ( numer_oddzialu

Bardziej szczegółowo

Procedury i funkcje składowane

Procedury i funkcje składowane Procedury i funkcje składowane Zmienne podstawienia i zmienne wiązane, podprogramy, procedury składowane, typy argumentów, wywoływanie procedur, funkcje składowane, poziomy czystości funkcji, funkcje tablicowe

Bardziej szczegółowo

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych

Informatyka sem. III studia inżynierskie Transport 2018/19 LAB 2. Lab Backup bazy danych. Tworzenie kopii (backup) bazy danych Informatyka sem. III studia inżynierskie Transport 2018/19 Lab 2 LAB 2 1. Backup bazy danych Tworzenie kopii (backup) bazy danych Odtwarzanie bazy z kopii (z backup u) 1. Pobieramy skrypt Restore 2. Pobieramy

Bardziej szczegółowo

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Podstawy języka SQL. SQL Structured Query Languagestrukturalny Podstawy języka SQL SQL Structured Query Languagestrukturalny język zapytań DDL Język definicji danych (np. tworzenie tabel) DML Język manipulacji danych (np. tworzenie zapytań) DCL Język kontroli danych

Bardziej szczegółowo

Systemowe aspekty baz danych

Systemowe aspekty baz danych Systemowe aspekty baz danych Deklaracja zmiennej Zmienne mogą być wejściowe i wyjściowe Zmienne w T-SQL można deklarować za pomocą @: declare @nazwisko varchar(20) Zapytanie z użyciem zmiennej: select

Bardziej szczegółowo

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

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle Rozszerzenie obiektowe w SZBD Oracle Cześć 2. Kolekcje Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Malinowski Nowak Kowalski tablica zagnieżdżona (ang.

Bardziej szczegółowo

BAZY DANYCH Cz III. Transakcje, Triggery

BAZY DANYCH Cz III. Transakcje, Triggery BAZY DANYCH Cz III Transakcje, Triggery Transakcje Definicja: Zbiór operacji (modyfikacja danych, usuwanie, wstawianie, tworzenie obiektów bazodanowych), które albo wszystkie kończone są sukcesem, albo

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 2 Kusory Wprowadzenie Kursory użytkownika Kursory domyślne Zmienne kursora Wyrażenia kursora - 2 - Wprowadzenie Co to jest kursor?

Bardziej szczegółowo

Bazy danych 10. SQL Widoki

Bazy danych 10. SQL Widoki Bazy danych 10. SQL Widoki P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06 Widoki, AKA Perspektywy W SQL tabela, która utworzono za pomoca zapytania CREATE TABLE, nazywa się tabela

Bardziej szczegółowo

Kursory. A. Pankowska 1

Kursory. A. Pankowska 1 Kursory 1 Kursory Kursor jest mechanizmem pozwalającym obsłużyć zbiór zawierający wiele wierszy danych (generowany np. poleceniem SELECT). Jak wskaźnik przebiega on po kolejnych krotkach ze zbioru danych,

Bardziej szczegółowo

Zaawansowane bazy danych i hurtownie danych semestr I

Zaawansowane bazy danych i hurtownie danych semestr I Podprogramy Wydział Informatyki Politechnika Białostocka Zaawansowane bazy danych i hurtownie danych semestr I Procedury do przeprowadzenia akcji Funkcje do obliczania wartości Pakiety do zbierania logicznie

Bardziej szczegółowo

Bloki anonimowe w PL/SQL

Bloki anonimowe w PL/SQL Język PL/SQL PL/SQL to specjalny język proceduralny stosowany w bazach danych Oracle. Język ten stanowi rozszerzenie SQL o szereg instrukcji, znanych w proceduralnych językach programowania. Umożliwia

Bardziej szczegółowo

Wstęp do SQL. copyright: KGiIS WGGiOŚ AGH

Wstęp do SQL. copyright: KGiIS WGGiOŚ AGH Wstęp do SQL SQL (Structured Query Language) strukturalny język zapytań używany do tworzenia, modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych. Język SQL jest językiem deklaratywnym.

Bardziej szczegółowo

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi. Marek Robak Wprowadzenie do języka SQL na przykładzie baz SQLite Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi. Tworzenie tabeli Pierwsza tabela W relacyjnych bazach danych jedna

Bardziej szczegółowo

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

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne Materiały dostępne są na stronie: Materiały Technologie baz danych aragorn.pb.bialystok.pl/~gkret Wykład 5: Kursory jawne. Podprogramy. Małgorzata Krętowska Wydział Informatyki Politechnika Białostocka

Bardziej szczegółowo

Wyzwalacze (triggery) Przykład

Wyzwalacze (triggery) Przykład Wyzwalacze (triggery) Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie. W poniższym przykładzie definiujemy tablicę, a następnie trigger związany

Bardziej szczegółowo

Język SQL. Rozdział 5. Połączenia i operatory zbiorowe

Język SQL. Rozdział 5. Połączenia i operatory zbiorowe Język SQL. Rozdział 5. Połączenia i operatory zbiorowe Iloczyn kartezjański, połączenie równościowe, połączenie nierównościowe, połączenie zwrotne, połączenie zewnętrzne, składnia jawna połączeń, składnia

Bardziej szczegółowo

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne.

Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne. Język SQL. Rozdział 10. Perspektywy Stosowanie perspektyw, tworzenie perspektyw prostych i złożonych, perspektywy modyfikowalne i niemodyfikowalne. 1 Perspektywa Perspektywa (ang. view) jest strukturą

Bardziej szczegółowo

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę Podzapytania Rozdział 5 Podzapytania podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, klauzula WITH, operatory ANY, ALL i EXISTS, zapytania hierarchiczne Podzapytanie jest poleceniem

Bardziej szczegółowo

PL/SQL. Zaawansowane tematy PL/SQL

PL/SQL. Zaawansowane tematy PL/SQL PL/SQL Zaawansowane tematy PL/SQL Cele Poznanie złożonych i referencyjnych typów danych Poznanie konstrukcji kursora Poznanie kodu składowanego Poznanie procedur i funkcji 2 Złożone typy danych RECORD

Bardziej szczegółowo

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

Programowanie po stronie serwera w SZBD. Robert A. Kłopotek Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW Programowanie po stronie serwera w SZBD Robert A. Kłopotek r.klopotek@uksw.edu.pl Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW Programowanie SZBD (DBMS) Procedury serwera Procedury składowane

Bardziej szczegółowo

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego. 77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego. Przy modelowaniu bazy danych możemy wyróżnić następujące typy połączeń relacyjnych: jeden do wielu, jeden do jednego, wiele

Bardziej szczegółowo

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych

Bazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych Plan wykładu Bazy danych Wykład 9: Przechodzenie od diagramów E/R do modelu relacyjnego. Definiowanie perspektyw. Diagramy E/R - powtórzenie Relacyjne bazy danych Od diagramów E/R do relacji SQL - perspektywy

Bardziej szczegółowo

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

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu): Utwórz bazę danych Cw: CREATE DATABASE Cw Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu): DBCC USEROPTIONS Przykład z zapisem do tabeli tymczasowej: --Jeśli istnieje tabela tymczasowa

Bardziej szczegółowo

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę Podzapytania Rozdział 5 Podzapytania podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, klauzula WITH, operatory ANY, ALL i EXISTS, zapytania hierarchiczne Podzapytanie jest poleceniem

Bardziej szczegółowo

Język SQL. Rozdział 6. Podzapytania Podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, operatory ANY, ALL i EXISTS.

Język SQL. Rozdział 6. Podzapytania Podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, operatory ANY, ALL i EXISTS. Język SQL. Rozdział 6. Podzapytania Podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, operatory ANY, ALL i EXISTS. 1 Podzapytania Podzapytanie jest poleceniem SELECT zagnieżdżonym

Bardziej szczegółowo

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE

Język DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE Język DML Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE Systemy Baz Danych, Hanna Kleban 1 INSERT Instrukcja INSERT dodawanie

Bardziej szczegółowo

Model relacyjny. Wykład II

Model relacyjny. Wykład II Model relacyjny został zaproponowany do strukturyzacji danych przez brytyjskiego matematyka Edgarda Franka Codda w 1970 r. Baza danych według definicji Codda to zbiór zmieniających się w czasie relacji

Bardziej szczegółowo

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę

Podzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę Podzapytania Rozdział 5 Podzapytania podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, klauzula WITH, operatory ANY, ALL i EXISTS, zapytania hierarchiczne Podzapytanie jest poleceniem

Bardziej szczegółowo

Bazy danych. dr inż. Arkadiusz Mirakowski

Bazy danych. dr inż. Arkadiusz Mirakowski Bazy danych dr inż. Arkadiusz Mirakowski Początek pracy z Transact SQL (T-SQL) 153.19.7.13,1401 jkowalski nr indeksu 2 Perspektywa - tabela tymczasowa - grupowanie Perspektywa (widok) Perspektywa (widok)

Bardziej szczegółowo

Aspekty aktywne baz danych

Aspekty aktywne baz danych Aspekty aktywne baz danych Aktywne aspekty baz danych Baza danych powinna zapewniać pewne własności i niezmienniki; Własności te powinny mogą być zapisane do bazy danych, a baza danych powinna zapewniać

Bardziej szczegółowo

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

Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie. Temat: Wyzwalacze (triggery). Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie. W poniższym przykładzie definiujemy tablicę a następnie trigger

Bardziej szczegółowo

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni Akademia Morska w Gdyni Gdynia 2004 1. Złączenie definicja Złączenie (JOIN) to zbiór rekordów stanowiących wynik zapytania służącego pobraniu danych z połączonych tabel (związki jeden-do-jeden, jeden-do-wiele

Bardziej szczegółowo

Struktura bazy danych

Struktura bazy danych Procedury składowane, funkcje i wyzwalacze Struktura bazy danych Tabela Oddziały ID Nazwa Adres 10 POZNAN Kwiatowa 3 20 WARSZAWA al. Jerozolimskie 22 30 KRAKOW Planty 14 40 WROCLAW Nad Odra 16 50 GDANSK

Bardziej szczegółowo

Szkolenie autoryzowane. MS Tworzenie zapytań do Microsoft SQL Server Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

Szkolenie autoryzowane. MS Tworzenie zapytań do Microsoft SQL Server Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje Szkolenie autoryzowane MS 10774 Tworzenie zapytań do Microsoft SQL Server 2012 Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje Opis szkolenia Uwaga! Szkolenie wycofane z oferty. Zapraszamy

Bardziej szczegółowo

Administracja i programowanie pod Microsoft SQL Server 2000

Administracja i programowanie pod Microsoft SQL Server 2000 Administracja i programowanie pod Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 4 Wsady Procedury składowane Procedury składowane tymczasowe, startowe Zmienne tabelowe Funkcje

Bardziej szczegółowo

Grupowanie i funkcje agregujące

Grupowanie i funkcje agregujące Grupowanie i funkcje agregujące Zadanie 1. Stwórz odpowiednią tabelę Test_agr i wprowadź odpowiednie rekordy tak, aby wynik zapytania SELECT AVG(kol) avg_all, AVG(DISTINCT kol) avg_dist, COUNT(*) count_gw,

Bardziej szczegółowo

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

LAB 6 BEGIN TRANSACTION, COMMIT, ROLLBACK, SET TRANSACTION ISOLATION LEVEL, Informatyka sem. III studia inżynierskie Transport 2018/19 Lab 6 LAB 6 TRANSACTION, COMMIT, ROLLBACK, SET TRANSACTION ISOLATION LEVEL, UPDATE, INSERT INTO, ALTER TABLE, CREATE VIEW, CREATE TRIGGER, FUNCTION,

Bardziej szczegółowo

Tworzenie widoku CREATE OR REPLACE VIEW [nazwa_widoku] AS SELECT [nazwy_kolumn] FROM [nazwa_tablicy];

Tworzenie widoku CREATE OR REPLACE VIEW [nazwa_widoku] AS SELECT [nazwy_kolumn] FROM [nazwa_tablicy]; Widoki/Perspektywy Podstawy Tworzenie widoku CREATE OR REPLACE VIEW [nazwa_widoku] AS SELECT [nazwy_kolumn] FROM [nazwa_tablicy]; Usuwanie widoku DROP VIEW [nazwa_widoku]; Przykład 1 Przykład najprostszego

Bardziej szczegółowo

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9

Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9 Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9 Tabele 9 Klucze 10 Relacje 11 Podstawowe zasady projektowania tabel 16 Rozdział 2. Praca z tabelami 25 Typy danych 25 Tworzenie tabel 29 Atrybuty kolumn

Bardziej szczegółowo

Model relacyjny. Wykład II

Model relacyjny. Wykład II Model relacyjny został zaproponowany do strukturyzacji danych przez brytyjskiego matematyka Edgarda Franka Codda w 1970 r. Baza danych według definicji Codda to zbiór zmieniających się w czasie relacji

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba. pawel@ii.uni.wroc.pl http://www.kursy24.eu/

Oracle PL/SQL. Paweł Rajba. pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 6 Wprowadzenie Definiowanie wyzwalaczy DML Metadane wyzwalaczy Inne zagadnienia, tabele mutujące Wyzwalacze INSTEAD OF Wyzwalacze

Bardziej szczegółowo

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski BAZY DANYCH wprowadzenie do języka SQL Opracował: dr inż. Piotr Suchomski Wprowadzenie Język SQL używany jest do pracy z relacyjną bazą danych. Jest to język nieproceduralny, należący do grupy języków

Bardziej szczegółowo

Przykładowa baza danych BIBLIOTEKA

Przykładowa baza danych BIBLIOTEKA Przykładowa baza danych BIBLIOTEKA 1. Opis problemu W ramach zajęć zostanie przedstawiony przykład prezentujący prosty system biblioteczny. System zawiera informację o czytelnikach oraz książkach dostępnych

Bardziej szczegółowo

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

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ]; Braki w SQL obsługi zdarzeń i sytuacji wyjątkowych funkcji i procedur użytkownika definiowania złożonych ograniczeń integralnościowych Proceduralny SQL Transact- SQL używany przez Microsoft SQL Server

Bardziej szczegółowo

SQL Structured Query Language

SQL Structured Query Language SQL Structured Query Language stworzony na początku lat 70 ubiegłego wieku w IBM przez Donalda Messerly'ego, Donalda Chamberlina oraz Raymonda Boyce'a pod nazwą SEQUEL pierwszy SZBD System R utworzony

Bardziej szczegółowo

Cele. Definiowanie wyzwalaczy

Cele. Definiowanie wyzwalaczy WYZWALACZE Definiowanie wyzwalaczy Cele Wyjaśnić cel istnienia wyzwalaczy Przedyskutować zalety wyzwalaczy Wymienić i opisać cztery typy wyzwalaczy wspieranych przez Adaptive Server Anywhere Opisać dwa

Bardziej szczegółowo

Wykład 5. SQL praca z tabelami 2

Wykład 5. SQL praca z tabelami 2 Wykład 5 SQL praca z tabelami 2 Wypełnianie tabel danymi Tabele można wypełniać poprzez standardową instrukcję INSERT INTO: INSERT [INTO] nazwa_tabeli [(kolumna1, kolumna2,, kolumnan)] VALUES (wartosc1,

Bardziej szczegółowo

Wprowadzenie. Tworzenie widoków

Wprowadzenie. Tworzenie widoków Widoki Wprowadzenie...2 Tworzenie widoków...2 Złączenie zewnętrzne w definicji widoków...4 Porządkowanie danych przez widoki...5 Modyfikowanie danych przez widoki...6 Ograniczenie zakresu modyfikowania

Bardziej szczegółowo

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

Zarządzanie bazą danych. Bazy Danych i Systemy informacyjne Wykład 4. Piotr Syga 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

Bardziej szczegółowo

Wyzwalacze. Anna Fiedorowicz Bazy danych 2

Wyzwalacze. Anna Fiedorowicz Bazy danych 2 Wyzwalacze Wyzwalacze są specjalnymi procedurami składowanymi, uruchamianymi automatycznie w następstwie zaistnienia określonego typu zdarzenia. Ich główne zadanie polega na wymuszaniu integralności danych

Bardziej szczegółowo

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

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze Cechy bloków nazwanych: w postaci skompilowanej trwale przechowywane na serwerze wraz z danymi wykonywane na żądanie użytkownika lub w

Bardziej szczegółowo