IBM DB2 cechy warte odnotowania

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

Download "IBM DB2 cechy warte odnotowania"

Transkrypt

1 IBM DB2 cechy warte odnotowania v v v v v v Różne typy tabel w tym MDC - wielowymiarowe Podział jednej bazy danych na niezależne partycje nie tylko pojedynczej tabeli Łączenie pokrewnych instrukcji w jedną w celu zwiększenia wydajności Nadtabela i jej podtabele - oprócz typów i podtypów Możliwość przekazywania z procedury zbiorów wynikowych wierszy poprzez otwarte kursory również do aplikacji Autoryzacja przyznanym poziomem dostępu do tabel, kolumn i wierszy Label Based Access Control (LBAC) 1/125

2 Bibliografia Przygotowane w oparciu o: materiały szkoleniowe używane przez Artura Wrońskiego (IBM) i E. Mrówkę-Matejewską; Graeme Birchall, DB@ UDB V8.2 SQL Cookbook - dostępna w Internecie i w katalogu z prezentacją; materiały edukacyjne firmy IBM: DB2 v9 Fundamentals, DB2 SQL Workshop, DB2 SQLWorkshop for Experienced Users, DB2 v9 Admin Workshop for Windows, DB2 v8 Stored Procedures Programming Workshop dostępne w katalogu z prezentacją Dokumentacja: Raul F.Chong,.. Zrozumieć DB2, IBM Press, Mikom, PWN /125

3 DB2 Editions M assively P arallel P rocessor (M PP ) DB2 C luster E nterprise S erver E dition w ith D ata P artitioning Feature E nterprise S erver E dition W orkgroup S erver E dition E xpress E dition Express: wersja darmowa wsparcie techniczne na Forum internetowym. 3/125

4 Instancja (database manager) - niezależne środowisko do pracy z bazami danych - dwie instancje na tym samym komputerze nie współużytkują żadnych zasobów (parametrów, plików). Serwer administracyjny udostępnia usługi zdalnej administracji i harmonogramowania zleceń (np. wykonanie skryptu SQL o określonej godzinie). Serwer administracyjny ma własną konfigurację i własną narzędziową bazę danych (tools database). 4/125

5 Control Center Object Tree Pane Contents Pane Object Detail Pane 5/125

6 Hierarchia obiektów DB2 Instance=Database Manager Instance 1 dbm configuration file SYSCATSPACE SYSCATSPACE Catalog Catalog Log DB configuration file Database 1 View1 View2 Log DB configuration file Database 2 View1 TSSMS1 TSDMSLRG1 USERSPACE1 Table1 Table2 Table3 Table1 Index1 TSDMSLRG3 BLOBs TSDMSREG2 Index1 Index2 Przy tworzeniu bazy danych domyślnie są tworzone trzy przestrzenie tabel: SYSCATSPACE, TEMPSPACE1, USERSPACE1 6/125

7 Struktura przestrzeni tabel Kontener miejsce, gdzie przechowywane są dane np. katalog, plik, dysk (raw device). 7/125

8 Przestrzeń tabel zarządzana przez system operacyjny (SMS) CREATE TABLESPACE nazwa MANAGED BY SYSTEM USING ('path') Dodatkowe miejsce na dysku jest alokowane w miarę potrzeb dane mogą być rozrzucone po całym dysku (większa fragmentacja). Wymagają mniejszego zaangażowania DBA w zarządzanie. 8/125

9 Przestrzeń tabel zarządzana przez DBA (DMS) CREATE TABLESPACE nazwa MANAGED BY DATABASE USING (FILE 'path' size) Składa się z kontenerów, które mogą być: plikami o z góry ustalonym rozmiarze, założonych przez DBA w momencie tworzenia przestrzeni tabel, jest dla nich od razu alokowana przestrzeń na dysku, co oznacza, że zwykle znajdują się w spójnym obszarze na dysku. Oznacza to mniej operacji R/W. dyskami (RAW devices) - system ma do dyspozycji spójny obszar całego dysku. Aby powiększyć rozmiar przestrzeni tabel, administrator musi dołożyć kolejny kontener albo rozszerzyć istniejący. Dane LOB mogą być składowane w osobnej przestrzeni tabel. 9/125

10 Typy przestrzeni tabel v v v Regular - do przechowywania tabel, indeksów i tabel katalogu systemowego. Temporary - używane przez operacje, które wymagają dodatkowego miejsca na dysku: sortowanie, złączenia tabel, reorganizacja tabel. Long - do przechowywania danych typu LOB. 10/125

11 Strony danych i ekstenty Domyślnie strona danych w bazie DB2 ma wielkość 4 KB (można ustawić też wielkość 8, 16 i 32 KB podczas tworzenia bazy danych). Każda strona (niezależnie od wielkości) zawiera nagłówek o stałej wielkości 76 bajtów. Wiersz danych nie może być dzielony między różne strony danych. Rozmiar ekstentu może mieć różną wielkość (ustawioną przez DBA podczas tworzenia przestrzeni tabel) - równy wielokrotności rozmiaru strony danych. Dane typu Long Field (long varchar i long vargraphic) przechowywane są w segmentach po 32 KB a dane LOB w segmentach po 64 MB. 11/125

12 Wstawianie danych Miejsce na nowe dane jest alokowane we wszystkich kontenerach przestrzeni tabel wg algorytmu round-robin - dane w każdej przestrzeni tabel są równo rozłożone między kontenery. W momencie dołożenia kontenera do przestrzeni tabel jest wykonywana reorganizacja danych tak, aby uzyskać równomiernie rozłożenie danych w kontenerach. Kontenery powinny mieć jednakowy rozmiar, aby były równomiernie zapełniane i żeby miejsce w jednym z nich nie skończyło się szybciej niż w innych. 12/125

13 Przypisanie puli buforów danych do przestrzeni tabel Domyślna pula buforów: ibmdefaultbp ALTER BUFFERPOOL ibmdefaultbp IMMEDIATE SIZE 1000; CREATE BUFFERPOOL databp IMMEDIATE SIZE PAGESIZE 8K; ALTER TABLESPACE userspace1 BUFFERPOOL databp; 13/125

14 Struktura bazy danych 14/125

15 Partycja bazy danych Partycja bazy danych (węzeł bazodanowy, database partition) - część bazy danych składającą się z własnych danych, indeksów, plików konfiguracyjnych i dzienników transakcji. Oprócz tego są partycje tabeli jak w Oracle i MS SQL Server. 15/125

16 Tabela na poziomie fizycznym Obiekt tabeli składa się z osobnych podobiektów: Obiekt danych - zawierający zwykłe dane tabeli. Obiekt indeksów zawierający wszystkie indeksy założone na tabeli. Obiekt dla pól typu LONG zawierający zawartość wszystkich pól typu LONG. - Pierwszy obiekt dla pól typu LOB zawierający wszystkie dane LOB. - Drugi obiekt dla pól typu LOB zawierający metadane dla wszystkich danych LOB. 16/125

17 Bitmapy ekstentów Bitmapy: 1. alokowanych/wolnych ekstentów w pliku, 2. opisujące ekstenty używane przez daną tabelę. 17/125

