Projekt-bazy danych Poczta

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

Download "Projekt-bazy danych Poczta"

Transkrypt

1 Autorzy: Aleksandra Bąk numer indeksu: Maksym Leś numer indeksu: Projekt-bazy danych Poczta 1.Opis Nasz projekt dotyczy poczty. Nasza baza danych zawiera informacje odnośnie: listów przechodzących przez naszą pocztę (pełny adres, informacje o odbiorze i zwrotach); listonoszy (informacje personalne, numer kontaktowy, informacje dotyczące obsługiwanych rejonów); opłat (waga przesyłki, wysokość należności, czy zapłacono ); Głównym celem naszej bazy jest umożliwienie dostępu do informacji związanych z listami i paczkami, którymi obracała nasza poczta. Założenia naszej bazy danych: 1. Waga listu poleconego i zwykłego ma wartość NULL. 2. Paczka i list polecony muszą zostać odebrane osobiście. 3. Do zwrotu trafiają przesyłki posiadające luki (np. niepełny adres,który nie jest jednoznaczny) lub gdy list polecony lub paczka nie została odebrana. 4. Każdy list jest przydzielony tylko do jednego listonosza. Baza składa się z 7 tabel. Tabela "list" zawiera informacje dotyczące adresu, czyli między innymi miasto, kod pocztowy nazwę ulicy, rodzaj listu, dzięki któremu wiemy jaką opłatę należy uiścić (szczegóły w tabeli "opłata" ). Następna tabela to "listonosz", w której możemy znaleźć jego dane, tj. numer kontaktowy oraz id rejonu, dzięki któremu wiemy, w jakim rejonie pracuje(szczegółowe dane znajdują się w tabeli "rejon" ). Tabela "potwierdzenie odbioru" zawiera id listu, rodzaj, adresata oraz informację dotyczącą dostarczenia przesyłki. W wypadku niezastania klienta zostaje wystawione awizo (szczegóły znajdują się w tabeli "awizo" ). Wówczas list trafia do tabeli zwroty, w której możemy również znaleźć listy, których adres i dane nie są wyznaczone jednoznacznie. Nasza baza umożliwia dowiedzenie się m.in.: który listonosz jest odpowiedzialny za dany list czy list polecony lub paczka została dostarczona czy została uiszczona zapłata za przesyłkę.

2 2.Schemat bazy danych 3.Kod SQL. DROP TABLE list CASCADE; CREATE TABLE list( id_listu VARCHAR(100) NOT NULL PRIMARY KEY, rodzaj_listu TEXT NOT NULL CHECK(rodzaj_listu IN ('list_polecony','list_zwykly','paczka')), miasto TEXT NOT NULL DEFAULT 'Olawa', kod_pocztowy VARCHAR(6) NOT NULL CHECK (kod_pocztowy ~ '^[0-9]{2}-[0-9]{3}$'), ulica VARCHAR(40) NOT NULL, numer_budynku VARCHAR(40) NOT NULL, numer_lokalu INTEGER, kierunek_listu TEXT NOT NULL CHECK(kierunek_listu IN ('przychodzacy','wychodzacy')) ); DROP TABLE zwrot CASCADE; CREATE TABLE zwrot( id_listu VARCHAR(100) NOT NULL PRIMARY KEY, miasto TEXT, kod_pocztowy VARCHAR(6) NOT NULL CHECK (kod_pocztowy ~ '^[0-9]{2}-[0-9]{3}$'), ulica VARCHAR(40), numer_budynku VARCHAR(40), numer_lokalu INTEGER, rodzaj_listu TEXT, oplata DECIMAL(10,2) );

3 DROP TABLE rejon CASCADE; CREATE TABLE rejon( id_rejonu VARCHAR(100) NOT NULL PRIMARY KEY, rejon VARCHAR(1) NOT NULL CHECK (rejon ~ '^[0-3]{1}$'), id_listu VARCHAR(100) NOT NULL, ulica VARCHAR(40) NOT NULL, numer_budynku VARCHAR(40) NOT NULL, numer_lokalu INTEGER ); DROP TABLE listonosz CASCADE; CREATE TABLE listonosz( id_listonosza VARCHAR(100) NOT NULL PRIMARY KEY, id_rejonu VARCHAR(100) NOT NULL, rejon VARCHAR(1) NOT NULL CHECK (rejon ~ '^[0-3]{1}$'), imie TEXT NOT NULL, nazwisko TEXT NOT NULL, tel_kontaktowy VARCHAR(9) NOT NULL CHECK (tel_kontaktowy ~ '^[0-9]{9}$') ); DROP TABLE oplata CASCADE; CREATE TABLE oplata( id_listu VARCHAR(100) NOT NULL PRIMARY KEY, rodzaj_listu TEXT NOT NULL CHECK(rodzaj_listu IN ('list_polecony',' list_zwykly','paczka')), waga_w_kg DECIMAL(5,3) CHECK(waga_w_kg>0 AND waga_w_kg<99.999), oplata DECIMAL(10,2) NOT NULL CHECK(oplata>0), czy_zaplacono BOOLEAN DEFAULT(true) NOT NULL, czy_oplata_jest_prawidlowa BOOLEAN DEFAULT(true) NOT NULL ); DROP TABLE potwierdzenie_odbioru CASCADE; CREATE TABLE potwierdzenie_odbioru( id_listu VARCHAR(100) NOT NULL PRIMARY KEY, rodzaj_listu TEXT NOT NULL CHECK(rodzaj_listu IN ('list_polecony','paczka')), adresat TEXT NOT NULL, czy_dostarczony BOOLEAN DEFAULT(true) NOT NULL ); DROP TABLE awizo CASCADE; CREATE TABLE awizo( id_listu VARCHAR(100) NOT NULL PRIMARY KEY, data_dostarczenia_awiza DATE NOT NULL, data_koncowa DATE NOT NULL CHECK (data_koncowa>data_dostarczenia_awiza), gdzie_sie_znajduje TEXT NOT NULL CHECK (gdzie_sie_znajduje IN('zwrot','odeslany')) );

