POSTGRESQL (Postgres)

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

Download "POSTGRESQL (Postgres) http://www.postgresql.org/docs/9.0/static/index.html http://www.postgresql.org/docs/9.1/static/index.html"

Transkrypt

1 POSTGRESQL (Postgres) PostgreSQL obiektowo-relacyjny SZBD oparty na Postgresie rozwijanym w University of California at Berkeley, Computer Science Department. POSTGRES pierwszy wprowadził wiele konstrukcji, które potem zostały wprowadzone do innych komercyjnych systemów. PostgreSQL jest potomkiem oryginalnego, otwartego kodu opracowanego w Uniwersytecie w Berkeley. W wielu miejscach podobny do Oracle z PL/SQL. Uważany za wzorcowy system. W dokumentacji częste porównania ze Standardem SQL. psql standardowy interaktywny program kliencki PostgreSQL: $ psql mydb \q - wyjście z psql 1

2 Rozszerzenia proceduralne SQL Standard SQL/PSM (SQL/Persistent Stored Modules) Microsoft, Sybase TransactSQL Oracle PL/SQL DB2 SQL/PL PostgreSQL PL/pgSQL, PL/PSM MySQL MySQL SQL/PSM 2

3 Warto zwrócić uwagę w PostgreSQL v Open Source v Reguły v Typy złożone: enum, array, wierszowy, rekordowy (tworzony przy użyciu CREATE TYPE) v Wzorce przy tworzeniu bazy danych v Definiowanie zdarzeń v Składowanie danych metodą TOAST 3

4 Klaster, baza danych, schemat Klaster zbiór baz danych zarządzany przez pojedynczą instancję serwera PostgreSQL. Baza danych (w standardzie katalog) składa się ze schematów. CREATE SCHEMA myschema; database.schema.table DROP SCHEMA myschema [CASCADE]; CREATE SCHEMA schemaname AUTHORIZATION username; -- utworzenie schematu i ustalenie właściciela schematu Dla każdej bd automatycznie tworzony jest domyślny schemat public SET search_path TO myschema; -- bieżący schemat 4

5 SQL SELECT version(); SELECT current_date; SELECT random(); SELECT * FROM Osoby ORDER BY nazwisko LIMIT 5; -- wyświetlone 5 wierszy SELECT * FROM Osoby ORDER BY nazwisko LIMIT 3 OFFSET 3; -- wyświetlone 3 wiersze poczynając od 4 Kolejność ewaluacji podwyrażeń nie jest zdefiniowana (optymalizator może sam sobie wybrać kolejność). 5

6 Tworzenie tabeli CREATE TABLE Cities ( name varchar(80) PRIMARY KEY, location point); CREATE TABLE Weather ( city varchar(80) REFERENCES Cities(name), temp_lo int, temp_hi int, prcp real, date date); Point typ danych specyficzny dla PostgreSQL. 6

7 SERIAL, DEFAULT CREATE TABLE Products ( product_no SERIAL PRIMARY KEY, name text, price numeric DEFAULT 9.99, data timestamp DEFAULT now() ); SERIAL - generowanie jednoznacznego numeru (realizowane wewnętrznie przez sekwencję) Text = Varchar = Character Varying (do ok. 1GB) 7

8 Sekwencje CREATE SEQUENCE numer START 101; SELECT nextval('numer'); nextval currval('numer') W Oracle podobnie ale jest używana notacja obiektowa numer.nextval, numer.currval. 8

9 Funkcje warunkowe CASE WHEN condition THEN result [WHEN...] [ELSE result] END COALESCE(value [,...]) NULLIF(value1, value2) - if value1=value2 then null GREATEST(value [,...]) LEAST(value [,...]) 9

10 Określanie (konwersja) typu Specyfikacja typu wartości: SELECT text 'Origin' AS "label", point '(0,0)' AS "value"; label value Origin (0,0) (1 row) lub CAST('2.2' AS REAL); 10

11 Systemowe kolumny tabeli v v v v OID identyfikator obiektowy wiersza dla tabel (obiektowych) tworzonych z opcją WITH OIDS tableoid identyfikator tabeli; użyteczne przy hierarchiach tabel xmin id transakcji wstawiającej/aktualizującej wiersz cmin id modyfikującej instrukcji w ramach transakcji v xmax - id transakcji usuwającej wiersz lub 0 v cmax id instrukcji usuwającej lub 0 v ctid fizyczne miejsce wiersza (aktualne dopóki wiersz nie zmieni położenia w pliku). 11

12 ALTER TABLE ALTER TABLE products ADD COLUMN description text CHECK (description <> ''); ALTER TABLE products DROP COLUMN description; ALTER TABLE products DROP COLUMN description CASCADE; -- usunięcie kolumny razem z więzami klucza obcego ALTER TABLE products ADD FOREIGN KEY (product_group_id) REFERENCES product_groups; ALTER TABLE products ALTER COLUMN product_no SET NOT NULL; -- dodanie więzów NOT NULL ALTER TABLE products ALTER COLUMN price SET DEFAULT 7; ALTER TABLE products DROP CONSTRAINT some_name; ALTER TABLE prods ALTER COLUMN price TYPE numeric(10,2); ALTER TABLE prods RENAME COLUMN prod_no TO prod_numb; ALTER TABLE products RENAME TO items; 12

13 Instrukcje SQL INSERT INTO Weather VALUES ('San Francisco', 46, 50, 0.25, ' '); INSERT INTO Cities VALUES ('San Francisco', '(-194.0, 53.0)'); COPY Weather FROM '/home/user/weather.txt'; SELECT city, (temp_hi+temp_lo)/2 AS temp_avg, date FROM Weather; SELECT * FROM Weather INNER JOIN Cities ON (Weather.city = Cities.name); INSERT INTO Products (product_no, name, price) VALUES (1, 'Cheese', 9.99), (2, 'Bread', 1.99), (3, 'Milk', 2.99); 13