18 Typy tabel 1. Regular implementowane jako sterta (heap). 2. Append typ regular zoptymalizowany dla operacji INSERT i wyszukiwania (z typu regular zmiana przez ALTER TABLE). 3. Multidimensional clustering (MDC) grupowane według kilku kluczy (nazywanych wymiarami) dla zastosowań OLAP. 4. Range-clustered (RCT) grupowane liniowo względem wartości jednoznacznego klucza (wartość klucza określa adres) z określonego przedziału wartości, z góry alokowany obszar dla rekordów. Możliwy obszar nadmiarowy dla kluczy spoza określonego przedziału. Oprócz tego niezależnie są indeksy pogrupowane. 5. Partycjonowane 18/125

19 Składowanie tabeli MDC jako zbioru komórek z dostępem przez indeksy blokowe Komórka (pojęcie logiczne) zbiór rekordów z tym samym układem wartości wymiarów. Indeks blokowy osobno dla każdego wymiaru. Alternatywa dla indeksów bitmapowych. 19/125

20 Zbiór komórek - każda składająca się ze zbioru bloków Komórka składa się z bloków stron rekordów (rozmiaru ekstentów) zapisywanych obok siebie na dysku. 20/125

21 Złożony indeks blokowy Umożliwiający znajdowanie bloków dla kombinacji wartości wymiarów. Uporządkowanie leksykograficzne 21/125

22 Tabela zorganizowana według wymiarów (MDC table) CREATE TABLE Sales ( sales_person VARCHAR(30) NOT NULL, region CHAR(5) NOT NULL, number_of_sales INT NOT NULL, year INT) ORGANIZE BY DIMENSIONS (sales_person, year); 22/125

23 SQL 23/125

24 Schemat Instancja serwera składa się z baz danych. Każda baza danych składa się ze schematów, w tym jeden schemat tworzony automatycznie o nazwie identycznej z identyfikatorem autoryzacji właściciela bazy danych. Jest to domyślny (bieżący) schemat w bazie danych. CREATE SCHEMA MySchema; Nazwa kwalifikowana obiektu w bazie danych: schemat.obiekt CREATE TABLE Tab1 (kol int); Tworzona w schemacie userid czyli userid.tab1 CREATE TABLE MySchema.Tab1 (kol int); Tworzona w schemacie MySchema czyli MySchema.Tab1 24/125

25 Usunięcie schematu DROP SCHEMA nazwa RESTRICT; Możliwe tylko wtedy, gdy schemat jest pusty nie zawiera obiektów (słowo RESTRICT wymagane). 25/125

26 Zmiana bieżącego schematu VALUES CURRENT SCHEMA; SET CURRENT SCHEMA db2admin; CREATE TABLE tab1 ( ); -- bieżący sch. CREATE TABLE schema1.tab1 ( ); -- jawny schem. SET CURRENT SCHEMA USER; 26/125

27 VALUES Wynikiem tabela o wartościach określonych przez wartości wyrażeń. Przykłady: VALUES (1, 2, 3) - 1 wiersz o 3 kolumnach VALUES (1,21),(2,22),(3,23) - 3 wiersze każdy o 2 kolumnach VALUES CURRENT DATE 1 wiersz z jedną kolumną 27/125

28 28/125

29 EMPLOYEE (lub STAFF) CREATE TABLE EMPLOYEE (EMPNO CHARACTER(6) PRIMARY KEY,FIRSTNME VARCHAR(12) NOT NULL,MIDINIT CHARACTER(1),LASTNAME VARCHAR(15) NOT NULL,WORKDEPT CHARACTER(3),PHONENO CHARACTER(4),HIREDATE DATE,JOB CHARACTER(8),EDLEVEL SMALLINT NOT NULL,SEX CHARACTER(1),BIRTHDATE DATE,SALARY DECIMAL(9,2),BONUS DECIMAL(9,2),COMM DECIMAL(9,2)) IN USERSPACE1; 29/125

30 DEPARTMENT (lub DEPT) CREATE TABLE DEPARTMENT (DEPTNUMB SMALLINT NOT NULL,DEPTNAME VARCHAR(14),MANAGER SMALLINT,DIVISION VARCHAR(10),LOCATION VARCHAR(13)) IN USERSPACE1; 30/125

31 Tabele CREATE TABLE tab1 (id INT); CREATE TABLE tab2 LIKE tab1; CREATE TABLE tab3 AS (SELECT * FROM tab1) ; DESCRIBE TABLE tab1; 31/125

32 Typy danych SMALLINT, INT, BIGINT REAL, DOUBLE, DECIMAL(n,m) CHAR(n), VARCHAR(n), LONG VARCHAR, CLOB(n) GRAPHIC,VARGRAPHIC,LONG VARGRAPHIC, DBCLOB(n) BLOB(n) DATE, TIME, TIMESTAMP DATALINK obiekt zawierający link (URL) do zewnętrznego obiektu (atrybuty: link type, data location, comment) XML 32/125

33 Konwersje typów Operacje na niekompatybilnych typach danych wymagają jawnej konwersji, np: CHAR <-> NUMERIC - Przykład jawnej konwersji CAST(col1 as DECIMAL(4,2)) DECIMAL(col1,4,2) - Metoda na sprawdzenie typów zapytania DESCRIBE OUTPUT (SELECT SUM(col1) FROM tab2); 33/125