4 Klucze obce. ALTER TABLE oplata ADD FOREIGN KEY (id_listu) REFERENCES list (id_listu); ALTER TABLE zwrot ADD FOREIGN KEY (id_listu) REFERENCES list(id_listu); ALTER TABLE potwierdzenie_odbioru ADD FOREIGN KEY (id_listu) REFERENCES list(id_listu); ALTER TABLE rejon ADD FOREIGN KEY (id_listu) REFERENCES list(id_listu); ALTER TABLE listonosz ADD FOREIGN KEY (id_rejonu) REFERENCES rejon(id_rejonu); ALTER TABLE awizo ADD FOREIGN KEY (id_listu) REFERENCES potwierdzenie_odbioru(id_listu); Dane. INSERT INTO list VALUES('AH-54321', 'list_zwykly','olawa','55-200', 'Balonowa',86,10,'przychodzacy'); INSERT INTO list VALUES('AH-43310', 'list_zwykly','olawa','55-200', 'Krotka',1,1,'przychodzacy'); INSERT INTO list VALUES('AH-43210', 'list_polecony','olawa','55-200', 'Spacerniakowa',99,7,'przychodzacy'); INSERT INTO list VALUES('AH-43211','list_polecony', 'Olawa','55-200','Brzeska',33,3,'przychodzacy'); INSERT INTO list VALUES('AH-43212','list_polecony', 'Olawa', '55-200','Krotka',2,7,'przychodzacy'); INSERT INTO list VALUES('AH-43213','paczka', 'Olawa', '55-200','Tęczowa',14,3,'przychodzacy'); INSERT INTO list VALUES('AH-43214','paczka','Olawa', '55-200','Krotka',6,9,'przychodzacy'); INSERT INTO list VALUES('AH-54322','paczka','Olawa','55-200', 'Balonowa',80,6,'przychodzacy'); INSERT INTO list VALUES('AH-54323','list_zwykly','Gaj','55-201', 'Ksiezycowa',2,5,'wychodzacy'); INSERT INTO list VALUES('AH-54324','list_zwykly','Stanowice','55-202','Wroclawska',66,6,'wychodzacy'); INSERT INTO list VALUES('AH-54325','paczka','Stanowice','55-202', 'Sloneczna',99,1,'wychodzacy'); INSERT INTO list VALUES('AH-54326','list_polecony','Gaj','55-201', 'Ksiezycowa',33,9,'wychodzacy'); INSERT INTO list VALUES('AH-54327','list_zwykly','Górnik','55-203', 'Zupowa',7,3,'wychodzacy'); INSERT INTO list VALUES('AH-54328','list_polecony','Olawa','55-200', 'Balonowa',60,9,'przychodzacy'); INSERT INTO list VALUES('AH-54329','list_polecony','Olawa','55-200', 'Brzeska',27,3,'przychodzacy'); INSERT INTO list VALUES('AH-54330','list_polecony','Olawa','55-200', 'Tęczowa',23,NULL,'przychodzacy'); INSERT INTO list VALUES('AH-54331','list_polecony','Olawa','55-200', 'Spacerniakowa',22,NULL,'przychodzacy'); INSERT INTO list VALUES('AH-54321', 'list_zwykly','olawa','55-200', 'Brzeska',6,NULL,'przychodzacy'); INSERT INTO list VALUES('AH-54400', 'list_polecony','olawa','55-200', 'Brzeska',7,NULL,'przychodzacy'); INSERT INTO list VALUES('AH-54401', 'list_zwykly','olawa','55-200',

5 'Brzeska',8,2,'przychodzacy'); INSERT INTO list VALUES('AH-54402', 'list_zwykly','olawa','55-200', 'Brzeska',8,3,'przychodzacy'); INSERT INTO list VALUES('AH-54403', 'list_zwykly','olawa','55-200', 'Brzeska',9,2,'przychodzacy'); INSERT INTO list VALUES('AH-54404', 'list_zwykly','olawa','55-200', 'Brzeska',15,NULL,'przychodzacy'); INSERT INTO list VALUES('AH-54405', 'list_polecony','olawa','55-200', 'Brzeska',17,NULL,'przychodzacy'); INSERT INTO list VALUES('AH-54406', 'list_zwykly','lubin','51-200', 'Legnicka',12,NULL,'wychodzacy'); INSERT INTO list VALUES('AH-54407', 'list_zwykly','warszawa','01-153', 'Wspolna',1,1,'wychodzacy'); INSERT INTO list VALUES('AH-54408', 'list_zwykly','olawa','55-200', 'Balonowa',7,1,'wychodzacy'); INSERT INTO list VALUES('AH-54409', 'list_polecony','zgorzelec','59-900', 'Orzechowa',1,NULL,'wychodzacy'); INSERT INTO list VALUES('AH-54410', 'list_polecony','polkowice','55-300', 'Rajska',13,NULL,'wychodzacy'); INSERT INTO list VALUES('AH-54411', 'list_zwykly','olawa','55-200', 'Krotka',56,13,'przychodzacy'); INSERT INTO list VALUES('AH-54412', 'list_zwykly','olawa','55-200', 'Krotka',56,17,'przychodzacy'); INSERT INTO list VALUES('AH-54413', 'list_polecony','olawa','55-200', 'Krotka',57,3,'przychodzacy'); INSERT INTO list VALUES('AH-54414', 'paczka','olawa','55-200', 'Krotka',60,NULL,'przychodzacy'); INSERT INTO list VALUES('AH-54415', 'paczka','olawa','55-200', 'Balonowa',10,NULL,'przychodzacy'); INSERT INTO list VALUES('AH-54417', 'paczka','olawa','55-200', 'Balonowa',23,NULL,'przychodzacy'); INSERT INTO list VALUES('AH-54416', 'list_zwykly','olawa','55-200', 'Spacernikowa',2,3,'przychodzacy'); INSERT INTO list VALUES('AH-54418', 'list_polecony','olawa','55-200', 'Spacernikowa',10,NULL,'przychodzacy'); INSERT INTO list VALUES('AH-54419', 'list_zwykly','olawa','55-200', 'Spacernikowa',12,NULL,'przychodzacy'); INSERT INTO list VALUES('AH-54420', 'list_zwykly','olawa','55-200', 'Tęczowa',88,17,'przychodzacy'); INSERT INTO list VALUES('AH-54421', 'list_zwykly','olawa','55-200', 'Tęczowa',101,1,'przychodzacy'); INSERT INTO zwrot VALUES('AH-54404','Olawa','55-200', 'Brzeska',15,NULL,'list_zwykly',1.0); INSERT INTO zwrot VALUES('AH-54417','Olawa','55-200', 'Balonowa',23,NULL,'paczka',13); INSERT INTO zwrot VALUES('AH-54412','Olawa','55-200', 'Krotka',56,17,'list_zwykly',NULL); INSERT INTO zwrot VALUES('AH-54111','Olawa','55-200', NULL,NULL,NULL,'list_zwykly',3.0); INSERT INTO zwrot VALUES('AH-54115','Olawa','55-200', NULL,NULL,NULL,'list_zwykly',3.0); INSERT INTO rejon VALUES('Bw-1',1,'AH-54321', 'Balonowa',86,10); INSERT INTO rejon VALUES('Bw-2',2,'AH-43310', 'Krotka',1,1);

