4467

Szczegóły
Tytuł 4467
Rozszerzenie: PDF
Jesteś autorem/wydawcą tego dokumentu/książki i zauważyłeś że ktoś wgrał ją bez Twojej zgody? Nie życzysz sobie, aby podgląd był dostępny w naszym serwisie? Napisz na adres [email protected] a my odpowiemy na skargę i usuniemy zabroniony dokument w ciągu 24 godzin.

4467 PDF - Pobierz:

Pobierz PDF

 

Zobacz podgląd pliku o nazwie 4467 PDF poniżej lub pobierz go na swoje urządzenie za darmo bez rejestracji. Możesz również pozostać na naszej stronie i czytać dokument online bez limitów.

4467 - podejrzyj 20 pierwszych stron:

Robert Chwastek Bazy danych [ Bazy danych Robert Chwastek Niniejszy tekst zawiera fragmenty wyk�adu pod nazw� "Bazy Danych", kt�ry prowadz� dla student�w 3-go roku specjalno�ci Telekomunikacja w Akademii G�rniczo-Hutniczej w Krakowie. Wszystkie nazwy producent�w i produkt�w s� w�asno�ci� odpowiednich firm i zosta�y u�yte jedynie w celach informacyjnych. Copyright (c) Robert Chwastek, Krak�w 1996. Bazy danych Robert Chwastek ] Spis tre�ci: 1. POJ�CIA PODSTAWOWE 5 1.1. DEFINICJA BAZY DANYCH 5 1.2. SYSTEM ZARZ�DZANIA BAZ� DANYCH 6 1.3. TRANSAKCJE 6 1.4. J�ZYKI STOSOWANE W BAZACH DANYCH 7 2. TYPY DANYCH 8 2.1. SPIS TYP�W DANYCH 8 2.2. TYP NUMERYCZNY 8 2.3. KONWERSJE TYP�W 10 2.4. WARTO�CI PUSTE 10 3. MODEL RELACYJNY 12 3.1. STRUKTURY DANYCH W MODELU RELACYJNYM 12 3.2. ROZKAZY J�ZYKA SQL 13 3.3. SK�ADNIA ROZKAZ�W SQL 14 3.3.1. Definicje podstawowe 14 3.3.2. Rozkaz CREATE TABLE 75 3.3.3. Rozkaz DROP 16 3.3.4. Rozkaz INSERT 17 3.3.5. Rozkaz DELETE 18 3.3.6. Rozkaz CREATE SEQUENCE 19 3.3.7. RozkazSELECT 21 3.3.8. Rozkaz UPDATE 22 3.3.9. Rozkaz RENAME 23 3.3.10. Rozkaz ALTER TABLE 24 3.3.11. Rozkaz CREATE INDEX 25 3.3.12. Rozkaz CREATE VIEW 27 3.3.13. Rozkaz COMMIT 28 3.3.14. Rozkaz ROLLBACK. 28 3.3.15. Rozkaz SAVEPOINT. 28 3.3.16. Rozkaz SET TRANSACTION 29 3.4. OPERACJE RELACYJNE 30 3.4.1. Selekcja 30 3.4.2. Projekcja 31 3.4.3. Produkt 32 3.4.4. Po��czenie 32 3.4.5. Operacje mnogo�ciowe 33 3.4.6. Grupowanie 34 3.4.7. Kolejno�� klauzul w rozkazie SELECT 35 3.5. PODZAPYTANIA 35 3.6. WIDOKI (PERSPEKTYWY) 37 3.7. TRANSAKCJE 38 3.8. NORMALIZACJA RELACJI 38 3.8.1. Cele normalizacji 38 3.8.2. Pierwsza posta� normalna 39 3.8.3. Definicje pomocnicze 40 3.8.4. Druga posta� normalna 44 3.8.5. Trzecia posta� normalna 46 3.8.6. Czwarta posta� normalna 47 3.8.7. Pi�ta posta� normalna 48 3.8.8. Podsumowanie 48 4. WARUNKI I WYRA�ENIA 50 4.1. OPERATORY 50 4.1.1. Operatory arytmetyczne 50 4.1.2. Operatory znakowe 50 4.1.3. Operatory por�wnania 57 4.1.4. Operatory logiczne 52 4.1.5. Operatory mnogo�ciowe 53 4.1.1. [ Bazy danych Robert Chwastek ] 4.2. WYRA�ENIA 53 4.3. WARUNKI 55 5. STANDARDOWE FUNKCJE J�ZYKA SQL 57 5.1. FUNKCJE NUMERYCZNE 57 5.2. FUNKCJE ZNAKOWE 57 5.3. FUNKCJE GRUPOWE 59 5.4. FUNKCJE KONWERSJI 60 5.5. FUNKCJE OPERACJI NA DATACH 61 5.6. INNE FUNKCJE 63 5.7. FORMATY ZAPISU DANYCH 64 5.7.7. Formaty numeryczne 64 5.7.2. Formaty dat 64 6. PROGRAMOWANIE PROCEDURALNE - PL/SQL 66 6.1. WPROWADZENIE 66 6.2. STRUKTURA BLOKU 67 6.3. PROCEDURY I FUNKCJE 67 6.4. KURSORY 68 6.5. REKORDY 70 6.6. OBS�UGA B��D�W 71 6.6.7. Informacje podstawowe 71 6.6.2. Wyj�tkipredefiniowane 73 6.6.3. Obs�uga wyj�tk�w 73 6.6.4. Wyj�tki zdefiniowane przez u�ytkownika 74 6.7. ROZKAZY J�ZYKA PL/SQL 75 6.Z7. Rozkaz OPEN 75 6.7.2. Rozkaz CLOSE 76 6.7.3. RozkazFETCH 76 6.7.4. RozkazSELECT... INTO 77 6.7.5. RozkazIF 77 6.7.6. Rozkaz WOP 78 6.7.7. RozkazEXIT 80 6.7.8. RozkazGOTO 80 7. LITERATURA 81 Bazy danych Robert Chwastek 1. Poj�cia podstawowe 1.1. Definicja bazy danych W pewnym uproszczeniu przez baz� danych rozumiemy uporz�dkowany zbi�r danych, a przez system bazy danych - baz� danych wraz z oprogramowaniem umo�liwiaj�cym operowanie na niej. Baza danych jest przechowywana na no�nikach komputerowych. Precyzuj�c definicj� bazy danych mo�na powiedzie�, �e baza danych jest abstrakcyjnym, informatycznym modelem wybranego fragmentu rzeczywisto�ci (ten fragment rzeczywisto�ci bywa nazywamy mini�wiatem). Fragment rzeczywisto�ci mo�e by� rozumiany jako: � rzeczywisto�� fizyczna - taka, kt�r� postrzegamy naszymi organami percepcji � rzeczywisto�� konceptualna - istniej�ca najcz�ciej w wyobra�ni pewnych os�b; przyk�adem tej rzeczywisto�ci mo�e by� projekt nowego samolotu firmy Boeing, kt�ry istnieje tylko w wyobra�ni konstruktor�w. Poprawne (z punktu widzenia cz�owieka) operowanie na bazie danych wi��e si� z w�a�ciw� interpretacj� danych, kt�re zosta�y w niej zapisane. W zwi�zku z tym konieczny jest opis semantyki (znaczenia) danych, przechowywanych w bazie. System bazy danych s�u�y wi�c do modelowania rzeczywisto�ci (fragmentu). W systemach baz danych rzeczywisto�� opisuje si� za pomoc� modelu danych. Przez model danych rozumiemy zbi�r abstrakcyjnych poj�� umo�liwiaj�cych reprezentacj� okre�lonych w�asno�ci tego �wiata. Zbi�r poj�� u�yty do opisu w�asno�ci konkretnego fragmentu �wiata rzeczywistego, istotnych z punktu widzenia danego zastosowania tworzy schemat bazy danych. Baza danych jest modelem logicznie sp�jnym s�u��cym okre�lonemu celowi. W zwi�zku z tym baza danych nie mo�e (nie powinna) przyj�� stanu, kt�ry nie jest nigdy osi�galny w modelowanej rzeczywisto�ci. Z bazy danych korzysta pewna �ci�le okre�lona grupa u�ytkownik�w. Szczeg�lnymi u�ytkownikami s� projektanci bazy danych, kt�rzy defniuj� jej struktur� i przygotowuj� niezb�dne programy zwane aplikacjami. Baza danych jest wype�niania danymi i przetwarzana. Grupy os�b wype�niaj�ce i przetwarzaj�ce baz� danych mog� by� roz��czne. Do wype�niania i przetwarzania bazy danych s�u�� najcz�ciej wykonane w tym celu aplikacje. Mo�na wi�c powiedzie�, �e ka�da baza danych posiada: � �r�d�o danych � u�ytkownik�w � zwi�zki z reprezentowan� rzeczywisto�ci� Baza danych to dane i tzw. schemat bazy danych. Dane opisuj� cechy (w�asno�ci) modelowanych obiekt�w. Nie jest jednak mo�liwa ich interpretacja bez u�ycia schematu. Schemat jest opisem struktury (formatu) przechowywanych danych oraz wzajemnych powi�za� mi�dzy nimi. Bazy danych Robert Chwastek 1.2. System zarz�dzania baz� danych System zarz�dzania baz� danych (SZBD) jest to zestaw program�w umo�liwiaj�cych tworzenie i eksploatacj� bazy danych. System zarz�dzania baz� danych jest oprogramowaniem og�lnego przeznaczenia. System bazy danych sk�ada si� z bazy danych, systemu zarz�dzania baz� danych i ewentualnie z zestawu aplikacji wspomagaj�cych prac� poszczeg�lnych grup u�ytkownik�w. 1.3. Transakcje Transakcja jest sekwencj� instrukcji po wykonaniu kt�rej sp�jna baza danych nadal zachowuje sw� sp�jno�� (zgodno�� z modelowan� rzeczywisto�ci�). Transakcja jest operacj� atomow� tzn. system zarz�dzania baz� danych mo�e wykona� wszystkie instrukcje wchodz�ce w sk�ad transakcji albo �adnej. W rzeczywisto�ci system zarz�dzania baz� danych wykonuje po kolei instrukcje wchodz�ce w sk�ad transakcji i w przypadku niepowodzenia kt�rejkolwiek z nich wycofuje instrukcje uprzednio wykonane. Podsumowuj�c podane wcze�niej informacje, system bazy danych przedstawia nast�puj�cy rysunek: A Transakcje (zapytania) Z B D Modu� zarz�dzania transakcjami Modu� zarz�dzania dost�pem do danych System bazy danych [ Bazy danych Robert Chwastek ] 1.4. J�zyki stosowane w bazach danych J�zyki, kt�re stosuje si� do projektowania i wype�niania bazy danych mo�na podzieli� na cztery r�ne grupy: � j�zyk definiowania danych (Data Definition Language - DDL), kt�ry umo�liwia definiowanie struktury danych przechowywanych w bazie, czyli tworzenie schematu implementacyj nego � j�zyk manipulowania danymi (Data Manipulation Language - DML), kt�ry umo�liwia wype�nianie, modyfikowanie i usuwanie informacji z bazy danych. � j�zyk sterowania danymi (Data Control Language - DCL), kt�ry umo�liwia sterowanie transakcjami (np. zatwierdzanie lub wycofywanie) � j�zyk zapyta� (Query Language), kt�ry umo�liwia pobieranie z bazy informacji zgodnych z podanymi warunkami � Bazy danych Robert Chwastek 2. Typy danych 2.1. Spis typ�w danych Typ char(size) character varchar(size) dat� long long varchar raw(size) long raw rowid number Opis Ci�g znak�w o zmiennej d�ugo�ci nie wi�kszej ni� podany rozmiar. Dla tego typu maksymalny rozmiar mo�e wynosi� 255. W przypadku nie podania rozmiaru domy�lnie przyjmowana jest warto�� 1 Synonim do char W aktualnej wersji ORACLE'a jest to synonim do char, konieczne jest jednak podanie rozmiaru. W przysz�ych wersjach zak�ada si�, �e char b�dzie ci�giem znak�w o sta�ej d�ugo�ci, natomiast varchar o zmiennej. Poprawne daty z zakresu 1 stycznia 4712 p.n.e. do 31 grudnia 4712 n.e. Domy�lny format wprowadzania to" DD-MON-YY np.: '01-JAN-89' Ci�g znak�w o zmiennej d�ugo�ci nie wi�kszej ni� 65535 znak�w. Mo�na zdefiniowa� tylko jedn� kolumn� typu long w jednej tabeli. synonim do long Ci�g bajt�w o podanej d�ugo�ci. Specyfikacja rozmiaru jest konieczna. Rozmiar maksymalny dla tego typu to 255. Warto�ci do p�l tego typu s� wstawiane jako ci�gi znak�w w notacji szesnastkowej. Ci�g bajt�w o zmiennej d�ugo�ci. Pozosta�e w�asno�ci jak dla typu long. Warto�ci do p�l tego typu s� wstawiane jako ci�gi znak�w w notacji szesnastkowej. Unikalna warto�� identyfikuj�ca wiersz. Podany typ jest pseudotypem, tzn. kolumna tego typu nie mo�e by� utworzona w tabeli i nie jest w niej przechowywana, ale obliczana na podstawie informacji o fizycznym po�o�eniu wiersza na dysku, w pliku itp. Warto�� typu rowid mo�e by� przekonwertowana do typu znakowego za pomoc� funkcji ROWIDTOCHAR. Typ numeryczny. Jego warto�ci mog� si� zmienia� w zakresie od 1.0 * 10~129 do 9.99 * 10124. Mo�liwe jest ograniczenie podanego zakresu przez specyfikacj� precyzji i skali w spos�b opisany poni�ej. 2.2. Typ numeryczny Typ numeryczny jest u�ywany do przechowywania liczb zar�wno zmienno jak i sta�oprzecinkowych. Dla kolumn numerycznych typ mo�na wyspecyfikowa� na jeden z trzech sposob�w: � number � number (precyzja) � number (precyzja, skala) 8 [ Bazy danych Robert Chwastek ] Precyzja okre�la ca�kowit� liczb� cyfr znacz�cych i mo�e si� zmienia� od 1 do 38. Skala okre�la liczb� cyfr po prawej stronie kropki dziesi�tnej i mo�e si� zmienia� w zakresie od -84 do 127. W momencie definiowania kolumny numerycznej dobrym zwyczajem jest podawanie zar�wno precyzji jak i skali, poniewa� wymusza to automatyczn� kontrol� wprowadzanych warto�ci, a wi�c zwi�ksza szans� na zachowanie sp�jno�ci bazy danych. Je�li warto�� przekracza maksymaln� precyzj�, to generowany jest b��d. Je�li warto�� przekracza skal�, to jest zaokr�glana. Je�li skala jest ujemna, to warto�� jest zaokr�glana do podanej liczby miejsc po lewej stronie kropki dziesi�tnej; np. specyfikacja (10, -2) oznacza zaokr�glenie do setek. Czasami specyfikuje si� r�wnie� skal� wi�ksz� ni� precyzj�. Oznacza to wtedy, �e wprowadzane liczby musz� mie� po kropce dziesi�tnej tak� liczb� zer jaka jest r�nica mi�dzy skal� a precyzj�; np: number(4, 5) b�dzie wymaga� jednego zera po kropce dziesi�tnej. Liczby mo�na r�wnie� zapisywa� w formacie zmiennoprzecinkowym. Sk�ada si� ona wtedy z u�amka dziesi�tnego, bezpo�rednio po kt�rym znajduje si� litera E i wyk�adnik pot�gi liczby 10 przez jaki trzeba pomno�y� ten u�amek. Dla przyk�adu zapis 9.87E-2 oznacza 9.87 * 10~2. Inne systemy baz danych posiadaj� kilka r�nych typ�w numerycznych, kt�re w ORACLE'u implementowane s� jako number. Mo�liwe jest stosowanie nazw tych typ�w. Nazwy te oraz spos�b implementacji za pomoc� typu number przedstawia tabela: Bazy danych Robert Chwastek ] Specyfikacja Typ Precyzja Skala number number 38 null number(*) number 38 null number(*, s) number 38 t/5 number(p) number P 0 number(p,s) number P t/5 decimal number 38 0 decimal(*) number 38 0 decimal(*, s) number 38 t/5 decimal(p) number P 0 decimal(p, s) number P t/5 integer number 38 0 smallint number 38 0 float number 38 null float(*) number 38 null float(b) number b null real number 63 binary (18 decimal) null double precision number 38 null 2.3. Konwersje typ�w W systemie zarz�dzania baz� danych mo�liwe s� konwersje danych jednego typu do danych innego typu. Dane te musz� spe�nia� pewne warunki, aby konwersja taka by�a mo�liwa, np. chc�c przekonwertowa� ci�g znak�w do liczby, ci�g ten powinien sk�ada� si� z cyfr. Poni�sza tabela przedstawia funkcje s�u��ce do wykonywania konwersji pomi�dzy poszczeg�lnymi typami w systemie ORACLE: Z typu char number dat� Do typu char number dat� zb�dna TO_NUMBER TO_DATE TO_CHAR zb�dna TO_DATE TO_CHAR niemo�liwa zb�dna 2.4. Warto�ci puste Pola tabeli mog� przyjmowa� warto�ci puste, pod warunkiem, �e nie zosta�o to zabronione przez projektanta bazy danych. Warto�� pusta (NULL) nie jest r�wna warto�ci 0 i w wyniku obliczenia dowolnego wyra�enia, kt�rego argumentem jest NULL otrzymuje si� r�wnie� warto�� pust� (NULL). Funkcja NVL pozwala dokona� konwersji warto�ci aktualnej (do niej samej) lub warto�ci pustej do warto�ci domy�lnej. Dzia�anie funkcji NVL ilustruje przyk�ad: I 10 I [ Bazy danych Robert Chwastek ] NVL(COMM, 0) zwr�ci warto�� COMM, jesli nie jest to warto�� pusta lub 0 je�li COMM ma warto�� NULL. Wi�kszo�� funkcji grupuj�cych ignoruje warto�� NULL. Np. zapytanie, kt�rego zadaniem jest obliczenie �redniej z pi�ciu nast�puj�cych warto�ci: 1000, NULL, NULL, NULL i 2000 zwr�ci 1500 poniewa� (1000 + 2000)/2 = 1500. Jedyne operatory por�wnania, kt�re mo�na u�y� do warto�ci pustej to IS NULL i IS NOT NULL. Je�li zostanie u�yty jakikolwiek inny operator por�wnania do warto�ci pustej, to wynik jest nieokre�lony. Poniewa� NULL reprezentuje brak warto�ci, wi�c nie mo�e on by� r�wny ani nier�wny jakiejkolwiek innej warto�ci, r�wnie� innemu NULL. ORACLE traktuje warunki, kt�rych wynik jest nieznany jako fa�szywe. Tak wi�c warunek COMM = NULL jest nieznany, w zwi�zku z czym rozkaz SELECT z takim warunkiem nie zwr�ci nigdy �adnego wiersza. Jednak w takiej sytuacji ORACLE nie zg�osi informacji o wyst�pieniu b��du. 11 Bazy danych Robert Chwastek 3. Model relacyjny Zgodnie z teori� model danych w relacyjnych bazach danych sk�ada si� z trzech podstawowych element�w: � relacyjnych struktur danych � operator�w relacyjnych umo�liwiaj�cych tworzenie, przeszukiwanie i modyfikacj� bazy danych � wi�z�w integralno�ci jawnie lub niejawnie okre�laj�cych warto�ci danych 3.1. Struktury danych w modelu relacyjnym Podstawow� struktur� danych jest relacja b�d�ca podzbiorem iloczynu kartezja�skiego dw�ch wybranych zbior�w reprezentuj�cych dopuszczalne warto�ci. W bazach danych relacja przedstawiana jest w postaci tabeli. Relacja jest zbiorem krotek posiadaj�cych tak� sam� struktur�, lecz r�ne warto�ci. Ka�da krotka odpowiada jednemu wierszowi tablicy. Ka�da krotka posiada co najmniej jeden atrybut odpowiadaj�cy pojedynczej kolumnie tablicy. Ka�da relacja (tablica) posiada nast�puj�ce w�asno�ci: � krotki (wiersze) s� unikalne � atrybuty (kolumny) s� unikalne � kolejno�� krotek (wierszy) nie ma znaczenia � kolejno�� atrybut�w (kolumn) nie ma znaczenia � warto�ci atrybut�w (p�l) s� atomowe Przyk�adow� tabel� wraz z jej elementami przedstawia rysunek: Imi� Pesel Nazwisko Wykszta�cenie 72030403987 Ma�gorzata Albinos WT 65081002987 Damian J�drzej ek SO 44101202034 Barbara Bibicka P 70010101231 Piotr Burzy�ski * WT 55121201223 Mateusz^/ Manicki ST \ X Krotka (wiersz) | Pole Atrybut (kolumna) | Warto�� I Dokumentacja system�w zarz�dzania bazami danych pos�uguje si� najcz�ciej terminologi� tabela, wiersz i kolumna, a nie terminologi� relacyjn�. Wynika to z tego, �e 12 [ Bazy danych Robert Chwastek operacje na relacjach s� opisywane za pomoc� matematycznych operacji na zbiorach i relacjach, kt�re s� �cis�e, ale trudno zrozumia�e dla przeci�tnego u�ytkownika. Natomiast pos�ugiwanie si� tabelami, wierszami i kolumnami jest mniej formalne i �cis�e, ale bardziej przejrzyste. W dalszej cz�ci tego wyk�adu b�dzie b�dzie stosowana zar�wno jedna jak i druga terminologia. Tabela mo�e reprezentowa�: � zbi�r encji wraz z atrybutami � zbi�r powi�za� pomi�dzy encjami wraz z ich atrybutami � zbi�r encji wraz z atrybutami i ich powi�zania z innymi encjami (wraz z atrybutami) Ka�dy wiersz w tabeli reprezentuje pojedyncz� encj�, powi�zanie lub encj� wraz z powi�zaniami. W tabeli nie powinny powtarza� si� dwa identyczne wiersze -zabezpieczenie przed tym powt�rzeniem jest realizowane poprzez pola kluczowe. Wiersze w odr�nieniu od kolumn s� dynamiczne - dzia�anie bazy danych polega na dopisywaniu, modyfikacji i usuwaniu wierszy. W raz utworzonej tabeli rzadko dopisuje si� lub kasuje kolumny - poniewa� ka�da z kolumn reprezentuje pewn� w�asno�� modelowanej rzeczywisto�ci. W przypadku projektowania tabeli w bazie danych nale�y stosowa� si� do nast�puj�cych wskaz�wek: � U�ywaj nazw opisowych do nazwania kolumn tabeli. Kolumny nie powinny mie� znaczenia ukrytego, ani reprezentowa� kilku atrybut�w (z�o�onych w pojedyncz� warto��). � B�d� konsekwentny w stosowaniu liczby pojedynczej lub mnogiej przy nazywaniu tabeli. � Tw�rz tylko te kolumny, kt�re s� niezb�dne do opisania modelowanej encji lub powi�zania - tabele z mniejsz� ilo�ci� kolumn s� �atwiejsze w u�yciu. � Utw�rz kolumn� p�l kluczowych dla ka�dej tabeli. � Unikaj powtarzania informacji w bazie danych (normalizacja). 3.2. Rozkazy j�zyka SQL Poni�sza tabela zawiera spis podstawowych rozkaz�w j�zyka SQL wraz z kr�tkim opisem. Operacje relacyjne b�d� wyja�nione dok�adniej w dalszej cz�ci wyk�adu. Rozkaz Typ Opis ALTER TABLE CREATE INDEX CREATE SEQUENCE CREATE TABLE DDL DDL DDL DDL Dodaje kolumn� do tabeli, redefiniuje kolumn� w istniej�cej tabeli lub redefiniuje ilo�� miejsca zarezerwowan� dla danych Tworzy indeks dla tabeli Tworzy obiekt s�u��cy do generowania kolejnych liczb -sekwencj�. Sekwencji mo�na u�y� do generowania unikalnych identyfikator�w w tabelach Tworzy tabel� i definiuje jej kolumny oraz alokacj� przestrzeni dla danych 13 Bazy danych Robert Chwastek J CREATE VIEW DDL Definiuje widok dla jednej lub wi�kszej ilo�ci tabel lub innych widok�w DELETE DML Usuwa wszystkie lub wyr�nione wiersze z tabeli DROP obiekt DDL Usuwa indeks, sekwencje, tablic�, widok lub inny obiekt INSERT DML Dodaje nowy wiersz (lub wiersze) do tabeli lub widoku RENAME DDL Zmienia nazw� tabeli, widoku lub innego obiektu SELECT DML Wykonuje zapytanie. Wybiera wiersze i kolumny z jednej lub kilku tabel UPDATE DML Zmienia dane w tabeli COMMIT DML Ko�czy transakcj� i na sta�e zapisuje zmiany ROLLBACK DML Wycofuje zmiany od pocz�tku transakcji lub zaznaczonego punktu. SAVEPOINT DML Zaznacza punkt, do kt�rego mo�liwe jest wykonanie rozkazu ROLLBACK SET DDL Zaznacza aktualn� transakcj� jako read-only (tylko do TRANSACTION odczytu). 3.3. Sk�adnia rozkaz�w SQL 3.3.1. Definicje podstawowe � Identyfikator (nazwa) - ci�g liter, cyfr i znak�w podkre�lenia rozpoczynaj�cy si� liter� lub znakiem podkre�lenia. R�ne systemy baz danych umo�liwiaj� stosowanie innych znak�w wewn�trz identyfikator�w (np. znak '$', lub '!'). Stosowanie tych znak�w nie jest jednak zalecane ze wzgl�du na p�niejsze problemy zwi�zane z przeno�no�ci� napisanych w ten spos�b aplikacji. � S�owa zarezerwowane - identyfikatory zastrze�one posiadaj�ce specjalne znaczenie w j�zyku SQL. Spis wszystkich s��w zarezerwowanych w j�zyku SQL przez tw�rc�w ORACLE'a przedstawia tabela: access add all alter and any as asc audit between by char check cluster column comment compress connect create current dat� dba decimal default delete desc distinct drop else exclusive exists file float for from grant graphic group having identified if immediate in increment index install initial insert integer intersect into lis level like lock |long maxextents minus mod� modify noaudit nocompress not nowait null number of offline on online option or order pctfree prior privileges public raw 14 [ Bazy danych Robert Chwastek J rename resource revoke row rowid | rownum rows select session set share size smallint start successful synonym sysdate table then to trigger uid imion unique update | user validate values varchar | vargraphic view whenever where | with � Liczby - mog� by� ca�kowite lub rzeczywiste. Liczba ca�kowita nie posiada kropki dziesi�tnej. W systemie ORACLE liczby mo�na zapisywa� w formacie zwyk�ym lub wyk�adniczym. Format wyk�adniczy sk�ada si� z liczby oraz wyk�adnika liczby 10, przez kt�ry nale�y pomno�y� t� liczb� oddzielonego liter� 'e' lub 'E\ Przyk�ady: 7E2 = 7 * 102 25e-03 = 25 * 10"3 Dodatkowo w systemie ORACLE liczb� ca�kowit� mo�na zako�czy� liter� 'K' lub liter� 'M\ Litera 'K' oznacza, �e ca�a liczba ma by� pomno�ona przez 1024 (1 KB), natomiast litera 'M', �e liczb� nale�y pomno�y� przez 1048576 (1 MB). Przyk�ady: 256K = 256 * 1024 1M = 1 * 1048576 � Rozkazy j�zyka SQL ko�cz� si� �rednikiem 3.3.2. Rozkaz CREATE TABLE Rozkaz CREATE TABLE s�u�y do tworzenia struktury tabeli (bez danych) i posiada dodatkowe opcje umo�liwiaj�ce: � okre�lenie sposobu alokacji przestrzeni do przechowywania danych � okre�lenie rozmiaru tabeli � przydzielenie tabeli do okre�lonego klastra � za�adowanie danych b�d�cych wynikiem podanego zapytania, do tabeli Rozkaz CREATE TABLE posiada nast�puj�c� sk�adni�: CREATE TABLE [user.]table ( {column_element | table_constraint} [, {column_element | table_constraint} ] ... ) [ PCTFREE n ] [ PCTUSED n ] [ INITTRANS n ] [ MAXTRANS n ] [ TABLESPACE tablespace ] [ STORAGE storage ] [ CLUSTER cluster (column [, column] ...) ] [ AS �uery ] Parametry: � user - w�a�ciciel tabeli, je�li nie zostanie podany, to w�a�cicielem staje si� osoba tworz�ca tabel�. Tabele dla innych u�ytkownik�w mo�e tworzy� tylko administrator systemu zarz�dzania baz� danych (DBA) 15 [ Bazy danych Robert Chwastek ] � table - nazwa tabeli, powinna by� prawid�owym identyfikatorem. Wszystkie obiekty danego u�ytkownika powinny mie� unikalne nazwy � column_element - definiuje kolumn� i opcjonalne ograniczenia na warto�ci w tej kolumnie. Tabela musi zawiera� co najmniej jedn� kolumn� (jak to wynika ze sk�adni) � table_constraints - okre�la ograniczenia jakie musi spe�nia� ca�a tabela � tablespace - okre�la obszar, w kt�rym nale�y umie�ci� tabel� � storage - okre�la przysz�y spos�b alokacji pami�ci � cluster - okre�la klaster (kt�rego w�a�cicielem musi by� w�a�ciciel tabeli), do kt�rego nale�y przydzieli� tabel� � �uery - jest poprawnym zapytaniem takim samym jak zdefiniowane w rozkazie SELECT. Je�li podane jest zapytanie, to mo�na poda� tylko nazwy kolumn - typy i rozmiary s� kopiowane z odpowiednich kolumn okre�lonych w zapytaniu. Mo�liwe jest r�wnie� pomini�cie nazw kolumn, ale tylko wtedy, gdy nazwy te s� unikalne i dobrze zdefiniowane w zapytaniu. Liczba wyspecyfikowanych kolumn musi by� taka sama jak liczba kolumn w zapytaniu. Przyk�ady: CREATE TABLE pracownicy( nr_pracownika NUMBER NOT NULL PRIMARY KEY, imi� CHAR(15) NOT NULL CHECK (imi� = UPPER(imi�)), nazwisko CHAR(25) NOT NULL CHECK (nazwisko = UPPER(nazwisko)), nr_wydzialu NUMBER (3) NOT NULL ) ; 3.3.3. Rozkaz DROP Rozkaz drop s�u�y do kasowania obiekt�w r�nego rodzaju. Og�lna posta� tego rozkazu jest nast�puj�ca: DROP object_type [user.]object Poni�ej przedstawione s� r�ne postacie rozkazu drop s�u��ce do kasowania poszczeg�lnych typ�w obiekt�w: � DROP CLUSTER [user .] cluster [INCLUDING TABLES ]- kasowanie klastra. W przypadku podania klauzuli INCLUDING TABLES zostan� skasowane wszystkie tabele przydzielone uprzednio do kasowanego klastra. Je�li klauzula INCLUDING TABLES nie zostanie podana, to przed skasowaniem klastra musz� by� skasowane wszystkie nale��ce do niego tabele. Jest to zabezpieczenie przed omy�kowym skasowaniem klastra zawieraj�cego tabele, kt�re s� potrzebne. � DROP [PUBLIC] DATABASE LINK 1 ink - usuwanie po��czenia. Je�li po��czenie jest publiczne to skasowa� je mo�e tylko administrator (DBA). � DROP INDEX [user. ] index - kasowanie indeksu. � DROP [PUBLIC] ROLLBACK SEGMENT segment - kasowanie segmentu wycofywania (rollback). Mo�na usun�� tylko te segmenty wycofywania, kt�re nie s� u�ywane w danym momencie. Kasowanie segment�w wycofywania mo�e wykonywa� tylko administrator bazy danych. I 16 I [ Bazy danych Robert Chwastek ] � DROP SEQUENCE [user. ] se�uence - kasowanie sekwencji. � DROP [PUBLIC] SYNONYM [user .] synonym - usuwanie synonimu. Synonim publiczny mo�e zosta� usuni�ty tylko przez administratora (DBA). Poszczeg�lni u�ytkownicy mog� usuwa� tylko te segmenty, kt�rych s� w�a�cicielami. � DROP TABLE [user. ] table - usuwanie tabeli. W momencie usuni�cia tabeli automatycznie kasowane s� skojarzone z ni� indeksy zar�wno utworzone przez w�a�ciciela tabeli jak i przez innych u�ytkownik�w. Widoki i synonimy wskazuj�ce na tabel� nie s� kasowane automatycznie, ale staj� si� nieprawid�owe. � DROP TABLESPACE tablespace [INCLUDING CONTENTS] -usuwanie obszaru danych. Rozkaz ten mo�e by� wykonany tylko przez administratora (DBA). W przypadku podania klauzuli INCLUDING CONTENTS obszar danych zostanie skasowany nawet wtedy, gdy zawiera dane. Je�li klauzula INCLUDING CONTENTS nie zosta�a podana, a obszar zawiera dane, to nie zostanie skasowany. � DROP VIEW [user. ] view - usuwanie widoku. Po usuni�ciu widoku, inne widoki lub synonimy, kt�re odwo�ywa�y si� do widoku skasowanego, nie zostan� skasowane, ale staj� si� nieprawid�owe. 3.3.4. Rozkaz INSERT Rozkaz insert dodaje nowe wiersze do tabeli lub do tabel przynale��cych do widoku. Aby doda� wiersze do tabeli nale�y by� w�a�cicielem tabeli, administratorem (DBA) lub posiada� uprawnienia dopisywania do tej tabeli. Sk�adnia rozkazu: INSERT INTO [user.]table [ (column [, column] ...) ] { VALUES (value [, value] ...) | query } Parametry: � user - nazwa w�a�ciciela tabeli � table - nazwa tabeli, do kt�rej dopisywane s� wiersze � column - nazwa kolumny wewn�trz tabeli lub widoku � value - pojedyncza warto�� odpowiadaj�ca odpowiedniej pozycji na li�cie kolumn. Warto�� mo�e by� dowolnym wyra�eniem. Je�li wprowadzana warto�� nie jest r�wna NULL to musi by� zgodna z typem warto�ci kolumny, do kt�rej zostanie dopisana. � �uery - prawid�owy rozkaz SELECT, kt�ry zwraca tak� ilo�� warto�ci jak podana w li�cie okre�laj�cej kolumny. Zapytanie nie mo�e mie� klauzuli ORDER FOR ani FOR UPDATE. Opis: Rozkaz INSERT u�yty z klauzul� VALUES zawsze dodaje dok�adnie jeden wiersz. Do p�l wyspecyfikowanych w li�cie kolumn (lub do wszystkich kolumn) wstawiane s� podane warto�ci. Kolumny nie wyspecyfikowane na li�cie kolumn przyjmuj� warto�ci puste NULL (w zwi�zlu z tym nie mog� by� uprzednio zadeklarowane jako NOT NULL). Je�li u�yje si� rozkazu SELECT zamiast klauzuli VALUES, to mo�liwe jest dodanie wi�kszej ilo�ci wierszy (wszystkich zwr�conych przez zapytanie). Po wykonaniu 17 I [ Bazy danych Robert Chwastek ] zapytania kolumny b�d�ce jego rezultatem s� dopasowywane i wpisywane do kolumn podanych na li�cie kolumn (lub do wszystkich kolumn, je�li ich nie wyspecyfikowano). Zapytanie mo�e odwo�ywa� si� r�wnie� do tabeli, do kt�rej dopisywane s� wiersze. W przypadku, gdy lista kolumn nie jest podana, to warto�ci s� dopasowywane do poszczeg�lnych kolumn na podstawie ich wewn�trznego porz�dku. Porz�dek ten nie musi by� taki sam jak kolejno�� kolumn przy tworzeniu tabeli. �aden wiersz nie zostanie dopisany, je�li zapytanie nie zwr�ci �adnych wierszy. Przyk�ady: INSERT INTO pracownicy VALUES (50, VAN', "KOWALSKI', 3); INSERT INTO ksi��ki (tytu�, autor, miejsce) SELECT 'Pan Tadeusz', autor_nr, miejsce_nr FROM autorzy, miejsca WHERE nazwisko = 'Mickiewicz' AND miejsce = 'lewa polka' } 3.3.5. Rozkaz DELETE Rozkaz DELETE s�u�y do usuwania wierszy z tabeli. Sk�adnia: DELETE [FROM] [user.Jtable [alias] [WHERE condition] Parametry: user - nazwa u�ytkownika table - nazwa tabeli lub widoku, z kt�rego nale�y usun�� wiersze alias - nazwa aliasu odnosz�cego si� do tabeli, kt�ry jest u�ywany w rozkazie DELETE z powi�zanymi zapytaniami condition - warunek jaki musz� spe�nia� wiersze, kt�re nale�y usun��. Warunek ten mo�e odwo�ywa� si� do tabeli, na kt�rej przeprowadza si� operacj� i zawiera� powi�zane z nim zapytania. Konieczne jest jednak, by warunek, dla ka�dego z wiersza podanej tabeli, by� obliczany do warto�ci TRUE lub FALSE. Opis: zatrzymywana przez t� tabel� i indeks. Ca�a przestrze� zwolniona przez skasowane wiersze i elementy indeks�w jest Przyk�ady: Skasowanie wszystkich wierszy w tabeli pracownicy: DELETE FROM pracownicy ; Skasowanie wszystkich wierszy zawieraj�cych ksi��ki, kt�rych autor oznaczony jest numerem 2: DELETE FROM ksi��ki WHERE autor = 2 ; I 18 I Bazy danych Robert Chwastek ] 3.3.6. Rozkaz CREATE SEQUENCE Tworzy obiekt (nazywany sekwencj�), za pomoc� kt�rego wielu u�ytkownik�w mo�e generowa� unikalne liczby ca�kowite. Sekwencj� mog� by� u�yte do generacji kluczy pierwotnych w spos�b automatyczny. Do utworzenia sekwencji konieczne s� przynajmniej uprawnienia RESOURCE w conajmniej jednej przestrzeni tabel. Sk�adnia: [MAXVALUE n [MINYALUE n CREATE SECjUENCE [user . ] se�uence [INCREMENT BY n] [START WITH n] NOMAXVALUE] NOMINYALUE] [CYCLE | NOCYCLE] [CACHE n | NOCACHE] [ORDER | NOORDER] Parametry: � user - nazwa u�ytkownika � se�uence - nazwa tworzonej sekwencji, musi by� poprawnym identyfikatorem i by� unikalna w obr�bie danego u�ytkownika. � INCREMENT BY - okre�la r�nic� mi�dzy kolejno generowanymi liczbami. Je�li liczba ta jest jest ujemna, to b�d� generowane liczby w porz�dku malej�cym, w przeciwnym wypadku - w porz�dku rosn�cym. Domy�lnie przyjmowana jest warto�� 1. Dozwolona jest ka�da liczba r�na od 0. � START WITH - pierwsza liczba, kt�ra powinna by� wygenerowana przez sekwencj�. Domy�ln� warto�ci� jest MINVALUE dla sekwencji rosn�cych i MAXVALUE dla sekwencji malej�cych. Utworzona sekwencja nie jest zainicjalizowana i pierwsz� warto�� otrzymuje si� po jednokrotnym odczytaniu pseudokolumny NEXTVAL. � MINVALUE - okre�la minimaln� warto�� jak� mo�e wygenerowa� sekwencja. Domy�lnie dla sekwencji rosn�cych jest to 1, natomiast dla malej�cych warto�� ta wynosi -10e27 + 1. Podanie NOMINVALUE powoduje, �e sekwencja nie b�dzie sprawdza� warto�ci minimalnej. � MAXVALUE - okre�lenie maksymalne warto�ci, jak� mo�e wygenerowa� sekwencja. Warto�ciami domy�lnymi s� -1 i 10e27 - 1 odpowiednio dla sekwencji malej�cej i rosn�cej. Wyspecyfikowanie NOMAXVALUE powoduje, �e sekwencja nie b�dzie sprawdza� warto�ci maksymalnej. � CYCLE, NOCYCLE - domy�ln� warto�ci� jest NOCYCLE, kt�re powoduje, �e �adne dodatkowe numery nie zostan� wygenerowane po osi�gni�ciu ko�ca sekwencji. W tym wypadku ka�da pr�ba generacji kolejnego numeru spowoduje zg�oszenie b��du. W przypadku podania klauzuli CYCLE po osi�gni�ciu warto�ci maksymalnej sekwencja powr�ci do warto�ci minimalnej (dla sekwencji rosn�cych) lub po osi�gni�ciu warto�ci minimalnej powr�ci do maksymalnej (dla sekwencji malej�cych) rozpoczynaj�c kolejny cykl generacji numer�w. 19 [ Bazy danych Robert Chwastek ] � CACHE, NOCACHE - klauzula CACHE w��cza wykonywanie pre-alokacji numer�w sekwencji i przechowywanie ich w pami�ci, co skutkuje zwi�kszeniem szybko�ci generacji kolejnych liczb. Klazula NOCACHE wy��cza t� mo�liwo��. Domy�lnie przyjmowane jest CACHE 20. Warto�� podana w CACHE musi by� mniejsza ni� MAXVALUE - MINVALUE. � ORDER, NOORDER - klauzula ORDER gwarantuje, �e kolejne liczby b�d� generowane w porz�dku jakim otrzymane zosta�y przez system polecenia ich generacji. Klauzula NOORDER wy��cz� t� w�asno��. Kolejno�� generacji numer�w w sekwencji jest wa�na w aplikacjach, w kt�rych wa�na jest kolejno�� (czasowa) wykonywanych operacji. Zwykle nie jest ona wa�na w aplikacjach, kt�re wykorzystuj� sekwencje tylko do generacji kluczy pierwotnych. Opis: Sekwencje mog� by� u�ywane do generacji kluczy pierwotnych dla jednej tabeli lub wielu tabel i wielu u�ytkownik�w. Aby mie� dost�p do sekwencji, kt�rej w�a�cicielem jest inny u�ytkownik, nale�y mie� uprawnienia SELECT do tej sekwencji. Sekwencja mo�e posiada� synonim. Numery w sekwencjach s� generowane niezale�nie od tabel, dlatego mog� by� u�ywane jako liczby unikalne dla kilku r�nych tabel i u�ytkownik�w. Jest jednak mo�liwe, �e niekt�re numery z sekwencji zostan� pomini�te, poniewa� zosta�y one wygenerowane i u�yte w transakcji, kt�ra nast�pnie zosta�a wycofana. Dodatkowo jeden u�ytkownik mo�e nie zdawa� sobie sprawy, �e inni u�ytkownicy korzystaj� z tej samej sekwencji (co r�wnie� skutkuje pomini�ciem numer�w dla tego u�ytkownika). Dost�p do sekwencji zapewniaj� dwie pseudokolumny: NEXTVAL i CURRVAL. Pseudokolumna NEXTVAL jest u�ywana do generacji nast�pnej warto�ci z podanej sekwencji. Sk�adnia jest nast�puj�ca: se�uence.NEXTVAL gdzie se�uence jest nazw� sekwencji. Pseudokolumna CURRVAL pozwala na odczytanie aktualnej warto�ci sekwencji. Aby mo�liwe by�o u�ycie CURRVAL konieczne jest wcze�niejsze u�ycie NEXTVAL w aktualnej sesji dla danej sekwencji. Sk�adnia tego rozkazu jest nast�puj�ca: se�uence.CURRVAL gdzie se�uence jest nazw� sekwencji. Pseudokolumny NEXTVAL i CURRVAL mog� by� u�ywane w: � w klauzuli SELECT i rozkazie SELECT (z wyj�tkiem widok�w) � li�cie warto�ci rozkazu INSERT � wyra�eniu SET w rozkazie UPDATE Pseudokolumn NEXTVAL i CURRVAL nie mo�na u�ywa� w: podzapytaniach w li�cie select dla widok�w � ze s�owem kluczowym DISTINCT � z klauzulami ORDER BY, GROUP BY i HAVING w rozkazie SELECT � z operatorem ustawienia (UNION, INTERSECT, MINUS) 20 Bazy danych Robert Chwastek ] Przyk�ady: CREATE SEQUENCE eseq INCREMENT BY 10 ; INSERT INTO pracownicy VALUES (eseq.NEXTVAL, 'Jan', 'Kowalski', 3) ; 3.3.7. Rozkaz SELECT Rozkaz SELECT s�u�y do wy�wietlania wierszy i kolumn z jednej lub kilku tabel. Mo�e by� u�ywany jako osobny rozkaz lub (z pewnymi ograniczeniami) jako zapytanie lub podzapytanie w innych poleceniach. Aby odczyta� dane z okre�lonej tabeli trzeba by� jej w�a�cicielem, mie� uprawnienia SELECT dla tej tabeli lub by� administratorem bazy (DBA). Sk�adnia: SELECT [ALL | DISTINCT] {* | table.* | expr [c_alias] } [r { table.* | expr [c_alias] } ] ... FROM [user.]table [t_alias] [, [user.jtable [t_alias]] ... [ WHERE condition ] [ CONNECT BY condition [START WITH condition] ] [ GROUP BY expr [. Expr] ... [HAVING condition] ] [ {UNION | INTERSECT | MINUS} SELECT ...] [ ORDER BY {expr | position} [ASC | DESC] [, {expr | position} [ASC | DESC]] ] ... [ FOR UPDATE OF column [, column] ... [NOWAIT] ] Parametry: � ALL - ustawiane domy�lnie, oznacza, �e wszystkie wiersze, kt�re spe�niaj� warunki rozkazu SELECT powinny zosta� pokazane. � DISTINCT - okre�la, �e wiersze powtarzaj�ce si� powinny zosta� usuni�te przed zwr�ceniem ich na zewn�trz. Dwa wiersze traktuje si� jako r�wne je�li wszystkie warto�ci dla ka�dej z kolumn zwracanych rozkazem SELECT s� sobie r�wne. � * - oznacza, �e wszystkie kolumny ze wszystkich wymienionych tabel powinny zosta� pokazane. � table.* - oznacza, �e wszystkie kolumny z podanej tabeli powinny zosta� pokazane � expr - wyra�enie, zostanie opisane w dalszej cz�ci wyk�adu � c_alias - jest inn� nazw� dla kolumny (aliasem) i powoduje, �e nazwa ta zostanie u�yta jako nag��wek kolumny podczas wy�wietlania. W �aden spos�b nie jest zmieniana rzeczywista nazwa kolumny. Aliasy kolumn nie mog� by� u�ywane w dowolnym miejscu zapytania. � [user.]table - okre�la kt�re tabele i widoki nale�y pokaza�. Je�li u�ytkownik nie jest podany to domy�lnie przyjmowany jest u�ytkownik aktualny (wykonuj�cy rozkaz SELECT). 21 [ Bazy danych Robert Chwastek ] � t_alias - pozwala okre�li� inn� nazw� dla tabeli w celu obliczenia zapytania. Najcz�ciej jest u�ywane w zapytaniach powi�zanych. W tym wypadku inne odwo�ania do tabeli wewn�trz zapytania musz� pos�ugiwa� si� wyspecyfikowanym aliasem. � condition - warunek, jaki musz� spe�nia� wiersze, aby zosta�y zwr�cone przez zapytanie. Warunki zostan� opisane dik�adniej w dalszej cz�ci wyk�adu. � position - identyfikuje kolumn� bazuj�c na jej tymczasowym po�o�eniu w rozkazie SELECT, a nie na nazwie. � ASC, DESC - okre�la, �e zwracane wiersze powinny by� posortowane w kolejno�ci rosn�cej lub malej�cej (odpowiednio). � column - nazwa kolumny nale��ca do jednej z tabel podanych w klauzuli FROM. � NOWAIT - okre�la, �e ORACLE powinien zwr�ci� sterowanie do u�ytkownika, zamiast czeka� na mo�liwo�� zablokowania wiersza, kt�ry zosta� uprzednio zablokowany przez innego u�ytkownika. Opis: U�ycie nazwy tabeli przed nazw� kolumny i nazwy u�ytkownika przed nazw� tabeli jest najcz�ciej opcjonalne, to jednak dobrym zwyczajem jest podawanie nazw w pe�ni kwalifikowanych z dw�ch powod�w: � je�li dwie tabele maj� kolumny o tej samej nazwie, to nie wiadomo, kt�ra powinna by� u�yta w rozkazie SELECT � ORACLE wykonuje znacznie mniej oblicze�, je�li nazwy te s� podane i nie trzeba ich szuka�. Pozosta�e operacje wykonywane przez rozkaz SELECT zostan� opisane w dalszej cz�ci wyk�adu. Przyk�ady: SELECT imi�, nazwisko FROM pracownicy ; SELECT tytu�, autorzy.imi�, autorzy.nazwisko, miejsca.miejsce FROM ksi��ki, autorzy, miejsca WHERE ksi��ki.autor = autorzy.autor_nr AND ksi��ki.miejsce = miejsca.miejsce_nr } 3.3.8. Rozkaz UPDATE Rozkaz UPDATE s�u�y do zmiany danych zapisanych w tabeli. Warunkiem wykonania tego polecenia jest bycie w�a�cicielem tabeli, administratorem (DBA) lub posiadanie uprawnie� UPDATE dla tej tabeli. Sk�adnia: UPDATE [user.Jtable [alias] SET column = expr [, column = expr] ... [ WHERE condition ] 22 Bazy danych Robert Chwastek ] lub UPDATE [user.Jtable [alias] SET (column [, column] ...) = (query) [, column [, column] ...) = (query) ] ... [ WHERE condition ] Parametry: � user - nazwa w�a�ciciela tabeli. � table - nazwa istniej�cej tabeli. � alias - dodatkowa nazwa u�ywana do dost�pu do tabeli w pozosta�ych klauzulach rozkazu. � column - kolumna wewn�trz tabeli. Nawiasy nie s� potrzebne je�li lista kolumn zawiera tylko jedn� kolumn�. � expr - wyra�enie - zostanie opisane w dalszej cz�ci wyk�adu � �uery - rozkaz SELECT bez klauzul ORDER BY i FOR UPDATE, cz�sto skorelowany ze zmienian� tabel�. � condition - poprawny warunek. Warunek musi zwraca� warto�� TRUE lub FALSE. Warunki b�d� opisane w dalszeuj cz�ci wyk�adu Opis: Klauzula SET okre�la, kt�re kolumny zostan� zmienione i jakie nowe warto�ci maj� by� w nich zapisane. Klauzula WHERE okre�la warunki jakie musz� spe�nia� wiersze, w kt�rych nale�y wymieni� warto�ci podanych wcze�niej kolumn. Je�li klauzula WHERE nie jest podana, to zmieniane s� wszystkie wiersze w tabeli. Rozkaz UPDATE dla ka�dego wiersza, kt�ry spe�nia warunki klauzuli WHERE oblicza warto�ci wyra�e� znajduj�cych si� po prawej stronie operatora '=' i przypisuje te warto�ci do pola okre�lanego przez nazw� kolumny z lewej strony. Je�li klauzula SET posiada podzapytanie, to musi ono zwr�ci� dok�adnie jeden wiersz dla ka�dego ze zmienianych wierszy. Ka�da warto�� jest przypisywana zgodnie z kolejno�ci� na li�cie kolumn. Je�li zapytanie (w przypadku klauzuli postaci SET value = �uery) nie zwr�ci wierszy to odpowiednie pola s� ustawiane na NULL. Zapytanie mo�e odwo�ywa� si� do zmienianej tabeli. Jest ono obliczane oddzielnie dla ka�dego zmienianego wiersza a nie dla ca�ego rozkazu UPDATE. Przyk�ady: UPDATE pracownicy SET nr_wydzia�u = 4 WHERE nr wydzia�u = 3 3.3.9. Rozkaz RENAME Rozkaz RENAME zmienia nazw� tabeli, widoku lub synonimu. Zmiany mo�e dokona� w�a�ciciel tabeli, widoku lub synonimu. 23 [ Bazy danych Robert Chwastek Sk�adnia: RENAME old TO new Parametry: old - aktualna nazwa tabeli, widoku lub synonimu new - ��dana nazwa tabeli, widoku lub synonimu Opis: Wszystkie pozwolenia, kt�re posiada� obiekt o starej nazwie, przechodz� na obiekt o nowej nazwie. Za pomoc� tego rozkazu nie mo�na zmienia� nazw kolumn. Zmiana nazwy kolumny mo�e by� dokonana za pomoc� trzech rozkaz�w: CREATE TABLE, DROP TABLE i RENAME w nast�puj�cy spos�b: CREATE TABLE temporary (new_column_name) AS SELECT old_column_name FROM table ; DROP TABLE table ; RENAME temporary TO table ; Przyk�ady: RENAME wydzia�y TO jednostki ; 3.3.10. Rozkaz ALTER TABLE Rozkaz s�u��cy do zmieniania tabeli. Wykonuje nast�puj�ce operacje: � dodaje kolumny i warunki � modyfikuje definicje kolumn jak typy i warunki � usuwa warunki � modyfikuje przysz�y spos�b alokacji przestrzeni � zapisuje, �e operacja BACKUP zosta�a wykonana dla tej tabeli. Aby wykona� t� operacj� trzeba by� w�a�cicielem tabeli, mie� uprawnienia ALTER dla tabeli lub by� administratorem (DBA). Sk�adnia: ALTER TABLE [user.]table [ADD ( {column_element | table_constraint} [r {column_element | table_constraint}] ...) ] [MODIFY (column_element [,column_element] ���)] [DROP CONSTRAINT constraint] ... [PCTFREE integer] [PCTUSED integer] [INITTRANS integer] [MAXTRANS integer] [STORAGE storage] [BACKUP] Parametry: � [user.]table - w�a�ciciel i tabela, kt�r� trzeba zmieni�. Je�li nazwa u�ytkownika nie jest podana, to domy�lnie przyjmowany jest u�ytkownik, kt�ry wywo�a� rozkaz. 24 [ Bazy danych Robert Chwastek ] � ADD/MODIFY column_element - dodaje lub modyfikuje definicj� kolumny, ograniczenia kolumny lub warto�ci domy�lne okre�lonej kolumny. � ADD table_constraint - dodaje ograniczenia na warto�ci w tabeli. � DROP constraint - usuwa podan� kolumn� lub ograniczenie. � BACKUP - zmienia zawarto�� s�ownika danych (Data Dictionary) tak, �e zostaje zapisana informacja o wykonaniu backup'u tabeli, kt�ry nast�pi� w czasie wykonywania rozkazu ALTER TABLE. Opis: Je�li u�yta zostanie klauzula ADD w celu dodania nowej kolumny do istniej�cej tabeli, to warto�� ka�dego pola w tej kolumnie b�dzie r�wna NULL. W zwi�zku z tym mo�liwe jest dodanie kolumny z warunkiem NOT NULL tylko do kolumn, kt�re nie maj� wierszy. Klauzula MODIFY mo�e zosta� u�yta do zmiany nast�puj�cych atrybut�w kolmny: � rozmiar � typ danych � NOT NULL Zmiana typu lub zmniejszenie rozmiaru mo�liwe jest tylko wtedy, gdy wszystkie warto�ci w kolumnie s� r�wne NULL. Mo�liwe jest na�o�enie ograniczenia NOT NULL na istniej�c� kolumn� tylko wtedy, gdy nie zawiera ona warto�ci pustych. Je�li zmieniany jest rozmiar kolumny zadeklarowanej jako NOT NULL i w klauzuli MODIFY nie poda si� NOT NULL, to kolumna nadal pozostaje z warunkiem NOT NULL. W przypadku widok�w z zapytaniem wybieraj�cym wszystkie kolumny tabeli (SELECT * FROM ...), widok mo�e nie pracowa� poprawnie, je�li do tabeli, z kt�r� jest powi�zany zosta�a dodana nowa kolumna. Przyk�ady: ALTER TABLE pracownicy ADD (p�aca NUMBER(7, 2)) ALTER TABLE pracownicy MODIFY (p�aca NUMBER(9, 2)) 3.3.11. Rozkaz CREATE INDEX Rozkaz tworzy nowy indeks dla tabeli lub klastra. Indeks zapewnia bezpo�redni dost�p do wierszy w tabeli w celu zredukowania czasu wykonywania operacji. Indeks zawiera informacj� o ka�dej warto�ci, kt�ra jest zapisana w indeksowanej kolumnie. Indeks mo�e utworzy� w�a�ciciel tabeli, u�ytkownik posiadaj�cy uprawnienia INDEX dla danej tabeli lub administrator (DBA). Sk�adnia: CREATE [UNIQUE] INDEX index ON {table(column [ASC|DESC][, column [ASC|DESC]]...) | 25 I [ Bazy danych Robert Chwastek CLUSTER cluster} [INITTRANS n] [MAXTRANS n] [TABLESPACE tablespace] [STORAGE storage] [PCTFREE n] [NOSORT] Parametry: � UNIQUE - zak�ada, �e tabela nie ma nigdzie dw�ch wierszy zawieraj�cych te same warto�ci we wszystkich indeksowanych kolumnach. W aktualnej wersji ORACLE'a je�li indeks typu UNIQUE nie zostanie utworzony dla tabeli, to tabela mo�e zawiera� powtarzaj�ce si� wiersze. � indeks - nazwa tworzonego indeksu. Nazwa ta musi by� inna od ka�dego innego obiektu bazy danych danego u�ytkownika. � table - nazwa istniej�cej tabeli, dla kt�rej tworzy si� indeks. � column - nazwa kolumny w tabeli. � ASC, DESC - zosta�y dodane w systemie ORACLE w celu zapewnienia kompatybilno�ci z systemem DB2, ale zawsze s� tworzone w porz�dku rosn�cym. � CLUSTER cluster - okre�la klaster, dla kt�rego tworzony jest indeks � NOSORT - wskazuje ORACLE'owi, �e wiersze przechowywane w bazie s� ju� posortowane, w zwi�zku z czym nie jest konieczne sortowanie podczas tworzenia indeksu. Opis: Indeksy s� tworzone w celu przyspieszenia operacji: � dost�pu do danych w posortowanych wed�ug kolumn indeksowanych � wyszukiwania wierszy, zawieraj�cych dane z indeksowanych kolumn. Nale�y jednak zwr�ci� uwag�, �e indeks spowalnia wstawianie, usuwanie i zmiany warto�ci w indeksowanych kolumnach, poniewa� jego zawarto�� musi ulec zmianie w momencie zmiany zawarto�ci tabeli. Do jednego indeksu wstawionych mo�e by� co najwy�ej 16 kolumn. Jeden element indeksu jest konkatenacj� warto�ci tych kolumn w poszczeg�lnych wierszach. W momencie wyszukiwania mo�e by� u�yty ca�y element indeksu lub pewna jego cz�� pocz�tkowa. Dlatego kolejno�� kolumn w indeksie jest wa�na. Je�li wi�c indeks zostanie utworzony na podstawie trzech kolumn A, B, C w takiej kolejno�ci, to zostanie on u�yty do wyszukiwania konkatenacji kolumn A, B, C, kolumn A i B lub tylko kolumny A. Nie b�dzie natomiast u�ywany w przypadku wyszukiwania po��czenia kolumn B i C lub pojedynczej kolumny B lub C. Mo�liwe jest utworzenie dowolnej ilo�ci indeks�w dla jednej lub kilku tabel. Nale�y jednak pami�ta�, �e opr�cz spowolnienia operacji modyfikacji tabeli, indeksy zajmuj� r�wnie� do�� du�� ilo�� miejsca na dysku. Przyk�ady: CREATE INDEX i_prac_imie ON pracownicy (imi�) ; I 26 I Bazy danych Robert Chwastek ] 3.3.12. Rozkaz CREATE VIEW Rozkaz s�u��cy do tworzenia widoku, czyli logicznej tabeli bazuj�cej na jednej lub wielu tabelach. Utworzy� widok mo�e w�a�ciciel tabel, u�ytkownik posiadaj�cy do nich co najmniej uprawnienia SELECT lub administrator. Sk�adnia: CREATE VIEW [user.]view [(alias [, alias] ...)] AS query [ WITH CHECK OPTION [CONSTRAINT constraint] ] Parametry: � user - w�a�ciciel tworzonego widoku � view - nazwa tworzonego widoku � �uery - identyfikuje kolumny i wiersze tabel, na kt�rych bazuje widok. Zapytanie mo�e by� dowolnym poprawnym rozkazem SELECT nie zawieraj�cym kluzul ORDER BY ani FOR UPDATE. � WITH CHECK OPTION - informuje, �e wstawienia i zmiany wykonywane poprzez widok, s� niedozwolone je�li spowoduj� wygenerowanie wierszy, kt�re b�d� niedost�pne dla widoku. Klauzula WITH CHECK OPTION mo�e by� u�yta w widoku bazuj�cym na innym widoku. � CONSTRAINT - nazwa do��czona do warunku WITH CHECK OPTION. Opis: Widok jest logicznym oknem dla jednej lub kilku tabel. Widok ma nast�puj�ce w�a�ciwo�ci: � widok nie przechowuje danych - jest on przeznaczony do pokazywania danych zawartych w innych tabelach. � widok mo�e by� u�yty w rozkazie SQL w dowolnym miejscu, w kt�rym mo�liwe jest u�ycie tabeli z zastrze�eniem, �e mo�na wykonywa� selekcj� z widoku tylko wtedy, gdy zapytanie na kt�rym bazuje widok zawiera: ? po��czenie ? klauzule GROUP BY, CONNECT BY lub START WITH ? klauzul� DISTINCT, pseudokolumny lub wyra�enia na li�cie kolumn Mo�liwa jest zmiana danych zawartych w widoku, kt�ry posiada pseudokolumny lub wyra�enia dot�d dop�ki rozkaz UPDATE nie odwo�uje si� do pseudokolumny lub wyra�enia. Widoki s� u�ywane do: � utworzenia dodatkowego poziomu zabezpieczenia tabeli poprzez ograniczenie dost�pu do okre�lonych kolumn lub wierszy tabeli bazowej � ukrycia z�o�ono�ci danych - na przyk�ad widok mo�e by� u�yty do operacji na wielu tabelach tak, by wydawa�o si�, �e operacje wykonywane s� na jednej tabeli. 27 [ Bazy danych Robert Chwastek ] � pokazywania danych z innej perspektywy - dla przyk�adu widok mo�e zosta� u�yty do zmiany nazwy kolumny bez zmiany rzeczywistych danych zapisanych w tabeli. � zapewnienia poziomu integralno�ci. Przyk�ady: CREATE VIEW bibl AS SELECT ksi��ki.tytu�, autorzy.imi�, autorzy.nazwisko, miejsca.miejsce FROM ksi��ki, autorzy, miejsca WHERE ksi��ki.autor = autorzy.autor_nr AND ksi��ki.miejsce = miejsca.miejsce_nr WITH CHECK OPTION CONSTRAINT chkopt } 3.3.13. Rozkaz COMMIT Sk�adnia: COMMIT [WORK] Opis: Rozkaz COMMIT i COMMIT WORK wykonuj� t� sam� operacj� polegaj�c� na zako�czeniu aktualnej transakcji i sta�ym zapisaniu wszystkich dokonanych zmian w bazie danych. 3.3.14. Rozkaz ROLLBACK Sk�adnia: ROLLBACK [ WORK ] [TO [ SAVEPOINT ] savepoint ] Parametry: � WORK - opcjonalne, wprowadzone tylko dla kompatybilno�ci ze standardem ANSI � SAVEPOINT - opcjonalne, nie zmienia dzia�ania rozkazu ROLLBACK � savepoint - nazwa punktu zaznaczonego podczas wykonywania aktualnej transakcji. Opis: Rozkaz ROLLBACK wycofuje wszystkie zmiany a� do podanego punktu (w przypadku klauzuli TO) lub pocz�tku transakcji (bez klauzuli TO). Przyk�ady: ROLLBACK ; ROLLBACK TO SAVEPOINT SP5 ; 3.3.15. Rozkaz SAVEPOINT Sk�adnia: SAVEPOINT savepoint I 28 I Bazy danych Robert Chwastek ] Parametry: � savepoint - nazwa punktu w aktualnej transakcji zaznaczanego przez wykonywany rozkaz Opis: Rozkaz SAVEPOINT jest u�ywany w po��czeniu z ROLLBACK do wycofywania fragment�w wykonywanej transakcji. Nazwy punkt�w musz� by� unikalne w jednej transakcji. Systemy zarz�dzania bazami danych wprowadzaj� najcz�ciej ograniczenia na liczb� punkt�w, kt�re mo�na zaznaczy� w jednej transakcji. Przyk�ady: UPDATE pracownicy SET placa_podstawowa = 2000 WHERE nazwisko = ^Kowalski' } SAVEPOINT Kow_plac; UPDATE pracownicy SET placa_podstawowa = 1500 WHERE nazwisko = 'Nowak' } SAVEPOINT Now_plac; SELECT SUM(placa_podstawowa) FROM pracownicy; ROLLBACK TO SAVEPOINT Kow_plac; UPDATE pracownicy SET placa_podstawowa = 1300 WHERE nazwisko = 'Nowak' COMMIT; 3.3.16. Rozka