34 Kolumna IDENTITY CREATE TABLE invoice_data (invoice# INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY,. PRIMARY KEY (invoice#)); GENERATED ALWAYS zawsze generowany przez System (opcja domyślna), GENERATED BY DEFAULT generowane przez System gdy użytkownik nie załączy wartości. Ostatnio wygenerowana wartość: IDENTITY_VAL_LOCAL() Generowane przed wyzwalaczem BEFORE. Możliwe parametry: AS IDENTITY (START WITH 100 INCREMENT BY 10) 34/125

35 Wstawianie do tabeli z IDENTITY INSERT INTO customers(name, address) VALUES ( FRED, xxx ); -- lub INSERT INTO customers VALUES (DEFAULT, FRED, xxx ); Jedna operacja: Wstaw i wyświetl SELECT MIN(cust#) AS minc, WYNIK MAX(cust#) AS maxc, ============== COUNT(*) AS rows MINC MAXC ROWS FROM FINAL TABLE (INSERT INTO customers VALUES (DEFAULT,'FRED','xxx'), (DEFAULT,'DAVE','yyy'), (DEFAULT,'JOHN','zzz')); Połączenie dwóch instrukcji w jedną zwiększenie wydajności. 35/125

36 Sekwencje CREATE SEQUENCE seq1 AS BIGINT [START WITH 1 INCREMENT BY 1 NO MAXVALUE NO CYCLE CACHE 24]; CACHE czy generować wartości sekwencji blokami VALUES NEXTVAL FOR seq1 ; VALUES PREVVAL FOR seq1 ; VALUES PREVVAL FOR seq1 INTO :host-var; ALTER SEQUENCE seq1 RESTART WITH 100; 36/125

37 Przykład CREATE SEQUENCE fred; SEQ# WITH temp1 (n1) AS 2 VALUES ( a ),( b ),( c ),( d ),( e ) 3 SELECT NEXTVAL FOR fred AS seq# 4 FROM temp1; 5 37/125

38 Globalna stała za pomocą sekwencji CREATE SEQUENCE biggest_sale_to_date AS INTEGER START WITH INCREMENT BY 0; Przechowywana w katalogu systemowym. 38/125

39 Tymczasowa globalna tabela DECLARE GLOBAL TEMPORARY TABLE fred (dept SMALLINT NOT NULL, avg_salary DEC(7,2) NOT NULL, num_emps SMALLINT NOT NULL) ON COMMIT PRESERVE ROWS; -- lub ON COMMIT DELETE ROWS -- DECLARE, bo jej schemat nie jest zapisywany w katalogu systemowym i istnieje tylko na czas sesji (domyślny kwalifikator schematu tabeli session tj. session.fred). Objęte mechanizmem wycofywania ale nie odtwarzania po awarii! INSERT INTO fred SELECT dept, AVG(salary), COUNT(*) FROM staff WHERE id > 200 GROUP BY dept; SELECT COUNT(*) AS cnt FROM fred; DELETE FROM fred WHERE dept > 80; 39/125

40 Odróżnialny typ Aby uniemożliwić wspólne operacje np. na dwóch różnych walutach. CREATE DISTINCT TYPE Jap_Yen AS DECIMAL(15,2) WITH COMPARISONS; Wartości typu JAP_YEN nie mogą być porównywane z wartościami typu DECIMAL(15,2) 40/125

41 Indeksy CREATE INDEX idx1 ON tab1(col1) ; CREATE INDEX idx1 ON tab1(col1) CLUSTER ; -- indeks pogrupowany na tabeli tab1, może być niejednoznaczny. Gdy indeks na kluczu głównym ma być pogrupowany, to jest istotna kolejność: CREATE TABLE bez definiowania klucza głównego, CREATE INDEX CLUSTER ALTER TABLE PRIMARY KEY 41/125

42 Partycjonowana tabela 1. Każda partycja tabeli w innej przestrzeni tabel CREATE TABLE Customer (shipdate DATE, name CHAR(30)) IN ts1, ts2, ts3, ts4, ts5 PARTITION BY RANGE(shipdate) (STARTING FROM ('01/01/2009') ENDING AT ('12/31/2009') EVERY (3 MONTHS)) 2. Każda partycja tabeli w innej partycji bazy danych CREATE TABLE Sales (CUSTOMER VARCHAR(80), REGION CHAR(5), YEAR INTEGER) DISTRIBUTE BY HASH (YEAR) ORGANIZE BY DIMENSIONS (REGION, YEAR) 42/125

43 Perspektywy CREATE VIEW employee_view AS SELECT a.empno, a.firstnme, a.salary, a.workdept FROM employee a WHERE a.salary >= (SELECT AVG(b.salary) FROM employee b WHERE a.workdept = b.workdept); 43/125

44 Perspektywy CREATE TABLE p1(id INT CHECK (id < 100)); CREATE TABLE p2(id INT CHECK (id >= 100)); CREATE VIEW pv AS SELECT id FROM p1 UNION ALL SELECT id FROM p2 WITH CHECK OPTION WITH ROW MOVEMENT; WITH ROW MOVEMENT przy aktualizacji wiersz naruszający warunek CHECK zmienia tabelę. 44/125

45 Perspektywy lokalne WITH temp1(id,name) AS ( VALUES (1,'abc'), (2,'bcd'), (3,'cde')) SELECT id+100, UCASE(name) FROM temp1 ORDER BY name DESC; WITH temp1(col1) AS ( VALUES 0 UNION ALL SELECT col1 + 1 FROM temp1 WHERE col1 + 1 < 100 ) SELECT * FROM temp1; -- rekurencyjna 45/125

46 Terminologia SELECTów WITH get_matching_rows AS -- perspektywa lokalna (SELECT id, name, salary -- podzapytanie FROM staff WHERE id < 50 UNION ALL -- pełne zapytanie SELECT id, name, salary -- podzapytanie FROM staff WHERE id = 100 ) SELECT * -- podzapytanie FROM get_matching_rows ORDER BY id FETCH FIRST 10 ROWS ONLY FOR FETCH ONLY; 46/125

47 Tabela zmaterializowanego zapytania - materialized query table (perspektywa zmaterializowana) CREATE TABLE staff_summary AS (SELECT dept, COUNT(*) AS count_rows, SUM(id) AS sum_id FROM staff GROUP BY dept) DATA INITIALLY DEFERRED REFRESH IMMEDIATE; - Tabela utworzona z klauzulami określającymi źródło AS oraz parametry odświeżania REFRESH: IMMEDIATE budowa przy użyciu instrukcji REFRESH TABLE, następnie przy każdej zmianie źródłowych tabel, lub DEFERRED tylko za pomocą instrukcji REFRESH TABLE. - Fraza DATA INITIALLY DEFERRED wymagana. - Można tworzyć indeks (ale nie PRIMARY KEY ani UNIQUE). - Można tworzyć indeks pogrupowany (CLUSTER). 47/125

48 Instrukcja REFRESH TABLE REFRESH TABLE staff_summary; Dwa tryby odświeżania: INCREMENTAL (przyrostowy) w oparciu o dziennik zmian, NOT INCREMENTAL wyliczane od nowa całe zapytanie. Dziennik zmian (staging table) wymagany do odświeżania typu INCREMENTAL. Tworzony tak jak tabela, np: CREATE TABLE emp_sumry_s ( ) FOR staff_summary PROPAGATE IMMEDIATE; 48/125

49 Alias tabeli, perspektywy CREATE ALIAS employee_al1 FOR employee; 49/125

50 Nickname Nazwa dla odległej tabeli lub nie-relacyjnego obiektu, przy użyciu którego w zapytaniach można ich używać tak jakby były zwykłymi tabelami. CREATE NICKNAME emp FOR unixserver.production.employee; 50/125

51 Katalog systemowy w schemacie SYSCAT SELECT CAST(colname AS CHAR(18)) AS Name, CAST(typename AS CHAR(18)) AS Type, length AS Length, scale AS Scale, nulls AS Nulls FROM syscat.columns WHERE tabname = 'MASTER' AND tabschema = 'PL38219' ORDER BY colno; 51/125

52 Więzy spójności ALTER TABLE detail ADD CONSTRAINT detail_fk FOREIGN KEY (fk) REFERENCES master(id) ON DELETE CASCADE; ALTER TABLE tab1 ADD CONSTRAINT const1 CHECK (ABS(c1) > 100 OR c2 < 1000) ; 52/125

53 Wyszukiwanie danych Jak w Standardzie: v v v v v v Kolumny wyliczane Select count Select distinct Klauzule WHERE, ORDER BY Klauzula GROUP BY HAVING Predykaty LIKE, BETWEEN, IN 53/125

54 Zmienne systemowe CURRENT ISOLATION CURRENT DATE CURRENT LOCK TIMEOUT CURRENT PATH CURRENT SCHEMA CURRENT TIME CURRENT TIMESTAMP USER VALUES CURRENT DATE; -- lub SELECT CURRENT DATE FROM sysibm.sysdummy1; -- jak DUAL w Oracle 54/125

55 Operacje na czasie CURRENT TIMESTAMP + 1 DAY CURRENT DATE 3 MONTHS CURRENT TIME 1 HOUR - 80 MINUTES + 2 SECONDS DATE(' ') + 1 MONTH MONTHNAME(CURRENT DATE) DAYOFYEAR(CURRENT TIMESTAMP) TO_CHAR(CURRENT TIMESTAMP,'YYYY-MM-DD HH24:MI:SS') CHAR(CURRENT DATE, ISO) CHAR(CURRENT DATE, EUR) 55/125

56 Operacje na ciągach znaków 'String1' CONCAT ' String2 ' LENGTH(RTRIM('String1 ' )) LTRIM(' String1' ) LCASE('String1' ) UCASE('String1' ) SUBSTR('abcdef',2,3) REPLACE ( 'DINING', 'N', '--' ) SELECT SUBSTR(PROJNO,1, 2) AS PROJ_CLASS, PROJNAME FROM PROJECT WHERE PROJNO LIKE 'IF%'; SELECT LASTNAME CONCAT ', ' CONCAT FIRSTNAME FROM EMPLOYEE WHERE WORKDEPT = 'A00' ORDER BY NAME; 56/125

57 Podzapytania SELECT CAST(t.nr AS INT), t.empno, t.lastname, (SELECT deptname FROM department WHERE t.workdept = deptno) deptname FROM (SELECT empno, lastname, workdept, ROW_NUMBER() OVER() AS nr FROM employee) AS t WHERE t.nr <= 10 57/125

58 Numerowanie rekordów (funkcje analityczne) WITH temp AS ( SELECT id, name, dept, years, salary, RANK() OVER(ORDER BY salary DESC) AS row FROM staff ) SELECT * FROM temp WHERE row > 5 and row <= 10 ORDER BY row; Rank = 1+ liczba rekordów mniejszych od niego w danym porządku (mogą więc być przerwy w numeracji, jeśli dwa lub więcej rekordów ma ten sam rank w danym porządku). Rownumber, row_number = kolejny numer (bez przerw). 58/125

59 CASE SELECT FIRSTNME, LASTNAME, CASE WHEN salary < THEN 'Należy sie podwyżka' WHEN salary > and salary < THEN 'OK' ELSE 'Przeplacamy' END AS comment FROM EMPLOYEE; 59/125

60 Złączenia *) INNER JOIN ON *) LEFT OUTER JOIN ON *) RIGHT OUTER JOIN ON *) FULL OUTER JOIN ON 60/125