6 INSERT INTO rejon VALUES('Bw-3',2,'AH-43210','Spacerniakowa',99,7); INSERT INTO rejon VALUES('Bw-4',1,'AH-43211','Brzeska',33,3); INSERT INTO rejon VALUES('Bw-5',2,'AH-43212','Krotka',2,7); INSERT INTO rejon VALUES('Bw-6',3,'AH-43213','Tęczowa',14,3); INSERT INTO rejon VALUES('Bw-7',2,'AH-43214','Krotka',6,9); INSERT INTO rejon VALUES('Bw-8',1,'AH-54322','Balonowa',80,6); INSERT INTO rejon VALUES('Bw-9',1,'AH-54328','Balonowa',60,9); INSERT INTO rejon VALUES('Bw-10',1,'AH-54329','Brzeska',27,3); INSERT INTO rejon VALUES('Bw-11',3,'AH-54330', 'Tęczowa',23,NULL); INSERT INTO rejon VALUES('Bw-12',3,'AH-54331','Spacerniakowa',22,NULL); INSERT INTO rejon VALUES('Bw-13',1,'AH-54321','Brzeska',6,NULL); INSERT INTO rejon VALUES('Bw-14',1,'AH-54400','Brzeska',7,NULL); INSERT INTO rejon VALUES('Bw-15',1,'AH-54401','Brzeska',8,2); INSERT INTO rejon VALUES('Bw-16',1,'AH-54402','Brzeska',8,3); INSERT INTO rejon VALUES('Bw-17',1,'AH-54403','Brzeska',9,2); INSERT INTO rejon VALUES('Bw-18',1,'AH-54404','Brzeska',15,NULL); INSERT INTO rejon VALUES('Bw-19',1,'AH-54405','Brzeska',17,NULL); INSERT INTO rejon VALUES('Bw-20',2,'AH-54411','Krotka',56,13); INSERT INTO rejon VALUES('Bw-21',2,'AH-54412','Krotka',56,17); INSERT INTO rejon VALUES('Bw-22',2,'AH-54413','Krotka',57,3); INSERT INTO rejon VALUES('Bw-23',2,'AH-54414','Krotka',60,NULL); INSERT INTO rejon VALUES('Bw-24',1,'AH-54415','Balonowa',10,NULL); INSERT INTO rejon VALUES('Bw-25',1,'AH-54417','Balonowa',23,NULL); INSERT INTO rejon VALUES('Bw-26',2,'AH-54416','Spacernikowa',2,3); INSERT INTO rejon VALUES('Bw-27',2,'AH-54418','Spacernikowa',10,NULL); INSERT INTO rejon VALUES('Bw-28',2,'AH-54419','Spacernikowa',12,NULL); INSERT INTO rejon VALUES('Bw-29',3,'AH-54420','Tęczowa',88,17); INSERT INTO rejon VALUES('Bw-30',3,'AH-54421','Tęczowa',101,1); INSERT INTO listonosz VALUES('JP-099','Bw-1','1', 'Mieczyslaw','Zawada',' '); INSERT INTO listonosz VALUES('JP-100','Bw-4','1', 'Mieczyslaw','Zawada',' '); INSERT INTO listonosz VALUES('JP-101','Bw-8','1', 'Mieczyslaw','Zawada',' '); INSERT INTO listonosz VALUES('JP-102','Bw-9','1', 'Mieczyslaw','Zawada',' '); INSERT INTO listonosz VALUES('JP-103','Bw-10','1', 'Mieczyslaw','Zawada',' '); INSERT INTO listonosz VALUES('JP-104','Bw-2','2', 'Waclaw','Brodaty',' '); INSERT INTO listonosz VALUES('JP-105','Bw-3','2', 'Waclaw','Brodaty',' '); INSERT INTO listonosz VALUES('JP-106','Bw-5','2', 'Waclaw','Brodaty',' '); INSERT INTO listonosz VALUES('JP-107','Bw-7','2', 'Waclaw','Brodaty',' '); INSERT INTO listonosz VALUES('JP-108','Bw-6','3', 'Mariusz','Dusigrosz',' '); INSERT INTO listonosz VALUES('JP-109','Bw-11','3', 'Mariusz','Dusigrosz',' '); INSERT INTO listonosz VALUES('JP-110','Bw-12','3', 'Mariusz','Dusigrosz',' '); INSERT INTO oplata VALUES('AH-54321', 'list_zwykly',null,3); INSERT INTO oplata VALUES('AH-43210', 'list_zwykly',null,3); INSERT INTO oplata VALUES('AH-43310', 'list_zwykly',null,3); INSERT INTO oplata VALUES('AH-43211','list_polecony', NULL,3); INSERT INTO oplata VALUES('AH-43212','list_polecony', NULL,5); INSERT INTO oplata VALUES('AH-43213','paczka',1.34,10); INSERT INTO oplata VALUES('AH-43214','paczka', 99,100); INSERT INTO oplata VALUES('AH-54322','paczka',7.23,20); INSERT INTO oplata VALUES('AH-54323','list_zwykly',NULL,3);