14 DISTINCT ON SELECT DISTINCT ON(deptno) deptno, ename FROM Emp; Wszystkie wiersze z tą samą wartością deptno są uważane jako duplikaty. Z tego zbioru jest wybierany jeden reprezentant. Nie występuje w Standardzie. SELECT DISTINCT ON (expression [, expression...]) 14

15 Operatory zbiorowe query1 UNION [ALL] query2 query1 INTERSECT [ALL] query2 query1 EXCEPT [ALL] query2 ALL bez eliminacji duplikatów 15

16 Akcje referencyjne RESTRICT, NO ACTION zapobiega usunięciu wiersza powiązanego więzami klucza obcego. - NO ACTION sprawdzanie więzów przełożone na koniec transakcji, - RESTRICT sprawdzanie natychmiast. CASCADE usuń również powiązane wiersze. SET NULL, SET DEFAULT (ale jeśli wartość domyślna nie spełnia warunku klucza obcego, cała operacja usunięcia nie powiedzie się). 16

17 Rozszerzalność SQL v v v v Typy danych Funkcje Reguły Wyzwalacze 17

18 Typy danych v v v v bazowe w SQL (w tym boolean) dziedziny - typ bazowy z więzami spójności, tworzone przez CREATE DOMAIN złożone w tym CREATE TYPE pseudo-typy - nie mogą być typami danych kolumn w tabeli ani atrybutów typów złożonych; możliwe jako typy argumentów i wyników funkcji np. any - dowolny typ danych, record - dowolny typ wierszowy polimorficzne - pseudotypy: anyelement, anyarray, anyenum. Funkcje, które je używają, nazywają się polimorficzne. 18

19 Typy enumeracyjne CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy'); CREATE TABLE Person ( name text, current_mood mood ); INSERT INTO Person VALUES ('Moe', 'happy'); SELECT * FROM Person WHERE current_mood = 'happy'; name current_mood Moe happy (1 row) Uporządkowanie wartości zgodne z kolejnością w definicji typu 19

20 Typy tablicowe (array) CREATE TABLE Sal_emp ( Name text, Pay_by_quarter integer[], Schedule text[][] ); Również składnia ze Standardu (długości wektorów nie są sprawdzane): Pay_by_quarter integer ARRAY[4], 20

21 Typy rekordowe CREATE TYPE inventory_item AS ( name text, supplier_id integer, price numeric ); CREATE TABLE on_hand ( item inventory_item, count integer ); INSERT INTO on_hand VALUES (ROW('fuzzy dice', 42, 1.9), 100); Inny zapis konstruktora ROW: ' (''fuzzy dice'', 42, 1.99) ' W typie rekordowym nie ma więzów spójności (na razie). 21

22 Konstruktor rekordu - ROW SELECT ROW(1,2.5,'this is a test'); SELECT ROW(T.f1,T.f2, 42) FROM T; 22

23 Typ wierszowy dla tabeli CREATE TABLE Inventory_item ( name text, supplier_id integer REFERENCES suppliers, price numeric CHECK (price > 0) ); Automatycznie jest tworzony typ rekordowy odpowiadający wierszom tej tabeli o tej samej nazwie Inventory_item W typie rekordowym nie są brane pod uwagę więzy spójności. 23

24 CREATE DOMAIN CREATE DOMAIN US_postal_code AS TEXT CHECK( VALUE ~ '^\\d{5}$' OR VALUE ~ '^\\d{5}-\\d{4}$' ); CREATE TABLE US_snail_addy ( address_id SERIAL PRIMARY KEY, street1 TEXT NOT NULL, street2 TEXT, street3 TEXT, city TEXT NOT NULL, postal US_postal_code NOT NULL); 24

25 Funkcje SQL -- Ciąg instrukcji SQL. -- Ostatnia instrukcja zwraca rezultat funkcji - musi być SELECT, chyba, że typ funkcji jest określony jako void (wtedy jest procedurą). -- Ciało funkcji w postaci napisu (string) z separatorami albo ' albo $<znacznik>$ -- Nie można używać instrukcji dotyczących transakcji. CREATE FUNCTION clean_emp() RETURNS void AS 'DELETE FROM emp WHERE salary < 0; ' LANGUAGE SQL; SELECT clean_emp(); clean_emp (1 row) 25

26 Przykłady funkcji CREATE FUNCTION tf1 (integer, numeric) RETURNS numeric AS $$ UPDATE Bank SET balance = balance - $2 WHERE accountno = $1; SELECT balance FROM Bank WHERE accountno = $1; $$ LANGUAGE SQL; Parametry funkcji: $1, $2, - mogą być typu wierszowego CREATE FUNCTION double_salary (Emp) RETURNS numeric AS $$ SELECT $1.salary * 2 AS salary; $$ LANGUAGE SQL; SELECT ename, double_salary(emp.*) FROM Emp; 26

27 Przykład Funkcja typu wierszowego: CREATE FUNCTION new_emp(text) RETURNS Emp AS $$ SELECT $1 AS name, AS salary; $$ LANGUAGE SQL; SELECT (new_emp('kowalski')).name; -- konieczne nawiasy name Kowalski 27

28 Kategorie stabilności funkcji informacja dla optymalizatora v v v v Zmienna (volatile) każde wywołanie może zwracać inną wartość, funkcja może zmienić stan bazy danych. Nie poddaje się optymalizacji. Stabilna (stable) - każde wywołanie dla tych samych argumentów zwraca tę samą wartość w ramach wykonania aktualnej instrukcji SQL, funkcja nie zmienia stanu bazy danych. Niezmienna (immutable) - każde wywołanie dla tych samych argumentów zwraca zawsze tę samą wartość, funkcja nie zmienia stanu bazy danych. W CREATE FUNCTION określone przez słowa kluczowe: IMMUTABLE STABLE VOLATILE 28

