Podstawy jezyka SQL
Transkrypt
Podstawy jezyka SQL
Materiały szkoleniowe Podstawy j zyka SQL Prowadz cy Anna Pijanowska - Ku nierz Paweł ołnierczyk Spis tre ci Zawarto tabel wykorzystywanych na kursie___________________________________5 Zawarto tabeli DEPT _______________________________________________________ 6 Zawarto tabeli EMP ________________________________________________________ 6 Zawarto tabeli SALGRADE __________________________________________________ 6 Budowa tabel wykorzystywanych na kursie_______________________________________ 7 Relacyjny model danych____________________________________________________9 Operatory relacyjne _________________________________________________________ 10 Własno ci relacyjnej bazy danych______________________________________________ 10 Przegl d j zyka SQL______________________________________________________13 Zasady SQL ________________________________________________________________ 14 wiczenia __________________________________________________________________ 28 Funkcje grupowe ________________________________________________________31 Stosowanie funkcji grupowych ________________________________________________ 32 Klauzula GROUP BY ________________________________________________________ 33 Wybierane wyra enia a funkcje grupowe________________________________________ 34 Klauzula HAVING __________________________________________________________ 35 Kolejno wyst powania klauzul _______________________________________________ 36 wiczenia __________________________________________________________________ 37 Wybieranie danych z wielu tabel ____________________________________________39 Zł czenie równo ciowe _______________________________________________________ 40 Zł czenia nierówno ciowe ____________________________________________________ 41 wiczenia __________________________________________________________________ 43 Inne metody ł czenia tabel_________________________________________________47 Zł czenia zewn trzne ________________________________________________________ 48 Poł czenie tabeli samej ze sob ________________________________________________ 48 Operatory zbiorowe _________________________________________________________ 49 wiczenia __________________________________________________________________52 Podzapytania ___________________________________________________________ 55 Podzapytania zagnie d one____________________________________________________56 Podzapytania zwracaj ce jeden wiersz __________________________________________56 Podzapytania zwracaj ce wiele wierszy__________________________________________57 wiczenia __________________________________________________________________62 J zyk definiowania danych ________________________________________________ 63 Struktury danych ORACLE___________________________________________________64 Tworzenie tabel _____________________________________________________________64 Warunki integralno ci ________________________________________________________65 Tworzenie tabeli przez zapytanie _______________________________________________70 Zmiana definicji tabeli________________________________________________________71 J zyk manipulowania danymi ______________________________________________ 75 Wstawianie wierszy __________________________________________________________76 Modyfikacja wierszy _________________________________________________________77 Usuwanie wierszy ____________________________________________________________77 Transakcje _________________________________________________________________78 Perspektywy ____________________________________________________________ 81 Perspektywy ________________________________________________________________82 Tworzenie perspektyw________________________________________________________82 Usuwanie perspektywy _______________________________________________________83 U ytkownicy i uprawnienia ________________________________________________ 85 Zarz dzanie u ytkownikami___________________________________________________86 Uprawnienia w bazie Oracle ___________________________________________________87 Role _______________________________________________________________________90 Zawarto tabel wykorzystywanych na kursie Zawarto DEPTNO ---------10 20 30 40 DNAME -------------ACCOUNTING RESEARCH SALES OPERATIONS LOC ------------NEW YORK DALLAS CHICAGO BOSTON Zawarto EMPNO --------7839 7698 7782 7566 7654 7499 7844 7900 7521 7902 7369 7788 7876 7934 ENAME ---------KING BLAKE CLARK JONES MARTIN ALLEN TURNER JAMES WARD FORD SMITH SCOTT ADAMS MILLER tabeli DEPT tabeli EMP JOB MGR HIREDATE SAL COMM DEPTNO --------- --------- -------- --------- --------- --------PRESIDENT 81/11/17 5000 10 MANAGER 7839 81/05/01 2850 30 MANAGER 7839 81/06/09 2450 10 MANAGER 7839 81/04/02 2975 20 SALESMAN 7698 81/09/28 1250 1400 30 SALESMAN 7698 81/02/20 1600 300 30 SALESMAN 7698 81/09/08 1500 0 30 CLERK 7698 81/12/03 950 30 SALESMAN 7698 81/02/22 1250 500 30 ANALYST 7566 81/12/03 3000 20 CLERK 7902 80/12/17 800 20 ANALYST 7566 82/12/09 3000 20 CLERK 7788 83/01/12 1100 20 CLERK 7782 82/01/23 1300 10 Zawarto GRADE LOSAL HISAL --------- --------- --------1 700 1200 2 1201 1400 3 1401 2000 4 2001 3000 5 3001 9999 tabeli SALGRADE Budowa tabel wykorzystywanych na kursie Podczas kursu b dziemy korzysta z uprzednio utworzonych tabel opisuj cych zatrudnionych w pewnej firmie, ich wynagrodzenia i miejsca pracy. Firma dzieli si na departamenty. Ka dy pracownik nale y do pewnej grupy zaszeregowania, w zale no ci od wysoko ci pensji, któr otrzymuje. Tabela DEPT — tabela zawieraj ca wszystkie departamenty Kolumna DEPTNO DNAME LOC Opis Departament number — unikalny numer departamentu Nazwa departamentu — przechowywana w zapisie du ymi literami Lokalizacja departamentu (miasto w którym znajduje si departament) Tabela EMP — wykaz wszystkich pracowników Kolumna EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO Opis Employee number — unikalny numer pracownika Nazwisko pracownika — przechowywane w zapisie du ymi literami Etat, stanowisko pracy Identyfikator szefa (czyli EMPNO we wierszu szefa) Data zatrudnienia Pensja Prowizja naliczona od pocz tku roku, dotyczy pracowników zatrudnionych na stanowisku SALESMAN Numer departamentu w którym zatrudniony jest pracownik. Warto w tym polu musi odpowiada jednemu i tylko jednemu wierszowi w tabeli DEPT Tabela SALGRADE — tabela „widełek” zaszeregowania Kolumna GRADE LOSAL HISAL Opis Numer grupy zaszeregowania LOW SALARY — dolna granica widełek płacowych dla stawki zaszeregowania GRADE HIGH SALARY — górna granica widełek Relacyjny model danych Relacyjna baza danych jest to zbiór dwuwymiarowych tabel. Z modelem relacyjnym powi zane s nast puj ce poj cia: • tabela, • kolumna, • wiersz, • pole. Model relacyjny opiera si na poj ciach zaczerpni tych z algebry. Poj cia te to: • relacja, • operator działaj cy na relacjach i daj cy w wyniku relacje. Relacje przedstawiane s w postaci tabel, za wybieranie danych z tabel to wynik działania operatorów relacyjnych na tych tabelach. Operatory relacyjne Wyró niamy nast puj ce operatory relacyjne: SELEKCJA PROJEKCJA ILOCZYN KARTEZJA SKI ZŁ CZENIE SUMA ZBIOROWA CZ WSPÓLNA RÓ NICA ZBIOROWA pobieranie danych z relacji, w wyniku otrzymujemy wszystkie wiersze, które spełniaj zadany warunek operacja pobrania wszystkich wierszy, ale tylko wskazanych kolumn z tych wierszy wynik poł czenia ka dy z ka dym wierszy z dwóch relacji poł czenie dwóch relacji poprzez pewne kryterium ł czace niektóre wiersze z obu relacji wszystkie wiersze z obu relacji wiersze wspólne dla obu relacji wiersze, które wyst puj w jednej, a nie wyst puj w drugiej relacji Własno ci relacyjnej bazy danych Relacyjna baza danych ma nast puj ce własno ci: • baza jest widziana przez u ytkownika jako zbiór tabel, • nazwy tabel w bazie musz by unikalne, • tabele składaj si wierszy i kolumn, • j zykiem słu cym do operowania na bazie danych jest j zyk nieproceduralny oparty na algebrze relacji. Obecnie standardem jest SQL. Tabele w relacyjnej bazie danych maj nast puj ce własno ci: • wiersze w tabeli musz by ró ne, • w tabeli nie ma kolumn o tej samej nazwie, • kolejno wierszy jest nieokre lona, • kolejno kolumn jest nieokre lona, • warto ci pól powinny by elementarne. Przegl d j zyka SQL SQL jest oparty na wyra eniach j zyka angielskiego. Jest j zykiem deklaratywnym — podajemy tylko, co nale y wykona , ale nie specyfikujemy w jaki sposób. J zyk SQL słu y do nast puj cych celów: • specyfikowania zapyta , • operowania danymi — DML (Data Modification Language) — wstawiania, modyfikowania i usuwania danych z bazy danych, • definiowania danych — DDL (Data Definition Language) — dodawania do bazy nowych obiektów, • sterowania danymi — DCL (Data Control Language) — okre lania praw dost pu do danych. Zasady SQL Zapisywanie polece SQL • • • • • Polecenia SQL mog by rozmieszczone w kilku liniach. Koniec polecenia SQL zaznacza si rednikiem. Zaleca si umieszczanie klauzul od nowej linii. Mo na u ywa tabulacji. Nie wolno dzieli słowa pomi dzy linie. Oboj tne, czy u ywamy małych czy wielkich liter, chyba e sprawdzamy zawarto pola. Podstawowy blok zapyta SQL Za pomoc polecenia uzyskujemy informacje z bazy. Polecenie składa si co najmniej z klauzuli SELECT i klauzuli FROM. W klauzuli SELECT wymieniamy interesuj ce nas kolumny. W klauzuli FROM wskazujemy, sk d pobra dane. Aby pobra nazwiska pracowników oraz ich zawód, napiszemy: SELECT ENAME, JOB FROM EMP; ENAME ---------KING BLAKE CLARK JONES MARTIN ALLEN JOB --------PRESIDENT MANAGER MANAGER MANAGER SALESMAN SALESMAN TURNER JAMES WARD FORD SMITH SCOTT ADAMS MILLER SALESMAN CLERK SALESMAN ANALYST CLERK ANALYST CLERK CLERK Nazwy kolumn oddzielamy przecinkami. Aby wybra wszystko z danej tabeli wpisujemy * (gwiazdk ) zamiast listy kolumn. SELECT * FROM EMP; EMPNO ENAME ---- ---------7839 KING 7698 BLAKE 7782 CLARK 7566 JONES 7654 MARTIN 7499 ALLEN 7844 TURNER 7900 JAMES 7521 WARD 7902 FORD 7369 SMITH 7788 SCOTT 7876 ADAMS 7934 MILLER JOB MGR HIREDATE SAL COMM DEPTNO --------- ---------- --------- ---------- ---------- ---------PRESIDENT 81/11/17 5000 10 MANAGER 7839 81/05/01 2850 30 MANAGER 7839 81/06/09 2450 10 MANAGER 7839 81/04/02 2975 20 SALESMAN 7698 81/09/28 1250 1400 30 SALESMAN 7698 81/02/20 1600 300 30 SALESMAN 7698 81/09/08 1500 0 30 CLERK 7698 81/12/03 950 30 SALESMAN 7698 81/02/22 1250 500 30 ANALYST 7566 81/12/03 3000 20 CLERK 7902 80/12/17 800 20 ANALYST 7566 82/12/09 3000 20 CLERK 7788 83/01/12 1100 20 CLERK 7782 82/01/23 1300 10 W klauzuli SELECT mog te by u yte: • wyra enia arytmetyczne, • aliasy (nazwy zast pcze) kolumn, • konkatenacja, • literały. Wyra enia arytmetyczne W wyra eniu arytmetycznym mog wyst powa nazwy kolumn, stałe warto ci liczbowe oraz operatory arytmetyczne: + dodawanie odejmowanie * mno enie / dzielenie Przykład SELECT ENAME, SAL*12 FROM EMP; ENAME SAL*12 ---------- ---------KING 60000 BLAKE 34200 CLARK JONES MARTIN ALLEN TURNER JAMES WARD FORD SMITH SCOTT ADAMS MILLER 29400 35700 15000 19200 18000 11400 15000 36000 9600 36000 13200 15600 W wyra eniach zachowywany jest nast puj cy priorytet działa : • mno enie, • dzielenie, • dodawanie, • odejmowanie. Np. w wyra eniu arytmetycznym 250 +12*34 najpierw zostanie obliczona warto wyra enia 12*24, a do wyniku zostanie dodana warto 250. Kolejno wykonywania działa mo na zmieni przy pomocy nawiasów. Na przykład w wyra eniu arytmetycznym (250 +12)*34 najpierw zostanie obliczona warto wyra enia 250+12, a wynik zostanie pomno ony przez 34. Aliasy kolumn Domy lne nagłówki kolumn mo emy zast pi innymi nazwami, które b d bardziej znacz ce. Mo na u ywa polskich liter. Alias podaje si bezpo rednio po nazwie kolumny, której nazw chcemy zmieni . Spacje w aliasie nie s dopuszczane, mo na natomiast utworzy alias ze spacj bior c cało w podwójne apostrofy. Przykład SELECT ENAME NAZWISKO, SAL*12 WYNAGR, COMM PROWIZJA FROM EMP; NAZWISKO WYNAGR PROWIZJA ---------- ---------- ---------KING 60000 BLAKE 34200 CLARK 29400 JONES 35700 MARTIN 15000 1400 ALLEN 19200 300 TURNER 18000 0 JAMES 11400 WARD 15000 500 FORD 36000 SMITH 9600 SCOTT 36000 ADAMS 13200 MILLER 15600 Operator konkatenacji Operator konkatenacji (||) pozwala na ł czenie kolumny z kolumn , literałem, wyra eniem arytmetycznym lub warto ci stał . Argumenty s ł czone i tworz jedna kolumn wynikow . Aby poł czy kolumny EMPNO i ENAME i opatrzy je tytułem PRACOWNIK, napiszemy: SELECT EMPNO||ENAME PRACOWNIK FROM EMP; PRACOWNIK -------------------------------------------------7839KING 7698BLAKE 7782CLARK 7566JONES 7654MARTIN 7499ALLEN 7844TURNER 7900JAMES 7521WARD 7902FORD 7369SMITH 7788SCOTT 7876ADAMS 7934MILLER Literały Oprócz kolumn na li cie SELECT mog znajdowa si literały (ci gi znaków lub liczby). Wtedy dla ka dego wiersza zostanie wypisana ta sama warto literału: SELECT ENAME PRACOWNIK, ' PRACUJE W DEPARTAMENCIE', DEPTNO DEPARTAMENT FROM EMP; PRACOWNIK ----------KING BLAKE CLARK JONES MARTIN ALLEN TURNER JAMES WARD FORD SMITH SCOTT ADAMS MILLER 'PRACUJE W DEPARTAMENCIE' DEPARTAMENT ------------------------- ----------'PRACUJE W DEPARTAMENCIE' 10 'PRACUJE W DEPARTAMENCIE' 30 'PRACUJE W DEPARTAMENCIE' 10 'PRACUJE W DEPARTAMENCIE' 20 'PRACUJE W DEPARTAMENCIE' 30 'PRACUJE W DEPARTAMENCIE' 30 'PRACUJE W DEPARTAMENCIE' 30 'PRACUJE W DEPARTAMENCIE' 30 'PRACUJE W DEPARTAMENCIE' 30 'PRACUJE W DEPARTAMENCIE' 20 'PRACUJE W DEPARTAMENCIE' 20 'PRACUJE W DEPARTAMENCIE' 20 'PRACUJE W DEPARTAMENCIE' 20 'PRACUJE W DEPARTAMENCIE' 10 Obsługa warto ci NULL Je li warto wiersza w kolumnie jest nieokre lona, to mówimy, e na ona warto NULL. Nie jest to to same z warto ci 0. Warto wyra enia w którym b dzie wyst powa warto NULL równie b dzie NULL. Dlatego te wyra enie SAL*12+COMM zwróci NULL tam, gdzie COMM było równe NULL. SELECT ENAME, SAL*12+COMM FROM EMP; ENAME SAL*12+COM ---------- ---------KING BLAKE CLARK JONES MARTIN 16400 ALLEN 19500 TURNER 18000 JAMES WARD 15500 FORD SMITH SCOTT ADAMS MILLER Aby w wyra eniu potraktowa warto funkcji NVL. NULL jako warto ró n od NULL, trzeba u y SELECT ENAME, SAL*12+NVL(COMM,0) ROCZNE_WYN FROM EMP; ENAME ROCZNE_WYN ---------- ---------KING 60000 BLAKE 34200 CLARK 29400 JONES 35700 MARTIN 16400 ALLEN 19500 TURNER 18000 JAMES 11400 WARD 15500 FORD 36000 SMITH 9600 SCOTT 36000 ADAMS 13200 MILLER 15600 W powy szym przykładzie warto ci ró ne od NULL zachowuj swoj warto , za warto ci NULL zostan potraktowane jak 0. Drugi parametr funkcji NVL okre la, na jak warto nale y zamieni warto NULL: NVL(DATA,'85/09/01') NVL(NUMBER, 10) NVL(MIASTO,'KRAKÓW') Eliminacja duplikatów Domy lnie wy wietlane s warto ci, np.: wyniki zapytania bez eliminowania powtarzaj cych si SELECT DEPTNO FROM EMP; DEPTNO ---------10 30 10 20 30 30 30 30 30 20 20 20 20 10 Słowo kluczowe DISTINCT Eliminacj powtarzaj cych si warto ci uzyskujemy stosuj c słowo kluczowe DISTINCT w klauzuli SELECT. SELECT DISTINCT DEPTNO FROM EMP; DEPTNO ---------10 20 30 Mo na te za da wyspecyfikowania wzajemnie ró nych list warto ci poprzez podanie w klauzuli SELECT wielu nazw kolumn. Słowo kluczowe odnosi si wyst puj cych w klauzuli SELECT. SELECT DISTINCT JOB, DEPTNO FROM EMP; JOB DEPTNO --------- ---------ANALYST 20 CLERK 10 CLERK 20 CLERK 30 MANAGER 10 do wszystkich nazw kolumn MANAGER MANAGER PRESIDENT SALESMAN 20 30 10 30 Klauzula ORDER BY Aby okre li kolejno , w jakiej b d zwracane wyniki, nale y u y klauzuli ORDER BY (uporz dkuj wg). Klauzula ORDER BY musi by ostatni klauzul polecenia . SELECT ENAME, JOB FROM EMP ORDER BY ENAME; ENAME ---------ADAMS ALLEN BLAKE CLARK FORD JAMES JONES KING MARTIN MILLER SCOTT SMITH TURNER WARD JOB --------CLERK SALESMAN MANAGER MANAGER ANALYST CLERK MANAGER PRESIDENT SALESMAN CLERK ANALYST CLERK SALESMAN SALESMAN Domy lnie dane s sortowane w porz dku rosn cym ( ) — od najmniejszych do najwi kszych liczb, od wcze niejszych do pó niejszych dat, za ci gi znakowe s sortowane wg ustawie NLS (okre lanych przy tworzeniu bazy danych). Aby odwróci kolejno sortowania nale y u y słowa ( ) u ytego bezpo rednio po nazwie kolumny wyspecyfikowanej w klauzuli ORDER BY. SELECT ENAME, JOB, HIREDATE FROM EMP ORDER BY HIREDATE DESC; ENAME ---------ADAMS SCOTT MILLER JAMES FORD KING MARTIN TURNER CLARK BLAKE JONES WARD ALLEN SMITH JOB --------CLERK ANALYST CLERK CLERK ANALYST PRESIDENT SALESMAN SALESMAN MANAGER MANAGER MANAGER SALESMAN SALESMAN CLERK HIREDATE --------83/01/12 82/12/09 82/01/23 81/12/03 81/12/03 81/11/17 81/09/28 81/09/08 81/06/09 81/05/01 81/04/02 81/02/22 81/02/20 80/12/17 Mo na sortowa według kilku kolumn, wtedy po słowie kluczowym poda nazwy kolumn, po których chcemy sortowa . nale y SELECT ENAME, JOB, DEPTNO FROM EMP ORDER BY DEPTNO, ENAME; ENAME ---------CLARK KING MILLER ADAMS FORD JONES SCOTT SMITH ALLEN BLAKE JAMES MARTIN TURNER WARD JOB DEPTNO --------- ---------MANAGER 10 PRESIDENT 10 CLERK 10 CLERK 20 ANALYST 20 MANAGER 20 ANALYST 20 CLERK 20 SALESMAN 30 MANAGER 30 CLERK 30 SALESMAN 30 SALESMAN 30 SALESMAN 30 Nazwy kolumn, po których sortujemy, musz w klauzuli SELECT. by wyspecyfikowane Sortowanie dotyczy tylko wyniku zapytania wy wietlanego na ekranie. Dane w tabelach nie s sortowane. Klauzula WHERE Klauzula WHERE odpowiada operacji selekcji. Klauzula ta specyfikuje kryteria doboru wierszy. Klauzula WHERE, o ile jest, musi wyst powa bezpo rednio po klauzuli FROM. Operatory w klauzuli WHERE mog by dwojakiego rodzaju: • operatory logiczne, • operatory SQL. Operatory logiczne Dane znakowe i ci gi znaków w klauzuli WHERE musz by uj te w pojedyncze apostrofy. Przy porównywaniu znaków Oracle rozró nia małe i wielkie litery. Aby wybra nazwiska, zawód i numer departamentu dla wszystkich zatrudnionych na stanowisku CLERK, napiszemy: SELECT ENAME, JOB, DEPTNO FROM EMP WHERE JOB='CLERK'; ENAME ---------JAMES SMITH ADAMS MILLER JOB DEPTNO --------- ---------CLERK 30 CLERK 20 CLERK 20 CLERK 10 Aby wybra wszystkich zatrudnionych po 01.01.1982r., napiszemy: SELECT ENAME, JOB, DEPTNO FROM EMP WHERE HIREDATE>'82/01/01' ENAME ---------SCOTT ADAMS MILLER JOB DEPTNO --------- ---------ANALYST 20 CLERK 20 CLERK 10 Mo na w klauzuli WHERE porównywa dla ka dego wiersza warto ci dwóch kolumn. Np. eby wybra wszystkich, którzy otrzymuj wy sz prowizj ni pensj , napiszemy: SELECT ENAME, JOB, DEPTNO FROM EMP WHERE COMM>SAL; ENAME JOB DEPTNO ---------- --------- ---------MARTIN SALESMAN 30 Operatory SQL Wyró niamy 4 operatory SQL, działaj ce na wszystkich typach danych: • • • • (lista), Operator BETWEEN...AND Operator słu y do sprawdzenia, czy warto znajduje si w podanym przedziale (wliczaj c w to kra ce przedziału). Górna granica musi nast powa po dolnej. Aby wybra wszystkich, którzy zarabiaj od 1000 do 1500, wliczaj c w to tych, którzy zarabiaj 1000 i 1500, napiszemy: SELECT ENAME, JOB, DEPTNO FROM EMP WHERE SAL BETWEEN 1000 AND 1500; ENAME ---------MARTIN TURNER WARD ADAMS MILLER JOB DEPTNO --------- ---------SALESMAN 30 SALESMAN 30 SALESMAN 30 CLERK 20 CLERK 10 Operator IN Operator słu y do sprawdzania, czy dana warto znajduje si na wyspecyfikowanej li cie. Aby wybra podwładnych osób o identyfikatorach 7839 i 7902, napiszemy: SELECT ENAME, JOB, DEPTNO FROM EMP WHERE MGR IN (7839,7902); ENAME ---------BLAKE CLARK JONES SMITH JOB DEPTNO --------- ---------MANAGER 30 MANAGER 10 MANAGER 20 CLERK 20 Dane znakowe wyst puj ce na li cie nale y uj w pojedyncze apostrofy. Operator LIKE Operator słu y do wybierania warto ci odpowiadaj cych podanemu wzorcowi. Wzorzec tworz dwa specjalne symbole: • % (znak procent) — odpowiada dowolnemu ci gowi znaków, • _ (znak podkre lenia) — odpowiada dokładnie jednemu dowolnemu znakowi. Aby wybra osoby, które jako drug liter w nazwisku maj liter "A", napiszemy: SELECT ENAME, JOB, DEPTNO FROM EMP WHERE ENAME LIKE '_A%'; ENAME ---------MARTIN JAMES WARD JOB DEPTNO --------- ---------SALESMAN 30 CLERK 30 SALESMAN 30 Aby wybra osoby, których nazwisko składa si z pi ciu liter, napiszemy: SELECT ENAME, JOB, DEPTNO FROM EMP WHERE ENAME LIKE '_____'; ENAME ---------BLAKE CLARK JONES ALLEN JAMES SMITH SCOTT ADAMS JOB DEPTNO --------- ---------MANAGER 30 MANAGER 10 MANAGER 20 SALESMAN 30 CLERK 30 CLERK 20 ANALYST 20 CLERK 20 Operator IS NULL Operator słu y do wyszukiwania warto ci NULL. Aby wybra dane o osobach, które nie posiadaj szefa, napiszemy: SELECT ENAME, JOB, DEPTNO FROM EMP WHERE MGR IS NULL; ENAME JOB DEPTNO ---------- --------- ---------KING PRESIDENT 10 Nie mo na napisa w klauzuli WHERE warunku MGR=NULL, gdy wtedy Oracle nie wyszuka adnych warto ci. Operatory negacji Operatory negacji słu != ^=, _= <> kolumna= kolumna> do zaprzeczania warunkom w klauzuli WHERE. nie jest równy (VAX, UNIX, PC) nie jest równy (IBM) nie jest równy (wszystkie systemy operacyjne) nie jest równy nie jest wi kszy nie jest w podanym przedziale nie jest w zbiorze nie jest zgodny z mask nie jest NULL Aby wybra wszystkie osoby, które nie zarabiaj wi cej ni 2000, napiszemy: SELECT ENAME, SAL FROM EMP WHERE NOT SAL>2000; ENAME SAL ---------- ---------MARTIN 1250 ALLEN 1600 TURNER 1500 JAMES 950 WARD 1250 SMITH 800 ADAMS 1100 MILLER 1300 Aby wybra osoby, które nie otrzymuj prowizji, napiszemy: SELECT ENAME, JOB, COMM FROM EMP WHERE COMM IS NOT NULL ENAME ---------MARTIN ALLEN TURNER WARD JOB COMM --------- ---------SALESMAN 1400 SALESMAN 300 SALESMAN 0 SALESMAN 500 Tworzenie zło onych kryteriów Do budowania warunków zło onych słu operatory (i) oraz (lub). Warunek (X Y) jest prawdziwy wtedy i tylko wtedy, gdy X jest prawdziwy i Y jest prawdziwy. Warunek (X Y) jest prawdziwy wtedy i tylko wtedy, gdy X jest prawdziwy lub Y jest prawdziwy. Operator ma wi kszy priorytet ni operator . Aby wybra wszystkich pracowników zatrudnionych na stanowisku 'MANAGER' i zarabiaj cych wi cej ni 2000, napiszemy: SELECT ENAME, JOB, SAL FROM EMP WHERE SAL>2000 AND JOB='MANAGER' NAME JOB SAL ---------- --------- ---------BLAKE MANAGER 2850 CLARK MANAGER 2450 JONES MANAGER 2975 Poniewa operator ma wy szy priorytet ni operator , to poni szy przykład znajdzie nam wszystkie osoby zatrudnione na stanowisku 'CLERK' oraz te osoby zatrudnione na stanowisku 'MANAGER', których zarobki przekraczaj 1000. SELECT ENAME, JOB, SAL FROM EMP WHERE SAL>1000 AND JOB='MANAGER' OR JOB='CLERK'; ENAME ---------BLAKE CLARK JONES JAMES SMITH ADAMS MILLER JOB SAL --------- ---------MANAGER 2850 MANAGER 2450 MANAGER 2975 CLERK 950 CLERK 800 CLERK 1100 CLERK 1300 Poni szy przykład, w którym zastosowano nawiasy zmieniaj ce kolejno wykonywania działa wybierze tylko osoby zatrudnione na stanowisku 'CLERK' lub na stanowisku 'MANAGER', które przy tym zarabiaj wi cej ni 1000. SELECT ENAME, JOB, SAL FROM EMP WHERE SAL>1000 AND (JOB='MANAGER' OR JOB='CLERK'); ENAME ---------BLAKE CLARK JONES ADAMS MILLER JOB SAL --------- ---------MANAGER 2850 MANAGER 2450 MANAGER 2975 CLERK 1100 CLERK 1300 Hierarchia operatorów W ka dym wyra eniu, o ile nawiasy nie wskazuj inaczej, operacje s wykonywane pocz wszy od operatorów o najwy szym priorytecie. Je li dwa operatory o tym samym priorytecie wyst puj obok siebie, to s one wykonywane od lewej do prawej. 1. =, <>, <=, >=, >,<, , , , 2. 3. 4. Aby zapis był bardziej przejrzysty i w celu unikni cia bł dów, zaleca si stosowanie nawiasów. Krótki opis polece wła ciwych dla SQL*Plus Pod SQL*Plus najcz ciej uruchamiamy skrypty SQL-owe. Najcz ciej u ywane polecenia: SPOOL plik; @plik ed plik SPOOL OFF DESC CONNECT EXIT wszystkie polecenia SQL do czasu wydania rozkazu SPOOL OFF b d zapisywane do pliku plik uruchomienie skryptu plik edycja pliku plik w domy lnym edytorze ko czy wysyłanie danych do pliku wy wietla opis struktury tabeli zmiana podł czenia do bazy wyj cie z programu wiczenia 1.Wybierz wszystkie dane z tablicy SALGRADE. GRADE LOSAL HISAL --------- --------- --------1 700 1200 2 1201 1400 3 1401 2000 4 2001 3000 5 3001 9999 2. Wybierz wszystkie dane z tablicy EMP. EMPNO --------7839 7698 7782 7566 7654 7499 7844 7900 7521 7902 7369 7788 7876 7934 ENAME ---------KING BLAKE CLARK JONES MARTIN ALLEN TURNER JAMES WARD FORD SMITH SCOTT ADAMS MILLER JOB MGR HIREDATE SAL COMM DEPTNO --------- --------- -------- --------- --------- --------PRESIDENT 81/11/17 5000 10 MANAGER 7839 81/05/01 2850 30 MANAGER 7839 81/06/09 2450 10 MANAGER 7839 81/04/02 2975 20 SALESMAN 7698 81/09/28 1250 1400 30 SALESMAN 7698 81/02/20 1600 300 30 SALESMAN 7698 81/09/08 1500 0 30 CLERK 7698 81/12/03 950 30 SALESMAN 7698 81/02/22 1250 500 30 ANALYST 7566 81/12/03 3000 20 CLERK 7902 80/12/17 800 20 ANALYST 7566 82/12/09 3000 20 CLERK 7788 83/01/12 1100 20 CLERK 7782 82/01/23 1300 10 3. Wybierz wszystkie dane o pracownikach, których zarobki mieszcz si w przedziale <1000,2000>. ENAME DEPTNO SAL ---------- --------- --------MARTIN 30 1250 ALLEN 30 1600 TURNER 30 1500 WARD 30 1250 ADAMS 20 1100 MILLER 10 1300 4. Wybierz numery i nazwy departamentów, sortuj c według nazw departamentów. DEPTNO --------10 40 20 30 DNAME -------------ACCOUNTING OPERATIONS RESEARCH SALES 5. Wybierz wszystkie, wzajemnie ró ne stanowiska pracy. JOB --------ANALYST CLERK MANAGER PRESIDENT SALESMAN 6. Wybierz dane o pracownikach zatrudnionych w departamentach 10 i 20 w kolejno ci alfabetycznej ich nazwisk. EMPNO --------7876 7782 7902 7566 7839 7934 7788 7369 ENAME ---------ADAMS CLARK FORD JONES KING MILLER SCOTT SMITH JOB MGR HIREDATE SAL COMM DEPTNO --------- --------- -------- --------- --------- --------CLERK 7788 83/01/12 1100 20 MANAGER 7839 81/06/09 2450 10 ANALYST 7566 81/12/03 3000 20 MANAGER 7839 81/04/02 2975 20 PRESIDENT 81/11/17 5000 10 CLERK 7782 82/01/23 1300 10 ANALYST 7566 82/12/09 3000 20 CLERK 7902 80/12/17 800 20 7. Wybierz nazwiska i stanowiska pracy wszystkich pracowników z departamentu 20 zatrudnionych na stanowisku CLERK. ENAME ---------SMITH ADAMS JOB --------CLERK CLERK 8. Wybierz nast puj ce informacje o wszystkich pracownikach, którzy posiadaj szefa. ENAME ---------BLAKE CLARK JONES MARTIN ALLEN TURNER JAMES WARD FORD SMITH SCOTT ADAMS MILLER JOB SAL --------- --------MANAGER 2850 MANAGER 2450 MANAGER 2975 SALESMAN 1250 SALESMAN 1600 SALESMAN 1500 CLERK 950 SALESMAN 1250 ANALYST 3000 CLERK 800 ANALYST 3000 CLERK 1100 CLERK 1300 9. Wybierz nazwiska i całkowite, roczne zarobki wszystkich pracowników. ENAME RENUMERATION ---------- -----------KING 60000 BLAKE 34200 CLARK 29400 JONES 35700 MARTIN 16400 ALLEN 19500 TURNER 18000 JAMES WARD FORD SMITH SCOTT ADAMS MILLER 11400 15500 36000 9600 36000 13200 15600 10. Wybierz nast puj ce dane o tych pracownikach, którzy zostali zatrudnieni w 1982 roku. ENAME DEPTNO HIREDATE ---------- --------- --------SCOTT 20 09-DEC-82 MILLER 10 23-JAN-82 11. Wybierz nazwiska, roczn pensj oraz prowizj tych wszystkich pracowników, których miesi czna pensja przekracza prowizj . Wyniki posortuj według malej cych zarobków. Je li dwóch lub wi cej pracowników ma tak sam pensj , uporz dkuj dane o nich według nazwisk zgodnie z alfabetem. ENAME ANNUAL_SAL COMM ---------- ---------- --------ALLEN 19200 300 TURNER 18000 0 WARD 15000 500 12. Spowoduj wy wietlenie nast puj cych wyników. Kto, gdzie, kiedy? ------------------------------------------------------------------------------KING pracuje na stanowisku PRESIDENT w zespole 10 od 17-NOV-81 BLAKE pracuje na stanowisku MANAGER w zespole 30 od 01-MAY-81 CLARK pracuje na stanowisku MANAGER w zespole 10 od 09-JUN-81 JONES pracuje na stanowisku MANAGER w zespole 20 od 02-APR-81 MARTIN pracuje na stanowisku SALESMAN w zespole 30 od 28-SEP-81 ALLEN pracuje na stanowisku SALESMAN w zespole 30 od 20-FEB-81 TURNER pracuje na stanowisku SALESMAN w zespole 30 od 08-SEP-81 JAMES pracuje na stanowisku CLERK w zespole 30 od 03-DEC-81 WARD pracuje na stanowisku SALESMAN w zespole 30 od 22-FEB-81 FORD pracuje na stanowisku ANALYST w zespole 20 od 03-DEC-81 SMITH pracuje na stanowisku CLERK w zespole 20 od 17-DEC-80 SCOTT pracuje na stanowisku ANALYST w zespole 20 od 09-DEC-82 ADAMS pracuje na stanowisku CLERK w zespole 20 od 12-JAN-83 MILLER pracuje na stanowisku CLERK w zespole 10 od 23-JAN-82 Funkcje grupowe Funkcje grupowe słu do działania na grupach wierszy. Wynikiem funkcji grupowej jest pojedyncza warto dla całej grupy. Je li nie wyspecyfikujemy inaczej, wszystkie wiersze tabeli s traktowane jako jedna grupa. Funkcja AVG ([ | COUNT ([ ] wyra enie) | MAX ([ MIN ([ STDDEV ([ | | SUM ([ | VARIANCE ([ wyra enie) ] wyra enie) ] wyra enie) ] wyra enie) | ] wyra enie) ] wyra enie) | ] Wynik funkcji warto rednia wyra e , NULL nie jest uwzgl dniane ilo wyst pie warto ci wyra e ró nych od NULL, gwiazdka (*) u yta w miejscu wyra enia powoduje obliczenia ilo ci wszystkich wierszy ł cznie z duplikatami i warto ciami NULL maksymalna warto wyra enia minimalna warto wyra enia odchylenie standardowe wyra e , bez uwzgl dniania warto ci NULL suma warto ci wyra e , bez uwzgl dniania warto ci NULL wariancja wyra e , bez uwzgl dniania warto ci NULL Kwalifikator ogranicza działanie funkcji grupowych do ró nych warto ci argumentów. Kwalifikator jest domy lny — funkcje grupowe nie eliminuj duplikatów. Argumentami funkcji grupowych s liczby, a w przypadku funkcji MAX, MIN i COUNT tak e daty, znaki i ci gi znaków. Wszystkie funkcje grupowe, za wyj tkiem COUNT(*) ignoruj warto ci NULL. Stosowanie funkcji grupowych Aby obliczy redni zarobek w firmie, napiszemy: SELECT AVG(SAL) FROM EMP; AVG(SAL) ---------2073,21429 Zwró my uwag , e została zwrócona jedna warto jest tu traktowana jako jedna grupa. dla wszystkich wierszy. Cała firma Mo na nało y na to polecenie warunek w klauzuli WHERE, np. aby znale zarobek na stanowisku 'MANAGER', napiszemy: minimalny SELECT MIN(SAL) FROM EMP WHERE JOB='MANAGER'; MIN(SAL) ---------2450 Aby znale , ilu pracowników pracuje w departamencie 10, napiszemy: SELECT COUNT(*) FROM EMP WHERE DEPTNO=10; COUNT(*) ---------3 Klauzula GROUP BY Do podzielenia wierszy tablicy na grupy u ywamy klauzuli GROUP BY. Pojedyncz grup stanowi wszystkie wiersze, dla których warto ci podane w klauzuli GROUP BY s identyczne. Aby obliczy rednie zarobki w ka dym departamencie, napiszemy: SELECT DEPTNO, AVG(SAL) FROM EMP GROUP BY DEPTNO; DEPTNO ---------10 20 30 AVG(SAL) ---------2916,66667 2175 1566,66667 Przed grupowaniem mo emy wyeliminowa pewne wiersze za pomoc klauzuli WHERE: SELECT JOB, MAX(SAL) FROM EMP WHERE JOB<>'CLERK' GROUP BY JOB; JOB MAX(SAL) --------- ---------ANALYST 3000 MANAGER 2975 PRESIDENT 5000 SALESMAN 1600 W klauzuli GROUP BY mo na poda kilka wyra e , wtedy wiersze b d grupowane w mniejszych grupach. Aby obliczy minimalny zarobek w ka dym departamencie w podziałem na stanowiska, napiszemy: SELECT DEPTNO, JOB, MIN(SAL) FROM EMP GROUP BY DEPTNO, JOB; DEPTNO ---------10 10 10 20 20 20 30 30 30 JOB MIN(SAL) --------- ---------CLERK 1300 MANAGER 2450 PRESIDENT 5000 ANALYST 3000 CLERK 800 MANAGER 2975 CLERK 950 MANAGER 2850 SALESMAN 1250 Wybierane wyra enia a funkcje grupowe Poni sze polecenie spowoduje obliczenie rednich zarobków w departamentach. Nie b dzie jednak zbyt u yteczne, bo nie b dzie widoczne, która rednia odpowiada któremu departamentowi. SELECT AVG(SAL) FROM EMP GROUP BY DEPTNO; AVG(SAL) ---------2916,66667 2175 1566,66667 Aby poprawi to polecenie, umie my na li cie wyboru klauzuli SELECT tak e numer departamentu: SELECT DEPTNO, AVG(SAL) FROM EMP GROUP BY DEPTNO; DEPTNO ---------10 20 30 AVG(SAL) ---------2916,66667 2175 1566,66667 Na li cie wyboru klauzuli SELECT mog wyst powa tylko i wył cznie nazwy kolumn, które s przedmiotem działania klauzuli GROUP BY, chyba, e wyst puj one jako argument funkcji grupuj cej. Klauzula HAVING Do wybierania interesuj cych nas grup słu y klauzula HAVING. W klauzuli HAVING umieszczamy warunek wyra ony za pomoc funkcji grupowej. Aby wybra rednie zarobki dla grup zawodowych, gdzie maksymalne zarobki s wy sze ni 2000, napiszemy: SELECT JOB, AVG(SAL) FROM EMP GROUP BY JOB HAVING MAX(SAL)>2000; JOB AVG(SAL) --------- ---------ANALYST 3000 MANAGER 2758,33333 PRESIDENT 5000 Klauzula HAVING mo e poprzedza klauzul GROUP BY lub odwrotnie. Czasami to samo kryterium mo na wyrazi zarówno za pomoc klauzuli HAVING jak i klauzuli WHERE. SELECT JOB, AVG(SAL) FROM EMP HAVING JOB<>'CLERK' GROUP BY JOB; JOB AVG(SAL) --------- ---------ANALYST 3000 MANAGER 2758,33333 PRESIDENT 5000 SALESMAN 1400 lub SELECT JOB, AVG(SAL) FROM EMP WHERE JOB<>'CLERK' GROUP BY JOB; JOB AVG(SAL) --------- ---------ANALYST 3000 MANAGER 2758,33333 PRESIDENT 5000 SALESMAN 1400 W takiej sytuacji bardziej efektywne jest umieszczenie warunku w klauzuli WHERE. Kolejno wyst powania klauzul Wymagany porz dek klauzul jest nast puj cy: 1. SELECT lista wyra e 2. FROM tabela 3. WHERE warunek selekcji wierszy 4. HAVING warunek selekcji grup 5. ORDER BY wyra enia 6. ; wiczenia 1. Znajd minimaln pensje w firmie. MINIMUM --------800 2. Znajd minimaln , maksymaln i redni pensj w firmie. MIN(SAL) MAX(SAL) AVG(SAL) --------- --------- --------800 5000 2073,2143 3. Oblicz minimaln , maksymaln pensje dla ka dego stanowiska pracy. JOB MINIMALNA_PENSJA MAKSYMALNA_PENSJA --------- ---------------- ----------------ANALYST 3000 3000 CLERK 800 1300 MANAGER 2450 2975 PRESIDENT 5000 5000 SALESMAN 1250 1600 4. Oblicz, ilu pracowników jest kierownikami (MANAGER). MANAGERS --------3 5. Znajd rednie miesi czne pensje oraz rednie roczne zarobki dla ka dego stanowiska. Uwzgl dnij prowizje. JOB AVSAL AVCOMP --------- --------- --------ANALYST 3000 36000 CLERK 1037,5 12450 MANAGER 2758,3333 33100 PRESIDENT 5000 60000 SALESMAN 1400 17350 6. Znajd ró nice mi dzy najwy sz i najni sz pensj . DIFFERENCE ---------4200 7. Znajd departamenty zatrudniaj ce powy ej trzech pracowników. DEPTNO COUNT(*) --------- --------20 5 30 6 8. Sprawd , czy wszystkie numery pracowników s grupowania). rzeczywi cie ró ne (u ywaj c 9. Podaj najni sze pensje wypłacane podwładnym swoich kierowników. Wyeliminuj grupy o minimalnych zarobkach ni szych ni 1000. Uporz dkuj według pensji. MGR MIN(SAL) --------- --------7788 1100 7782 1300 7839 2450 7566 3000 5000 Wybieranie danych z wielu tabel Zł czenie równo ciowe Chcemy uzyska nast puj c informacj : dla ka dego pracownika znale jego nazwisko, zawód (tabela EMP) i nazw departamentu, w którym pracuje (tabela DEPT). W obu tych tabelach wyst puje kolumna DEPTNO, okre laj ca numer departamentu i zawieraj ca takie same warto ci, mówi ce o zwi zku pomi dzy tymi tabelami. Zwi zek oparty o relacj równo ci nazywamy zwi zkiem równo ciowym (equi-join). Warunek równo ci zapisuje si jak zwykły warunek, z tym, e warto ci do porównania s pobierane z ró nych tabel. Aby powi za ze sob logicznie tabele EMP i DEPT, napiszemy: SELECT ENAME, JOB, DNAME FROM EMP, DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO; ENAME ---------KING BLAKE CLARK JONES MARTIN ALLEN TURNER JAMES WARD FORD SMITH SCOTT ADAMS MILLER JOB --------PRESIDENT MANAGER MANAGER MANAGER SALESMAN SALESMAN SALESMAN CLERK SALESMAN ANALYST CLERK ANALYST CLERK CLERK DNAME -------------ACCOUNTING SALES ACCOUNTING RESEARCH SALES SALES SALES SALES SALES RESEARCH RESEARCH RESEARCH RESEARCH ACCOUNTING Razem z informacjami pobranymi z tablicy EMP otrzymujemy nazwy departamentów pobrane z tablicy DEPT. Wiersze tabeli EMP s ł czone z takimi wierszami tabeli DEPT, dla których warto EMP.DEPTNO pokrywa si z DEPT.DEPTNO. Poprzedzenie nazwy kolumny nazw tabeli jest wymagane tylko wtedy, gdy w tabelach wymienionych w klauzuli FROM wyst puje kolumna o tej samej nazwie (DEPTNO). Podanie samej nazwy kolumny byłoby niejednoznaczne. Chocia warto tego pola dla obu tabeli jest taka sama, to ze wzgl dów składniowych wymagane jest wskazanie tabeli z której b dzie pobrana warto . W poni szym przykładzie w klauzuli SELECT jest wymagane odwołanie do tablicy DEPT: SELECT DEPT.DEPTNO, ENAME, JOB, DNAME FROM EMP, DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO ORDER BY DEPT.DEPTNO; DEPTNO ---------10 10 ENAME ---------KING CLARK JOB --------PRESIDENT MANAGER DNAME -------------ACCOUNTING ACCOUNTING 10 20 20 20 20 20 30 30 30 30 30 30 MILLER JONES SCOTT ADAMS SMITH FORD BLAKE MARTIN ALLEN TURNER JAMES WARD CLERK MANAGER ANALYST CLERK CLERK ANALYST MANAGER SALESMAN SALESMAN SALESMAN CLERK SALESMAN ACCOUNTING RESEARCH RESEARCH RESEARCH RESEARCH RESEARCH SALES SALES SALES SALES SALES SALES Aliasy tabel Aliasy, czyli nazwy zast pcze, ułatwiaj pisanie zapyta . Aliasy definiuje si w klauzuli FROM. Obowi zuj one jedynie w zapytaniu, w którym s zdefiniowane. Nale y u ywa aliasów tak e w klauzuli SELECT, mimo i tekstowo wyst puje ona wcze niej ni klauzula FROM. Przykład u ycia aliasów: SELECT D.DEPTNO, ENAME, DNAME FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO ORDER BY D.DEPTNO; Je li alias zostanie zdefiniowany dla tabeli, to oryginalnej nazwy tabeli nie wolno ju u ywa w tym zapytaniu. Zł czenia nierówno ciowe Zł czenia nierówno ciowe (non-equi-join) nie s oparte o relacj równo ci. Zwi zek pomi dzy wierszami dwóch tabel okre la si poprzez zastosowanie innego operatora ni równo . Na przykład zwi zek pomi dzy tabelami EMP i SALGRADE jest oparty na nast puj cych zasadach: okre lenie stawki zaszeregowania pracownika polega na wskazaniu do jakiego przedziału (LOSAL, HISAL) nale jego zarobki. Do utworzenia tego warunku zastosujemy operator . SELECT ENAME, SAL, S.GRADE FROM EMP E, SALGRADE S WHERE SAL BETWEEN LOSAL AND HISAL; ENAME SAL GRADE ---------- ---------- ---------JAMES 950 1 SMITH 800 1 ADAMS 1100 1 MARTIN 1250 2 WARD 1250 2 MILLER 1300 2 ALLEN 1600 3 TURNER BLAKE CLARK JONES FORD SCOTT KING 1500 2850 2450 2975 3000 3000 5000 3 4 4 4 4 4 5 Reguły ł czenia tabel Ogólna zasada ł czenia tabel: Minimalna liczba warunków ł cz cych = liczba tabel —1 wiczenia 1. Wybierz nazwiska oraz nazwy departamentów wszystkich pracowników, w kolejno ci alfabetycznej nazw departamentów. ENAME ---------KING CLARK MILLER JONES SCOTT ADAMS SMITH FORD BLAKE MARTIN ALLEN TURNER JAMES WARD DNAME -------------ACCOUNTING ACCOUNTING ACCOUNTING RESEARCH RESEARCH RESEARCH RESEARCH RESEARCH SALES SALES SALES SALES SALES SALES 2. Wybierz nazwiska wszystkich pracowników wraz z numerami i nazwami departamentów, w których s zatrudnieni. ENAME DEPTNO DNAME ---------- --------- -------------KING 10 ACCOUNTING BLAKE 30 SALES CLARK 10 ACCOUNTING JONES 20 RESEARCH MARTIN 30 SALES ALLEN 30 SALES TURNER 30 SALES JAMES 30 SALES WARD 30 SALES FORD 20 RESEARCH SMITH 20 RESEARCH SCOTT 20 RESEARCH ADAMS 20 RESEARCH MILLER 10 ACCOUNTING 3. Dla pracowników o miesi cznej pensji 1500 podaj ich nazwiska, miejsca usytuowania ich departamentów oraz nazwy tych departamentów. ENAME ---------KING BLAKE CLARK JONES ALLEN FORD SCOTT LOCATION ------------NEW YORK CHICAGO NEW YORK DALLAS CHICAGO DALLAS DALLAS DNAME -------------ACCOUNTING SALES ACCOUNTING RESEARCH SALES RESEARCH RESEARCH 4. Utwórz nast puj c list pracowników z zaszeregowaniem ich do klas zarobkowych. ENAME ---------JAMES SMITH ADAMS MARTIN WARD MILLER ALLEN TURNER BLAKE CLARK JONES FORD SCOTT KING JOB SAL GRADE --------- --------- --------CLERK 950 1 CLERK 800 1 CLERK 1100 1 SALESMAN 1250 2 SALESMAN 1250 2 CLERK 1300 2 SALESMAN 1600 3 SALESMAN 1500 3 MANAGER 2850 4 MANAGER 2450 4 MANAGER 2975 4 ANALYST 3000 4 ANALYST 3000 4 PRESIDENT 5000 5 5. Wybierz informacj o pracownikach, których zarobki odpowiadaj klasie 3. ENAME ---------ALLEN TURNER JOB SAL GRADE --------- --------- --------SALESMAN 1600 3 SALESMAN 1500 3 6. Wybierz pracowników zatrudnionych w Dallas. ENAME SAL LOCATION ---------- --------- ------------JONES 2975 DALLAS FORD 3000 DALLAS SMITH 800 DALLAS SCOTT 3000 DALLAS ADAMS 1100 DALLAS 7.Podaj nast puj ce dane o wszystkich pracownikach, z wyj tkiem tych, którzy pracuj na stanowisku „CLERK”. Uporz dkuj je według malej cych zarobków. ENAME ---------JAMES SMITH ADAMS MARTIN WARD MILLER ALLEN TURNER BLAKE CLARK JONES FORD SCOTT KING JOB SAL GRADE DNAME --------- --------- --------- -------------CLERK 950 1 SALES CLERK 800 1 RESEARCH CLERK 1100 1 RESEARCH SALESMAN 1250 2 SALES SALESMAN 1250 2 SALES CLERK 1300 2 ACCOUNTING SALESMAN 1600 3 SALES SALESMAN 1500 3 SALES MANAGER 2850 4 SALES MANAGER 2450 4 ACCOUNTING MANAGER 2975 4 RESEARCH ANALYST 3000 4 RESEARCH ANALYST 3000 4 RESEARCH PRESIDENT 5000 5 ACCOUNTING 8. Przygotuj nast puj ce dane o wszystkich pracownikach osi gaj cych dochody do $36000 (wł cznie) oraz tych, którzy pracuj na stanowisku „CLERK”. ENAME ---------JAMES SMITH ADAMS MILLER FORD SCOTT KING JOB ANNUAL_SAL DEPTNO DNAME GRADE --------- ---------- --------- -------------- --------CLERK 11400 30 SALES 1 CLERK 9600 20 RESEARCH 1 CLERK 13200 20 RESEARCH 1 CLERK 15600 10 ACCOUNTING 2 ANALYST 36000 20 RESEARCH 4 ANALYST 36000 20 RESEARCH 4 PRESIDENT 60000 10 ACCOUNTING 5 Inne metody ł czenia tabel Zł czenia zewn trzne Podczas ł czenia tabel wiersz w tabeli nie maj cy swojego odpowiednika w drugiej tabeli nie zostanie wybrany. Np. w przykładzie ł czenia tabeli EMP i DEPT poprzez kolumn DEPNO nie został wybrany wiersz tabeli DEPT, gdzie DEPTNO=40 (departament OPERATIONS), poniewa nikt nie pracuje w tym departamencie. Spróbujmy poprawi to zł czenie tak, aby został równie wybrany departament 40. Uczynimy to za pomoc zł czenia zewn trznego (outer-join), gdzie wiersz w tabeli DEPT, który nie ma swojego odpowiednika w tabeli EMP zostanie poł czony z wierszem tabeli EMP zawieraj cym same warto ci NULL (mimo, e wiersz taki w rzeczywisto ci nie istnieje). Zł czenie zewn trzne oznaczamy znakiem (+) po tej stronie równo ci, która dotyczy tabeli z niepełn informacj . SELECT ENAME, D.DEPTNO, DNAME FROM EMP E, DEPT D WHERE E.DEPTNO(+)=D.DEPTNO; ENAME DEPTNO ---------- ---------KING 10 CLARK 10 MILLER 10 JONES 20 SCOTT 20 ADAMS 20 SMITH 20 FORD 20 BLAKE 30 MARTIN 30 ALLEN 30 TURNER 30 JAMES 30 WARD 30 40 DNAME -------------ACCOUNTING ACCOUNTING ACCOUNTING RESEARCH RESEARCH RESEARCH RESEARCH RESEARCH SALES SALES SALES SALES SALES SALES OPERATIONS Operator zł czenia zewn trznego mo e wyst powa tylko po jednej stronie równo ci. Poł czenie tabeli samej ze sob Dzi ki aliasom mo emy poł czy tabel sam ze sob . Rozpatrzmy nast puj cy przykład — chcemy wybra pracowników, którzy zarabiaj mniej od swoich kierowników: SELECT E.ENAME NAZW_PR, E.SAL PENS_PR, M.ENAME NAZW_SZ, M.SAL PENS_SZ FROM EMP E, EMP M WHERE E.MGR=M.EMPNO AND E.SAL<M.SAL; NAZW_PR PENS_PR NAZW_SZ PENS_SZ ---------- ---------- ---------- ---------BLAKE 2850 KING 5000 CLARK 2450 KING 5000 JONES 2975 KING 5000 MARTIN 1250 BLAKE 2850 ALLEN 1600 BLAKE 2850 TURNER 1500 BLAKE 2850 JAMES 950 BLAKE 2850 WARD 1250 BLAKE 2850 SMITH 800 FORD 3000 ADAMS 1100 SCOTT 3000 MILLER 1300 CLARK 2450 Jak wida w klauzuli FROM, odwołali my si dwukrotnie do tej samej tabeli za pomoc dwóch aliasów E i M. Operatory zbiorowe Operatory zbiorowe u ywane s do działa na wynikach dwóch lub wi cej zapyta . Wa ne jest, aby wszystkie zapytania, na których b dziemy u ywa operatorów zbiorowych zwracały te samy typy wierszy, np.: (liczba, ci g znaków, ci g znaków, data). Operator UNION Operator zbiorowy jest u ywany do tworzenia sumy dwóch zbiorów wierszy (wyników zapytania ). Aby otrzyma wszystkie, wzajemnie ró ne wiersze zwracane w wyniku dwóch polece , napiszemy: SELECT JOB FROM EMP WHERE DEPTNO=30 UNION SELECT JOB FROM EMP WHERE DEPTNO=10 JOB --------CLERK MANAGER PRESIDENT SALESMAN Operacja (podobnie jak inne operatory zbiorowe) powoduje automatyczn eliminacj duplikatów. Aby otrzyma w wyniku wszystkie wiersze z obu tabel nale y u y operatora . Operator INTERSECT Operator zbiorowy (przeci cie zbiorów) powoduje wybranie wierszy wspólnych dla wyników obu zapyta . SELECT JOB FROM EMP WHERE DEPTNO=30 INTERSECT SELECT JOB FROM EMP WHERE DEPTNO=20 JOB --------CLERK MANAGER Operator MINUS Operator zbiorowy (ró nica zbiorów) powoduje wybranie wierszy zwracanych przez pierwszy rozkaz, nie zwracanych przez rozkaz drugi. SELECT JOB FROM EMP WHERE DEPTNO=30 MINUS SELECT JOB FROM EMP WHERE DEPTNO=20 JOB --------SALESMAN Zapytanie mo e si składa z wi cej ni dwóch zapyta poł czonych operatorami zbiorowymi. W takim przepadku najwy szy priorytet ma operator , potem operatory i (równe priorytety). W przypadkach w tpliwych najlepiej stosowa nawiasy. Klauzula ORDER BY w zapytaniach z operatorami zbiorowymi W zapytaniach z operatorami zbiorowymi mo na u y klauzuli ORDER BY. Odnosi si ona zawsze do wyniku zapytania i mo e by u yta tylko raz. Umieszcza si j zawsze na ko cu zapytania. Poniewa na listach wyboru polece nazwy mog by ró ne, w klauzuli ORDER BY specyfikuje si nie nazw kolumny, tylko jej pozycj . SELECT EMPNO, ENAME, SAL FROM EMP UNION SELECT ID, NAME, SALARY FROM EMP_HISTORY ORDER BY 2; Wyniki powy szego zapytania zostan nazwisk pracowników. posortowane wg kolumny drugiej, czyli wg wiczenia 1. Znajd departament w którym nikt nie jest zatrudniony. DEPTNO DNAME --------- -------------40 OPERATIONS 2. Obok numeru i nazwiska pracownika podaj numer i nazwisko jego kierownika. EMPNO --------7698 7782 7566 7654 7499 7844 7900 7521 7902 7369 7788 7876 7934 ENAME MGRNO MGR_NAME ---------- --------- ---------BLAKE 7839 KING CLARK 7839 KING JONES 7839 KING MARTIN 7698 BLAKE ALLEN 7698 BLAKE TURNER 7698 BLAKE JAMES 7698 BLAKE WARD 7698 BLAKE FORD 7566 JONES SMITH 7902 FORD SCOTT 7566 JONES ADAMS 7788 SCOTT MILLER 7782 CLARK 3. Zmodyfikuj rozwi zanie poprzedniego zadania w ten sposób, aby wy wietli tak e informacje o pracowniku KING, który nie posiada szefa. EMPNO --------7839 7698 7782 7566 7654 7499 7844 7900 7521 7902 7369 7788 7876 7934 ENAME MGRNO MGR_NAME ---------- --------- ---------KING BLAKE 7839 KING CLARK 7839 KING JONES 7839 KING MARTIN 7698 BLAKE ALLEN 7698 BLAKE TURNER 7698 BLAKE JAMES 7698 BLAKE WARD 7698 BLAKE FORD 7566 JONES SMITH 7902 FORD SCOTT 7566 JONES ADAMS 7788 SCOTT MILLER 7782 CLARK 4. Znajd takie stanowisko pracy (JOB), które było obsadzone zarówno w pierwszej połowie 1982 roku jak i w pierwszej połowie 1983 roku. JOB --------CLERK 5. Znajd tych pracowników, którzy zostali zatrudnieniu przed przyj ciem do pracy ich kierowników. EMPLOYEE ---------BLAKE CLARK JONES ALLEN WARD SMITH HIREDATE --------01-MAY-81 09-JUN-81 02-APR-81 20-FEB-81 22-FEB-81 17-DEC-80 MANAGER ---------KING KING KING BLAKE BLAKE FORD HIREDATE --------17-NOV-81 17-NOV-81 17-NOV-81 01-MAY-81 01-MAY-81 03-DEC-81 6. Podaj inny sposób rozwi zania zadania 1. DEPTNO DNAME --------- -------------40 OPERATIONS Podzapytania Podzapytania zagnie d one Podzapytanie to polecenie zagnie d one w innym poleceniu . kolumna_1, kolumna_2, … tabela kolumna = ( kolumna tabela warunek); Podzapytanie to wewn trzny wykonywany w pierwszej kolejno ci, po to, aby jego wynik został u yty do wykonania zapytania zewn trznego. Podzapytania zwracaj ce jeden wiersz Podzapytania zwracaj ce pojedyncz warto mo na traktowa jak zwykłe wyra enie. Aby znale pracowników zarabiaj cych powy ej redniej, mo emy post pi nast puj co: 1. znale redni pensj : SELECT AVG(SAL) FROM EMP; AVG(SAL) ---------2073,21429 2. znale pracowników, których pensja jest wy sza ni zapytaniu pensja rednia. SELECT ENAME, JOB, SAL FROM EMP WHERE SAL>(wynik zapytania z punktu 1) Powy sze dwa rozkazy mo na poł czy w jeden: SELECT ENAME, JOB, SAL FROM EMP WHERE SAL>(SELECT AVG(SAL) FROM EMP); ENAME ---------KING BLAKE CLARK JONES JOB SAL --------- ---------PRESIDENT 5000 MANAGER 2850 MANAGER 2450 MANAGER 2975 obliczona w poprzednim FORD SCOTT Aby znale ANALYST ANALYST 3000 3000 wszystkich zatrudnionych na tym samym stanowisku co SMITH, napiszemy: SELECT ENAME, JOB FROM EMP WHERE JOB=(SELECT JOB FROM EMP WHERE ENAME='SMITH'); ENAME ---------JAMES SMITH ADAMS MILLER JOB --------CLERK CLERK CLERK CLERK Podzapytania zwracaj ce wiele wierszy Je li w firmie pracowałoby wi cej osób o nazwisku SMITH, to poprzednie podzapytanie nie miałoby sensu. Co wi cej zapytanie wewn trzne zamiast pojedynczej warto ci zwróciłoby kolumn warto ci, co prowadziłoby do bł du w zewn trznym zapytaniu. Przekształ my to zapytanie tak, aby wyszukiwało wszystkie osoby zatrudnione na stanowiskach, na których pracuje jakikolwiek SMITH. SELECT ENAME, JOB FROM EMP WHERE JOB IN (SELECT JOB FROM EMP WHERE ENAME='SMITH'); Spróbujmy teraz znale pracowników, których pensja jest na li cie najwy szych zarobków w departamentach. SELECT ENAME, SAL, DEPTNO FROM EMP WHERE SAL IN (SELECT MAX(SAL) FROM EMP GROUP BY DEPTNO); ENAME SAL DEPTNO ---------- ---------- ---------BLAKE 2850 30 FORD 3000 20 SCOTT 3000 20 KING 5000 10 Rozwa my teraz sytuacj , e w firmie pracuje osoba, której zarobki pokrywaj si z najwi kszym zarobkiem w danym departamencie, ona jednak pracuje w innym departamencie. Powy sze zapytanie wypisze tak osob , jako e nie został nało ony warunek, aby osoba pracowała w departamencie, z którego pochodzi najwy sza pensja. Warunek, w którym porównujemy wiele warto ci Spróbujmy przerobi powy sze zapytanie: SELECT ENAME, SAL, DEPTNO FROM EMP WHERE (SAL,DEPTNO) IN (SELECT MAX(SAL), DEPTNO FROM EMP GROUP BY DEPTNO); ENAME SAL DEPTNO ---------- ---------- ---------BLAKE 2850 30 FORD 3000 20 SCOTT 3000 20 KING 5000 10 Powy sze zapytanie wybierze nam osoby, które zarabiaj najwi cej w swoich działach — został nało ony tak e warunek, aby osoba wybierana pracowała w dziale, do którego nale y najwy sza pensja. Kolumny na li cie wyboru wewn trznego (w klauzuli WHERE lub HAVING) musz wyst powa w kolejno ci i typach zgodnych z kolejno ci i typami wyst puj cymi w klauzuli SELECT zewn trznego polecenia. Operatory ALL i ANY Operatory i mo na stosowa w podzapytaniach zwracaj cych wi cej ni jeden wiersz. Podaje si je w klauzulach WHERE i HAVING razem z operatorami porównywania. Operator — wiersz zostanie wybrany, je li wyra enie jest zgodne co najmniej z jedn warto ci wybran w podzapytaniu. SELECT ENAME, SAL, DEPTNO FROM EMP WHERE SAL > ANY (SELECT DISTINCT SAL FROM EMP WHERE DEPTNO=10); ENAME SAL DEPTNO ---------- ---------- ---------KING 5000 10 BLAKE 2850 30 CLARK 2450 10 JONES 2975 20 ALLEN 1600 30 TURNER 1500 30 FORD 3000 20 SCOTT 3000 20 Najni szy zarobek w departamencie 10 wynosi 1300. Zapytanie wybierze wszystkich, którzy zarabiaj wi cej ni 1300. Aby nie były wybierane wielokrotnie te same zarobki (3000 jest wi ksze i od 1300 i od 2450 — zostałoby wybrane dwukrotnie), cz sto stosuje si razem z operatorami i słowo kluczowe . SELECT ENAME, SAL, DEPTNO FROM EMP WHERE DEPTNO=10; ENAME SAL DEPTNO ---------- ---------- ---------KING 5000 10 CLARK 2450 10 MILLER 1300 10 Operator — warunek musi by spełniony przez wszystkie warto ci wybrane w podzapytaniu. Wybierzmy wszystkich pracowników, którzy zarabiaj wi cej ni ktokolwiek w departamencie 30: SELECT ENAME, SAL, DEPTNO FROM EMP WHERE SAL > ALL (SELECT DISTINCT SAL FROM EMP WHERE DEPTNO=30) ORDER BY SAL; ENAME SAL DEPTNO ---------- ---------- ---------JONES 2975 20 FORD 3000 20 SCOTT 3000 20 KING 5000 10 Najwy szy zarobek w departamencie 30 wynosi 2850. Zapytanie wybierze wszystkich, którzy zarabiaj wi cej ni 2850. Klauzula HAVING z zagnie d onymi zapytaniami Podzapytania mog wyst powa równie w klauzuli HAVING (przypominamy — klauzula HAVING odnosi si do grup wierszy). Nie istnieje limit na liczb poziomów zagnie d ania podzapyta . Aby wybra zawody, w których rednia płaca jest wy sza ni rednia płaca w zawodzie 'MANAGER', napiszemy: SELECT JOB, AVG(SAL) FROM EMP HAVING AVG(SAL) > (SELECT AVG(SAL) FROM EMP WHERE JOB='MANAGER') GROUP BY JOB; JOB AVG(SAL) --------- ---------ANALYST 3000 PRESIDENT 5000 Aby wybra stanowisko, na którym s najni sze rednie zarobki, napiszemy: SELECT JOB, AVG(SAL) FROM EMP HAVING AVG(SAL) = (SELECT MIN(AVG(SAL)) FROM EMP GROUP BY JOB) GROUP BY JOB; JOB AVG(SAL) --------- ---------CLERK 1037,5 Sortowanie danych w podzapytaniu W podzapytaniu nie mo e wyst powa klauzula ORDER BY. Klauzula ORDER BY mo e wyst pi tylko raz dla całego zapytania i wtedy musi pojawi si jako ostatnia. Zapytania skorelowane Blok skorelowany jest szczególnym przypadkiem zagnie d onego zapytania. Zwykłe podzapytanie jest wykonywane raz, na samym pocz tku, a do jego wyników odwołuje si zapytanie zewn trzne. W przypadku zapytania skorelowanego podzapytanie jest wykonywane dla ka dego wiersza z zapytania zewn trznego. Aby znale osoby, które zarabiaj mniej ni wynosi rednia w ich zawodach, napiszemy: SELECT ENAME, SAL, DEPTNO, AVG(SAL) FROM EMP E WHERE SAL < (SELECT AVG(SAL) FROM EMP WHERE JOB=E.JOB) ORDER BY JOB; ENAME SAL DEPTNO ---------- ---------- ---------JAMES 950 30 SMITH 800 20 CLARK 2450 10 MARTIN 1250 30 WARD 1250 30 Operator EXIST W przypadku zapyta skorelowanych czasami interesuje nas tylko, czy wiersz spełniaj cy podane warunki istnieje. Wtedy stosujemy operator . Aby za pomoc napiszemy: operatora znale pracowników, którzy maj podwładnych, SELECT ENAME, SAL, DEPTNO FROM EMP E WHERE EXISTS (SELECT EMPNO FROM EMP WHERE EMP.MGR=E.EMPNO) ORDER BY DEPTNO; ENAME SAL DEPTNO ---------- ---------- ---------KING 5000 10 CLARK 2450 10 JONES 2975 20 SCOTT 3000 20 FORD 3000 20 BLAKE 2850 30 Aby znale departament, w którym nikt nie pracuje: SELECT DNAME, DEPTNO FROM DEPT D WHERE NOT EXISTS (SELECT 1 FROM EMP E WHERE E.DEPTNO=D.DEPTNO) ORDER BY DEPTNO; DNAME DEPTNO -------------- ---------OPERATIONS 40 Zauwa my, e zapytanie wewn trzne nie musi zwraca adnej warto ci z tabeli, istotne jest, czy w ogóle zostanie zwrócony wiersz, a nie jego zawarto . wiczenia 1. Znajd pracowników zarabiaj cych maksymalna pensj na ich stanowiskach pracy. Uporz dkuj ich według malej cych zarobków. JOB --------PRESIDENT ANALYST ANALYST MANAGER SALESMAN CLERK ENAME SAL ---------- --------KING 5000 FORD 3000 SCOTT 3000 JONES 2975 ALLEN 1600 MILLER 1300 2. Znajd pracowników zarabiaj cych minimaln Uporz dkuj ich według wzrastaj cych pensji. JOB --------CLERK SALESMAN SALESMAN MANAGER ANALYST ANALYST PRESIDENT pensj na ich stanowiskach pracy. ENAME SAL ---------- --------SMITH 800 MARTIN 1250 WARD 1250 CLARK 2450 FORD 3000 SCOTT 3000 KING 5000 3 Wska dla ka dego departamentu ostatnio zatrudnionych pracowników. Uporz dkuj według dat zatrudnienia. DEPTNO --------30 10 20 ENAME ---------JAMES MILLER ADAMS HIREDATE --------03-DEC-81 23-JAN-82 12-JAN-83 4. Podaj nast puj ce dane o pracownikach, których zarobki przekraczaj departamentów. Uporz dkuj według numerów departamentów. ENAME SALARY DEPTNO ---------- --------- --------KING 5000 10 JONES 2975 20 FORD 3000 20 SCOTT 3000 20 BLAKE 2850 30 ALLEN 1600 30 5. Stosuj c podzapytanie, znajd departamenty, w których nikt nie pracuje. DEPTNO DNAME --------- -------------40 OPERATIONS redni ich J zyk definiowania danych Struktury danych ORACLE • • • • Nowe tabele mog by tworzone tak e podczas pracy u ytkowników z baz danych. Pami dla tabel jest przydzielana w miar potrzeb. Pami dla bazy danych jako cało ci przydzielana jest z góry, ale mo liwe jest rozszerzanie jej rozmiarów przy zastosowaniu odpowiednich opcji. Struktury danych mog by modyfikowane w trakcie pracy systemu (chyba, e akurat na nich dokonywane s zmiany przez u ytkowników). U ytkownicy mog zakłada własne, prywatne struktury. Tworzenie tabel Nazwa tabeli musi by zgodna regułami nazewnictwa obiektów bazy danych Oracle: • nazwa obiektu musi zaczyna si od litery; • nazwa mo e zawiera litery, cyfry oraz znak podkre lenia. Mo liwe, ale nie zalecanie jest u ywanie znaków $ i #; • małe i du e litery s równowa ne; • długo nazwy nie mo e przekracza 30 znaków; • w obr bie bazy danych nie mog istnie dwa obiekty o tej samej nazwie — nazwa musi by unikalna; • nazwa nie mo e by nazw zastrze on dla j zyka; • je li nazwa nie spełnia tych zalece to musi by otoczona podwójnymi cudzysłowami. Wtedy rozró niane s małe i wielkie litery. Definiuj c tabel musimy poda list kolumn opisywan przez nazw kolumny, jej typ i czasami długo przechowywanej warto ci. Typy kolumn Ka da kolumna musi mie okre lony typ danych: CHAR (n) VARCHAR2 (n) VARCHAR (n) NUMBER (p,s) DATE ci g dowolnych znaków stałej długo ci, parametr n wskazuje maksymaln długo ci gu ci g znaków zmiennej długo ci, parametr n wskazuje maksymaln długo ci gu liczba o precyzji p i skali s, precyzja (liczba cyfr znacz cych) mo e przyjmowa warto ci od 1 do 38, skala (liczba cyfr po przecinku) warto ci od -84 do 127 daty w przedziale mi dzy 1 stycznia 4712 roku a 31 grudnia 4712 naszej ery, w dacie przechowywany jest tez składnik czasu LONG RAW (n) LONG RAW ROWID ci g znaków zmiennej długo ci o maksymalnym zakresie 2 GB, w tabeli mo e by tylko jedna kolumna typu LONG ci g bajtów o długo ci do n bajtów, maksymalne n=2000 ci g bajtów o maksymalnej długo ci do 2 GB, w tabeli mo e by tylko jedna kolumna typu LONG RAW do przechowywania adresów fizycznych wierszy Polecenie tworzenia tabel Do budowania tabel słu y polecenie : nazwa_tablicy (nazwa_kolumny typ (rozmiar), nazwa_kolumny typ (rozmiar), …); Przykład Tworzenie tabeli DEPT: CREATE TABLE DEPT (DEPTNO NUMBER(2), DNAME VARCHAR2(12), LOC VARCHAR2(12)); Warunki integralno ci Podczas definiowania tabeli mamy mo liwo okre li , jakie warunki powinny spełnia dane w wierszach wprowadzanych do tablicy. Warunki takie nazywa si warunkami integralno ci (constraints). Mo emy za da , aby wypełnienie warto ci w danej kolumnie było obowi zkowe, aby warto ci pochodziły z okre lonego zakresu, aby były unikalne itd. Opcje NULL i NOT NULL Podczas definiowania kolumn tabeli mo emy za da , aby wiersze tej tabeli w polach tej kolumny nie dopuszczały warto ci nieokre lonych. nazwa_tablicy (nazwa_kolumny typ (rozmiar) [ nazwa_kolumny typ (rozmiar) [ …); | | ], ], Opcja (domy lna) oznacza, e pola tej kolumny mog przyjmowa warto NULL. Opcja oznacza, e pola tej kolumny musz mie okre lon warto , nie mog przyjmowa warto ci NULL. Przykład CREATE TABLE DEPT ( DEPTNO NUMBER NOT NULL, DNAME VARCHAR2(12)); Polecenie DESCRIBE Aby zobaczy , jakie tabele ma kolumny i jakie s na nie nało one warunki, napiszemy: [ ] nazwa_tabeli; Przykład DESC DEPT; Nazwa kolumny -----------------------------DEPTNO DNAME LOC Warto -------NOT NULL Typ ---NUMBER(2) CHAR(14) CHAR(13) Klauzula CONSTRAINT Do definiowania innych ni warunków integralno ci słu y klauzula CONSTRAINT. Warunki mog by wpisanie bezpo rednio przy definicji kolumny lub na ko cu po zdefiniowaniu wszystkich kolumn. Warunek umieszczony przy definicji kolumny: nazwa_tablicy (... nazwa_kolumny typ (rozmiar) nazwa_warunku typ_warunku [warunek], …); Warunek umieszczony po definicjach wszystkich kolumn: nazwa_tablicy (... nazwa_kolumny typ (rozmiar), … nazwa_warunku typ_warunku warunek, nazwa_warunku typ_warunku warunek, …); • nazwa_warunku — jest identyfikatorem warunku integralno ci, nie jest wymagane jego podanie, ale wtedy system nada warunkowi własny, zazwyczaj nieczytelny identyfikator. Identyfikator jest potrzebny przy komendach wł czaj cych i wył czaj cych warunki integralno ci. • typ_warunku — jeden z nast puj cych: , , , . • warunek — dodatkowe informacje w zale no ci od typu warunku, w przypadku umieszczenia klauzuli CONSTRAINT po definicjach kolumn warunek musi by zawsze okre lony. Warunek CHECK Okre la warunek, jaki musi spełnia warto w kolumnie ka dego wstawianego wiersza, warunek nie mo e si odwoływa si do innych tabel. (warunek logiczny); Warunek logiczny musi by prosty, nie wolno stosowa podzapyta . Nie wolno te u ywa funkcji, których warto zale y od okoliczno ci wywołania, np. SYSDATE czy USER. Przykład CREATE TABLE emp (... ENAME VARCHAR2(10) CONSTRAINT upper_name_ch CHECK (ENAME=UPPER(ENAME)), ...); Warunek PRIMARY KEY Definiuje klucz główny tabeli. Je li kluczem głównym jest jedna kolumna, wygodniej warunek zapisa po definicji tej kolumny. W przypadku klucza głównego opartego na kilku kolumnach wygodniej zdefiniowa go po definicji wszystkich kolumn. Definicja warunku przy definicji kolumny: kolumna typ rozmiar nazwa_warunku Definicja warunku po definicji wszystkich kolumn: nazwa_warunku (kolumna_1, kolumna_2, …); W tabeli mo e by tylko jeden klucz główny. Wszystkie kolumny wchodz ce w skład klucza głównego s obowi zkowe — nie musimy dodatkowo nakłada warunku . Dla ka dego wiersza zestaw warto ci dla klucza głównego musi by unikalny — inaczej Oracle zgłosi bł d. Przykład CREATE TABLE emp ( empno NUMBER(4) CONSTRAINT emp_pk PRIMARY KEY, ...); lub CREATE TABLE emp ( empno NUMBER(4), ..., CONSTRAINT emp_pk PRIMARY KEY (empno), ...); Warunek UNIQUE Definiuje klucz unikalny tabeli. Klucz unikalny jest podobny do klucza głównego, z tym, e nie wymusza automatycznie warunku na swoich kolumnach. Je li kluczem unikalnym jest jedna kolumna, wygodniej warunek zapisa po definicji tej kolumny. W przypadku klucza opartego na kilku kolumnach wygodniej zdefiniowa go po definicji wszystkich kolumn. Definicja warunku przy definicji kolumny: kolumna typ rozmiar nazwa_warunku Definicja warunku po definicji wszystkich kolumn: nazwa_warunku (kolumna_1, kolumna_2,...) W tabeli mo e by wiele kluczy unikalnych. Dla ka dego wiersza zestaw warto ci dla klucza unikalnego musi by unikalny — inaczej Oracle zgłosi bł d. Warunek mo na do kolumn klucza unikalnego dopisa osobno. Przykład CREATE TABLE dept ( dname VARCHAR2(12) CONSTRAINT dept_uk UNIQUE ...); Warunek FOREIGN KEY Definiuje klucz obcy, reprezentuj cy zwi zek z inn tabel . Sprawia e, warto ci kolumn z tym kluczem mog przyjmowa tylko warto ci z klucza głównego lub unikalnego innej, wskazanej tabeli. Je li kluczem obcym jest jedna kolumna, wygodniej warunek zapisa po definicji tej kolumny. W przypadku klucza opartego na kilku kolumnach wygodniej zdefiniowa go po definicji wszystkich kolumn. Definicja warunku przy definicji kolumny: kolumna typ rozmiar nazwa_warunku nazwa_tabeli lista_kolumn; Definicja warunku po definicji wszystkich kolumn: nazwa_warunku (lista kolumn tabeli definiowanej) nazwa_tabeli lista_kolumn; Aby klucz obcy mógł by zdefiniowany musi by zdefiniowana wcze niej tabela, do której klucz ten si odwołuje, a na zestawie kolumn wskazanym przez klucz obcy musi by zdefiniowany klucz główny lub unikalny. Je li odwołujemy si do klucza głównego obcej tabeli, to nie musimy specyfikowa listy kolumn tego klucza. Własno ci klucza obcego • • • W tabeli z kluczem obcym nie mo na wstawi wiersza o warto ciach klucza obcego nie maj cych odpowiedników w tabeli obcej. W tabeli z kluczem obcym nie mo na zmodyfikowa wiersza na warto ci klucza obcego nie maj cych odpowiedników w tabeli obcej. Z tabeli obcej nie mo na usun wiersza do którego odwołuj si warto ci klucza obcego innej tabeli. Mo na za da usuwania wraz z wierszem wszystkich wierszy w tabeli z kluczem obcym, do których ten wiersz si odwołuje. W tym celu przy klauzuli CONSTRAINT definiuj cej klucz obcy nale y umie ci dyrektyw . Przykład W poni szej tabeli emp s zdefiniowane dwa klucze obce: • deptno — z kolumn deptno tabeli dept, • mgr — z kolumn empno tabeli emp i daniem usuni cia wszystkich pracowników w przypadku usuni cia szefa. CREATE TABLE EMP ( EMPNO NUMBER(4) CONSTRAINT EMP_PRIMARY_KEY PRIMARY KEY, ENAME VARCHAR(10), JOB VARCHAR(9), MGR NUMBER(4) CONSTRAINT EMP_SELF_KEY REFERENCES EMP (EMPNO), HIREDATE DATE, SAL NUMBER(7,2), COMM NUMBER(7,2), DEPTNO NUMBER(2) NOT NULL CONSTRAINT EMP_FOREIGN_KEY FOREIGN KEY REFERENCES DEPT ON DELETE CASCADE); Klauzula DEFAULT Klauzula DEFAULT słu y do wskazania, jaka warto je li nie została okre lona konkretna warto . ... kolumna typ (rozmiar) ... Wyra enie musi by SYSDATE i USER. ma by wstawiona do kolumny, wyra enie proste, nie wolno stosowa podzapyta , dozwolone s funkcje Tworzenie tabeli przez zapytanie Wynik zapytania mo na zapami ta jako nowa tabel . nazwa_tabeli [(nazwa_kolumny [ | zapytanie; ], …)] Lista nazw nowej tabeli mo e by pomini ta, je li s poprawnie wskazane nazwy kolumn w poleceniu . Je li jest podana lista kolumn nowej tabeli, ilo pozycji musi si pokrywa z ilo ci pozycji wyst puj c na li cie wyboru polecenia . Przykład Aby utworzy tabel EMP_CLERK, napiszemy: CREATE TABLE EMP_CLERK AS SELECT EMPNO, ENAME, JOB, SAL FROM EMP WHERE JOB='CLERK'; Instrukcja przetworzona. Opis utworzonej tabeli uzyskamy poleceniem : DESC EMP_CLERK Nazwa kolumny Warto ------------------------------ -------EMPNO NOT NULL ENAME JOB SAL Typ ---NUMBER(4) VARCHAR2(10) VARCHAR2(9) NUMBER(7,2) Zmiana definicji tabeli Do zmiany definicji tabeli słu y polecenie . Umo liwia ono dodawanie nowych kolumn, zmian maksymalnego rozmiaru warto ci oraz zarz dzanie warunkami integralno ci. Dodawanie kolumn Do dodania nowej kolumny słu y klauzula ADD. nazwa nazwa_kolumny typ (rozmiar), nazwa_kolumny typ (rozmiar), ...); Przykład ALTER TABLE emp ADD adress VARCHAR2(40); Zarz dzanie warunkami integralno ci Warunki integralno ci dodajemy do tabeli tak jak kolumny, z tym, e u ywamy składni takiej, jak przy definiowaniu warunków po definicjach kolumn. ( nazwa nazwa_warunku typ_warunku warunek, ...); Sprawdzanie warunków integralno ci mo na wł cza i wył cza : Wł czanie: nazwa nazwa_warunku; Wył czanie: nazwa nazwa_warunku; Podczas wł czania sprawdzania warunków integralno ci Oracle sprawdza, czy wszystkie wiersze tabeli spełniaj zadane warunki. Je li cho jedno sprawdzenie zako czy si bł dem, to warunek nie zostanie wł czony. Warunek integralno ci mo na usun przy pomocy klauzuli DROP: nazwa nazwa_warunku; Modyfikacja definicji kolumny Do modyfikowania definicji kolumny słu y klauzula MODIFY: nazwa nazwa_kolumny typ (rozmiar) [ | ], ...); Nie mo na zmieni kolumny w której wyst puj warto ci NULL na . Do niepustej tabeli nie mo na doda kolumny o własno ci . Nie mo na zmniejszy rozmiaru kolumny ani zmieni jej rozmiaru, je li kolumna nie jest pusta. Usuwanie tabel Do usuwania tabel słu y polecenie . nazwa; Usuni cie tabeli powoduje: • utrat wszystkich danych w niej zawartych i wszystkich indeksów zwi zanych z tabel , • wszystkie perspektywy i synonimy oparte na tabeli trac sens, • polecenie jest automatycznie zatwierdzane (nieodwracalne), • je li istniej tablice, których klucze obce s powi zane z usuwan tabela to usuwanie si nie powiedzie, chyba e dodamy na ko cu klauzul CASCADE CONSTRAINTS, • tabel usun mo e wła ciciel tabeli lub administrator bazy. Zmiana nazwy tabeli Nazw tabeli zmieniamy poleceniem stara_nazwa : nowa_nazwa; J zyk manipulowania danymi Wstawianie wierszy Polecenie INSERT Polecenie słu y do wstawiania nowych wierszy do tabeli: nazwa_tabeli [(lista_kolumn)] (lista_warto ci); Przy wstawianiu do wszystkich kolumn tabeli nie musimy podawa listy kolumn, ale wtedy musimy warto ci wprowadza w takiej kolejno ci, jaka była wyspecyfikowana podczas polecenia . Z tego wzgl du, aby uniezale ni si od pó niejszych modyfikacji tabeli bezpieczniej jest podawa list kolumn w klauzuli INSERT INTO. Przykład INSERT INTO dept (deptno, dname, loc) VALUES (50, 'SERVICE', 'NEW YORK'); W ka dym poleceniu mo na wstawi tylko jeden wiersz. W poleceniu dopuszczalne s funkcje SQL dotycz ce pojedynczych wierszy, nie wolno natomiast u ywa podzapyta . Wstawianie wierszy wybranych w podzapytaniu Mo emy wstawi do tabeli wiersze, które s wynikiem zapytania . nazwa_tabeli [lista_kolumn] lista_wyra e ... W ten sposób mo emy za pomoc wierszy. pojedynczego polecenia wstawi wiele Przykład Aby skopiowa do tabeli MANAGER wszystkich pracowników pracuj cych na stanowisku MANAGER napiszemy: INSERT INTO manager SELECT (empno, ename, sal, job, hiredate) FROM emp WHERE job='MANAGER'; Modyfikacja wierszy Polecenie UPDATE Do zmiany zawarto ci wierszy słu y polecenie [ . nazwa_tabeli [alias] kolumna = { wyra enie | podzapytanie } [ , kolumna= { wyra enie | podzapytanie } ...] warunek ]; Przykład UPDATE SET WHERE dept dname='MARKETING' loc='DENVER' deptno=20; Je li nie wpiszemy klauzuli WHERE, to zostan zmodyfikowane wszystkie wiersze tabeli. W poleceniu i skorelowanych. mo na u ywa podzapyta , zarówno zagnie d onych jak Usuwanie wierszy Polecenie DELETE Do usuwania wierszy z tabeli słu y polecenie [ . [ ] tabela warunek ]; Warunek w klauzuli WHERE okre la, które wiersze b d usuni te. Przykład DELETE FROM emp WHERE job='MANAGER'; Zostan usuni ci prasownicy pracuj cy na stanowisku MANAGER. Transakcje Co to jest transakcja? Transakcja to operacja zmiany stanu bazy, składaj c si z wielu operacji aktualizacji wierszy w tabeli. W przypadku przerwania operacji zmiany bazy w trakcie trwania transakcji, baza powinna wróci do stanu sprzed transakcji. Dopiero po zako czeniu transakcji zmiany dokonane w czasie transakcji b d widoczne dla innych u ytkowników. Transakcja rozpoczyna si automatycznie podczas wykonywania pierwszej operacji DML — zmiany stanu bazy i trwa do: • jawnego zatwierdzenia transakcji — polecenie . Zmiany staj si nieodwracalne i widoczne dla innych u ytkowników; • jawnego polecenia wycofania transakcji — polecenie . Baza danych wraca wtedy do stanu sprzed transakcji; • wykonania polecenia DDL ( , , ). Ka de takie polecenie jest transakcj i zatwierdza niezatwierdzon transakcj wcze niejsz ; • zako czenia sesji aplikacji — w zale no ci od aplikacji transakcja jest albo zatwierdzana albo wycofywana; • przerwania sesji — awaria sieci, brak zasilania — transakcje s wycofywane. Transakcja powinna tworzy spójn cało , nale y unika zbyt długich transakcji — powinno si je zatwierdza po wykonaniu cz ci stanowi cej logiczn cało . Dzi ki temu oszcz dzamy zasoby systemowe i umo liwiamy innym u ytkownikom korzystanie z wprowadzonych zmian. Polecenie COMMIT Polecenie to słu y do jawnego zatwierdzania transakcji. [ ]; Polecenie to powoduje: • zako czenie transakcji, • zatwierdzenie zmian — staj si nieodwracalne, • zmiany staj si widoczne dla innych u ytkowników, • usuni cie wszystkich blokad i wszystkich punktów zachowania. Wykonanie jakiegokolwiek polecenia DDL spowoduje taki sam efekt, jak wykonanie polecenia . Polecenie ROLLBACK Słu y do jawnego wycofywania transakcji. [ ]; Polecenie powoduje: • zako czenie transakcji, • wycofanie wszystkich zmian dokonanych w sesji od pocz tku transakcji, • usuni cie wszystkich blokad i wszystkich punktów zachowania. Punkty zachowania Punkty zachowania stosuje si , aby podzieli transakcje na mniejsze cz ci. nazwa_punktu_zachowania; Wprowadzenie punktu zachowania pozwala wycofa transakcj do okre lonego punktu zachowania, nie trac c przy tym zmian wprowadzonych wcze niej. Do wycofania zmian do ostatniego punktu zachowania słu y nast puj ce polecenie: [ ] [ ] nazwa_punktu_zachowania; Polecenie to: • wycofuje cz transakcji do podanego punktu zachowania, • zachowuje ten punkt zachowania, ale powoduje utart wszystkich pó niejszych, • zwalnia blokady zało one przez polecenia wydane po tym punkcie zachowania. Niejawne wycofanie Niejawne całkowite wycofanie transakcji ma miejsce w przypadku np. przerwania sesji u ytkownika, awarii komputera, braku zasilania itp. Niejawne cz ciowe wycofanie transakcji ma miejsce w przypadku bł du wykonania polecenia. Wycofywane s wtedy zmiany dokonane przez ten bł dny rozkaz. Automatyczny COMMIT W SQL*Plus mo emy wymusi poleceniu , i [ automatyczne zatwierdzanie transakcji po ka dym . ] Dyrektyw odwołujemy poleceniem: [ ] Perspektywy Perspektywy Perspektywa (view) posiada nast puj ce cechy: • jest definiowana w oparciu o tabel bazow lub inn perspektyw ,. • jest przechowywana w postaci definiuj cego j rozkazu , • nie przechowuje danych — operuje danymi zgromadzonymi w tabelach bazowych. Perspektyw u ywamy, aby: • ograniczy dost p do wszystkich danych z tabeli, • ułatwi u ytkownikom pobieranie rezultatów skomplikowanych zapyta , • aby zwolni u ytkowników od wnikania w struktury danych, • aby udost pni u ytkownikom dane bazowe sformatowane i przedstawione w czytelny sposób. Tworzenie perspektyw Polecenie CREATE VIEW Perspektyw tworzy si za pomoc polecenia [ [(lista_kolumn)] ] : nazwa_perspektywy … Lista_kolumn to lista nazw kolumn perspektywy, musz one odpowiada pozycjom wyboru z listy . Je li perspektywa o danej nazwie ju istnieje, to aby utworzy na jej miejsce now musimy usun star lub u y opcji . Przykład Aby utworzy perspektyw zawieraj ca niektóre dane o pracownikach zatrudnionych na stanowisku 'MANAGER', napiszemy: CREATE VIEW Emp_Manager AS SELECT empno, ename, sal, deptno FROM emp WHERE job='MANAGER'; Perspektywy u ywa si jak zwykłej tabeli: SELECT * FROM Emp_Manager ORDER BY ename; W definicji perspektywy nie mo e wyst powa klauzula ORDER BY. U ycie perspektyw Perspektywy mog słu y tak e do modyfikacji danych w tabeli bazowej. Je li poprzez perspektyw zmodyfikujemy dane tabeli bazowej, mo e si okaza , e po modyfikacji b d one niedost pne poprzez t perspektyw . Aby unikn tego mo emy nało y opcj , tak aby nie były dozwolone takie modyfikacje wierszy, które spowoduj ich wyrzucenie poza perspektyw . Przykład CREATE VIEW Emp_Manager AS SELECT empno, ename, sal, job, deptno FROM emp WHERE job='MANAGER' WITH CHECK OPTION; System nie pozwoli teraz zmieni w wierszu pola job z MANAGER na inn warto . Usuwanie perspektywy Perspektyw usuwa si poleceniem : nazwa_perspektywy; Perspektywa mo e by usuni ta tylko przez jej wła ciciela lub administratora. U ytkownicy i uprawnienia Ka dy, kto rozpoczyna prac z Oracle musi by zidentyfikowany poprzez podanie identyfikatora i hasła, aby móc wykona operacje, do których jako ten u ytkownik jest uprawniony. Zarz dzanie u ytkownikami Za zarz dzanie u ytkownikami, ich uprawnieniami i zasobami odpowiedzialny jest administrator. Mo e on: • tworzy i usuwa u ytkowników, • zmienia hasła u ytkowników, • wymusi identyfikacje u ytkowników przez system operacyjny, • ograniczy ilo ciowo zasoby, które mo e zajmowa u ytkownik, • przydzieli domy lne miejsce w bazie, gdzie b d przechowywane obiekty u ytkownika, • zdefiniowa uprawnienia u ytkownika. Dokładnie te zagadnienia s omawiane na kursach administracji. Tworzenie u ytkownika U ytkownika tworzy administrator poleceniem : u ytkownik hasło; Tak utworzony u ytkownik istnieje ju w bazie, ale nie ma jeszcze adnych uprawnie , a w szczególno ci nie mo e podł czy si do bazy. Usuwanie u ytkownika Administrator usuwa u ytkownika poleceniem : u ytkownik; Je li u ytkownik jest wła cicielem jaki obiektów, to usuni cie si nie powiedzie, chyba e na ko cu dodamy słowo kluczowe . Wtedy razem z u ytkownikiem usuwane s utworzone przez niego obiekty. Zmiana hasła Ka dy u ytkownik mo e zmieni swoje hasło. Słu y do tego polecenie u ytkownik . hasło; Przykład Je li u ytkownik Adams chce zmieni hasło na 'tygrys', to pisze: ALTER USER Adams IDENTIFIED BY tygrys; Uprawnienia w bazie Oracle W bazie danych Oracle istniej dwa typy uprawnie : • uprawnienia systemowe — prawo do wykonania okre lonej akcji lub wykonywania pewnych akcji na okre lonym typie obiektów, • uprawnienia obiektowe — prawo do wykonywania okre lonej akcji na konkretnym obiekcie. Uprawnienia systemowe Istnieje ponad 80 ró nych uprawnie systemowych. W celu ułatwienia pracy administratorom uprawnienia s grupowane w tzw. role. Predefiniowane role to: CONNECT RESOURCE DBA mo liwo podł czenia do Oracle mo liwo tworzenia tabel, sekwencji, indeksów i innych obiektów mo liwo zakładania innych u ytkowników, mo liwo dost pu do obiektów zastrze onych prze innych u ytkowników Nadawanie uprawnie systemowych Do nadawania uprawnie słu y polecenie uprawnienie [, uprawnienie...] : u ytkownik; Polecenie nadaje nowe uprawnienia u ytkownikowi. Uprawnienia nadawane kolejnymi poleceniami si kumuluj . Odbieranie uprawnie systemowych Do odbierania uprawnie słu y polecenie : uprawnienie [, uprawnienie...] Polecenie odbiera pozostawiaj c inne bez zmian. wyspecyfikowane u ytkownik; uprawnienie u ytkownikowi, Dalsze przekazywanie uprawnie Domy lnie u ytkownik nie mo e przekazywa nadanych mu uprawnie innemu u ytkownikowi. Aby mógł to zrobi , podczas nadawania mu uprawnienia administrator musi je nada z opcj . uprawnienie [, uprawnienie...] u ytkownik ; Uprawnienia obiektowe Wła cicielem obiektu jest u ytkownik, który go tworzy. Je li u ytkownik nie udost pnia praw do swojego obiektu, to jedynie on i administrator władaj tym obiektem. Uprawnienia obiektowe definiuj prawa u ytkownika do obiektu innego u ytkownika. Nadawanie uprawnie obiektowych Uprawnienia obiektowe nadajemy poleceniem: uprawnienie [, uprawnienie...] obiekt u ytkownik [, u ytkownik]; Poni sza tabela przedstawia najcz ciej nadawane uprawnienia obiektowe. Prawo SELECT INSERT UPDATE DELETE ALTER Obiekt wybieranie danych z tabeli lub perspektywy wstawianie wierszy do tabeli lub perspektywy modyfikacje wierszy lub nieokre lonych kolumn tabeli lub perspektywy usuwanie wierszy z tabeli lub perspektywy zmiana definicji kolumn tabeli INDEX REFERENCES ALL EXECUTE indeksowanie tabeli odwołanie do tabeli w obcych kluczach wszystkie prawa prawo wykonywania procedur, funkcji i pakietów Przykład Aby nada u ytkownikowi Scott prawa wyboru do swojej tabeli emp, u ytkownik Adams napisze: GRANT SELECT ON emp TO Scott; Dalsze przekazywanie uprawnie Domy lnie u ytkownik nie mo e przekazywa nadanych mu uprawnie obiektowych innemu u ytkownikowi. Aby mógł to zrobi , uprawnienie musi by nadane z opcj . uprawnienie [, uprawnienie...] obiekt u ytkownik ; Przykład Aby nada u ytkownikowi Scott prawa wyboru do swojej tabeli emp z prawem przekazywania tego uprawnienia dalej, u ytkownik Adams napisze: GRANT SELECT ON emp TO Scott WITH GRANT OPTION; Uprzywilejowanie typu PUBLIC Aby przekaza : prawo do obiektu wszystkim u ytkownikom bazy, u ywamy opcji GRANT SELECT ON emp TO PUBLIC; Odbieranie uprawnie obiektowych Do odbierania uprawnie obiektowych słu y polecenie : uprawnienie [, uprawnienie...] obiekt u ytkownik; Akcje na obiektach innego u ytkownika Do obiektu innego u ytkownika odwołujemy si nast puj co: nazwa_u ytkownika.nazwa_obiektu Przykład Aby wybra wszystko z tabeli emp u ytkownika Adams, napiszemy: SELECT * FROM Adams.emp; Aby ułatwi odwołania do obiektu, mo na stworzy dla nich synonimy. Synonimy Dla obiektów mo na tworzy nazwy zast pcze — synonimy: nazwa synonimu [wła ciciel.]nazwa_obiektu; Synonimy usuwa si poleceniem [ ] : nazwa_synonimu; Role Rola to zestaw uprawnie , jaki mo na przyznawa u ytkownikom bazy. Rola mo e zawiera zarówno uprawnienia systemowe jak i obiektowe. Dzi ki rolom ułatwione jest administrowanie baz . Je li przykładowo dla kierowników działów zdefiniowana jest rola KIEROWNICY, to chc c wszystkim kierownikom nada jakie uprawnienie wystarczy doda je do roli KIEROWNICY. Tworzenie roli Rol tworzy si poleceniem : [ rola hasło]; Klauzula IDENTIFIED BY słu y do okre lania hasła, przy pomocy którego u ytkownik identyfikuje si z rol . Definiowanie uprawnie roli Uprawnieniami dla roli zarz dzamy poleceniami i , tak jak robili my to dla u ytkownika. Ka da zmiana uprawnie roli natychmiast skutkuje zmian uprawnie osób, które maj t rol nadan . Usuwanie roli Do usuni cia roli słu y polecenie rola; : Indeks A ADD, 71, 72 ALL, 32, 49, 58, 59, 89 ALTER, 71, 72, 78, 87, 89 ALTER TABLE, 71, 72 ALTER USER, 87 AND, 23, 25, 26, 41, 48 AS, 70, 71, 82, 83 ASCENDING, 20 AUTO, 80 AVG, 32, 33, 34, 35, 37, 56, 59, 60 B BETWEEN... AND, 22 C CASCADE, 73, 86 CASCADE CONTRAINTS, 73 CHAR, 64, 66 CHECK, 67, 83 COMMIT, 78, 79, 80 CONSTRAINT, 66, 67, 68, 69, 70, 72 COUNT, 32, 33, 37 CREATE, 78 CREATE ROLE, 91 CREATE SYNONYM, 90 CREATE TABLE, 65, 66, 67, 68, 69, 70, 71, 76 CREATE USER, 86 D DATE, 64, 70 DEFAULT, 70 DELETE, 69, 70, 77, 78, 80, 88 DESC, 20, 27, 66, 71 DESCENDING, 20 DESCRIBE, 66 DISABLE, 72 DISTINCT, 19, 32, 58, 59 DROP, 72, 73, 78, 83, 86, 90, 91 DROP ROLE, 91 DROP SYNONYM, 90 DROP TABLE, 73 DROP USER, 86 E ENABLE, 72 EXECUTE, 89 EXIST, 60, 61 F FOR, 90 FOREIGN KEY, 67, 69, 70 FROM, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 32, 33, 34, 35, 36, 40, 41, 48, 49, 50, 51, 56, 57, 58, 59, 60, 61, 71, 76, 77, 78, 82, 83, 88, 90 G GRANT, 87, 88, 89, 91 H HAVING, 35, 36, 58, 59, 60 I IDENTIFIED BY, 86, 87, 91 IN, 22, 23, 24, 26, 57, 58 INDEX, 89 INSERT, 76, 77, 80, 88 INTERSECT, 50 INTO, 76, 77 IS NULL, 22, 24, 26 L LIKE, 22, 23, 24, 26 LONG, 65 ROLLBACK, 78, 79 ROWID, 65 S MAX, 32, 33, 35, 37, 57, 58 MIN, 32, 33, 34, 37, 38, 60 MINUS, 50 MODIFY, 72 SAVEPOINT, 79 SELECT, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 32, 33, 34, 35, 36, 40, 41, 48, 49, 50, 51, 56, 57, 58, 59, 60, 61, 70, 71, 76, 77, 82, 83, 88, 89, 90 SET, 77, 80 STDDEV, 32 SUM, 32 N T NOT, 24, 25, 26, 61, 65, 66, 68, 70, 71, 72 NULL, 18, 24, 25, 32, 48, 65, 66, 68, 70, 71, 72 NUMBER, 18, 64, 65, 66, 68, 70, 71 TO, 73, 79, 87, 88, 89 M O ON, 69, 70, 80, 88, 89, 90 ON DELETE CASCADE, 69, 70 OR, 25, 26, 82 ORDER BY, 20, 21, 36, 40, 41, 50, 51, 59, 60, 61, 83 P PRIMARY KEY, 67, 68, 70 PUBLIC, 89, 90 R RAW, 65 REFERENCES, 69, 70, 89 RENAME TABLE, 73 REPLACE, 82 REVOKE, 88, 90, 91 U UNION, 49, 50, 51 UNIQUE, 67, 68, 69 UPDATE, 77, 80, 88 V VALUES, 76 VARCHAR, 64, 70 VARCHAR2, 64, 65, 66, 67, 69, 71 VARIANCE, 32 VIEW, 82, 83 W WHERE, 21, 22, 23, 24, 25, 26, 33, 35, 36, 40, 41, 48, 49, 50, 56, 57, 58, 59, 60, 61, 71, 77, 78, 82, 83 WITH ADMIN OPTION, 88 WITH GRANT OPTION, 89 WORK, 78, 79