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

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

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

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

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

DECLARE typ [( )] [ NOT NULL ] [ { := DEFAULT } ];

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

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

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

Wstęp wprowadzający do laboratorium 2. mgr inż. Rafał Grycuk

Wstęp wprowadzający do laboratorium 2. mgr inż. Rafał Grycuk Wstęp wprowadzający do laboratorium 2 mgr inż. Rafał Grycuk Plan prezentacji 1. Czym jest T-SQL i czym się różni od standardu SQL 2. Typy zapytań 3. Zapytanie typu SELECT 4. Słowo o indeksach T-SQL (1)

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

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

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

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

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

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

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

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

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

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

Bardziej szczegółowo

Systemowe aspekty baz

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

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

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

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

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

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

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

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

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

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

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

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

Ć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

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

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

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

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

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

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

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

Październik 2015. Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska. Systemy baz danych - wykład III. dr inż. 1/40 Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Październik 2015 2/40 Plan wykładu Uzupełnienie projektu fizycznego Czym jest PL/SQL Bloki w PL/SQL Wykorzystanie 3/40 Projekt

Bardziej szczegółowo

Przestrzenne bazy danych Podstawy języka SQL

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

Bardziej szczegółowo

Relacyjne bazy danych. Podstawy SQL

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

Bardziej szczegółowo

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

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

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

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

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

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

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

Baza danych hotel Maciej Gerus 258583

Baza danych hotel Maciej Gerus 258583 Baza danych hotel Maciej Gerus 258583 Baza ta składa się z 7 tabel (jak widać na rysunku) i pozwala wirtualnie zapisywać (oraz analizować) niektóre uproszczone elementy pracy przedsiębiorstwa oferującego

Bardziej szczegółowo

Bartosz Jachnik - Kino

Bartosz Jachnik - Kino Bartosz Jachnik - Kino I. Opis bazy Prezentowana baza danych stworzona została na potrzeby prowadzenia kina. Zawiera ona 8 tabel, które opisują filmy grane w danym okresie w kinie, wraz ze szczegółowym

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

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

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

SQL w języku PL/SQL. 2) Instrukcje języka definicji danych DDL DROP, CREATE, ALTER, GRANT, REVOKE Instrukcje SQL dzielimy na następujące kategorie: 1) Instrukcje języka manipulowania danymi (DML) SELECT, INSERT, UPDATE, DELETE, SET TRANSACTION, EXPLAIN PLAN 2) Instrukcje języka definicji danych DDL

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

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

kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli

kończy wysyłanie danych do pliku tworzy strukturę tabeli wyświetla opis struktury tabeli zmiana nazwy tabeli usuwanie tabeli SPOOL moj_plik SPOOL OFF @ moj_ plik edit CREATE TABLE DESCRIBE ALTER TABLE RENAME DROP TABLE CONNECT CONNECT USER_NAME DISCONNECT EXIT zapisuje wszystkie wydane polecenia oraz ich wyniki do pliku moj_plik,

Bardziej szczegółowo

Monika Kruk Mariusz Grabowski. Informatyka Stosowana WFiIS, AGH 13 grudzień 2006

Monika Kruk Mariusz Grabowski. Informatyka Stosowana WFiIS, AGH 13 grudzień 2006 OBIEKTOWOŚĆ W BAZIE DANYCH ORACLE Monika Kruk Mariusz Grabowski Informatyka Stosowana WFiIS, AGH 13 grudzień 2006 Plan prezentacji kilka słów o bazie danych ORACLE rzecz o obiektach ORACLE tworzenie typów

Bardziej szczegółowo

Systemy GIS Tworzenie zapytań w bazach danych

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

Bardziej szczegółowo

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych Projektowanie bazy danych Jarosław Kuchta Projektowanie Aplikacji Internetowych Możliwości projektowe Relacyjna baza danych Obiektowa baza danych Relacyjno-obiektowa baza danych Inne rozwiązanie (np. XML)

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

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

Ć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

Bazy danych. Dr inż. Paweł Kasprowski

Bazy danych. Dr inż. Paweł Kasprowski Plan wykładu Bazy danych Podstawy relacyjnego modelu danych Dr inż. Paweł Kasprowski pawel@kasprowski.pl Relacyjne bazy danych Język SQL Zapytania SQL (polecenie select) Bezpieczeństwo danych Integralność

Bardziej szczegółowo

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

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1 Bazy danych Wykład IV SQL - wprowadzenie Copyrights by Arkadiusz Rzucidło 1 Czym jest SQL Język zapytań deklaratywny dostęp do danych Składnia łatwa i naturalna Standardowe narzędzie dostępu do wielu różnych

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

BAZY DANYCH PROJEKT. Tomasz Osmelak, 258441 Wrocław, 26.01.2014 Instytut Matematyczny Wydział Matematyki I Informatyki Uniwersytet Wrocławski