29 Reguły Query rewrite rule system reguły przekształcania zapytań działają po zbudowaniu drzewa zapytania przez parser przed skierowaniem drzewa zapytania do optymalizatora. Podobne do wyzwalaczy. Np. typ SERIAL jest realizowany przy pomocy sekwencji. Użycie perspektywy jest realizowane wewnętrznie za pomocą tabeli i reguły np. CREATE VIEW Myview AS SELECT * FROM Mytab; Realizowane jako: CREATE TABLE Myview (te same kolumny jak w mytab); CREATE RULE "_RETURN" AS ON SELECT TO Myview DO INSTEAD SELECT * FROM Mytab; 29

30 Składnia reguły CREATE RULE name AS ON event TO object DO [ ALSO INSTEAD ] { NOTHING command (command;... ) } - w przypadku event=select tylko jedno command Przykład CREATE RULE MyTab_ins_protect AS ON INSERT TO MyTab DO INSTEAD NOTHING; Aby zrealizować modyfikację danych poprzez perspektywę, trzeba dla niej napisać odpowiednia regułę. 30

31 PL/pgSQL Proceduralny język do zapisu funkcji, wyzwalaczy. Kod składowany i wykonywany po stronie serwera bazy danych zmniejsza ruch w sieci między klientem a serwerem. Funkcje mogą być typu void oraz mieć parametry wyjściowe (czyli mieć charakter procedur). Blok: [ <<label>> ] [ DECLARE deklaracje ] BEGIN instrukcje EXCEPTION WHEN warunek THEN instrukcje_obsługi_wyjątków END [label] 31

32 Przykład funkcji w PL/pgSQL CREATE FUNCTION somefunc() RETURNS integer AS $$ << outerblock >> DECLARE quantity integer := 30; BEGIN RAISE NOTICE 'Quantity here is %', quantity; -- Prints 30 quantity := 50; DECLARE quantity integer := 80; BEGIN RAISE NOTICE 'Quantity here is', quantity; -- Prints 80 RAISE NOTICE 'Outer quantity is', outerblock.quantity; -- Prints 50 END; RAISE NOTICE 'Quantity here is %', quantity; -- Prints 50 RETURN quantity; END outerblock; $$ LANGUAGE plpgsql; 32

33 Aliasy dla parametrów funkcji CREATE FUNCTION sales_tax(subtotal real) RETURNS real AS $$ BEGIN RETURN subtotal * 0.06; END; $$ LANGUAGE plpgsql; CREATE FUNCTION sum_n_product( x int, y int, OUT sum int, OUT prod int) $$ BEGIN sum := x + y; prod := x * y; END;$$ LANGUAGE plpgsql; AS 33

34 Klauzula INTO SELECT select_expressions INTO [STRICT] target FROM...; INSERT... RETURNING expressions INTO [STRICT] target; UPDATE... RETURNING expressions INTO [STRICT] target; DELETE... RETURNING expressions INTO [STRICT] target; STRICT: zgłaszane są wyjątki NO_DATA_FOUND i TOO_MANY_ROWS; bez STRICT: wynikiem pierwszy wiersz lub NULLe. BEGIN SELECT * INTO STRICT myrec FROM Emp WHERE ename = x; EXCEPTION WHEN NO_DATA_FOUND THEN RAISE EXCEPTION 'employee % not found', x; WHEN TOO_MANY_ROWS THEN RAISE EXCEPTION 'employee % not unique', x; END; 34

35 PERFORM Gdy funkcja wywoływana w kodzie ma nie zwracać wartości: PERFORM create_mv('cs_session_page_requests_mv', my_query); 35

36 Dynamiczny SQL EXECUTE command-string [ INTO [STRICT] target ]; command-string napis instrukcji do wykonania dynamicznie target zmienna rekordowa, wierszowa lub lista zmiennych 36

37 Diagnostyka 1. Liczba wierszy zwróconych przez ostatnią instrukcję: GET DIAGNOSTICS integer_var = ROW_COUNT; 2. Zmienna FOUND czy ostania instrukcja (w tym PERFORM) zwróciła co najmniej jeden wiersz: SELECT * INTO myrec FROM Emp WHERE empname = myname; IF NOT FOUND THEN RAISE EXCEPTION 'employee % not found', myname; END IF; Instrukcja NULL i podnoszenie wyjątku: BEGIN y := x / 0; EXCEPTION WHEN division_by_zero THEN NULL; -- nic nie rób END; 37

38 Zmienne SQLSTATE i SQLERRM Wewnątrz sekcji wyjątków są dostępne informacje o zaistniałym błędzie: SQLSTATE numer błędu, SQLERRM komunikat o błędzie. 38

39 Instrukcja RAISE RAISE level 'format' [, expression [,...]]; level = DEBUG, LOG, INFO, NOTICE, WARNING, EXCEPTION RAISE NOTICE 'Calling cs_create_job(%)', v_job_id; 39

40 Gdy typem wyniku funkcji jest SETOF sometype Budowa zbioru wyników dla funkcji za pomocą RETURN NEXT expression,.., expression; -- zwraca wiersz RETURN QUERY query; -- zwraca zbiór wierszy Zakończenie za pomocą RETURN bez podawania wartości. Początek przykładu: CREATE TABLE Foo ( fooid INT, foosubid INT, fooname TEXT); INSERT INTO Foo VALUES (1, 2, 'three'); INSERT INTO Foo VALUES (4, 5, 'six'); 40

41 CREATE OR REPLACE FUNCTION get() RETURNS SETOF Foo AS $BODY$ DECLARE r Foo%rowtype; BEGIN FOR r IN SELECT * FROM Foo WHERE fooid > 0 LOOP RETURN NEXT r; -- przekaż aktualny wiersz END LOOP; RETURN; -- koniec wykonywania funkcji END $BODY$ LANGUAGE 'plpgsql'; SELECT * FROM get(); 41

42 Wyzwalacze Definiowane przez bezparametrową funkcję typu trigger (w nagłówku RETURNS trigger). Rodzaje: [wierszowe dla instrukcji] [BEFORE AFTER] [INSERT DELETE UPDATE]. Funkcje wyzwalaczy dla instrukcji powinny zwracać (przez RETURN) NULL. Funkcje wyzwalaczy wierszowych BEFORE zwracają: NULL oznacza nie wykonywać operacji; przekazywany przez funkcję wiersz (przy INSERT, UPDATE) - zostaje wstawiony do tabeli a przy DELETE - usunięty. Jeśli kilka wyzwalaczy: wyjście z poprzedniego jest przekazywane na wejście następnego (w kolejności alfabetycznej nazw). 42