7 INSERT INTO oplata VALUES('AH-54324','list_zwykly',NULL,3); INSERT INTO oplata VALUES('AH-54325','paczka',20,100); INSERT INTO oplata VALUES('AH-54326','list_polecony',NULL,5); INSERT INTO oplata VALUES('AH-54327','list_zwykly',NULL,3); INSERT INTO oplata VALUES('AH-54328','list_polecony',NULL,5); INSERT INTO oplata VALUES('AH-54329','list_polecony',NULL,5); INSERT INTO potwierdzenie_odbioru VALUES('AH-43211','list_polecony','Maciej Maciejewicz'); INSERT INTO potwierdzenie_odbioru VALUES('AH-43212','list_polecony', 'Elżbieta Struś',false); INSERT INTO potwierdzenie_odbioru VALUES('AH-43213','paczka','Michał Zając'); INSERT INTO potwierdzenie_odbioru VALUES('AH-43214','paczka','Racław Borkowski' ); INSERT INTO potwierdzenie_odbioru VALUES('AH-54322','paczka','Blanka Nowakowska'); INSERT INTO potwierdzenie_odbioru VALUES('AH-54325','paczka','Ignacy Chmielewski',false); INSERT INTO potwierdzenie_odbioru VALUES('AH-54326','list_polecony','Zachariasz Kozłowski',false); INSERT INTO potwierdzenie_odbioru VALUES('AH-54328','list_polecony','Bartosz Woźniak'); INSERT INTO potwierdzenie_odbioru VALUES('AH-54329','list_polecony','Karina Kozłowska'); INSERT INTO potwierdzenie_odbioru VALUES('AH-54330','list_polecony','Urjasz Wieczorek'); INSERT INTO potwierdzenie_odbioru VALUES('AH-54331','list_polecony','Antoni Jabłoński',false); INSERT INTO potwierdzenie_odbioru VALUES('AH-54400', 'list_polecony','danuta Lis'); INSERT INTO potwierdzenie_odbioru VALUES('AH-54405', 'list_polecony','kazimierz Rogowski'); INSERT INTO potwierdzenie_odbioru VALUES('AH-54409', 'list_polecony','anna Kulczyk'); INSERT INTO potwierdzenie_odbioru VALUES('AH-54410', 'list_polecony','florentyna Bujnarowska'); INSERT INTO potwierdzenie_odbioru VALUES('AH-54413', 'list_polecony','martyna Wojak'); INSERT INTO potwierdzenie_odbioru VALUES('AH-54414', 'paczka','grzegorz Michalski'); INSERT INTO potwierdzenie_odbioru VALUES('AH-54415', 'paczka','joanna Krupicka'); INSERT INTO potwierdzenie_odbioru VALUES('AH-54417', 'paczka','sylwia Pawlik'); INSERT INTO potwierdzenie_odbioru VALUES('AH-54418', 'list_polecony','ewa Szpak'); Widoki DROP VIEW ilosc_listow_na_stanie; CREATE VIEW ilosc_listow_na_stanie AS SELECT count(id_listu) AS ilosc_listow_na_stanie FROM list; SELECT * FROM ilosc_listow_na_stanie; DROP VIEW ilosc_zwrotow; CREATE VIEW ilosc_zwrotow AS SELECT count(id_listu) AS ilosc_zwrotow FROM zwrot; SELECT * FROM ilosc_zwrotow;

8 --3-- DROP VIEW suma_oplat; CREATE VIEW suma_oplat AS SELECT sum(oplata) FROM oplata; SELECT * FROM suma_oplat; Funkcje DROP FUNCTION listonosz_odpowiedzialny_za_list (VARCHAR(100)); CREATE OR REPLACE FUNCTION listonosz_odpowiedzialny_za_list(n VARCHAR(100)) RETURNS TEXT AS $$ DECLARE txt TEXT; BEGIN SELECT (listonosz.id_listonosza,listonosz.imie,listonosz.nazwisko) INTO txt FROM rejon, listonosz WHERE rejon.id_listu=n; RETURN txt; END; $$ LANGUAGE 'plpgsql'; DROP FUNCTION czy_istnieje_taki_list (VARCHAR(40),VARCHAR(40),c INTEGER); CREATE OR REPLACE FUNCTION czy_istnieje_taki_list(a VARCHAR(40),b VARCHAR(40),c INTEGER) RETURNS VARCHAR(40) AS $$ DECLARE txt TEXT; BEGIN SELECT list.id_listu INTO txt FROM list WHERE ulica=a AND numer_budynku=b AND numer_lokalu=c; IF(NOT FOUND) THEN RAISE EXCEPTION 'Taki list nie jest w naszej bazie!'; RETURN txt; END; $$ LANGUAGE 'plpgsql'; DROP FUNCTION czy_oplata (VARCHAR(100));