BAZY DANYCH PROJEKT. Tomasz Osmelak, 258441 Wrocław, 26.01.2014 Instytut Matematyczny Wydział Matematyki I Informatyki Uniwersytet Wrocławski Tomasz Osmelak, 258441 Wrocław, 26.01.2014 Instytut Matematyczny Wydział Matematyki I Informatyki Uniwersytet Wrocławski BAZY DANYCH PROJEKT Sprawdzający: dr hab. Robert Stańczy 1 Spis treści: 1. Schemat

Bardziej szczegółowo

2010-11-22 PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

2010-11-22 PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH PLAN WYKŁADU Bezpieczeństwo w języku SQL Użytkownicy Uprawnienia Role BAZY DANYCH Wykład 8 dr inż. Agnieszka Bołtuć OGRANICZENIA DOSTĘPU DO DANYCH Ograniczenie danych z tabeli dla określonego użytkownika

Bardziej szczegółowo

Tworzenie raportów XML Publisher przy użyciu Data Templates

Tworzenie raportów XML Publisher przy użyciu Data Templates Tworzenie raportów XML Publisher przy użyciu Data Templates Wykorzystanie Szablonów Danych (ang. Data templates) jest to jedna z metod tworzenia raportów w technologii XML Publisher bez użycia narzędzia

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

Intro. I.Wojnicki, ZTB:XML ZTB: XML. Igor Wojnicki. Katedra Informatyki Stosowanej, Akademia Górniczo-Hutnicza w Krakowie.

Intro. I.Wojnicki, ZTB:XML ZTB: XML. Igor Wojnicki. Katedra Informatyki Stosowanej, Akademia Górniczo-Hutnicza w Krakowie. Intro Igor Wojnicki (AGH, KIS) XML 18 grudnia 2013 1 / 37 ZTB: XML Igor Wojnicki Katedra Informatyki Stosowanej, Akademia Górniczo-Hutnicza w Krakowie 18 grudnia 2013 Intro Igor Wojnicki (AGH, KIS) XML

Bardziej szczegółowo

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

ORACLE (Wykład 1) aragorn.pb.bialystok.pl/~aonisko. Typy rozproszonych baz danych. Systemy klient-serwer. Klient-serwer: Przykład ORACLE (Wykład 1) aragorn.pb.bialystok.pl/~aonisko Typy rozproszonych baz Systemy typu klient-serwer (jeden serwer) Jednorodna rozproszona baza (kilka serwerow, jeden system zarzadzania baza ) Niejednorodna

Bardziej szczegółowo

Administracja i programowanie pod Microsoft SQL Server 2000

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

Bardziej szczegółowo

Bazy danych wykład szósty Więzy i wyzwalacze. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Bazy danych wykład szósty Więzy i wyzwalacze. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa) Bazy danych wykład szósty Więzy i wyzwalacze Konrad Zdanowski Uniwersytet Kardynała Stefana Wyszyńskiego, Warszawa szósty Więzy i wyzwalacze 1 / 35 Wstęp Wiemy jak nakładać pewne ograniczenia (więzy) w

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

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

Bardziej szczegółowo

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

Zbiór pytań nr 5. 2 Które stwierdzenie opisuje najlepiej zbiór uprawnień dostępny po wykonaniu

Zbiór pytań nr 5. 2 Które stwierdzenie opisuje najlepiej zbiór uprawnień dostępny po wykonaniu Zbiór pytań nr 5 1 Które stwierdzenie opisuje najlepiej zbiór uprawnień dostępny po wykonaniu connect athos/musketeer grant select,insert,update,delete on athos.services to porthos with grant option; grant

Bardziej szczegółowo

Zbiór pytań nr 2. 1 Tabela DEPARTMENTS ma następującą strukturę:

Zbiór pytań nr 2. 1 Tabela DEPARTMENTS ma następującą strukturę: Zbiór pytań nr 2 1 Tabela DEPARTMENTS ma następującą strukturę: Nazwa kolumny Typ danych Uwagi dept_id NUMBER(4) NOT NULL, PRIMARY KEY dept_name VARCHAR2(30) mgr_id NUMBER(6) location_id NUMBER(4) Które

Bardziej szczegółowo

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

Deklarowanie kursora. CURSOR nazwa [ ( param1 typ1 [,param2 typ2]... ) ] [RETURN typ zwracany] IS zapytanie SQL; Kursory Każde zapytanie SQL umieszczone w programie PLSQL jest wykonywane w tzw. obszarze roboczym lub inaczej obszarze kontekstu. PLSQL wykorzystuje ten obszar do przechowywania danych otrzymanych w wyniku

Bardziej szczegółowo

SQL/MySQL. Rafał Kern