61 Klauzule FETCH FIRST i OPTIMIZE FOR SELECT years, name, id FROM staff ORDER BY years DESC FETCH FIRST 10 ROWS ONLY; Zamiast FETCH FIRST n ROWS ONLY można użyć OPTIMIZE FOR n ROWS wtedy zwracane są wszystkie wiersze, ze wskazówką dla optymalizatora, że przekazywanie wierszy do klienta będzie się odbywać blokami n wierszy. Może być używana też bez ORDER BY. 61/125

62 Funkcja TABLE SELECT a.id, a.dept, a.salary, b.deptsal FROM staff a, TABLE (SELECT b.dept, SUM(b.salary) AS deptsal FROM staff b WHERE b.dept = a.dept GROUP BY b.dept ) AS b WHERE a.id < 40 ORDER BY a.id; Wymagana gdy podzapytanie odwołuje się do wierszy zewnętrznych tabel. Ale można było zastosować tu operator INNER JOIN bez korzystania z TABLE. 62/125

63 Przykład z funkcją TABLE SELECT id, salary AS sal, comm AS com, w, typ FROM staff, TABLE(VALUES (salary,'sal'), (comm, 'COM') ) AS tab(w, typ) WHERE id < 40 ORDER BY id, typ; 63/125

64 INSERT v v v v Create table A(liczba int, napis varchar(10)); Insert into A values (1,'aaa'); Insert into A (liczba) values(2); Insert into A values (3,'ccc'),(4,'ddd'),(5,'eee'); v Select * from A; v Create table B(liczba int, napis varchar(10)); v Insert into B (select * from A) ; 64/125