9 CREATE OR REPLACE FUNCTION czy_oplata(a VARCHAR(100)) RETURNS VARCHAR(40) AS $$ DECLARE krotka RECORD; BEGIN SELECT * INTO krotka FROM oplata WHERE oplata.id_listu=a; IF(NOT FOUND) THEN RAISE EXCEPTION 'Taki list nie jest w naszej bazie!'; IF(krotka.id_listu=a AND krotka.czy_zaplacono='t' AND krotka.czy_oplata_jest_prawidlowa='t' ) THEN RETURN 'Oplata zaiszczona prawidlowo'; ELSE RETURN 'Oplata zaiszczona nieprawidlowo'; END; $$ LANGUAGE 'plpgsql'; Wyzwalacze DROP FUNCTION waga_przesylki() CASCADE; CREATE OR REPLACE FUNCTION waga_przesylki() RETURNS TRIGGER AS $$ BEGIN IF (NEW.waga_w_kg IS NULL) AND (NEW.rodzaj_listu IN ('list_polecony')) AND (NEW.oplata! =5.00) THEN RAISE EXCEPTION 'List polecony powinien kosztowac 5 pln! '; IF (NEW.waga_w_kg IS NULL) AND (NEW.rodzaj_listu IN ('list_zwykly')) AND (NEW.oplata! =3.00) THEN RAISE EXCEPTION 'List zwykly powinien kosztowac 3 pln! '; IF (NEW.waga_w_kg IS NOT NULL) AND (NEW.rodzaj_listu IN ('paczka')) AND (NEW.waga_w_kg>0 AND NEW.waga_w_kg<2.000) AND (NEW.oplata!=10.00) THEN RAISE EXCEPTION 'Paczka do dwoch kilgramow powinna kosztowac 10 pln! '; IF (NEW.waga_w_kg IS NOT NULL) AND (NEW.rodzaj_listu IN ('paczka')) AND (NEW.waga_w_kg>=2.000 AND NEW.waga_w_kg<8.000) AND (NEW.oplata!=20.00) THEN RAISE EXCEPTION 'Paczka od dwoch do osmiu kilgramow powinna kosztowac 20 pln! '; IF (NEW.waga_w_kg IS NOT NULL) AND (NEW.rodzaj_listu IN ('paczka')) AND (NEW.waga_w_kg>=8.000 AND NEW.waga_w_kg<99.999) AND (NEW.oplata!=100.00) THEN

10 RAISE EXCEPTION 'Paczka powyzej osmiu kilgramow powinna kosztowac 100 pln! '; RETURN NEW; END; $$ LANGUAGE 'plpgsql'; DROP TRIGGER waga_przesylki_trigger ON oplata CASCADE; CREATE TRIGGER waga_przesylki_trigger BEFORE INSERT OR UPDATE ON oplata FOR EACH ROW EXECUTE PROCEDURE waga_przesylki(); DROP FUNCTION waga_listu() CASCADE; CREATE OR REPLACE FUNCTION waga_listu() RETURNS TRIGGER AS $$ BEGIN IF (NEW.waga_w_kg IS NOT NULL) AND (NEW.rodzaj_listu IN ('list_polecony','list_zwykly')) THEN RAISE EXCEPTION 'Jezeli waga ma konkretna wartosc to jest paczka!'; IF (NEW.waga_w_kg IS NULL) AND (NEW.rodzaj_listu IN ('paczka')) THEN RAISE EXCEPTION 'Kazda paczka musi miec wage!'; RETURN NEW; END; $$ LANGUAGE 'plpgsql'; DROP TRIGGER waga_listu_trigger ON oplata CASCADE; CREATE TRIGGER waga_listu_trigger BEFORE INSERT OR UPDATE ON oplata FOR EACH ROW EXECUTE PROCEDURE waga_listu(); DROP FUNCTION czy_dobra_ulica() CASCADE; CREATE OR REPLACE FUNCTION czy_dobra_ulica() RETURNS TRIGGER AS $$ BEGIN IF (NEW.ulica NOT IN ('Brzeska','Balonowa','Krotka','Spacerniakowa','Tęczowa')) AND (NEW.miasto IN ('Olawa')) THEN RAISE EXCEPTION 'W Olawie nie ma takiej ulicy!';

11 RETURN NEW; END; $$ LANGUAGE 'plpgsql'; DROP TRIGGER czy_dobra_ulica_trigger ON oplata CASCADE; CREATE TRIGGER czy_dobra_ulica_trigger BEFORE INSERT OR UPDATE ON list FOR EACH ROW EXECUTE PROCEDURE czy_dobra_ulica(); DROP FUNCTION czy_dobry_rejon() CASCADE; CREATE OR REPLACE FUNCTION czy_dobry_rejon() RETURNS TRIGGER AS $$ BEGIN IF (NEW.ulica IN ('Balonowa')) AND (NEW.rejon!= 1) THEN RAISE EXCEPTION 'Ulica Balonowa nalezy do rejonu 1!'; IF (NEW.ulica IN ('Brzeska')) AND (NEW.rejon!=1) THEN RAISE EXCEPTION 'Ulica Brzeska nalezy do rejonu 1!'; IF (NEW.ulica IN ('Krotka')) AND (NEW.rejon!=2) THEN RAISE EXCEPTION 'Ulica Krotka nalezy do rejonu 2!'; IF (NEW.ulica IN ('Spacerniakowa')) AND (NEW.rejon!=2) THEN RAISE EXCEPTION 'Ulica Spacerniakowa nalezy do rejonu 2!'; IF (NEW.ulica IN ('Tęczowa')) AND (NEW.rejon!=3) THEN RAISE EXCEPTION 'Ulica Tęczowa nalezy do rejonu 3!'; RETURN NEW; END; $$ LANGUAGE 'plpgsql'; DROP TRIGGER czy_dobry_rejon_trigger ON rejon CASCADE; CREATE TRIGGER czy_dobry_rejon_trigger BEFORE INSERT OR UPDATE ON rejon FOR EACH ROW EXECUTE PROCEDURE czy_dobry_rejon();

