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



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

Oracle PL/SQL. Paweł Rajba.

Plan wykładu BAZY DANYCH II WYKŁAD 5. Kolekcje. Tablice asocjacyjne Kolekcje Tablice asocjacyjne VARRAY Tablice zagnieżdżone

Oracle PL/SQL. Paweł Rajba.

Obiektowe bazy danych Ćwiczenia laboratoryjne (?)

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

Obiektowe bazy danych

Wykład 5. SQL praca z tabelami 2

20 kwietnia Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska. Systemy baz danych - wykład IX. dr inż.

Relacyjne bazy danych. Podstawy SQL

1 Kolekcje Operacje masowe VARRAY NESTED TABLES Tabele asocjacyjne Perspektywy obiektowe 10.

Bloki anonimowe w PL/SQL

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

Język SQL, zajęcia nr 1

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

Obiektowe bazy danych

Relacyjne bazy danych. Podstawy SQL

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

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

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

Jerzy Nawrocki, Wprowadzenie do informatyki

PODSTAWY BAZ DANYCH 13. PL/SQL

ZSBD ćwiczenie 8. Obiektowo relacyjne systemy zarządzania bazą danych. Kolekcje. Wymagania: ZSBD ćwiczenie 8. Zaawansowane systemy baz danych - ZSBD

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

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

Wykład 8. SQL praca z tabelami 5

Oracle PL/SQL. Paweł Rajba.

Hurtownia Świętego Mikołaja projekt bazy danych

Widok Connections po utworzeniu połączenia. Obszar roboczy

SQL 4 Structured Query Lenguage

ACESS- zadania z wykorzystaniem poleceń SQL

Bloki anonimowe w PL/SQL

Wykład 05 Bazy danych

SQL (ang. Structured Query Language)

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

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

Pakiety podprogramów Dynamiczny SQL

Procedury i funkcje składowane

Grupowanie i funkcje agregujące

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

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

Wykład 6. SQL praca z tabelami 3

Bazy Danych i Usługi Sieciowe

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

Oracle11g: Wprowadzenie do SQL

Oracle PL/SQL. Paweł Rajba.

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

BAZA DANYCH SIECI HOTELI

Systemy GIS Tworzenie zapytań w bazach danych

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

Paweł Rajba

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

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

Język SQL. Rozdział 2. Proste zapytania

15. Funkcje i procedury składowane PL/SQL

Bazy danych i usługi sieciowe

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

Struktura bazy danych

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

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

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

Multimedialne bazy danych - laboratorium

Przestrzenne bazy danych Podstawy języka SQL

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

Zaawansowane bazy danych i hurtownie danych semestr I

Technologie baz danych WYKŁAD 7: Wyjątki

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

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

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

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

Plan wykładu BAZY DANYCH II WYKŁAD 9. Dynamiczny SQL. Dynamiczny SQL

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

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

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

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

Systemowe aspekty baz

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

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

SQL :: Data Definition Language

Bazy danych SQL Server 2005

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

Post-relacyjne bazy danych

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

PL/SQL. Zaawansowane tematy PL/SQL

1 Wprowadzenie do bloków nazwanych 1. 2 Parametry 2. 3 Procedury i funkcje 3. 4 Pakiety 6. 5 Podsumowanie Źródła 10

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

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

Rozszerzenia języka relacyjnych baz danych SQL

Tabele wykorzystywane w przykładach

Bazy danych. Polecenia SQL

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

Bazy danych 10. SQL Widoki

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

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

Wprowadzenie do języka SQL

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

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

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

Transkrypt:

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 elementów ewentualnie z powtórzeniami, kolejność istotna wielozbiory (MULTISETS ) możliwe powtórzenia, kolejność nieistotna W Oracle zaimplementowano dwa rodzaje kolekcji tabele zagnieżdżone - wartości typu TABLE, brak maksymalnego rozmiaru, kolejność elementów nieistotna CREATE [ OR REPLACE ] TYPE Nazwa_kolekcji AS TABLE OF Typ_elementu [ NOT NULL ] tablice zmiennej długości - wartości typu VARRAY, określony maksymalny rozmiar, kolejność elementów istotna CREATE [ OR REPLACE ] TYPE Nazwa_kolekcji AS VARRAY ( max_rozmiar ) OF Typ_elementu [ NOT NULL ] 1

przykłady: 1) * utworzenie kolekcji Telefony z elementów typu tekst 15 znakowy * CREATE OR REPLACE TYPE Telefony AS VARRAY(3) OF VARCHAR2(15) 2) * utworzenie typu elementu kolekcji * CREATE OR REPLACE TYPE Filia AS OBJECT ( Oddzial NUMBER( 1 ), Miasto VARCHAR2( 25 ), Telefon VARCHAR2( 10 ) ) * utworzenie kolekcji Filie o pięciu elementach * CREATE OR REPLACE TYPE Filie AS VARRAY( 5 ) OF Filia * utworzenie tabeli z kolumną typu kolekcja * CREATE TABLE Banki ( Nazwa VARCHAR2( 20 ), Centrala VARCHAR2(15 ), Oddzialy Filie ) ; DESC Banki Nazwa Wartość NULL? Typ NAZWA CENTRALA ODDZIALY VARCHAR2(20) VARCHAR2(15) FILIE INSERT INTO Banki VALUES ( 'PEKAO SA', 'Warszawa', Filie ( Filia (2, 'Częstochowa','0-34256-31'), Filia( 3,'Kraków','0-18134-76') ) ) ; 2