43 Funkcje wyzwalaczy w PL/pgSQL NEW, OLD - dane typu RECORD Przykład: CREATE TABLE Emp ( empname text, salary integer, last_date timestamp, last_user text); CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON Emp FOR EACH ROW EXECUTE PROCEDURE emp_stamp(); 43

44 CREATE FUNCTION emp_stamp() RETURNS trigger AS $$ BEGIN -- Sprawdzenie czy podano nazwisko i zarobki IF NEW.empname IS NULL THEN RAISE EXCEPTION 'empname cannot be null'; END IF; IF NEW.salary IS NULL THEN RAISE EXCEPTION '% cannot have null salary', NEW.empname; END IF; IF NEW.salary < 0 THEN RAISE EXCEPTION '% has negative salary', NEW.empname; END IF; -- Zapisz kto ustalił zarobki pracownika i kiedy NEW.last_date := current_timestamp; NEW.last_user := current_user; RETURN NEW; END; $$ LANGUAGE plpgsql ; 44

45 Dziedziczenie na poziomie tabel CREATE TABLE Cities( name text, population real, altitude int); (nie typów danych) CREATE TABLE Capitals(state char(2)) INHERITS (Cities); SELECT name, altitude FROM Cities WHERE altitude > 500; SELECT name, altitude FROM ONLY Capitals WHERE altitude > 500; ONLY może być użyte w instrukcjach SELECT, UPDATE i DELETE 45

46 Partycjonowanie przez dziedziczenie 1. Utwórz tabelę nadrzędną, z której partycje będą dziedziczyć. Ta tabela zwykle nie ma danych. 2. Utwórz tabele podrzędne do przechowywania partycji. 3. Utwórz warunki CHECK określające, jakie dane mają należeć do danej partycji w oparciu o wartości w kolumnie klucza partycji (rozłączne). 4. Utwórz indeksy na partycjach w tym ewentualnie na kolumnach klucza w każdej partycji (ewentualnie UNIQUE). 5. Napisz wyzwalacz dla tabeli nadrzędnej wstawiania danych do odpowiedniej partycji. 6. Ustaw parametr konfiguracyjny constraint_exclusion na on aby optymalizator skorzystał z warunków rozłączności. 46

47 Przykład CREATE TABLE Klienci( Id_klienta int, Nazwisko Text, Adres Text, Region Text); CREATE TABLE KliencizMazowsza( CHECK (Region = Mazowsze )) INHERITS (Klienci); CREATE INDEX Nazw_Index ON KliencizMazowsza(Nazwisko)... CREATE TRIGGER insert_klienci_trigger BEFORE INSERT ON Klienci FOR EACH ROW <funkcja wstawiająca klienta do odpowiedniej partycji> 47

48 Geometryczne typy danych 48

49 Tworzenie obiektów typu XML Zgodnie ze standardem: XMLPARSE (DOCUMENT '<?xml version="1.0"?> <book><title>manual</title><chapter>...</chapter></book>') XMLPARSE (CONTENT 'abc<foo>bar</foo><bar>foo</bar>') W drugim przypadku może być więcej niż jeden element główny. Dodatkowo (tak jak dla innych typów) określenie typu: xml '<foo>bar</foo>' lub '<foo>bar</foo>'::xml Nie ma walidacji względem DTD lub XML Schema. W drugą stronę konstrukcja standardu: XMLSERIALIZE ( { DOCUMENT CONTENT } value AS type ) Dodatkowo: cast 49

50 Funkcja xmlelement SELECT xmlelement(name foo, xmlattributes('xyz' as bar), xmlelement(name abc), xmlcomment('test'), xmlelement(name xyz)); xmlelement <foo bar="xyz"><abc/><!--test--><xyz/></foo> 50

51 Wyszukiwanie w dokumencie XML xpath(xpath, xml) -- wynikiem tablica wartości XML wskazywanych przez ścieżkę xpath 51

52 Mapowanie tabel na XML tabletoxml(tablename) <tablename> <row> <columnname1>data</columnname1> <columnname2>data</columnname2> </row> <row>... </row>... </tablename> Podobnie querytoxml, cursortoxml. 52

53 Funkcje tabelowe CREATE TABLE Foo (fooid int, foosubid int, fooname text); CREATE FUNCTION getfoo(int) RETURNS SETOF Foo AS $$ SELECT * FROM Foo WHERE fooid = $1; $$ LANGUAGE SQL; SELECT * FROM getfoo(1) AS t1; SELECT * FROM Foo WHERE foosubid IN(SELECT foosubid FROM getfoo(foo.fooid) z WHERE z.fooid = Foo.fooid); CREATE VIEW vw_getfoo AS SELECT * FROM getfoo(1); SELECT * FROM vw_getfoo; 53

54 Tablice wielowymiarowe ARRAY SELECT ARRAY[1,2,3+4]; array {1,2,7} (1 row) Wielowymiarowa tablica: SELECT ARRAY[ARRAY[1,2], ARRAY[3,4]]; array {{1,2},{3,4}} (1 row) Wewnętrzne słowa ARRAY można opuszczać. 54

55 ARRAY CREATE TABLE Arr(f1 integer[], f2 integer[]); INSERT INTO Arr VALUES (ARRAY[1,2], ARRAY[3,4]); SELECT ARRAY[f1, f2, '{5,6}'::integer[]] FROM Arr; array {{1,2},{3,4},{5,6}} (1 row) 55

56 ARRAY od podzapytania SELECT ARRAY(SELECT oid FROM Pg_proc WHERE proname LIKE 'bytea%') AS Zbior; Zbior {2011,1954,1948,1952,1951,1244,1950,2005,1949,1953,2006} (1 row) Podzapytanie musi zwracać pojedyncza kolumnę! * 56