12 4.Interfejs graficzny bazy danych. nasz_html.html <html> <center><h2>poczta</h2></center><br> <body bgcolor="#eaeaae"> <form action=pierwszy.php> Wyswietl relacje by zorientowac sie jak ona wyglada <input type="text" name="r"/> <br> <i>mozliwe do wyboru: { list, zwrot, rejon, listonosz, oplata, potwierdzenie_odbioru, awizo }</i> <br> </form> <hr> <form action=funkcja_pierwsza.php> Wyswietlenie danych listonosza odpowiedzialnego za dostarczenie listu <input type="text" name="s"/>. <br> <i> Wpisujemy id_listu Np.AH-54413, AH-43212, AH </i> <br> </form> <hr> <form action=funkcja_druga.php> Sprawdzenie czy uiszczona jest oplata konkretnego listu <input type="text" name="s"/>. <br> <i> Przyklady: { AH-43212,AH-54411,AH } </i> <br> </form> <hr> <form action=wyzwalacz_pierwszy.php> Proba wstawienia ceny, roznej od tej w cenniku <input type="text" name="r"/>.

13 <br> <i> Przyklad: list polecony, ktory nie bedzie kosztowac 5 pln, lecz 17 </i> <br> </form> <hr> <form action=wyzwalacz_drugi.php> Proba wprowadzenia do bazy jakiegos listu o pewnej wadze (ustalilismy ze listow nie wazymy - gdy cos wazy to staje sie paczka) <input type="text" name="r"/>. <br> <i> Przyklad: Chcemy wstawic do bazy list o pewnej wadze. W tym celu jako rodzaj naszej kilogramowej wysylki wpiszemy list_zwykly zamiast paczki. </i> <br> </form> <hr> <form action=wyzwalacz_trzeci.php> Proba wprowadzenia do bazy jakiegos listu, na ktorym widnieje ulica, ktorej nie ma w Olawie <input type="text" name="r"/>. <br> <i> Przyklad: Orzechowa, Babska </i> <br> </form> <hr> </body> </html> pierwszy.php <html> <head> <title>laczenie z baza</title> </head> <body> <?php $uchwyt = pg_connect("host=' ' port=7654 user=s password=bak dbname=bazy_danych"); if (!$uchwyt) { echo "<p><b>wystapil blad podczas laczenia z baza!!!</b></p>"; exit(); } $wynik = pg_query($uchwyt, " SELECT * FROM ".$_GET['r']." "); if (!$wynik) { echo "<p><b>". pg_last_error($uchwyt). "</b></p>"; } while ($wiersz = pg_fetch_row($wynik)) { echo " $wiersz[0] $wiersz[2] $wiersz[3] $wiersz[4] $wiersz[5] $wiersz[6] $wiersz[7] ";

14 echo "<br />\n"; } pg_close($uchwyt);?> </body> </html> funkcja_pierwsza.php <html> <head> <title>laczenie z baza</title> </head> <body> <?php $uchwyt = pg_connect("host=' ' port=7654 user=s password=bak dbname=bazy_danych"); if (!$uchwyt) { echo "<p><b>wystapil blad podczas laczenia z baza!!!</b></p>"; exit(); } $wynik = pg_query($uchwyt, " SELECT * FROM listonosz_odpowiedzialny_za_list('". $_GET['s']."'); "); if (!$wynik) { echo "<p><b>". pg_last_error($uchwyt). "</b></p>"; } while ($wiersz = pg_fetch_row($wynik)) { echo " $wiersz[0] $wiersz[1] $wiersz[2] $wiersz[3] $wiersz[4] $wiersz[5] "; echo "<br />\n"; } pg_close($uchwyt);?> </body> </html> funkcja_druga.php <html> <head> <title>laczenie z baza</title>

15 </head> <body> <?php $uchwyt = pg_connect("host=' ' port=7654 user=s password=bak dbname=bazy_danych"); if (!$uchwyt) { echo "<p><b>wystapil blad podczas laczenia z baza!!!</b></p>"; exit(); } $wynik = pg_query($uchwyt, " SELECT czy_oplata('".$_get['s']."'); "); if (!$wynik) { echo "<p><b>". pg_last_error($uchwyt). "</b></p>"; } while ($wiersz = pg_fetch_row($wynik)) { echo " $wiersz[0] "; echo "<br />\n"; } pg_close($uchwyt);?> </body> </html> wyzwalacz_pierwszy.php <html> <head> <title>laczenie z baza</title> </head> <body> <?php $uchwyt = pg_connect("host=' ' port=7654 user=s password=bak dbname=bazy_danych"); if (!$uchwyt) { echo "<p><b>wystapil blad podczas laczenia z baza!!!</b></p>"; exit(); } $wynik = pg_query($uchwyt, " INSERT INTO oplata (id_listu, rodzaj_listu,waga_w_kg,oplata, czy_oplata_jest_prawidlowa) VALUES ('AH ', 'list_polecony',null, '".$_GET['r']."', true); " );

16 if (!$wynik) { echo "<p><b>". pg_last_error($uchwyt). "</b></p>"; } while ($wiersz = pg_fetch_row($wynik)) { echo "$wiersz[0]"; echo "<br />\n"; } pg_close($uchwyt);?> </body> </html> wyzwalacz_drugi.php <html> <head> <title>laczenie z baza</title> </head> <body> <?php $uchwyt = pg_connect("host=' ' port=7654 user=s password=bak dbname=bazy_danych"); if (!$uchwyt) { echo "<p><b>wystapil blad podczas laczenia z baza!!!</b></p>"; exit(); } $wynik = pg_query($uchwyt, " INSERT INTO oplata (id_listu, rodzaj_listu,waga_w_kg,oplata, czy_oplata_jest_prawidlowa) VALUES ('AH ', '".$_GET['r']."',1.0, 6, false); " ); if (!$wynik) { echo "<p><b>". pg_last_error($uchwyt). "</b></p>"; } while ($wiersz = pg_fetch_row($wynik)) { echo "$wiersz[0]"; echo "<br />\n"; } pg_close($uchwyt);?> </body> </html>

