Programowanie_serwera_Oracle_11g_SQL_i_PL_SQL_prseor.pdf

(299 KB) Pobierz
Programowanie serwera
Oracle 11g SQL i PL/SQL
Autor: Adam Pelikant
ISBN: 978-83-246-2429-4
Format: 158235, stron: 336
Twórz przejrzyste bazy danych i w³aœciwie przetwarzaj informacje
• Podstawy – organizacja serwera, instalacja bazy danych i koñcówki klienta
• Jêzyk SQL – tworzenie ró¿nych rodzajów zapytañ, funkcjonalnoœci dodatkowe
• Jêzyk PL/SQL – procedury, funkcje, dynamiczny SQL
Bazy danych Oracle od lat stanowi¹ najlepsz¹ alternatywê dla wszystkich tych, którzy
potrzebuj¹ funkcjonalnych i pojemnych struktur przechowywania danych,
wyposa¿onych dodatkowo w mo¿liwoœæ wszechstronnego przeszukiwania i zestawiania
potrzebnych informacji. Jednak podstawowa wiedza na temat œrodowiska Oracle nie
wystarczy, aby zaprojektowaæ naprawdê przejrzyst¹, prost¹ w obs³udze bazê. Do tego
potrzebna jest solidna wiedza, któr¹ znajdziesz w³aœnie w tym podrêczniku.
„Programowanie serwera Oracle 11g SQL i PL/SQL” to kontynuacja ksi¹¿ki Adama
Pelikanta „Bazy danych. Pierwsze starcie”, a poruszane w niej zagadnienia s¹ bardziej
zaawansowane, choæ przy odrobinie samozaparcia tak¿e nowicjusz w tej dziedzinie
bêdzie w stanie przyswoiæ sobie zawart¹ tu praktyczn¹ wiedzê. Oprócz organizacji
serwera, instalacji bazy danych i sk³adni jêzyka SQL szczegó³owo omówione s¹ tutaj
ró¿ne rodzaje zapytañ w tym jêzyku (prostych i z³o¿onych), a tak¿e funkcje rozszerzenia
proceduralnego PL/SQL. W ksi¹¿ce opisano tak¿e zastosowanie Javy do tworzenia
oprogramowania po stronie serwera oraz funkcje analityczne, stanowi¹ce wstêp do
przetwarzania OLAP. Ca³oœæ uzupe³niono praktycznymi przyk³adami, obrazuj¹cymi
dzia³anie poszczególnych konstrukcji i procedur.
• Organizacja serwera
• Instalacja bazy i koñcówki klienta
• Zapytania wybieraj¹ce, modyfikuj¹ce dane i tworz¹ce tabele
• Dodatkowe funkcjonalnoœci SQL
• Procedury sk³adowane i wyzwalane
• Funkcje w PL/SQL
• Pakiety, kursory, transakcje
• Dynamiczny SQL
• Zastosowanie Javy do tworzenia oprogramowania po stronie serwera
• Elementy administracji – zarz¹dzanie uprawnieniami z poziomu SQL
• Obiektowoœæ w Oracle
Wydajna, bezpieczna i prosta w obs³udze – zaprojektuj doskona³¹ bazê danych!
Spis treści
Od autora ......................................................................................... 5
Część I
Oracle SQL ..................................................................... 7
Organizacja serwera ....................................................................................................... 10
Instalacja bazy i końcówki klienta .................................................................................. 12
Rozdział 1. Wstęp .............................................................................................. 9
Rozdział 2. Zapytania wybierające ................................................................... 27
Podstawowe elementy składni ........................................................................................ 27
Grupowanie i funkcje agregujące ................................................................................... 36
Zapytania do wielu tabel — złączenia ............................................................................ 40
Grupowanie i funkcje analityczne .................................................................................. 49
Funkcje analityczne i rankingowe .................................................................................. 63
Pozostałe elementy składniowe stosowane w SQL ........................................................ 87
Obsługa grafów w SQL .................................................................................................. 94
Rozdział 3. Zapytania modyfikujące dane ......................................................... 99
Rozdział 4. Zapytania tworzące tabele ........................................................... 103
Zapytania modyfikujące tabelę ..................................................................................... 110
Dodatkowe informacje ................................................................................................. 114
Sekwencja ..................................................................................................................... 119
Perspektywy ................................................................................................................. 121
Indeksy ......................................................................................................................... 130
Rozdział 5. Dodatkowe funkcjonalności SQL ................................................... 137
Zapytania dla struktur XML ......................................................................................... 137
Część II
ORACLE PL/SQL ........................................................ 153
Podstawy składni .......................................................................................................... 155
Rozdział 6. PL/SQL ........................................................................................ 155
Rozdział 7. Procedury składowane .................................................................. 163
Rozdział 8. Funkcje w PL/SQL ....................................................................... 179
Rozdział 9. Pakiety ........................................................................................ 187
4
Spis treści
Rozdział 10. Procedury wyzwalane ................................................................... 197
Rozdział 11. Kursory ........................................................................................ 229
Rozdział 12. Transakcje ................................................................................... 247
Rozdział 13. Dynamiczny SQL ........................................................................... 253
Rozdział 14. Zastosowanie Javy do tworzenia oprogramowania
po stronie serwera ....................................................................... 269
Rozdział 15. Elementy administracji
— zarządzanie uprawnieniami z poziomu SQL ................................. 289
Rozdział 16. Obiektowość w Oracle .................................................................. 301
Zakończenie ................................................................................ 315
Skorowidz .................................................................................... 317
Rozdział 7.
Procedury składowane
Zamiast tworzyć bloki anonimowe, wygodniej jest organizować kod w nazwane pro-
cedury. W
środowisku
baz danych noszą one miano procedur składowanych. W przy-
padku języków wyższego rzędu taka organizacja kodu podyktowana jest chęcią utrzy-
mania jego przejrzystości — jeśli jego fragment ma być wykonywany wielokrotnie,
warto go umieścić w procedurze i odwoływać się do niego tylko przez jej wywoływanie.
Także różne funkcjonalności, zadania kodu są argumentem za jego podziałem. Pod-
stawowa składnia polecenia tworzącego procedurę ma postać:
CREATE PROCEDURE nazwa
IS
BEGIN
-- ciało procedury
END;
Zamiast słowa kluczowego
IS
można stosować tożsame słowo kluczowe
AS
. Ciałem
procedury może być dowolny zestaw instrukcji PL/SQL oraz dowolne zapytania SQL,
za wyjątkiem zapytania wybierającego
SELECT
.
W przypadku
środowisk
baz danych wydaje się jednak,
że
argumenty związane z or-
ganizacją kodu nie są tu najważniejsze. Dla procedur składowanych najpóźniej przy
pierwszym ich wykonaniu generowany jest plan wykonania zapytań wchodzących w ich
skład, ich kod jest wstępnie optymalizowany, a następnie są one prekompilowane. W ten
sposób na serwerze przechowywana jest procedura w dwóch postaciach: przepisu na
jej utworzenie
CREATE PROCEDURE
oraz skompilowanego kodu. Przy każdym następnym
wykonaniu odwołujemy się już do postaci skompilowanej. Sprawia to,
że
procedury są
wykonywane szybciej i wydajniej niż ten sam kod w formie skryptu. Sprawa nie jest tak
oczywista w przypadku często wykonywanych zapytań. Plany wykonania każdego za-
pytania przechowywane są w pamięci współdzielonej (SGA —
System Global Area)
i je-
żeli
wykonamy je ponownie, wykorzystana zostanie jego przetworzona postać. Należy
jednak pamiętać,
że
zgodność dwóch zapytań sprawdzana jest z dokładnością do znaku,
nie jest natomiast analizowana semantyka. Poza tym informacje o planach zapytań są
nadpisywane na stare definicje w momencie wyczerpania zasobów pamięci współdzie-
lonej. Bez względu na te uwagi możemy jednak przyjąć,
że
wydajność przetwarzania
procedury składowanej jest większa niż w przypadku równoważnego jej skryptu (bloku
anonimowego). Jeżeli chcemy usunąć definicję procedury, możemy użyć następującego
polecenia:
164
DROP PROCEDURE nazwa;
Część II
ORACLE PL/SQL
Wielokrotnie możemy chcieć modyfikować kod procedury. Ponowne wykonanie po-
lecenia
CREATE PROCEDURE
spowoduje wykrycie obiektu o tej samej nazwie i wyświe-
tlenie komunikatu o błędzie. W związku z tym musimy najpierw usunąć definicję pro-
cedury, a następnie utworzyć ją ponownie. Zamiast tego możemy posłużyć się składnią
CREATE OR REPLACE PROCEDURE
, która, w zależności od tego, czy procedura o danej na-
zwie już istnieje, czy też nie, stworzy ją od podstaw lub nadpisze na istniejącej nową
definicję. Z punktu widzenia programisty nie da się rozróżnić, która z tych akcji została
wykonana (taki sam komunikat —
Procedura została pomyślnie utworzona),
dlatego,
korzystając z tej składni, należy się upewnić, czy nadpisujemy kod właściwej proce-
dury! Przykładem może być utworzenie procedury, której zadaniem będzie zamiana
wszystkich nazwisk w tabeli
Osoby
na pisane dużymi literami.
CREATE OR REPLACE PROCEDURE up
IS
BEGIN
UPDATE Osoby SET Nazwisko=UPPER(Nazwisko);
END;
Jak widać, ciało procedury zawiera zapytanie aktualizujące
UPDATE
zgodne ze składnią
SQL. Jej wywołanie może odbyć się na przykład z wnętrza bloku anonimowego o postaci:
BEGIN
up;
END;
Załóżmy,
że
w ramach tego samego skryptu chcielibyśmy sprawdzić poprawność wy-
konania procedury zapytaniem wybierającym
SELECT
. Zgodnie z wcześniejszą uwagą,
zamieszczenie go w ciele bloku anonimowego jest niedozwolone. Również umiesz-
czenie zapytania wybierającego bezpośrednio po słowie kluczowym
END;
zakończy
się komunikatem o błędzie. Stąd konieczność podzielenia skryptu na dwie części, które
z punktu widzenia serwera stanowić będą osobne fragmenty. Znakiem odpowiedzial-
nym za taki podział jest slash (
/
), przy czym części będą traktowane jako fragmenty
kodu PL/SQL lub zapytania SQL, w zależności od zawartości. Skrypt może zostać
podzielony w ten sposób na dowolną liczbę niezależnych fragmentów.
BEGIN
up;
END;
/
SELECT Nazwisko FROM Osoby;
Innym przykładem realizacji procedury składowanej jest zastosowanie jej do przepi-
sywania nazwisk i wzrostu osób do tabeli
wys_tab,
przy czym rekordy posortowane
będą malejąco według wzrostu. Należy zauważyć,
że
tabela
wys_tab
o odpowiedniej
strukturze musi już istnieć w schemacie użytkownika.
CREATE OR REPLACE PROCEDURE wysocy
IS
BEGIN
INSERT INTO wys_tab(Nazwisko,Wzrost)
SELECT Nazwisko, Wzrost FROM Osoby
ORDER BY Wzrost DESC;
END wysocy;
Zgłoś jeśli naruszono regulamin