65 Wstawianie do dwóch tabel CREATE TABLE Us_customer (Cust# INTEGER NOT NULL, Cname CHAR(10) NOT NULL, Country CHAR(3) NOT NULL, CHECK (Country = 'USA'), PRIMARY KEY (Cust#)); CREATE TABLE Intl_customer (Cust# INTEGER NOT NULL, Cname CHAR(10) NOT NULL, Country CHAR(3) NOT NULL, CHECK (Country <> 'USA'), PRIMARY KEY (Cust#)); INSERT INTO (SELECT * FROM Us_customer UNION ALL (SELECT * FROM Intl_customer) VALUES (111,'Fred','USA'), (222,'Dave','USA'),(333,'Juan','MEX')); Połączenie dwóch instrukcji w jedną w celu zwiększenia wydajności. 65/125

66 Modyfikowanie danych - UPDATE v v Update B set liczba = liczba+10 where liczba<4; Update B set liczba = liczba+10, napis = 'cccc' where liczba = 12; v Update A set (liczba,napis) = (select liczba, napis from B where liczba = 22) where liczba = 2; 66/125

67 Usuwanie danych - DELETE v Delete from C where v Delete from (select rownumber() over(order by liczba) as rowid from A) where rowid>4; 67/125

68 Wyświetlanie modyfikowanych wierszy OLD TABLE, NEW TABLE, FINAL TABLE v v v Select from OLD TABLE (Delete from Select * from [NEW FINAL] TABLE (Insert into A values(10,'kkk'),(11,'mmm'),(12,'ooo')); Select from [NEW FINAL] TABLE (Update. NEW stan po wykonaniu instrukcji a przed wykonaniem wyzwalaczy AFTER i akcji referencyjnych FINAL stan na sam koniec po wykonaniu wyzwalaczy AFTER i akcji referencyjnych Połączenie dwóch instrukcji w jedną w celu zwiększenia wydajności. 68/125

69 MERGE Włóż wiersze tabeli u do tabeli g stosując UPDATE gdy wiersz z datą istnieje w g, wpp stosując INSERT. MERGE INTO main g USING (SELECT data,swieto FROM upd_main) u ON (g.data = u.data) WHEN MATCHED THEN UPDATE SET swieto = u.swieto WHEN NOT MATCHED THEN tylko INSERT lub SIGNAL INSERT (data,swieto) VALUES (u.data, u.swieto) [NOT] MATCHED [AND warunek_wyszukiwania] Połączenie INSERT, UPDATE, DELETE na jednej tabeli. Zwiększenie wydajności. 69/125

70 UNION, INTERSECT, EXCEPT v v v UNION i UNION ALL INTERSECT i INTERSECT ALL EXCEPT i EXCEPT ALL 70/125

71 TRANSAKCJE * Transakcje rozpoczynają się niejawnie. * Każda baza danych w DB2 jest transakcyjna. * Można wyłączyć tworzenie pozycji transakcji w dzienniku transakcji na poziomie tabeli na czas trwania transakcji (do jej końca). ALTER TABLE tabela ACTIVATE NOT LOGGED INITIALLY; 71/125

72 Poziomy izolacji Odejście od nazw w Standardzie. * UR : brak blokad, chyba, że dany rekord jest zmieniany (UNCOMMITTED READ) * CS : blokada na wierszu tylko przy odczycie rekordu (COMMITTED READ) * RS : blokada do odczytu utrzymywana do końca transakcji (REPEATABLE READ) * RR : niezmienny wynik każdego zapytania w trakcie trwania transakcji (SERIALIZABLE) 72/125

73 Blokowane obiekty 73/125

74 Blokady na tabeli Dla transakcji realizowanej w trybie READ UNCOMMITTED IN IS IX SIX S U X Z Intent None Intention Share Intention exclusive Share with Intention exclusive Share Update exclusive superexclusive Obejmuje też blokady wierszy Tylko blokada tabeli Z do wykonania ALTER i DROP na tabeli oraz CREATE i DROP na indeksie tabeli. 74/125

75 Blokady na wierszu Blokada wiersza Minimalna wspomagająca blokada na tabeli S U X W NS NW Share Update exclusive Weak exclusive Next key Share Next key Weak exclusive IS IX IX IX IS IX Aplikacja nie uzyskuje jeśli założyła blokadę na tabeli: blokady wierszy S, U, X lub Z 75/125

76 Dodatkowe rodzaje wierszowych blokad v v v Weak Exclusive W zakładana na wiersz wstawiany do tabeli (na tabeli IX) słabsza niż X na tym wierszu. Next Key Weak Exclusive NW gdy do indeksu jest dodawana nowa pozycja (na tabeli IX) słabsza niż X na tym wierszu. Next Key Share NS zakładana na wiersz podczas pełnego odczytu tabeli w trybie READ COMMITTED i REPEATABLE READ (na tabeli IS) słabsza niż S na tym wierszu. 76/125

77 77/125 Kompatybilność trybów blokad U YES NO NO NO YES NO NS YES YES NO NO YES YES W NO NO NO NO NO YES B A IN IS S IX SIX U X Z Tabelowe B A S U X W NS NW Wierszowe IS YES YES YES YES YES YES NO NO S YES YES YES NO NO YES NO NO IX YES YES NO YES NO NO NO NO IN YES YES YES YES YES YES YES NO X NO NO NO NO NO NO S YES YES NO NO YES NO NW NO NO NO YES YES NO SIX YES YES NO NO NO NO NO NO U YES YES YES NO NO NO NO NO X YES NO NO NO NO NO NO NO Z NO NO NO NO NO NO NO NO

78 Blokady explicite -- Zapytanie tylko do odczytu SELECT * FROM tab1 FOR READ ONLY; -- Zapytanie może uaktualniać rekordy w trakcie przemieszczania się kursora po zbiorze wynikowym SELECT * FROM tab1 FOR UPDATE; -- Do instrukcji SELECT, SELECT INTO, DELETE, UPDATE można dołączyć poziom izolacji: WITH RR, WITH RS, WITH CS, WITH UR. 78/125

79 Konwersja blokady v Gdy aplikacja posiadając już pewną blokadę na obiekcie, chce zamienić tę blokadę na silniejszą (np. U na X, IS na S, IX na X) Silniejsza blokada może być przyznana lub nie. v Przykład Aplikacja wybiera wiersz w tabeli używając klauzuli FOR UPDATE u Na wiersz jest zakładana blokada U (Update) Aplikacja dokonuje modyfikacji wiersza używając klauzuli WHERE CURRENT OF u Zachodzi konwersja blokady U na X 79/125

80 Parametry inicjalizacyjne bazy danych dotyczące blokad Locklist ilość miejsca pamięci do użycia przez blokady. Maxlocks maksymalny procent miejsca pamięci z Locklist przeznaczony do użycia przez pojedynczą transakcję. Gdy transakcja przekroczy Maxlocks, system zamienia blokady na wierszach na blokady na tabelach (eskalacja blokad). 80/125

81 Blokada tabeli ALTER TABLE tabela LOCKSIZE TABLE; -- (blokowanie tabeli zamiast domyślnie wierszy) Wskazane, gdy DML dotyczy większości wierszy dużej tabeli. Z powrotem do blokowania wierszy (które jest domyślne): ALTER TABLE tabela LOCKSIZE ROW; LOCK TABLE tabela IN [SHARE EXCLUSIVE] MODE (blokada zwalniana na koniec transakcji) 81/125

82 Blokada bazy danych/przestrzeni tabel (explicite) CONNECT TO database IN [EXCLUSIVE SHARE] MODE Blokada bazy danych: CONNECT TO database IN EXCLUSIVE MODE Blokada przestrzeni tabel: QUIESCE table-spaces FOR TABLE table-name INTENT FOR UPDATE; 82/125

83 Tworzenie typów obiektowych CREATE TYPE DEPT AS ( DEPT NAME VARCHAR(20), MAX_EMPS INT) REF USING INT MODE DB2SQL -- MODE DB2SQL wymagany CREATE TYPE EMP AS ( NAME VARCHAR(32), SERIALNUM INT, DEPT REF(DEPT), SALARY DECIMAL(10,2)) MODE DB2SQL CREATE TYPE MGR UNDER EMP AS ( BONUS DECIMAL(10,2)) MODE DB2SQL Ewentualna specyfikacja metody po słowie kluczowym METHOD. Niezależnie, implementacja metody: CREATE METHOD BONUS (RATE DOUBLE) FOR EMP RETURN SELF..SALARY * RATE 83/125

84 Przykład tabeli z podtabelami Hierarchia typów obiektowych: Typy obiektowe: BusinessUnit_t, Person_t Podtypy: Student_t UNDER Person_t, Employee_t UNDER Person_t, Manager_t UNDER Employee_t, Architect_t UNDER Employee_t 84/125

85 Tworzenie hierarchii tabel odpowiadającej hierarchii typów CREATE TABLE BUnit OF BusinessUnit_t (REF IS Oid USER GENERATED); CREATE TABLE Person OF Person_t (REF IS Oid USER GENERATED); CREATE TABLE Employee OF Employee_t UNDER Person INHERIT SELECT PRIVILEGES -- wymagana klauzula dla podtabel (SerialNum WITH OPTIONS NOT NULL, Dept WITH OPTIONS SCOPE BUnit ); CREATE TABLE Student OF Student_t UNDER Person INHERIT SELECT PRIVILEGES; CREATE TABLE Manager OF Manager_t UNDER Employee INHERIT SELECT PRIVILEGES; CREATE TABLE Architect OF Architect_t UNDER Employee INHERIT SELECT PRIVILEGES; 85/125

86 Instrukcje SQL na nadtabeli i jej podtabelach Instrukcje SELECT, UPDATE, DELETE operujące na nadtabeli, domyślnie działają również na wszystkich wierszach jej podtabel. Np. UPDATE na tabeli Employee dotyczy wierszy tabel Employee, Manager i Architect, ale UPDATE na tabeli Manager dotyczy tylko wierszy tabeli Manager. Aby ograniczyć działanie instrukcji wyłącznie do danej tabeli należy użyć opcji ONLY (np. ONLY Employee). 86/125

87 Jak zaszyfrować kluczowe dane? SET ENCRYPTION PASSWORD = 'Ben123'; INSERT INTO EMP(SSN) VALUES ENCRYPT (' '); INSERT INTO EMP(SSN) VALUES ENCRYPT (' ', 'Ben123'); SELECT DECRYPT_CHAR (SSN,'Ben123') FROM EMP; 87/125

88 LBAC (Label Based Access Control) Poziom dostępu definiowany dla tabel i wierszy tabel. SELECT * FROM EMP WHERE SALARY >= & Poziom dostępu użytkownika = 100 Użytkownicy na poziomie 100 mają dostęp do wierszy: ID <= 100 i salary >= (na zielono) No LBAC LBAC ID SALARY Gdy opcja LBAC nie jest włączona, użytkownicy za pomocą powyższego zapytania mają dostęp do wierszy: salary >= (na czerwono) Ułatwienie zarządzania uprawnieniami dostępu użytkowników do danych /125

89 Język procedur składowanych SQL Procedural Language (SQL PL) 89/125

90 Przypisanie wartości zmiennym Instrukcje w kodzie: SET zmienna = wyrażenie VALUES wyrażenie, INTO zmienna, 90/125

91 Instrukcja złożona (blok), zmienne BEGIN DECLARE v_var1 CHAR(20); DECLARE v_var2 INTEGER; DECLARE v_var3 TIMESTAMP; DECLARE v_var4 SMALLINT DEFAULT 99; SELECT name INTO v_var1 FROM staff FETCH FIRST 1 ROW ONLY; SET v_var2 = 100; VALUES CURRENT TIMESTAMP INTO v_var3; VALUES (p_par1,99) INTO v_var4,v_var2; END 91/125

92 ATOMIC, NOT ATOMIC BEGIN ATOMIC -- SQL e traktowane są jak jedno polecenie END -- nieobsłużony błąd -> zatrzymanie wykonywania -> -- wszystkie zmiany zostają wycofane BEGIN ATOMIC nie może być zagnieżdżony w BEGIN ATOMIC BEGIN NOT ATOMIC -- to jest domyślna opcja END -- nieobsłużony błąd -> zatrzymanie wykonywania -> -- Zmiany pozostają. Konieczne ręczne wycofanie. 92/125

93 Etykiety instrukcji złożonej lab1: BEGIN DECLARE v_id INT; lab2: BEGIN DECLARE v_id INT; SET lab1.v_id = 1; SET lab2.v_id = 10; SET v_id = 100; END lab2; END lab1 93/125

94 Instrukcje warunkowe IF v_var = 1 THEN UPDATE ELSE INSERT END IF; CASE WHEN v_var > 0 THEN WHEN v_var > 10 THEN ELSE END CASE; 94/125

95 Iteracje WHILE (var1 = 1) DO END WHILE; REPEAT UNTIL (var1 < 100) END REPEAT; label:loop LEAVE label; ITERATE label; END LOOP; GOTO label; 95/125

96 Instrukcja złożona i WHILE BEGIN ATOMIC DECLARE cnt INT DEFAULT 0; WHILE (cnt < 1000) DO INSERT INTO Tab1 VALUES (cnt, ceiling(rand()*1000) ); SET cnt=cnt+1; END WHILE; END Średniki oddzielają składowe instrukcje w instrukcji złożonej. Średnik nie może kończyć zewnętrznej instrukcji złożonej ani też końca instrukcji CREATE PROCEDURE. W skryptach można określić terminator przy użyciu -- #SET DELIMITER 96/125

97 Instrukcja FOR FOR loop_name AS SELECT col1, FROM DO SET var1 = loop_name.col1; END FOR; 97/125

98 Przykład BEGIN ATOMIC DECLARE cntr SMALLINT DEFAULT 1; FOR V AS SELECT id AS idval FROM staff WHERE id < 80 ORDER BY id DO UPDATE staff SET comm = cntr WHERE id = V.idval; SET cntr = cntr + 1; END FOR; END 98/125

99 Instrukcja złożona BEGIN ATOMIC DECLARE v_var2 INTEGER; CREATE TABLE mytab(id INT); CREATE INDEX mytab_idx ON mytab(id); BEGIN DECLARE v_var4 INTEGER DEFAULT 100; INSERT INTO mytab(id) VALUES (99),(v_var4); GET DIAGNOSTICS v_var2 = ROW_COUNT; SET p_result = 'L.wierszy: ' char(v_var2); END; END GET DIAGNOSTICS wymagane, aby uzyskać ROW_COUNT! 99/125

100 ITERATE, LEAVE BEGIN ATOMIC DECLARE cntr INT DEFAULT 0; whileloop: WHILE cntr < 60 DO SET cntr = cntr + 10; UPDATE staff SET salary = cntr WHERE id = cntr; IF RAND() < 0.5 THEN LEAVE whileloop; ELSEIF RAND() < 0.2 THEN ITERATE whileloop; ELSE UPDATE staff SET comm = cntr + 1 WHERE id = cntr; END IF; END WHILE; END 100/125

Ćwiczenia 2 IBM DB2 Data Studio

Ćwiczenia 2 IBM DB2 Data Studio Ćwiczenia 2 IBM DB2 Data Studio Temat: Aplikacje w Data Studio 1. Projekty Tworzenie procedur, UDF, trygerów zaczynamy od utworzenia projektu File -> New -> Project wybieramy Data Development Project.

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

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

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

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

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2. Bazy Danych i Systemy informacyjne Wykład 2 Piotr Syga 16.10.2017 Dodawanie, usuwanie i zmienianie rekordów Wstawianie rekordu wstawianie do tabeli INSERT INTO A VALUES ( fioletowy, okrągły, słodko-kwaśny

Bardziej szczegółowo

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi 1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) Tworząc tabelę nie możemy określić, do którego pliku trafi, lecz możemy określić do której grupy plików trafi Zawsze istnieje grupa zawierająca

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

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678'); polecenie UPDATE służy do aktualizacji zawartości wierszy tabel lub perspektyw składnia: UPDATE { } SET { { = DEFAULT NULL}, {

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

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

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

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

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

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

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

Ustawienie na poziomie sesji (działa do zmiany lub zakończenia sesji zamknięcia połączenia).

Ustawienie na poziomie sesji (działa do zmiany lub zakończenia sesji zamknięcia połączenia). POZIOMY IZOLACJI TRANSAKCJI 1. Microsoft SQL Server 2012 (od SQL Server 2005) W systemie SQL Server można wybrać sposób sterowania współbieżnością. Podstawowy sposób to stosowanie blokad. Wykorzystywane

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

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

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

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

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

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

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

Procedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu Procedury składowane Kolejnym typem programu języka PL/SQL są procedury składowane. Procedury mogą posiadać parametry typu IN, OUT lub IN OUT. Umożliwiają wykonanie operacji na danych w bazie, mogą też

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

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

Używany kiedy pełna treść instrukcji SQL jest nieznana przed uruchomieniem programu. Plan wykładu Spis treści 1 Dynamiczny SQL 1 2 Wyzwalacze 2 3 Podsumowanie 9 4 Źródła 9 1 Dynamiczny SQL Dynamiczny SQL Dynamiczny SQL - technika programowania umożliwiająca generowanie instrukcji SQL dynamicznie

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

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

Ile rekordów będzie zawierała tabela przy założeniu, że na początku była pusta?

Ile rekordów będzie zawierała tabela przy założeniu, że na początku była pusta? Gr Masyla: 1. Zaznacz poprawne stwierdzenia dotyczące opcji recovery model w MS SQL Server a) Ustawienie Simple pozwala zaoszczędzid miejsce na dysku b) Model full jest zalecany dla baz danych, w których

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

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

Wykład V. Indeksy. Struktura indeksu składa się z rekordów o dwóch polach Indeksy dodatkowe struktury służące przyśpieszeniu dostępu do danych o użyciu indeksu podczas realizacji poleceń decyduje SZBD niektóre systemy bazodanowe automatycznie tworzą indeksy dla kolumn o wartościach

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

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

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

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki.

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki. Pakiety Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki. Pakiet składa się ze: specyfikacji (interfejsu) i ciała (implementacji). W specyfikacji mieszczą

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

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL. Prezentacja Danych i Multimedia II r Socjologia Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL. Celem ćwiczeń jest poznanie zasad tworzenia baz danych i zastosowania komend SQL. Ćwiczenie I. Logowanie

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

Bazy danych. Plan wykładu. Rozproszona baza danych. Fragmetaryzacja. Cechy bazy rozproszonej. Replikacje (zalety) Wykład 15: Rozproszone bazy danych

Bazy danych. Plan wykładu. Rozproszona baza danych. Fragmetaryzacja. Cechy bazy rozproszonej. Replikacje (zalety) Wykład 15: Rozproszone bazy danych Plan wykładu Bazy danych Cechy rozproszonej bazy danych Implementacja rozproszonej bazy Wykład 15: Rozproszone bazy danych Małgorzata Krętowska, Agnieszka Oniśko Wydział Informatyki PB Bazy danych (studia

Bardziej szczegółowo

Bazy danych 7. SQL podstawy

Bazy danych 7. SQL podstawy Bazy danych 7. SQL podstawy P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06 Structured Query Language Używane standardy: SQL92 SQL99 SQL:2003 Żaden dostawca nie jest w pełni zgodny

Bardziej szczegółowo

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

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL Pakiety podprogramów, specyfikacja i ciało pakietu, zmienne i kursory pakietowe, pseudoinstrukcje (dyrektywy kompilatora), dynamiczny SQL.

Bardziej szczegółowo

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

Bazy danych 11. SQL Procedury składowane, kursory i wyzwalacze Bazy danych 11. SQL Procedury składowane, kursory i wyzwalacze P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06 I. Procedury składowane (stored procedures) Procedury składowane stanowia

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

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 8 Wprowadzenie Definiowanie typu obiektowego Porównywanie obiektów Tabele z obiektami Operacje DML na obiektach Dziedziczenie -

Bardziej szczegółowo

Pawel@Kasprowski.pl Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl

Pawel@Kasprowski.pl Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl Bazy danych Podstawy języka SQL Dr inż. Paweł Kasprowski pawel@kasprowski.pl Plan wykładu Relacyjne bazy danych Język SQL Zapytania SQL (polecenie select) Bezpieczeństwo danych Integralność danych Współbieżność

Bardziej szczegółowo

Uprawnienia, role, synonimy

Uprawnienia, role, synonimy Uprawnienia, role, synonimy Schemat, użytkownicy, autoryzacja użytkowników, uprawnienia systemowe i obiektowe, nadawanie i odbieranie uprawnień, tworzenie ról, przywileje, synonimy Schematy i użytkownicy

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

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

Plan wykładu PL/SQL. PL/SQL - historia TWORZENIE APLIKACJI BAZODANOWYCH Plan wykładu 2 TWORZENIE APLIKACJI BAZODANOWYCH Wykład 2: Wprowadzenie do PL/SQL: bloki anonimowe, zmienne, kursory Wprowadzenie do PL/SQL Bloki Podstawowe składowe języka Zmienne i stałe Kursory Małgorzata

Bardziej szczegółowo

Wykład 2. SQL 1 Structured Query Lenguage

Wykład 2. SQL 1 Structured Query Lenguage Wykład 2 SQL 1 Structured Query Lenguage SQL (Structured Query Language) Język zapytań do bazy danych. IBM lata osiemdziesiąte. Stosowany w systemach zarządzania bazami danych (DBMS); Oracle, Paradox,Access,

Bardziej szczegółowo

Pakiety podprogramów Dynamiczny SQL

Pakiety podprogramów Dynamiczny SQL Pakiety podprogramów Dynamiczny SQL Pakiety podprogramów, specyfikacja i ciało pakietu, zmienne i kursory pakietowe, pseudoinstrukcje (dyrektywy kompilatora), dynamiczny SQL 1 Pakiety Pakiet (ang. package)

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

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

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

PL/SQL. Zaawansowane tematy PL/SQL. Piotr Medoń PL/SQL Zaawansowane tematy PL/SQL Piotr Medoń Cele Omówienie transakcji bazodanowych Omówienie obsługi wyjątków Zarządzanie perspektywami Tworzenie i usuwanie sekwencji Budowa wyzwalaczy 2 Transakcje bazodanowe

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

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

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

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

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

Plan ćwiczenia. Rozdział 16 Uwierzytelnianie i autoryzacja w bazie danych. Użytkownicy i schematy (1) Użytkownicy i schematy (2) baza danych: ZESP99

Plan ćwiczenia. Rozdział 16 Uwierzytelnianie i autoryzacja w bazie danych. Użytkownicy i schematy (1) Użytkownicy i schematy (2) baza danych: ZESP99 Plan ćwiczenia Rozdział 16 Uwierzytelnianie i autoryzacja w bazie danych Użytkownicy i schematy bazy danych. Uwierzytelnianie i autoryzacja. Przywileje systemowe i obiektowe. Role. Synonimy. Uprawnienia,

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

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

Obiekty bazy danych DB2

Obiekty bazy danych DB2 Obiekty bazy danych DB2 Obiektem bazy danych DB2 jest każdy składnik bazy danych DB2, jak: schematy, tabele, widoki, indeksy, sekwencje, aliasy, wyzwalacze, funkcje użytkownika (UDF-y), procedury zapamiętane,

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

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia? D D L S Q L Co to jest DDL SQL i jakie s jego ą podstawowe polecenia? D D L S Q L - p o d s t a w y DDL SQL (Data Definition Language) Jest to zbiór instrukcji i definicji danych, którym posługujemy się

Bardziej szczegółowo

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

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych Języki programowania wysokiego poziomu PHP cz.4. Bazy danych PHP i bazy danych PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł

Bardziej szczegółowo

Iwona Milczarek, Małgorzata Marcinkiewicz, Tomasz Staszewski. Poznań, 30.09.2015

Iwona Milczarek, Małgorzata Marcinkiewicz, Tomasz Staszewski. Poznań, 30.09.2015 Iwona Milczarek, Małgorzata Marcinkiewicz, Tomasz Staszewski Poznań, 30.09.2015 Plan Geneza Architektura Cechy Instalacja Standard SQL Transakcje i współbieżność Indeksy Administracja Splice Machince vs.

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

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

Zarządzanie obiektami bazy danych Oracle11g

Zarządzanie obiektami bazy danych Oracle11g Zarządzanie obiektami bazy danych Oracle11g Wstęp Obiekty to struktury przechowujące, porządkujące lub operujące na danych takie jak: Tabele Więzy integralności Indeksy Widoki Sekwencje Procedury Linki

Bardziej szczegółowo

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL, Mój projekt przedstawia bazę danych noclegów składającą się z 10 tabel. W projekcie wykorzystuje program LibreOffice Base do połączenia psql z graficznym interfejsem ( kilka formularzy przedstawiających

Bardziej szczegółowo

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

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa) Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski Uniwersytet Kardynała Stefana Wyszyńskiego, Warszawa dwunasty PL/SQL, c.d. 1 / 37 SQL to za mało SQL brakuje możliwości dostępnych w językach proceduralnych.

Bardziej szczegółowo

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek

SELECT * FROM tabela WHERE warunek wybiera dane spełniające podany warunek SELECT SELECT kolumna1, kolumna2,, kolumnan FROM tabela wybrane kolumny SELECT * FROM tabela wszystkie kolumny select * from Orders select CustomerID, CompanyName, Country from Customers WHERE SELECT *

Bardziej szczegółowo

BAZA DANYCH SIECI HOTELI

BAZA DANYCH SIECI HOTELI Paulina Gogół s241906 BAZA DANYCH SIECI HOTELI Baza jest częścią systemu zarządzającego pewną siecią hoteli. Składa się z tabeli powiązanych ze sobą różnymi relacjami. Służy ona lepszemu zorganizowaniu

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

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

Język SQL, zajęcia nr 1

Język SQL, zajęcia nr 1 Język SQL, zajęcia nr 1 SQL - Structured Query Language Strukturalny język zapytań Login: student Hasło: stmeil14 Baza danych: st https://194.29.155.15/phpmyadmin/index.php Andrzej Grzebielec Najpopularniejsze

Bardziej szczegółowo

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

Cheatsheet PL/SQL Andrzej Klusiewicz  1/9 Declare y integer; z varchar2(50); d date; null; Declare x integer:=10; null; x integer; x:=10; dbms_output.put_line('hello world'); for x in 1..10 loop Deklaracja 4 zmiennych. Jednej typu rzeczywistego,

Bardziej szczegółowo

Wyzwalacze TWORZENIE WYZWALACZY

Wyzwalacze TWORZENIE WYZWALACZY Wyzwalacze: podobnie jak procedury i funkcje, są nazwanymi blokami PL/SQL zawierającymi sekcje deklaracji, wykonania i obsługi wyjątków; nie akceptują argumentów; muszą być składowane jako samodzielne

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

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

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

Wykład IV Modelowanie danych, projektowanie systemu informatycznego Modelowanie konceptualne implementacyjne Modelowanie pojęciowe na encjach

Wykład IV Modelowanie danych, projektowanie systemu informatycznego Modelowanie konceptualne implementacyjne Modelowanie pojęciowe na encjach Modelowanie danych, projektowanie systemu informatycznego Modelowanie odwzorowanie rzeczywistych obiektów świata rzeczywistego w systemie informatycznym. Modele - konceptualne reprezentacja obiektów w

Bardziej szczegółowo

1. Wyzwalacze BD (ang. triggers)

1. Wyzwalacze BD (ang. triggers) 1. Wyzwalacze BD (ang. triggers) Wyzwalacz bazy danych jest procedurą składowaną w bazie powiązaną z jedną konkretną tablicą. Z pojedynczą tablicą może być związane wiele wyzwalaczy, natomiast pojedynczy

Bardziej szczegółowo

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

PRZESTRZENNE BAZY DANYCH WYKŁAD 2 PRZESTRZENNE BAZY DANYCH WYKŁAD 2 Baza danych to zbiór plików, które fizycznie przechowują dane oraz system, który nimi zarządza (DBMS, ang. Database Management System). Zadaniem DBMS jest prawidłowe przechowywanie

Bardziej szczegółowo

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE Wykład 9 Implementacja języka SQL w systemach baz danych Oracle manipulowanie danymi (DML), tworzenie, modyfikowanie i usuwanie obiektów bazy danych: tabel i perspektyw, więzów integralności, komentarzy

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

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

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych SQL SQL (ang. Structured Query Language): strukturalny język zapytań używany do tworzenia strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych

Bardziej szczegółowo

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

Bazy danych 8. Procedury składowane i kursory. P. F. Góra Bazy danych 8. Procedury składowane i kursory P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2017 Procedury składowane (stored procedures) Procedury składowane stanowia część schematu bazy danych. Stosuje

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

ORACLE. System Zarządzania Bazą Danych Oracle. Oracle Advanced SQL

ORACLE. System Zarządzania Bazą Danych Oracle. Oracle Advanced SQL ORACLE System Zarządzania Bazą Danych Oracle Oracle Advanced SQL wersja 1.0 Politechnika Śląska 2008 Raportowanie z wykorzystaniem fraz rollup, cube Frazy cube, rollup, grouping sets umożliwiają rozszerzoną

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 6 Wyzwalacze Wprowadzenie Tworzenie wyzwalacza Wyzwalacze typu,,po'' Wyzwalacze typu,,zamiast''

Bardziej szczegółowo

Ref. 7 - Język SQL - polecenia DDL i DML

Ref. 7 - Język SQL - polecenia DDL i DML Ref. 7 - Język SQL - polecenia DDL i DML Wprowadzenie do języka SQL. Polecenia generujące strukturę bazy danych: CREATE, ALTER i DROP. Polecenia: wprowadzające dane do bazy - INSERT, modyfikujące zawartość

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

SQL :: Data Definition Language

SQL :: Data Definition Language SQL :: Data Definition Language 1. Zaproponuj wydajną strukturę danych tabela) do przechowywania macierzy o dowolnych wymiarach w bazie danych. Propozycja struktury powinna zostać zapisana z wykorzystaniem

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

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

Plan wykładu BAZY DANYCH II WYKŁAD 3. Zasięg zmiennych. Zasięg zmiennych Plan wykładu BAZY DANYCH II WYKŁAD 3 Zasięg zmiennych Zmienne powiązane Instrukcje warunkowe Pętle Pobieranie danych SQL w PL/SQL Rekordy dr inż. Agnieszka Bołtuć Zasięg zmiennych Zmienna jest dostępna

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 (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

Hurtownia Świętego Mikołaja projekt bazy danych

Hurtownia Świętego Mikołaja projekt bazy danych Aleksandra Kobusińska nr indeksu: 218366 Hurtownia Świętego Mikołaja projekt bazy danych Zaprezentowana poniżej baza jest częścią większego projektu bazy danych wykorzystywanej w krajowych oddziałach wiosek

Bardziej szczegółowo