* blok anonimowy; uzupełnie kolekcji - dodanie nowego elementu * DECLARE Fil Filie:=Filie(); I INTEGER; IL INTEGER; BEGIN SELECT Oddzialy INTO Fil FROM Banki WHERE Nazwa='PEKAO SA'; Fil.EXTEND(1); IL:= Fil.LAST(); Fil(IL):=filia(5,'Kielce','04212531'); UPDATE Banki SET Oddzialy=Fil WHERE Nazwa='PEKAO SA'; FOR I IN 1..Fil.LAST() LOOP dbms_output.put_line(fil(i).oddzial ' ' Fil(i).Miasto); END LOOP; END; * prezentacja elementów kolekcji * SELECT * FROM TABLE (SELECT Oddzialy FROM Banki WHERE Nazwa='PEKAO SA'); SELECT * FROM Banki; SELECT b.nazwa, e.* FROM Banki b, TABLE (b.oddzialy) e; 3) * przykład kolekcji typu zagnieżdżona tabela * CREATE OR REPLACE TYPE Lokal AS OBJECT ( Nazwa VARCHAR2( 20 ), Powierzchnia NUMBER( 6,1 ) ) CREATE OR REPLACE TYPE Lokale AS TABLE OF Lokal CREATE OR REPLACE TYPE Budynek AS OBJECT ( Adres VARCHAR2( 30 ), Zasob Lokale, MEMBER FUNCTION Liczba_lokali RETURN NUMBER, MEMBER FUNCTION Cal_powierzchnia RETURN NUMBER ) 3

CREATE OR REPLACE TYPE BODY Budynek AS MEMBER FUNCTION Liczba_lokali RETURN NUMBER IS BEGIN RETURN Zasob.COUNT( ) ; END Liczba_lokali ; MEMBER FUNCTION Cal_powierzchnia RETURN NUMBER IS I NUMBER; Sumuj NUMBER :=0; BEGIN FOR I IN 1..Zasob.COUNT LOOP Sumuj:=Sumuj + Zasob(I).Powierzchnia; END LOOP ; RETURN Sumuj ; END Cal_powierzchnia ; END ; CREATE TABLE Budynki OF Budynek NESTED TABLE Zasob STORE AS zas_lokale ; INSERT INTO Budynki VALUES ( Budynek ('Częstochowa Al. NMP 23', Lokale ( Lokal ('Mieszkanie',63.4), Lokal ('Biuro',78) ) ) ); SELECT Adres, b.liczba_lokali( ), b.cal_powierzchnia( ) FROM Budynki b; SELECT b.nazwa, b.powierzchnia FROM TABLE ( SELECT Zasob FROM Budynki WHERE Adres LIKE '%K%' ) b; INSERT INTO TABLE ( SELECT Zasob FROM Budynki WHERE Adres LIKE '%K%') VALUES ( Lokal ( 'Biuro PZU', 125 ) ) ; Kolekcje można tworzyć: trwale w bazie danych nietrwale w blokach PLSQL Elementami kolekcji mogą być instancje typów obiektowych i na odwrót.. Instancje kolekcji mogą być przekazywane poprzez parametry procedur i funkcji. 4

Operacje na kolekcjach możliwe jest przypisanie: kolekcja1 := kolekcja2 o ile obie instancje kolekcji są dokładnie tego samego typu kolekcje nie mogą być używane w porównaniach oraz klauzulach DISTINCT, GROUP BY, ORDER BY niezainicjowana kolekcja jest równa NULL nie ma żadnych elementów mogą być testowane względem NULL przy użyciu operatorów IS NULL oraz IS NOT NULL w zapytaniach można do kolekcji odwoływać się jak do tabel, stosując operator TABLE ( THE ) można budować perspektywy relacyjne udostępniające dane z kolekcji tak jak dane w pełni relacyjne Metody predefiniowane operujące na kolekcjach EXISTS( n ) - zwraca prawdę jeżeli n-ty element kolekcji istnieje COUNT zwraca liczbę elementów kolekcji LIMIT zwraca maksymalny rozmiar VARRAY lub NULL dla tabel zagnieżdżonych FIRST zwraca indeks pierwszego elementu kolekcji LAST zwraca indeks ostatniego elementu kolekcji PRIOR ( n ) - zwraca indeks poprzednika n-tego elementu NEXT ( n ) - zwraca indeks następnego po n-tym elemencie EXTEND dodaje pusty element do kolekcji EXTEND ( n ) - dodaje n pustych elementów EXTEND ( n, e ) - dodaje n kopii elementu e TRIM przycina kolekcję o element końcowy TRIM (n ) - przycina kolekcję o n-elementów końcowych DELETE usuwa wszystkie elementy kolekcji DELETE ( n ) - usuwa n-ty element kolekcji DELETE ( n1, n2 ) - usuwa elementy od n1 do n2 5

przykłady: * utworzenie kolekcji Nazwiska, gdzie elementem jest napis na 30 znakach * CREATE OR REPLACE TYPE Nazwiska AS TABLE OF VARCHAR2(30) * prezentacja nazw etatów wraz z kolekcją Nazwisk pracowników zatrudnionych na danym etacie * SELECT Nazwa, CAST ( MULTISET ( SELECT Nazwisko FROM Pracownicy WHERE Etat = Nazwa ) AS Nazwiska ) Kolekcja FROM Etaty ; * prezentacja nazwisk szefów wraz z kolekcją nazwisk podwładnych * SELECT Nazwisko, CAST ( MULTISET ( SELECT Nazwisko FROM Pracownicy p WHERE p.szef = s.numer ) AS Nazwiska ) Podwładni FROM Pracownicy s WHERE EXISTS (SELECT Nazwisko FROM Pracownicy p WHERE p.szef = s.numer ) ; * działanie operatorów CAST, MULTISET konwersja danych z wyrzżenia lub podzapytania do typu kolekcja * Wykorzystano Wykłady dr inż. Olga Siedlecka-Lamch Systemy baz danych z roku 2012 6