7151
Szczegóły |
Tytuł |
7151 |
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.
7151 PDF - Pobierz:
Pobierz PDF
Zobacz podgląd pliku o nazwie 7151 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.
7151 - podejrzyj 20 pierwszych stron:
Materia�y szkoleniowe
Podstawy j�zyka SQL
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 87
Zarz�dzanie u�ytkownikami 88
Uprawnienia w bazie Oracle 89
Role 91
Zawarto�� tabel wykorzystywanych na kursie
Zawarto�� tabeli DEPT
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
Zawarto�� tabeli EMP
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
--------- ---------- --------- --------- -------- --------- --------- ---------
7839 KING PRESIDENT 81/11/17 5000 10
7698 BLAKE MANAGER 7839 81/05/01 2850 30
7782 CLARK MANAGER 7839 81/06/09 2450 10
7566 JONES MANAGER 7839 81/04/02 2975 20
7654 MARTIN SALESMAN 7698 81/09/28 1250 1400 30
7499 ALLEN SALESMAN 7698 81/02/20 1600 300 30
7844 TURNER SALESMAN 7698 81/09/08 1500 0 30
7900 JAMES CLERK 7698 81/12/03 950 30
7521 WARD SALESMAN 7698 81/02/22 1250 500 30
7902 FORD ANALYST 7566 81/12/03 3000 20
7369 SMITH CLERK 7902 80/12/17 800 20
7788 SCOTT ANALYST 7566 82/12/09 3000 20
7876 ADAMS CLERK 7788 83/01/12 1100 20
7934 MILLER CLERK 7782 82/01/23 1300 10
Zawarto�� tabeli SALGRADE
GRADE LOSAL HISAL
--------- --------- ---------
1 700 1200
2 1201 1400
3 1401 2000
4 2001 3000
5 3001 9999
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
Opis
DEPTNO
Departament number � unikalny numer departamentu
DNAME
Nazwa departamentu � przechowywana w zapisie du�ymi literami
LOC
Lokalizacja departamentu (miasto w kt�rym znajduje si� departament)
Tabela EMP � wykaz wszystkich pracownik�w
Kolumna
Opis
EMPNO
Employee number � unikalny numer pracownika
ENAME
Nazwisko pracownika � przechowywane w zapisie du�ymi literami
JOB
Etat, stanowisko pracy
MGR
Identyfikator szefa (czyli EMPNO we wierszu szefa)
HIREDATE
Data zatrudnienia
SAL
Pensja
COMM
Prowizja naliczona od pocz�tku roku, dotyczy pracownik�w zatrudnionych na stanowisku SALESMAN
DEPTNO
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
Opis
GRADE
Numer grupy zaszeregowania
LOSAL
LOW SALARY � dolna granica wide�ek p�acowych dla stawki zaszeregowania GRADE
HISAL
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
pobieranie danych z relacji, w wyniku otrzymujemy wszystkie wiersze, kt�re spe�niaj� zadany warunek
PROJEKCJA
operacja pobrania wszystkich wierszy, ale tylko wskazanych kolumn z tych wierszy
ILOCZYN KARTEZJA�SKI
wynik po��czenia ka�dy z ka�dym wierszy z dw�ch relacji
Z��CZENIE
po��czenie dw�ch relacji poprzez pewne kryterium ��czace niekt�re wiersze z obu relacji
SUMA ZBIOROWA
wszystkie wiersze z obu relacji
CZʌ� WSP�LNA
wiersze wsp�lne dla obu relacji
RӯNICA ZBIOROWA
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 SELECT uzyskujemy informacje z bazy.
Polecenie SELECT 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 JOB
---------- ---------
KING PRESIDENT
BLAKE MANAGER
CLARK MANAGER
JONES MANAGER
MARTIN SALESMAN
ALLEN SALESMAN
TURNER SALESMAN
JAMES CLERK
WARD SALESMAN
FORD ANALYST
SMITH CLERK
SCOTT ANALYST
ADAMS CLERK
MILLER CLERK
Nazwy kolumn oddzielamy przecinkami.
Aby wybra� wszystko z danej tabeli wpisujemy * (gwiazdk�) zamiast listy kolumn.
SELECT *
FROM EMP;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---- ---------- --------- ---------- --------- ---------- ---------- ----------
7839 KING PRESIDENT 81/11/17 5000 10
7698 BLAKE MANAGER 7839 81/05/01 2850 30
7782 CLARK MANAGER 7839 81/06/09 2450 10
7566 JONES MANAGER 7839 81/04/02 2975 20
7654 MARTIN SALESMAN 7698 81/09/28 1250 1400 30
7499 ALLEN SALESMAN 7698 81/02/20 1600 300 30
7844 TURNER SALESMAN 7698 81/09/08 1500 0 30
7900 JAMES CLERK 7698 81/12/03 950 30
7521 WARD SALESMAN 7698 81/02/22 1250 500 30
7902 FORD ANALYST 7566 81/12/03 3000 20
7369 SMITH CLERK 7902 80/12/17 800 20
7788 SCOTT ANALYST 7566 82/12/09 3000 20
7876 ADAMS CLERK 7788 83/01/12 1100 20
7934 MILLER 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 29400
JONES 35700
MARTIN 15000
ALLEN 19200
TURNER 18000
JAMES 11400
WARD 15000
FORD 36000
SMITH 9600
SCOTT 36000
ADAMS 13200
MILLER 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 'PRACUJE W DEPARTAMENCIE' DEPARTAMENT
----------- ------------------------- -----------
KING 'PRACUJE W DEPARTAMENCIE' 10
BLAKE 'PRACUJE W DEPARTAMENCIE' 30
CLARK 'PRACUJE W DEPARTAMENCIE' 10
JONES 'PRACUJE W DEPARTAMENCIE' 20
MARTIN 'PRACUJE W DEPARTAMENCIE' 30
ALLEN 'PRACUJE W DEPARTAMENCIE' 30
TURNER 'PRACUJE W DEPARTAMENCIE' 30
JAMES 'PRACUJE W DEPARTAMENCIE' 30
WARD 'PRACUJE W DEPARTAMENCIE' 30
FORD 'PRACUJE W DEPARTAMENCIE' 20
SMITH 'PRACUJE W DEPARTAMENCIE' 20
SCOTT 'PRACUJE W DEPARTAMENCIE' 20
ADAMS 'PRACUJE W DEPARTAMENCIE' 20
MILLER '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�� NULL jako warto�� r�n� od NULL, trzeba u�y� funkcji NVL.
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� wyniki zapytania bez eliminowania powtarzaj�cych si� warto�ci, np.:
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 DISTINCT odnosi si� do wszystkich nazw kolumn wyst�puj�cych w klauzuli SELECT.
SELECT DISTINCT JOB, DEPTNO
FROM EMP;
JOB DEPTNO
--------- ----------
ANALYST 20
CLERK 10
CLERK 20
CLERK 30
MANAGER 10
MANAGER 20
MANAGER 30
PRESIDENT 10
SALESMAN 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.
SELECT ENAME, JOB
FROM EMP
ORDER BY ENAME;
ENAME JOB
---------- ---------
ADAMS CLERK
ALLEN SALESMAN
BLAKE MANAGER
CLARK MANAGER
FORD ANALYST
JAMES CLERK
JONES MANAGER
KING PRESIDENT
MARTIN SALESMAN
MILLER CLERK
SCOTT ANALYST
SMITH CLERK
TURNER SALESMAN
WARD SALESMAN
Domy�lnie dane s� sortowane w porz�dku rosn�cym (ASCENDING) � 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 DESC (DESCENDING) u�ytego bezpo�rednio po nazwie kolumny wyspecyfikowanej w klauzuli ORDER BY.
SELECT ENAME, JOB, HIREDATE
FROM EMP
ORDER BY HIREDATE DESC;
ENAME JOB HIREDATE
---------- --------- ---------
ADAMS CLERK 83/01/12
SCOTT ANALYST 82/12/09
MILLER CLERK 82/01/23
JAMES CLERK 81/12/03
FORD ANALYST 81/12/03
KING PRESIDENT 81/11/17
MARTIN SALESMAN 81/09/28
TURNER SALESMAN 81/09/08
CLARK MANAGER 81/06/09
BLAKE MANAGER 81/05/01
JONES MANAGER 81/04/02
WARD SALESMAN 81/02/22
ALLEN SALESMAN 81/02/20
SMITH CLERK 80/12/17
Mo�na sortowa� wed�ug kilku kolumn, wtedy po s�owie kluczowym ORDER BY nale�y poda� nazwy kolumn, po kt�rych chcemy sortowa�.
SELECT ENAME, JOB, DEPTNO
FROM EMP
ORDER BY DEPTNO, ENAME;
ENAME JOB DEPTNO
---------- --------- ----------
CLARK MANAGER 10
KING PRESIDENT 10
MILLER CLERK 10
ADAMS CLERK 20
FORD ANALYST 20
JONES MANAGER 20
SCOTT ANALYST 20
SMITH CLERK 20
ALLEN SALESMAN 30
BLAKE MANAGER 30
JAMES CLERK 30
MARTIN SALESMAN 30
TURNER SALESMAN 30
WARD SALESMAN 30
Nazwy kolumn, po kt�rych sortujemy, musz� by� wyspecyfikowane w�klauzuli SELECT.
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 JOB DEPTNO
---------- --------- ----------
JAMES CLERK 30
SMITH CLERK 20
ADAMS CLERK 20
MILLER CLERK 10
Aby wybra� wszystkich zatrudnionych po 01.01.1982r., napiszemy:
SELECT ENAME, JOB, DEPTNO
FROM EMP
WHERE HIREDATE>'82/01/01'
ENAME JOB DEPTNO
---------- --------- ----------
SCOTT ANALYST 20
ADAMS CLERK 20
MILLER 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:
* BETWEEN... AND,
* IN (lista),
* LIKE,
* IS NULL.
Operator BETWEEN...AND
Operator BETWEEN...AND 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 JOB DEPTNO
---------- --------- ----------
MARTIN SALESMAN 30
TURNER SALESMAN 30
WARD SALESMAN 30
ADAMS CLERK 20
MILLER CLERK 10
Operator IN
Operator IN 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 JOB DEPTNO
---------- --------- ----------
BLAKE MANAGER 30
CLARK MANAGER 10
JONES MANAGER 20
SMITH CLERK 20
Dane znakowe wyst�puj�ce na li�cie nale�y uj�� w pojedyncze apostrofy.
Operator LIKE
Operator LIKE 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 JOB DEPTNO
---------- --------- ----------
MARTIN SALESMAN 30
JAMES CLERK 30
WARD 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 JOB DEPTNO
---------- --------- ----------
BLAKE MANAGER 30
CLARK MANAGER 10
JONES MANAGER 20
ALLEN SALESMAN 30
JAMES CLERK 30
SMITH CLERK 20
SCOTT ANALYST 20
ADAMS CLERK 20
Operator IS NULL
Operator IS NULL 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�� 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)
NOT kolumna=
nie jest r�wny
NOT kolumna>
nie jest wi�kszy
NOT BETWEEN
nie jest w podanym przedziale
NOT IN
nie jest w zbiorze
NOT LIKE
nie jest zgodny z mask�
IS NOT NULL
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 JOB COMM
---------- --------- ----------
MARTIN SALESMAN 1400
ALLEN SALESMAN 300
TURNER SALESMAN 0
WARD SALESMAN 500
Tworzenie z�o�onych kryteri�w
Do budowania warunk�w z�o�onych s�u�� operatory AND (i) oraz OR (lub).
Warunek (X AND Y) jest prawdziwy wtedy i tylko wtedy, gdy X jest prawdziwy i Y jest prawdziwy.
Warunek (X OR Y) jest prawdziwy wtedy i tylko wtedy, gdy X jest prawdziwy lub Y jest prawdziwy.
Operator AND ma wi�kszy priorytet ni� operator OR.
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 AND ma wy�szy priorytet ni� operator OR, 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 JOB SAL
---------- --------- ----------
BLAKE MANAGER 2850
CLARK MANAGER 2450
JONES MANAGER 2975
JAMES CLERK 950
SMITH CLERK 800
ADAMS CLERK 1100
MILLER 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 JOB SAL
---------- --------- ----------
BLAKE MANAGER 2850
CLARK MANAGER 2450
JONES MANAGER 2975
ADAMS CLERK 1100
MILLER 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. =, <>, <=, >=, >,<, BETWEEN�AND, IN, LIKE, IS NULL
2. NOT
3. AND
4. OR
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;
wszystkie polecenia SQL do czasu wydania rozkazu SPOOL OFF b�d� zapisywane do pliku plik
@plik
uruchomienie skryptu plik
ed plik
edycja pliku plik w domy�lnym edytorze
SPOOL OFF
ko�czy wysy�anie danych do pliku
DESC
wy�wietla opis struktury tabeli
CONNECT
zmiana pod��czenia do bazy
EXIT
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 ENAME JOB MGR HIREDATE SAL COMM DEPTNO
--------- ---------- --------- --------- -------- --------- --------- ---------
7839 KING PRESIDENT 81/11/17 5000 10
7698 BLAKE MANAGER 7839 81/05/01 2850 30
7782 CLARK MANAGER 7839 81/06/09 2450 10
7566 JONES MANAGER 7839 81/04/02 2975 20
7654 MARTIN SALESMAN 7698 81/09/28 1250 1400 30
7499 ALLEN SALESMAN 7698 81/02/20 1600 300 30
7844 TURNER SALESMAN 7698 81/09/08 1500 0 30
7900 JAMES CLERK 7698 81/12/03 950 30
7521 WARD SALESMAN 7698 81/02/22 1250 500 30
7902 FORD ANALYST 7566 81/12/03 3000 20
7369 SMITH CLERK 7902 80/12/17 800 20
7788 SCOTT ANALYST 7566 82/12/09 3000 20
7876 ADAMS CLERK 7788 83/01/12 1100 20
7934 MILLER 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 DNAME
--------- --------------
10 ACCOUNTING
40 OPERATIONS
20 RESEARCH
30 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 ENAME JOB MGR HIREDATE SAL COMM DEPTNO
--------- ---------- --------- --------- -------- --------- --------- ---------
7876 ADAMS CLERK 7788 83/01/12 1100 20
7782 CLARK MANAGER 7839 81/06/09 2450 10
7902 FORD ANALYST 7566 81/12/03 3000 20
7566 JONES MANAGER 7839 81/04/02 2975 20
7839 KING PRESIDENT 81/11/17 5000 10
7934 MILLER CLERK 7782 82/01/23 1300 10
7788 SCOTT ANALYST 7566 82/12/09 3000 20
7369 SMITH CLERK 7902 80/12/17 800 20
7. Wybierz nazwiska i stanowiska pracy wszystkich pracownik�w z departamentu 20 zatrudnionych na stanowisku CLERK.
ENAME JOB
---------- ---------
SMITH CLERK
ADAMS CLERK
8. Wybierz nast�puj�ce informacje o wszystkich pracownikach, kt�rzy posiadaj� szefa.
ENAME JOB SAL
---------- --------- ---------
BLAKE MANAGER 2850
CLARK MANAGER 2450
JONES MANAGER 2975
MARTIN SALESMAN 1250
ALLEN SALESMAN 1600
TURNER SALESMAN 1500
JAMES CLERK 950
WARD SALESMAN 1250
FORD ANALYST 3000
SMITH CLERK 800
SCOTT ANALYST 3000
ADAMS CLERK 1100
MILLER 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 11400
WARD 15500
FORD 36000
SMITH 9600
SCOTT 36000
ADAMS 13200
MILLER 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
Wynik funkcji
AVG ([DISTINCT | ALL] wyra�enie)
warto�� �rednia wyra�e�, NULL nie jest uwzgl�dniane
COUNT ([DISTINCT | ALL] wyra�enie)
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
MAX ([DISTINCT | ALL] wyra�enie)
maksymalna warto�� wyra�enia
MIN ([DISTINCT | ALL] wyra�enie)
minimalna warto�� wyra�enia
STDDEV ([DISTINCT | ALL] wyra�enie)
odchylenie standardowe wyra�e�, bez uwzgl�dniania warto�ci NULL
SUM ([DISTINCT | ALL] wyra�enie)
suma warto�ci wyra�e�, bez uwzgl�dniania warto�ci NULL
VARIANCE ([DISTINCT | ALL] wyra�enie)
wariancja wyra�e�, bez uwzgl�dniania warto�ci NULL Kwalifikator DISTINCT ogranicza dzia�anie funkcji grupowych do r�nych warto�ci argument�w.
Kwalifikator ALL 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�� dla wszystkich wierszy. Ca�a firma jest tu traktowana jako jedna grupa.
Mo�na na�o�y� na to polecenie warunek w klauzuli WHERE, np. aby znale�� minimalny zarobek na stanowisku 'MANAGER', napiszemy:
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 AVG(SAL)
---------- ----------
10 2916,66667
20 2175
30 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 JOB MIN(SAL)
---------- --------- ----------
10 CLERK 1300
10 MANAGER 2450
10 PRESIDENT 5000
20 ANALYST 3000
20 CLERK 800
20 MANAGER 2975
30 CLERK 950
30 MANAGER 2850
30 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 AVG(SAL)
---------- ----------
10 2916,66667
20 2175
30 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� rzeczywi�cie r�ne (u�ywaj�c grupowania).
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 JOB DNAME
---------- --------- --------------
KING PRESIDENT ACCOUNTING
BLAKE MANAGER SALES
CLARK MANAGER ACCOUNTING
JONES MANAGER RESEARCH
MARTIN SALESMAN SALES
ALLEN SALESMAN SALES
TURNER SALESMAN SALES
JAMES CLERK SALES
WARD SALESMAN SALES
FORD ANALYST RESEARCH
SMITH CLERK RESEARCH
SCOTT ANALYST RESEARCH
ADAMS CLERK RESEARCH
MILLER CLERK 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 ENAME JOB DNAME
---------- ---------- --------- --------------
10 KING PRESIDENT ACCOUNTING
10 CLARK MANAGER ACCOUNTING
10 MILLER CLERK ACCOUNTING
20 JONES MANAGER RESEARCH
20 SCOTT ANALYST RESEARCH
20 ADAMS CLERK RESEARCH
20 SMITH CLERK RESEARCH
20 FORD ANALYST RESEARCH
30 BLAKE MANAGER SALES
30 MARTIN SALESMAN SALES
30 ALLEN SALESMAN SALES
30 TURNER SALESMAN SALES
30 JAMES CLERK SALES
30 WARD SALESMAN 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 BETWEEN�AND.
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 1500 3
BLAKE 2850 4
CLARK 2450 4
JONES 2975 4
FORD 3000 4
SCOTT 3000 4
KING 5000 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 DNAME
---------- --------------
KING ACCOUNTING
CLARK ACCOUNTING
MILLER ACCOUNTING
JONES RESEARCH
SCOTT RESEARCH
ADAMS RESEARCH
SMITH RESEARCH
FORD RESEARCH
BLAKE SALES
MARTIN SALES
ALLEN SALES
TURNER SALES
JAMES SALES
WARD SALES
2. Wybierz nazwiska wszystkich pracownik�w wraz z numerami i nazwami departament�w, w kt�rych s� zatrudnieni.
ENAME DEPTNO DNAME
---------- --------- --------------