57 Typy złożone ARRAY CREATE TABLE Sal_emp ( name text, pay_by_quarter integer[], schedule text[][] ); Nieokreślony rozmiar tablic. Ograniczone tablice nie są jeszcze obsługiwane w wersji 8.3. Użycie z konstruktorem lub bez. INSERT INTO Sal_emp VALUES ('Bill', '{10000, 10000, 10000, 10000}', '{{"meeting", "lunch"}, {"training", "presentation"}}'); -- lub INSERT INTO Sal_emp VALUES ('Bill', ARRAY[10000, 10000, 10000, 10000], ARRAY[['meeting', 'lunch'], ['training', 'presentation']]); 57

58 Dostęp do tablic SELECT name FROM Sal_emp WHERE pay_by_quarter[1] <> pay_by_quarter[2]; SELECT pay_by_quarter[3] FROM Sal_emp; SELECT schedule[1:2][1:1] FROM Sal_emp -- wycinek tablicy WHERE name = 'Bill'; schedule {{meeting},{training}} (1 row) * 58

59 Aktualizacja tablic UPDATE sal_emp SET pay_by_quarter[1:2] = '{27000,27000}' WHERE name = 'Carol'; UPDATE sal_emp SET pay_by_quarter = '{25000,25000,27000,27000}' WHERE name = 'Carol'; * 59

60 Typy złożone (rekordowe) CREATE TYPE inventory_item AS ( name text, supplier_id integer, price numeric); CREATE TABLE On_hand ( item inventory_item, count integer); INSERT INTO On_hand VALUES (ROW('fuzzy dice', 42, 1.99), 1000); -- ROW można opuścić, gdy co najmniej dwa elementy na liście CREATE FUNCTION price_extension(inventory_item, integer) RETURNS numeric AS 'SELECT $1.price * $2' LANGUAGE SQL; SELECT price_extension(item, 10) FROM On_hand; 60

61 SELECT (item).name FROM On_hand WHERE (item).price > 9.99; -- wymagane ujęcie item w nawiasy! CREATE TYPE complex AS (r double precision, i double precision); CREATE TABLE Mytab(complex_col complex); INSERT INTO Mytab (complex_col) VALUES((1.1,2.2)); UPDATE Mytab SET complex_col = ROW(1.1,2.2) WHERE...; UPDATE Mytab SET complex_col.r = (complex_col).r + 1 WHERE...; INSERT INTO Mytab (complex_col.r, complex_col.i) VALUES(1.1, 2.2); 61

62 Indeksy B-drzewo, Hash oraz opracowane w Uniwersytecie w Berkley: GiST (Generalized Search Tree) i GIN (Generalized Inverted Index) W B drzewach NULLe idą na koniec. CREATE INDEX name ON table(column); -- B-drzewo CREATE INDEX name ON table USING hash(column); -- Hasz CREATE INDEX ind_nam ON People ((first_name ' ' last_name)); 62

63 Realizacja złożonej selekcji Użycie indeksów może być łączone przez optymalizator np. gdy klauzula: WHERE (A OR B) AND (C OR D) i są indeksy pozwalające wyznaczyć WHERE A, WHERE B, WHERE C, WHERE D każde wyszukiwanie produkuje wektor bitów, które następnie są razem łączony w wynik jak przy indeksach bitmapowych. Sel(R, (A OR B) AND (C OR D)) = (SEL(R,A) OR SEL(R,B)) AND (SEL(R,C) OR SEL(R,D)) 63

64 Indeksy częściowe Określone na podzbiorze zbioru wierszy określonym przez predykat indeksu. Można w ten sposób uniknąć indeksowania wartości, które często występują i dla których użycie indeksu jest niewskazane. CREATE TABLE Access_log (url varchar, client_ip inet,... ); CREATE INDEX access_log_client_ip_ix ON Access_log (client_ip) WHERE NOT (client_ip > inet ' ' AND client_ip < inet ' '); Indeks zostanie np. użyty dla: SELECT * FROM Access_log WHERE client_ip = inet ' '; CREATE INDEX orders_unbilled_index ON Orders (order_nr) WHERE billed IS NOT true; 64

65 Operator CLUSTER na tabeli grupujący rekordy tabeli (1) CLUSTER tablename USING indexname; Indeks musi być wcześniej utworzony. System sortuje plik danych zgodnie z porządkiem określonym przez indeks. Aby optymalizator wziął dokonane pogrupowanie pod uwagę trzeba wykonać instrukcję ANALYZE. Kolejne UPDATEy mogą zaburzyć porządek klastra. Dokonywać częstych powtórzeń CLUSTER np. CLUSTER; -- dokonuje reklastrowania wszystkich pogrupowanych tabel. Operacja poniższa może być szybsza niż (1): CREATE TABLE newtable AS SELECT * FROM table ORDER BY columnlist; 65

66 Transakcja BEGIN; -- początek transakcji UPDATE Accounts SET balance = balance WHERE name = 'Alice'; -- etc etc COMMIT/ROLLBACK/ROLLBACK TO savepoint; Gdy nie ma BEGIN - każda instrukcja jest osobną transakcją. 66

67 Współbieżność: model MVCS (Multiversion Concurrency Control) Przy odczycie nie ma blokad wykorzystywana jest jednolita wersja danych tak jak w Oracle. Oprócz tego są blokady zakładane explicite zarówno na poziomie wierszy jak i tabel. Są tylko dwa różne poziomy izolacji (tak jak w Oracle) o nazwach: READ COMMITTED i SERIALIZABLE. 67

68 READ COMMITTED Read Committed jest domyślny. Zapytanie korzysta ze stanu bazy danych, jaki był w chwili rozpoczynania się zapytania uwzględniający tylko zmiany zatwierdzone. Przy UPDATE, DELETE, SELECT z FOR UPDATE i SELECT z FOR SHARE wyszukiwanie wierszy odbywa się tak samo jak przy SELECT i dotyczy wierszy także gdy zostały w trakcie zmienione wyszukiwanie czeka na zakończenie transakcji, która je zmienia - (gdy uzyskane zostaną blokady do update u sprawdzane jest ponownie czy spełniają one warunek wyszukiwania). (*) SELECT Ename FROM Emp WHERE Deptno=123 FOR SHARE; - założenie blokad S na spełniające wiersze 68