SQL/MySQL. Rafał Kern SQL/MySQL Rafał Kern 1 SQL (Structured Query Language) Deklaratywny - opisujemy warunki, jakie musi spełniać wynik Służy do zarządzania danymi w relacyjnych bazach danych Składnia/zapytania SQL DML (Data

Bardziej szczegółowo

Marek Rakowski Podstawy zdania SELECT Strona 1 z 12

Marek Rakowski Podstawy zdania SELECT Strona 1 z 12 Marek Rakowski Podstawy zdania SELECT Strona 1 z 12 Podstawy języka SQL Co to jest SQL? Structured Query Language uchodzi za standard języka zapytań kierowanych do systemu zarządzania bazą danych. SQL

Bardziej szczegółowo

Zaawansowane funkcje SQL. Reguły, funkcje użytkownika w PostgreSQL, wyzwalacze

Zaawansowane funkcje SQL. Reguły, funkcje użytkownika w PostgreSQL, wyzwalacze PostgreSQL 1 Bazy Danych Zaawansowane funkcje SQL. Reguły, funkcje użytkownika w PostgreSQL, wyzwalacze Antoni Ligęza, Marcin Szpyrka Sławomir Lichoń Wykorzystano materiały: http://www.postgresql.org/docs/8.3/interactive/

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

BAZY DANYCH Cz III. Transakcje, Triggery

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

Bardziej szczegółowo

Wykład 3 2014-04-25 12:45 BD-1 W_3

Wykład 3 2014-04-25 12:45 BD-1 W_3 Wykład 3 SQL - język operacji na bazach danych Schemat przykładowej bazy danych Uczelnia Skrypt SQL - utworzenie bazy Uczelnia Polecenia selekcji i projekcji Interakcyjny dostęp do bazy danych 2014-04-25

Bardziej szczegółowo

Obiektowe bazy danych

Obiektowe bazy danych Obiektowe bazy danych 1 Plan rozdziału 2 Wprowadzenie obiektowy model danych Obiekty w bazie danych definiowanie i przechowywanie składowe i metody konstruktory referencje dziedziczenie i polimorfizm Kolekcje

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

TABUN_CMS. System zarządzania treścią dla dedykowanej grupy użytkowników. Tabun_CMS 2008 Marcin Biegun, Szymon Bąk

TABUN_CMS. System zarządzania treścią dla dedykowanej grupy użytkowników. Tabun_CMS 2008 Marcin Biegun, Szymon Bąk TABUN_CMS System zarządzania treścią dla dedykowanej grupy użytkowników Spis treści TABUN_CMS...1 Informacje wstępne...3 Cele wdrożenia systemu...3 Wykorzystane technologie...3 Ocena działania systemu...3

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 w praktyce. Miłej i owocnej nauki!!!

SQL w praktyce. Miłej i owocnej nauki!!! SQL w praktyce Niniejsza praca objęta jest prawami autorskimi. Nielegalne jest kopiowanie żadnej częsci tej pracy w żadnej postaci. Niezgodne z prawem tym bardziej jest udostępnianie innym tej pracy odpłatnie

Bardziej szczegółowo

Bazy danych 5. Samozłaczenie SQL podstawy

Bazy danych 5. Samozłaczenie SQL podstawy Bazy danych 5. Samozłaczenie SQL podstawy P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2007/08 Przykład kolejowy Tworzymy bazę danych zawierajac a (uproszczony) rozkład jazdy pociagów

Bardziej szczegółowo

1. Dodatkowe informacje. 2. Czynnoci wstpne. 3. Zadania

1. Dodatkowe informacje. 2. Czynnoci wstpne. 3. Zadania 1. Dodatkowe informacje 1.1. Kade zdanie SQL musi by zakoczone rednikiem (;). 1.2. Odwołanie do argumentu funkcji w ciele funkcji jest postaci $n, gdzie n jest numerem argumentu. 2. Czynnoci wstpne 2.1.

Bardziej szczegółowo

Podstawy języka SQL Co to jest SQL? Możliwości SQL SQL*Plus

Podstawy języka SQL Co to jest SQL? Możliwości SQL SQL*Plus Podstawy języka SQL Co to jest SQL? Structured Query Language uchodzi za standard języka zapytań kierowanych do systemu zarządzania bazą danych. SQL jest językiem deklaratywnym tj. takim, w którym istotne

Bardziej szczegółowo

Kowalski Marcin 156439 Wrocław, dn. 3.06.2009 Jaśkiewicz Kamil 148592. Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami

Kowalski Marcin 156439 Wrocław, dn. 3.06.2009 Jaśkiewicz Kamil 148592. Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami Kowalski Marcin 156439 Wrocław, dn. 3.06.2009 Jaśkiewicz Kamil 148592 Bazy Danych 1 Podstawy Projekt Temat: Baza danych do zarządzania projektami Spis treści Założenia Projektowe...1 Schemat Bazy Danych...1

Bardziej szczegółowo