17 wyzwalacz_trzeci.php <html> <head> <title>laczenie z baza</title> </head> <body> <?php $uchwyt = pg_connect("host=' ' port=7654 user=s password=bak dbname=bazy_danych"); if (!$uchwyt) { echo "<p><b>wystapil blad podczas laczenia z baza!!!</b></p>"; exit(); } $wynik = pg_query($uchwyt, " INSERT INTO list VALUES ('AW ', 'list_zwykly','olawa','55-200', '".$_GET['r']."', 5,6,'przychodzacy'); " ); if (!$wynik) { echo "<p><b>". pg_last_error($uchwyt). "</b></p>"; } while ($wiersz = pg_fetch_row($wynik)) { echo "$wiersz[0]"; echo "<br />\n"; } pg_close($uchwyt);?> </body> </html>

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

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

Projekt bazy danych. Schemat bazy danych. Opis bazy danych

Projekt bazy danych. Schemat bazy danych. Opis bazy danych Autorzy: Piotr Słoma nr indeksu: 233263 Joanna Kurzyńska nr indeksu: 233254 Agnieszka Szumicka nr indeksu: 233266 Projekt bazy danych Schemat bazy danych Opis bazy danych Nasz projekt przedstawia bazę

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

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

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

CREATE TABLE autorzy ( id_autora SERIAL PRIMARY KEY, imie TEXT, nazwisko TEXT );

CREATE TABLE autorzy ( id_autora SERIAL PRIMARY KEY, imie TEXT, nazwisko TEXT ); Projekt ilustruje przykładową bazę domowej biblioteczki. Baza ma za zadanie ułatwić skatalogowanie posiadanych książek wraz z podstawowymi informacjami na ich temat. Opis bazy: Książka może mieć wielu

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

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

Bazy danych. Projekt prostej biblioteki. 26 stycznia Hubert Anisimowicz,

Bazy danych. Projekt prostej biblioteki. 26 stycznia Hubert Anisimowicz, Bazy danych Projekt prostej biblioteki 26 stycznia 2015 Hubert Anisimowicz, 275859 Spis treści Rozdział 1 Schemat bazy danych... 2 Rozdział 2 Opis bazy danych... 2 Rozdział 3 Skrypt generujący bazę danych...

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

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

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

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

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

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

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

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

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

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

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

Muzyczna Baza Danych

Muzyczna Baza Danych Krzysztof Kozłowski,258472 Robert Kumanek, 258588 Muzyczna Baza Danych Nasza baza danych jest próbą usystematyzowanego zarchiwizowania branży muzycznej. Muzyczna Baza Danych( dalej jako MBD) ma wiele różnych

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

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

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

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

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

Wykład 05 Bazy danych

Wykład 05 Bazy danych Wykład 05 Bazy danych Tabela składa się z: Kolumn Wierszy Wartości Nazwa Wartości Opis INT [UNSIGNED] -2^31..2^31-1 lub 0..2^32-1 Zwykłe liczby całkowite VARCHAR(n) n = długość [1-255] Łańcuch znaków o

Bardziej szczegółowo

Bazy Danych i Usługi Sieciowe

Bazy Danych i Usługi Sieciowe Bazy Danych i Usługi Sieciowe Ćwiczenia I Paweł Daniluk Wydział Fizyki Jesień 2011 P. Daniluk (Wydział Fizyki) BDiUS ćw. I Jesień 2011 1 / 15 Strona wykładu http://bioexploratorium.pl/wiki/ Bazy_Danych_i_Usługi_Sieciowe_-_2011z

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

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

Bazy danych programowanie Wykład dla studentów matematyk

Bazy danych programowanie Wykład dla studentów matematyk Bazy danych programowanie Wykład dla studentów matematyki 23 kwietnia 2017 Funkcje Funkcje definiuje się w Postgresie używajac konstrukcji CREATE FUNCTION nazwa(parametr typ,...) RETURNS typ-wyniku AS

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

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

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

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

1: 2: 3: 4: 5: 6: 7: 8: 9: 10:

1: 2: 3: 4: 5: 6: 7: 8: 9: 10: Grupa A (LATARNIE) Imię i nazwisko: Numer albumu: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: Nazwisko prowadzącego: 11: 12: Suma: Ocena: Zad. 1 (10 pkt) Dana jest relacja T. Podaj wynik poniższego zapytania (podaj

Bardziej szczegółowo

Bazy danych i usługi sieciowe

Bazy danych i usługi sieciowe Bazy danych i usługi sieciowe Ćwiczenia I Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) BDiUS ćw. I Jesień 2014 1 / 16 Strona wykładu http://bioexploratorium.pl/wiki/ Bazy_danych_i_usługi_sieciowe_-_2014z

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 - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8 Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8 Bazowy skrypt PHP do ćwiczeń z bazą MySQL: Utwórz skrypt o nazwie cw7.php zawierający następującą treść (uzupełniając go o właściwą nazwę uŝytkownika

Bardziej szczegółowo

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław 9.06.2015 r.

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław 9.06.2015 r. Bazy danych dla producenta mebli tapicerowanych Bartosz Janiak Marcin Sikora Wrocław 9.06.2015 r. Założenia Stworzyć system bazodanowy dla małej firmy produkującej meble tapicerowane. Projekt ma umożliwić

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

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

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

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

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

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

Bardziej szczegółowo

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

Wyzwalacze (triggery) Przykład

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

Bardziej szczegółowo

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

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

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

Struktura bazy danych

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

Bardziej szczegółowo

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

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

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP Zad. 1 Dla każdego zamówienia wyznaczyć jego wartość. Należy podać numer zamówienia oraz wartość. select z.id_zamowienia, sum(ilosc*cena) as wartosc

Bardziej szczegółowo

Bazy danych - Materiały do laboratoriów VIII

Bazy danych - Materiały do laboratoriów VIII Bazy danych - Materiały do laboratoriów VIII dr inż. Olga Siedlecka-Lamch Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska 23 kwietnia 2011 roku Polecenie COMMIT i ROLLBACK Polecenie

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe -- Definicje relacji i utworzenie stanu początkowego dla ćwiczeń z synchronizacji transakcji DROP TABLE Konta cascade constraints; DROP TABLE

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

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

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion Autor: Joanna Karwowska SQL zapewnia obsługę: zapytań - wyszukiwanie danych w bazie, operowania danymi - wstawianie, modyfikowanie

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

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

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

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

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

Baza danych Ogrodu Zoologicznego

Baza danych Ogrodu Zoologicznego Baza danych Ogrodu Zoologicznego Sprawozdanie z realizacji projektu Marcin Gwózdek Spis treści I.Założenia projektowe...3 II.Diagram ERD...4 III.Diagram RSMD...5 IV.Skrypty SQL...7 1.Zoo.tab...7 2.Zoo.ind...9

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

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

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

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

Widok Connections po utworzeniu połączenia. Obszar roboczy

Widok Connections po utworzeniu połączenia. Obszar roboczy Środowisko pracy 1. Baza danych: Oracle 12c - Serwer ELARA - Konta studenckie, dostęp także spoza uczelni - Konfiguracja: https://e.piotrowska.po.opole.pl/index.php?option=conf 2. Środowisko: SQL Developer

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

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

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

System zarządzania treścią.

System zarządzania treścią. Żewłakw Tmasz Wś Krzysztf Bazy Danych 2 Semestr 2011L System zarządzania treścią. 0. Etap 0: Słwny pis prjektu. System zarządzania treścią. Aplikacja umżliwiająca łatwą aktualizację i edycję strn tekstwych

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki Instrukcja do zajęć laboratoryjnych Przetwarzanie i organizowanie danych : bazy danych Nr ćwiczenia 10 Temat Aplikacje

Bardziej szczegółowo

Obiektowe bazy danych Ćwiczenia laboratoryjne (?)

Obiektowe bazy danych Ćwiczenia laboratoryjne (?) Obiektowe bazy danych Ćwiczenia laboratoryjne (?) Tworzenie typów obiektowych 1. Zdefiniuj typ obiektowy reprezentujący SAMOCHODY. Każdy samochód powinien mieć markę, model, liczbę kilometrów oraz datę

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

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

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

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

Bazy danych, 4. wiczenia

Bazy danych, 4. wiczenia Bazy danych, 4. wiczenia 2007-10-23 1 Plan zaj PL/SQL, cz ± II: tabele kursory sªu» ce do zmiany danych, procedury, funkcje, pakiety, wyzwalacze. 2 Tabele Deklaracja TYPE t_tab IS TABLE OF VARCHAR(20)

Bardziej szczegółowo

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

Bazy danych Język SQL część 1 Wykład dla studentów matem Bazy danych Język SQL część 1 Wykład dla studentów matematyki 15 marca 2015 SQL Język wysokiego poziomu do komunikacji z bazami danych (ściślej: z systemami zarzadzania bazami danych) Podajemy co ma być

Bardziej szczegółowo

Modelowanie wymiarów

Modelowanie wymiarów Wymiar Modelowanie wymiarów struktura umożliwiająca grupowanie danych z tabeli faktów implementowana jako obiekt bazy danych DIMENSION wykorzystanie DIMENSION zaawansowane przepisywanie zapytań (ang. query

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

Bazy danych 8. Widoki i wyzwalacze. P. F. Góra

Bazy danych 8. Widoki i wyzwalacze. P. F. Góra Bazy danych 8. Widoki i wyzwalacze P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2012 I. Widoki, AKA Perspektywy W SQL tabela, która utworzono za pomoca zapytania CREATE TABLE, nazywa się tabela podstawowa

Bardziej szczegółowo

Aplikacje WWW - laboratorium

Aplikacje WWW - laboratorium Aplikacje WWW - laboratorium PHP + bazy danych Celem ćwiczenia jest przygotowanie prostej aplikacji internetowej wykorzystującej technologię PHP. Ćwiczenie prezentuje podstawowe aspekty poprawnego programowania

Bardziej szczegółowo

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Laboratorium nr 4. Temat: SQL część II. Polecenia DML Laboratorium nr 4 Temat: SQL część II Polecenia DML DML DML (Data Manipulation Language) słuŝy do wykonywania operacji na danych do ich umieszczania w bazie, kasowania, przeglądania, zmiany. NajwaŜniejsze

Bardziej szczegółowo

Indeksy. Indeks typu B drzewo

Indeksy. Indeks typu B drzewo 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

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

Politechnika Gdańska, międzywydziałowy kierunek INŻYNIERIA BIOMEDYCZNA. Instrukcja do laboratorium z przedmiotu: Bazy danych. Laboratorium nr 4.

Politechnika Gdańska, międzywydziałowy kierunek INŻYNIERIA BIOMEDYCZNA. Instrukcja do laboratorium z przedmiotu: Bazy danych. Laboratorium nr 4. Instrukcja do laboratorium z przedmiotu: Bazy danych Laboratorium nr 4. Funkcje własne, procedury wyzwalane i przetwarzanie transakcyjne Opracował A. Bujnowski 2010-04-08 Projekt Przygotowanie i realizacja

Bardziej szczegółowo

Bazy danych. dr Radosław Matusik. radmat

Bazy danych. dr Radosław Matusik.   radmat www.math.uni.lodz.pl/ radmat Sortowanie tablic Do sortowania tablic służą funkcje: Sortowanie tablic Do sortowania tablic służą funkcje: sort($tablica) - sortowanie w porządku rosnącym bez kluczy; Sortowanie

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

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; Zestaw ćwiczeń1 Dzięki DDL (Data Definition Language) można operować na strukturach, w których dane są przechowywane czyli np. dodawać, zmieniać i kasować tabele lub bazy. Najważniejsze polecenia tej grupy

Bardziej szczegółowo

Język SQL, zajęcia nr 2

Język SQL, zajęcia nr 2 Język SQL, zajęcia nr 2 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 Funkcja agregująca

Bardziej szczegółowo