69 SERIALIZABLE Zapytanie korzysta ze stanu bazy danych, jaki był w chwili rozpoczynania się transakcji uwzględniający tylko zmiany zatwierdzone. Przy UPDATE, DELETE, SELECT FOR UPDATE i SELECT FOR SHARE wyszukiwanie wierszy odbywa się tak samo jak przy SELECT i dotyczy tych wierszy także gdy zostały w trakcie zmienione wyszukiwanie czeka na zakończenie transakcji, która je zmienia. Gdy wiersz nie uległ zmianie od chwili rozpoczęcia się transakcji, transakcja zakłada blokady i wykonuje zmiany. Gdy wiersz uległ zmianie, transakcja zostaje wycofana i aplikacja musi ją ponowić. Jest gwarancja, że transakcja działa na spójnych danych nie zmienianych przez inne transakcje, ale nie zapobiega fantomom, czyli nie gwarantuje szeregowalności (wymagane jest założenie explicite odpowiednich blokad). 69

70 Rodzaje blokad na tabeli ACCESS SHARE do wykonania zwykłego SELECT; ROW SHARE (IS) do SELECT FOR UPDATE i SELECT FOR SHARE; ROW EXCLUSIVE (IX) do INSERT, DELETE, UPDATE; SHARE UPDATE EXCLUSIVE do VACUUM, ANALYZE, CREATE INDEX CONCURRENTLY; SHARE (S) do CREATE INDEX (bez CONCURRENTLY); SHARE ROW EXCLUSIVE SHARE i ROW ECLUSIVE; EXCLUSIVE (X) przy pewnych operacjach na katalogu systemowym; ACCESS EXCLUSIVE do ALTER TABLE, DROP TABLE, TRUNCATE, REINDEX, CLUSTER, VACUUM FULL 70

71 Blokady explicite na tabelę LOCK TABLE Nazwa IN MODE; 71

72 Blokady wierszowe Tylko dwa typy: SHARE i EXCLUSIVE. Informacja o blokadzie na wierszu nie jest trzymana w RAM, tylko razem z wierszem danych na dysku (tak jak w Oracle). Blokada na wierszu nie blokuje jego odczytu tylko jego zapis. Gdy wiersz jest zmieniany blokada EXCLUSIVE. Przy SELECT FOR UPDATE jest zakładana blokada EXCLUSIVE nie ma osobnego typu blokady UPDATE. Blokada SHARE jest zakładana przy SELECT FOR SHARE. Samo SELECT nie zakłada blokady SHARE na wierszach. 72

73 Uprawnienia obiektowe SELECT, INSERT, UPDATE, DELETE, REFERENCES, TRIGGER, CREATE, CONNECT, TEMPORARY, EXECUTE, USAGE. GRANT UPDATE ON accounts TO joe; 73

74 Aby móc używać czyjegoś schematu użytkownik musi uzyskać uprawnienie USAGE od właściciela (podobnie, aby tworzyć obiekty, uprawnienie CREATE do schematu). Każdy użytkownik mający uprawnienie logowania się do bazy danych, ma uprawnienia CREATE i USAGE w schemacie public. Właściciel bazy danych może odwołać te domyślne uprawnienia: REVOKE CREATE ON SCHEMA public FROM PUBLIC; 74

75 Wzorce użycia schematów v v v Jeden schemat public tak jakby nie było schematów domyślnie wybierany jest public. Każdy użytkownik ma zakładany schemat identyczny ze swoją nazwą użytkownika. Wtedy system jako domyślny schemat bierze właśnie ten schemat. Można usunąć schemat public. Wiele schematów dedykowanych do obsługi specyficznych funkcji/użytkowników. 75

76 Katalog systemowy Każda baza danych zawiera schemat pg_catalog, w którym znajdują się systemowe tabele/perspektywy. Nazwy obiektów w tym schemacie zaczynają się od pg, np.pg_class katalog obiektów jak tabele, perspektywy, indeksy; pg_attribute kolumny tabel; pg_database bazy danych (jeden katalog na klaster). SELECT p.relname, c.name, c.altitude FROM Cities c, PG_class p WHERE c.altitude > 500 and c.tableoid = p.oid; Relname name altitude cities Las Vegas 2174 cities Mariposa 1953 capitals Madison

77 Tworzenie bazy danych CREATE TABLESPACE sample_ts OWNER <db_owner> LOCATION 'c:/pgdata/sampledb/system'; CREATE DATABASE sample_db OWNER <db_owner> TEMPLATE <template> TABLESPACE sample_ts; Template0 oryginalna, systemowa pusta baza danych Template1 systemowa dopasowana baza danych możliwe dodawanie obiektów i cech (domyślnie) Ewentualnie inna bd nieaktywna. 77

78 EXPLAIN EXPLAIN SELECT * FROM tenk1; QUERY PLAN Seq Scan on tenk1 (cost= rows=10000 width=244) 1. Szacowany koszt wstępny przed rozpoczęciem przekazywania wyników np. sortowanie (domyślnie l. operacji We/Wy) 2. Szacowany koszt całkowity (domyślnie l. operacji We/Wy) 3. Szacowana liczba wynikowych wierszy. 4. Szacowany oczekiwany rozmiar wiersza (w bajtach). 78

79 Statystyki używane przez optymalizator SELECT relname, relkind, reltuples, relpages FROM pg_class WHERE relname LIKE 'tenk1%'; Relname relkind reltuples relpages tenk1 r tenk1_hundred i tenk1_thous_tenthous i tenk1_unique1 i tenk1_unique2 i (5 rows) r tabela, i - indeks Liczba wierszy, Liczba stron 79

80 Statystyki obliczane przez ANALYZE Domyślnie ANALYZE jest realizowane przez proces drugoplanowany działający w tle. Oszacowanie selektywności wyszukiwania przez indeks założony na danej kolumnie. Dla każdej tabeli i kolumny np. Liczba różnych wartości w kolumnie Jaki procent wartości w kolumnie stanowią NULL Lista wartości, które wielokrotnie się powtarzają 80

81 Instrukcje administracyjne VACUUM odśmiecanie (garbage-collection) miejsca na dysku i opcjonalnie, przy okazji ANALYZE. REINDEX przebudowa indeksów. 81

82 Powiadamianie o zajściu zdarzenia W ramach jednej bazy danych: LISTEN nazwa_zdarzenia; (na czas aktualnej sesji) NOTIFY nazwa_zdarzenia; UNLISTEN nazwa_zdarzenia; Np. Nowy_klient_dodany_do_bazy, Klient_nie_wypłacalny. Projektant bazy danych ustala nazwy zdarzeń. Dodatkowe informacje są przekazywane poprzez tabele w indywidualny sposób. Zwykle instrukcja NOTIFY występuje w regule automatycznie odpalanej. Jeśli występuje w transakcji, akcja powiadamiania zachodzi po wykonaniu COMMIT. Powiadomienie zależy od języka aplikacji np. w C funkcja PQnotifies sprawdza, czy otrzymano powiadomienie. 82

83 Przykład ujawnienie wierszy w tabeli przez perspektywę CREATE VIEW phone_num AS SELECT name, phone FROM phone_data WHERE phone NOT LIKE '412%'; CREATE FUNCTION tricky(text, text) RETURNS bool AS $$ BEGIN RAISE NOTICE '% => %', $1, $2; RETURN true; END $$ LANGUAGE plpgsql COST ; SELECT * FROM phone_num WHERE tricky(name, phone); -- COST wskazówka dla optymalizatora - oczekiwany koszt realizacji funkcji 83

84 Przestrzeń tabel CREATE TABLESPACE space1 LOCATION '/mnt/sda1/postgresql/data'; CREATE TABLE foo(i int) TABLESPACE space1; Również baza danych może zostać utworzona w określonej przestrzeni tabel. 84

85 TOAST (The Oversized-Attribute Storage Technique). Stały rozmiar strony - 8kB Każdy wiersz tylko na jednej stronie. Gdy są kolumny dopuszczające większe rozmiary niż domyślnie 2000B, danej tabeli jest przyporządkowywana druga tabela do zapisywania dużych wartości w kolumnach. Duże obiekty są kompresowane albo składowane jako zbiór wierszy w tej dodatkowej tabeli. 85

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

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

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

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

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

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

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

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

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

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

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

Indeksowanie w bazach danych

Indeksowanie w bazach danych w bazach Katedra Informatyki Stosowanej AGH 5grudnia2013 Outline 1 2 3 4 Czym jest indeks? Indeks to struktura, która ma przyspieszyć wyszukiwanie. Indeks definiowany jest dla atrybutów, które nazywamy

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

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

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

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

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

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

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

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

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

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

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

DDL. Data Definition Language Definiowanie obiektów pomocniczych: domeny, sekwencje, ograniczenia, widoki

DDL. Data Definition Language Definiowanie obiektów pomocniczych: domeny, sekwencje, ograniczenia, widoki DDL Data Definition Language 1 Bazy Danych Wykład p.t. DDL Data Definition Language Definiowanie obiektów pomocniczych: domeny, sekwencje, ograniczenia, widoki Antoni Ligęza ligeza@agh.edu.pl http://galaxy.uci.agh.edu.pl/~ligeza

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

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

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

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

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

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

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

Bazy danych 6. Klucze obce. P. F. Góra Bazy danych 6. Klucze obce P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2018 Dygresja: Metody przechowywania tabel w MySQL Tabele w MySQL moga być przechowywane na kilka sposobów. Sposób ten (żargonowo:

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

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

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

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

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

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

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

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

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

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

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

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL Tutorial PostgreSQL 1. Instalacja na własnym komputerze: a. Zainstaluj program ze strony: https://www.postgresql.org/download/ Wersja odpowiednia dla systemu operacyjnego Linux, Mac, Windows Przy pierwszym

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

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

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

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

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

Autor: Joanna Karwowska

Autor: Joanna Karwowska Autor: Joanna Karwowska Klucz podstawowy PRIMARY KEY Klucz kandydujący UNIQUE Klucz alternatywny - klucze kandydujące, które nie zostały wybrane na klucz podstawowy Klucz obcy - REFERENCES Tworząc tabelę,

Bardziej szczegółowo

W PostgreSQL mamy do dyspozycji nie tylko funkcje wbudowane, ale również możemy tworzyć własne. Są one zapisywane w tabeli systemowej pg_proc.

W PostgreSQL mamy do dyspozycji nie tylko funkcje wbudowane, ale również możemy tworzyć własne. Są one zapisywane w tabeli systemowej pg_proc. PROCEDURY W PostgreSQL mamy do dyspozycji nie tylko funkcje wbudowane, ale również możemy tworzyć własne. Są one zapisywane w tabeli systemowej pg_proc. \df Aby wyświetlić wszystkie funkcje z argumentami

Bardziej szczegółowo

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u będziemy używać w taki sam sposób, jak wbudowanych funkcji

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

Bazy danych 9. SQL Klucze obce Transakcje

Bazy danych 9. SQL Klucze obce Transakcje Bazy danych 9. SQL Klucze obce Transakcje P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06 Klucze obce Klucze obce powiazanie indeksowanej kolumny jakiejś tabeli z indeksowana kolumna

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

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

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

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

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

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

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

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

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

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

Tabele wykorzystywane w przykładach

Tabele wykorzystywane w przykładach Tabele wykorzystywane w przykładach create table departamenty( dep_id serial primary key, nazwa_departamentu text ); Tabele używane w wybranych przkładach create table pracownicy ( emp_id serial primary

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

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

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2. Język SQL. Rozdział 9. Język definiowania danych DDL, część 2. Ograniczenia integralnościowe, modyfikowanie struktury relacji, zarządzanie ograniczeniami. 1 Ograniczenia integralnościowe Służą do weryfikacji

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

Monika Sychla 241858 Daniel Smolarek 241875. Projekt bazy danych

Monika Sychla 241858 Daniel Smolarek 241875. Projekt bazy danych Monika Sychla 241858 Daniel Smolarek 241875 Projekt bazy danych Naszym zadaniem było zaprojektowanie przykładowej bazy danych, w oparciu o zagadnienia jakie zostały wprowadzone w trakcie kursu z baz danych.

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

Instrukcje DML INSERT, UPDATE, DELETE. COPY

Instrukcje DML INSERT, UPDATE, DELETE. COPY Wprowadzenie do DML i DDL 1 Bazy Danych Wykład p.t. Instrukcje DML INSERT, UPDATE, DELETE. COPY Antoni Ligęza ligeza@agh.edu.pl http://galaxy.uci.agh.edu.pl/~ligeza Wykorzystano materiały: http: //www.postgresql.org/docs/8.3/interactive/index.html

Bardziej szczegółowo

SQL - DDL. 1 Tabele systemowe. 2 Typy danych

SQL - DDL. 1 Tabele systemowe. 2 Typy danych SQL - DDL DDL (ang. data definition language) jest częścią języka zapytań SQL obejmująca tworzenie i zarządzanie (modyfikację, usuwanie i przydzielanie uprawnień) obiektami w bazie danych (tabelami, perspektywami,

Bardziej szczegółowo

Ć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

Plan wykładu BAZY DANYCH II WYKŁAD 9. Dynamiczny SQL. Dynamiczny SQL 2012-01-20

Plan wykładu BAZY DANYCH II WYKŁAD 9. Dynamiczny SQL. Dynamiczny SQL 2012-01-20 Plan wykładu BAZY DANYCH II WYKŁAD 9 Dynamiczny SQL, NDS, EXECUTE IMMEDIATE, Pakiet DBMS_SQL, Obiekty w PL/SQL, Tworzenie, wywoływanie, dziedziczenie, etc. dr inż. Agnieszka Bołtuć Dynamiczny SQL Pozwala

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

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

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

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. Rozdział 13. Procedury wyzwalane. Cele stosowania procedur wyzwalanych. Definiowanie procedury wyzwalanej DML

Procedury wyzwalane. Rozdział 13. Procedury wyzwalane. Cele stosowania procedur wyzwalanych. Definiowanie procedury wyzwalanej DML Procedury wyzwalane Rozdział 13 Procedury wyzwalane procedury wyzwalane, cel stosowania, typy wyzwalaczy, wyzwalacze na poleceniach DML i DDL, wyzwalacze typu INSTEAD OF, przykłady zastosowania, zarządzanie

Bardziej szczegółowo

SQL język zapytań (query language) cz.1

SQL język zapytań (query language) cz.1 SQL język zapytań (query language) cz.1 Zapytanie SELECT - podstawy (3) SELECT A 1,A 2,...,A k (1) FROM R 1,R 2,,R n -- lista wyboru (atrybutów) -- relacje (lista FROM) (2) WHERE F -- warunek wyboru (selekcji)

Bardziej szczegółowo

Komunikacja z bazą danych psql

Komunikacja z bazą danych psql PostgreSQL jest systemem zarządzania relacyjnymi bazami danych rozprowadzanym na zasadach open source. Twórcą i właścicielem praw autorskich jest Uniwersytet Berkeley w Stanach Zjednoczonych. Ze wszystkich

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

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

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

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota Laboratorium nr 3 1 Bazy Danych Instrukcja laboratoryjna Temat: Wprowadzenie do języka SQL, tworzenie, modyfikacja, wypełnianie tabel 3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota 1)

Bardziej szczegółowo

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

Język PL/SQL. Rozdział 6. Procedury wyzwalane Język PL/SQL. Rozdział 6. Procedury wyzwalane Procedury wyzwalane, cele stosowania, typy wyzwalaczy, wyzwalacze na poleceniach DML i DDL, wyzwalacze typu INSTEAD OF, przykłady zastosowania, zarządzanie

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

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

Bazy danych 2. Wykład 5 Structured Query Language (SQL) c.d. DDL

Bazy danych 2. Wykład 5 Structured Query Language (SQL) c.d. DDL Bazy danych 2 Wykład 5 Structured Query Language (SQL) c.d. DDL Dziedzina (DOMAIN) Dziedzina to zdefiniowany przez uŝytkownika zbiór dopuszczalnych wartości definiowany niezaleŝnie od definicji tabel Składnia

Bardziej szczegółowo

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

Plan wykładu Projekt fizyczny bazy danych Wprowadzenie PL/SQL PL/SQL Cechy PL/SQL Plan wykładu Uzupełnienie projektu fizycznego Czym jest PL/SQL Bloki w PL/SQL Zmienne i stałe Instrukcje sterujące Wykorzystanie SQL w PL/SQL Kursory Wyjątki Projekt fizyczny bazy danych Braki projektu

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

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

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Wprowadzenie do projektowania i wykorzystania baz danych Relacje Wprowadzenie do projektowania i wykorzystania baz danych Relacje Katarzyna Klessa Dygresja nt. operatorów SELECT 2^2 SELECT 2^30 SELECT 50^50 2 Dygresja nt. operatorów SELECT 2^30 --Bitwise exclusive OR

Bardziej szczegółowo

Internetowe bazy danych

Internetowe bazy danych Wyższa Szkoła Technologii Teleinformatycznych w Świdnicy Internetowe bazy danych wykład 3 dr inż. Jacek Mazurkiewicz e-mail: Jacek.Mazurkiewicz@pwr.wroc.pl Typy tabel MySQL domyślny MyISAM inne możliwe:

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

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

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 5 Wprowadzenie Tworzenie i wykonywanie procedur i funkcji Instrukcja RETURN Parametry procedur i funkcji oraz ich przesyłanie Metadane

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