kurs oracle - podstawy sql

47
7/23/2019 Kurs Oracle - Podstawy SQL http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 1/47  Materiały szkoleniowe Podstawy j ę zyka SQL Prowadzą cy Anna Pijanowska - Kuśnierz Paweł Żołnierczyk Podstawy języka SQL Strona 2

Upload: teodor-majewski

Post on 19-Feb-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 1/47

 

Materiały szkoleniowe

Podstawy języka SQL

Prowadzą cy

Anna Pijanowska - KuśnierzPaweł Żołnierczyk

Podstawy języka SQL 

Strona 2

Page 2: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 2/47

Page 3: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 3/47

Podstawy języka SQL 

Strona 5

Zawartość tabel wykorzystywanych na kursie

Podstawy języka SQL 

Strona 6

Zawartość tabeli DEPT

DEPTNO DNAME LOC---------- -------------- -------------

10 ACCOUNTING NEW YORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTON

Zawartość tabeli EMP

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO--------- ---------- --------- --------- -------- --------- --------- ---------

7839 KING PRESIDENT 81/11/17 5000 107698 BLAKE MANAGER 7839 81/05/01 2850 307782 CLARK MANAGER 7839 81/06/09 2450 107566 JONES MANAGER 7839 81/04/02 2975 207654 MARTIN SALESMAN 7698 81/09/28 1250 1400 307499 ALLEN SALESMAN 7698 81/02/20 1600 300 307844 TURNER SALESMAN 7698 81/09/08 1500 0 307900 JAMES CLERK 7698 81/12/03 950 307521 WARD SALESMAN 7698 81/02/22 1250 500 307902 FORD ANALYST 7566 81/12/03 3000 207369 SMITH CLERK 7902 80/12/17 800 207788 SCOTT ANALYST 7566 82/12/09 3000 207876 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 12002 1201 14003 1401 20004 2001 30005 3001 9999

Page 4: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 4/47

Podstawy języka SQL 

Strona 7

Budowa tabel wykorzystywanych na kursie

Podczas kursu bę dziemy korzystać  z uprzednio utworzonych tabel opisują cychzatrudnionych w pewnej firmie, ich wynagrodzenia i miejsca pracy. Firma dzieli si ę   nadepartamenty. Każdy pracownik należy do pewnej grupy zaszeregowania, w zależności odwysokoś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 literamiJOB 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ówzatrudnionych 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

Podstawy języka SQL 

Strona 8

Tabela SALGRADE — tabela „widełek” zaszeregowania

Kolumna Opis

GRADE Numer grupy zaszeregowania

LOSAL LOW SALARY — dolna granica widełek płacowych dla stawkizaszeregowania GRADE

HISAL HIGH SALARY — górna granica widełek

Page 5: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 5/47

Podstawy języka SQL 

Strona 9

Relacyjny model danych

Podstawy języka SQL 

Strona 10

Relacyjna baza danych jest to zbiór dwuwymiarowych tabel. Z modelem relacyjnympowią 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 otrzymujemywszystkie wiersze, które spełniają  zadany warunek

PROJEKCJA operacja pobrania wszystkich wierszy, ale tylko wskazanych

kolumn z tych wierszyILOCZYN 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 łą czaceniektó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 drugiejrelacji

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.

Page 6: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 6/47

Podstawy języka SQL 

Strona 11

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.

Podstawy języka SQL 

Strona 12

Page 7: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 7/47

Podstawy języka SQL 

Strona 13

Przeglą d ję zyka SQL

Podstawy języka SQL 

Strona 14

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 SQLzaznacza 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, JOBFROM EMP;

ENAME JOB---------- ---------KING PRESIDENTBLAKE MANAGERCLARK MANAGERJONES MANAGER

MARTIN SALESMANALLEN SALESMAN

Page 8: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 8/47

Page 9: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 9/47

Page 10: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 10/47

Page 11: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 11/47

Page 12: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 12/47

Page 13: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 13/47

Page 14: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 14/47

Page 15: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 15/47

Page 16: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 16/47

Podstawy języka SQL 

Strona 31

Funkcje grupowe

Podstawy języka SQL 

Strona 32

Funkcje grupowe służą   do działania na grupach wierszy. Wynikiem funkcji grupowej jestpojedyncza wartość dla całej grupy.Jeśli nie wyspecyfikujemy inaczej, wszystkie wiersze tabeli są   traktowane jako jednagrupa.

Funkcja Wynik funkcji

AVG ([DDDDISTINCTISTINCTISTINCTISTINCT | ALLALLALLALL] wyrażenie) wartość średnia wyrażeń, NULL nie jestuwzglę dniane

COUNT ([DISTINCTDISTINCTDISTINCTDISTINCT | ALLALLALLALL] wyrażenie) ilość wystą pień wartości wyrażeń różnych odNULL, gwiazdka (*) użyta w miejscuwyrażenia powoduje obliczenia ilościwszystkich wierszy łą cznie z duplikatamii wartościami NULL

MAX ([DISTINCTDISTINCTDISTINCTDISTINCT | ALLALLALLALL] wyrażenie) maksymalna wartość wyrażeniaMIN ([DDDDISTINCTISTINCTISTINCTISTINCT | ALLALLALLALL] wyrażenie) minimalna wartość wyrażenia

STDDEV ([DISTINCTDISTINCTDISTINCTDISTINCT | ALLALLALLALL] wyrażenie) odchylenie standardowe wyrażeń, bezuwzglę dniania wartości NULL

SUM ([DISTINCTDISTINCTDISTINCTDISTINCT | ALLALLALLALL] wyrażenie) suma wartości wyrażeń, bez uwzglę dnianiawartości NULL

VARIANCE ([DISTINCTDISTINCTDISTINCTDISTINCT | ALLALLALLALL]wyrażenie)

wariancja wyrażeń, bez uwzglę dniania wartościNULL

Kwalifikator DISTINCTDISTINCTDISTINCTDISTINCT  ogranicza działanie funkcji grupowych do różnych wartościargumentów.

KwalifikatorALLALLALLALL jest domyślny — funkcje grupowe nie eliminują  duplikatów.

Argumentami funkcji grupowych są   liczby, a w przypadku funkcji MAX, MIN i COUNTtakż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.

Page 17: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 17/47

Podstawy języka SQL 

Strona 33

Można nałożyć na to polecenie warunek w klauzuli WHERE, np. aby znaleźć  minimalnyzarobek na stanowisku 'MANAGER', napiszemy:

SELECT MIN(SAL)FROM EMPWHERE JOB='MANAGER';

MIN(SAL)----------

2450

Aby znaleźć, ilu pracowników pracuje w departamencie 10, napiszemy:

SELECT COUNT(*)FROM EMPWHERE 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 EMPGROUP BY DEPTNO;

DEPTNO AVG(SAL)---------- ----------

10 2916,6666720 217530 1566,66667

Przed grupowaniem możemy wyeliminować pewne wiersze za pomocą  klauzuli WHERE:

SELECT JOB, MAX(SAL)FROM EMPWHERE JOB<>'CLERK'GROUP BY JOB;

JOB MAX(SAL)--------- ----------ANALYST 3000MANAGER 2975PRESIDENT 5000SALESMAN 1600

W klauzuli GROUP BY można podać  kilka wyrażeń, wtedy wiersze bę dą   grupowanew mniejszych grupach.

Podstawy języka SQL 

Strona 34

Aby obliczyć  minimalny zarobek w każdym departamencie w podziałem na stanowiska,napiszemy:

SELECT DEPTNO, JOB, MIN(SAL)FROM EMPGROUP BY DEPTNO, JOB;

DEPTNO JOB MIN(SAL)---------- --------- ----------

10 CLERK 130010 MANAGER 245010 PRESIDENT 500020 ANALYST 300020 CLERK 80020 MANAGER 297530 CLERK 95030 MANAGER 2850

30 SALESMAN 1250

Wybierane wyrażenia a funkcje grupowe

Poniższe polecenie spowoduje obliczenie średnich zarobków w departamentach. Niebę dzie jednak zbyt użyteczne, bo nie bę dzie widoczne, która średnia odpowiada któremudepartamentowi.

SELECT AVG(SAL)FROM EMP

GROUP BY DEPTNO;

AVG(SAL)----------2916,66667

21751566,66667

Aby poprawić  to polecenie, umieśćmy na liście wyboru klauzuli SELECT  także numerdepartamentu:

SELECT DEPTNO, AVG(SAL)FROM EMPGROUP BY DEPTNO;

DEPTNO AVG(SAL)---------- ----------

10 2916,6666720 217530 1566,66667

Na liście wyboru klauzuli SELECT  mogą   wystę pować  tylko i wyłą cznienazwy kolumn, które są  przedmiotem działania klauzuli GROUP BY, chyba,że wystę pują  one jako argument funkcji grupują cej.

Page 18: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 18/47

Podstawy języka SQL 

Strona 35

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ższeniż 2000, napiszemy:

SELECT JOB, AVG(SAL)FROM EMPGROUP BY JOBHAVING MAX(SAL)>2000;

JOB AVG(SAL)--------- ----------ANALYST 3000MANAGER 2758,33333PRESIDENT 5000

Klauzula HAVING może poprzedzać klauzulę  GROUP BY lub odwrotnie.

Czasami to samo kryterium można wyrazić  zarówno za pomocą   klauzuli HAVING  jaki klauzuli WHERE.

SELECT JOB, AVG(SAL)FROM EMPHAVING JOB<>'CLERK'GROUP BY JOB;

JOB AVG(SAL)--------- ----------

ANALYST 3000MANAGER 2758,33333PRESIDENT 5000SALESMAN 1400

lub

SELECT JOB, AVG(SAL)FROM EMPWHERE JOB<>'CLERK'GROUP BY JOB;

JOB AVG(SAL)--------- ----------

ANALYST 3000MANAGER 2758,33333PRESIDENT 5000SALESMAN 1400

W takiej sytuacji bardziej efektywne jest umieszczenie warunku w klauzuli WHERE.

Podstawy języka SQL 

Strona 36

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żenia6. ;

Page 19: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 19/47

Page 20: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 20/47

Podstawy języka SQL 

Strona 39

Wybieranie danych z wielu tabel

Podstawy języka SQL 

Strona 40

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 departamentui 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, DNAMEFROM EMP, DEPTWHERE EMP.DEPTNO=DEPT.DEPTNO;

ENAME JOB DNAME---------- --------- --------------KING PRESIDENT ACCOUNTINGBLAKE MANAGER SALESCLARK MANAGER ACCOUNTINGJONES MANAGER RESEARCHMARTIN SALESMAN SALESALLEN SALESMAN SALESTURNER SALESMAN SALESJAMES CLERK SALES

WARD SALESMAN SALESFORD ANALYST RESEARCHSMITH CLERK RESEARCHSCOTT ANALYST RESEARCHADAMS CLERK RESEARCHMILLER CLERK ACCOUNTING

Razem z informacjami pobranymi z tablicy EMP otrzymujemy nazwy departamentówpobrane 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 tabelachwymienionych w klauzuli FROM  wystę puje kolumna o tej samej nazwie (DEPTNO).Podanie samej nazwy kolumny byłoby niejednoznaczne. Chociaż  wartość  tego pola dlaobu tabeli jest taka sama, to ze wzglę dów składniowych wymagane jest wskazanie tabeliz której bę dzie pobrana wartość.

W poniższym przykładzie w klauzuli SELECT  jest wymagane odwołanie do tablicyDEPT:

SELECT DEPT.DEPTNO, ENAME, JOB, DNAMEFROM EMP, DEPTWHERE EMP.DEPTNO=DEPT.DEPTNOORDER BY DEPT.DEPTNO;

DEPTNO ENAME JOB DNAME---------- ---------- --------- --------------

10 KING PRESIDENT ACCOUNTING10 CLARK MANAGER ACCOUNTING

Page 21: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 21/47

Podstawy języka SQL 

Strona 41

10 MILLER CLERK ACCOUNTING20 JONES MANAGER RESEARCH20 SCOTT ANALYST RESEARCH20 ADAMS CLERK RESEARCH20 SMITH CLERK RESEARCH20 FORD ANALYST RESEARCH30 BLAKE MANAGER SALES30 MARTIN SALESMAN SALES30 ALLEN SALESMAN SALES30 TURNER SALESMAN SALES30 JAMES CLERK SALES30 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, DNAMEFROM EMP E, DEPT DWHERE E.DEPTNO=D.DEPTNOORDER 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ą zekpomię 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ą cychzasadach: określenie stawki zaszeregowania pracownika polega na wskazaniu do jakiego

przedziału (LOSAL, HISAL) należą  jego zarobki.Do utworzenia tego warunku zastosujemy operator BETWEEN…ANDBETWEEN…ANDBETWEEN…ANDBETWEEN…AND.

SELECT ENAME, SAL, S.GRADEFROM EMP E, SALGRADE SWHERE SAL BETWEEN LOSAL AND HISAL;

ENAME SAL GRADE---------- ---------- ----------JAMES 950 1SMITH 800 1ADAMS 1100 1MARTIN 1250 2WARD 1250 2

MILLER 1300 2ALLEN 1600 3

Podstawy języka SQL 

Strona 42

TURNER 1500 3BLAKE 2850 4CLARK 2450 4JONES 2975 4FORD 3000 4SCOTT 3000 4KING 5000 5

Reguły łą czenia tabel

Ogólna zasada łą czenia tabel:

Minimalna liczba warunków łą czą cych = liczba tabel —1

Page 22: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 22/47

Page 23: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 23/47

Podstawy języka SQL 

Strona 45

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 JOB ANNUAL_SAL DEPTNO DNAME GRADE

---------- --------- ---------- --------- -------------- ---------JAMES CLERK 11400 30 SALES 1SMITH CLERK 9600 20 RESEARCH 1ADAMS CLERK 13200 20 RESEARCH 1MILLER CLERK 15600 10 ACCOUNTING 2FORD ANALYST 36000 20 RESEARCH 4SCOTT ANALYST 36000 20 RESEARCH 4KING PRESIDENT 60000 10 ACCOUNTING 5

Podstawy języka SQL 

Strona 46

Page 24: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 24/47

Podstawy języka SQL 

Strona 47

Inne metody łą czenia tabel

Podstawy języka SQL 

Strona 48

Złą czenia zewnę trzne

Podczas łą czenia tabel wiersz w tabeli nie mają cy swojego odpowiednika w drugiej tabelinie zostanie wybrany. Np. w przykładzie łą czenia tabeli EMP i DEPT poprzez kolumnę  DEPNO nie został wybrany wiersz tabeli DEPT, gdzie DEPTNO=40 (departamentOPERATIONS), 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 tabeliEMP zawierają cym same wartości NULL (mimo, że wiersz taki w rzeczywistości nieistnieje).

Złą czenie zewnę trzne oznaczamy znakiem (+) po tej stronie równości, która dotyczy tabeliz niepełną  informacją .

SELECT ENAME, D.DEPTNO, DNAMEFROM EMP E, DEPT DWHERE E.DEPTNO(+)=D.DEPTNO;

ENAME DEPTNO DNAME---------- ---------- --------------KING 10 ACCOUNTINGCLARK 10 ACCOUNTINGMILLER 10 ACCOUNTINGJONES 20 RESEARCHSCOTT 20 RESEARCH

ADAMS 20 RESEARCHSMITH 20 RESEARCHFORD 20 RESEARCHBLAKE 30 SALESMARTIN 30 SALESALLEN 30 SALESTURNER 30 SALESJAMES 30 SALESWARD 30 SALES

40 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 MWHERE E.MGR=M.EMPNO

AND E.SAL<M.SAL;

Page 25: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 25/47

Page 26: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 26/47

Page 27: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 27/47

Podstawy języka SQL 

Strona 53

5. Znajdź  tych pracowników, którzy zostali zatrudnieniu przed przyję ciem do pracy ichkierowników.

EMPLOYEE HIREDATE MANAGER HIREDATE---------- --------- ---------- ---------BLAKE 01-MAY-81 KING 17-NOV-81CLARK 09-JUN-81 KING 17-NOV-81JONES 02-APR-81 KING 17-NOV-81ALLEN 20-FEB-81 BLAKE 01-MAY-81WARD 22-FEB-81 BLAKE 01-MAY-81SMITH 17-DEC-80 FORD 03-DEC-81

6. Podaj inny sposób rozwią zania zadania 1.

DEPTNO DNAME--------- --------------

40 OPERATIONS

Podstawy języka SQL 

Strona 54

Page 28: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 28/47

Podstawy języka SQL 

Strona 55

Podzapytania

Podstawy języka SQL 

Strona 56

Podzapytania zagnieżdżone

Podzapytanie to polecenie SELECT zagnieżdżone w innym poleceniu SELECT.

SELECTSELECTSELECTSELECT kolumna_1, kolumna_2, …

FROMFROMFROMFROM  tabela

WHEREWHEREWHEREWHERE  kolumna = (SELECTSELECTSELECTSELECT kolumna

FROMFROMFROMFROM  tabela

WHEREWHEREWHEREWHERE  warunek);

Podzapytanie to wewnę trzny SELECT  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ż  obliczona w poprzednimzapytaniu pensja średnia.

SELECT ENAME, JOB, SAL

FROM EMPWHERE SAL>(wynik zapytania z punktu 1)

Powyższe dwa rozkazy można połą czyć w jeden:

SELECT ENAME, JOB, SALFROM EMPWHERE SAL>(SELECT AVG(SAL)

FROM EMP);

ENAME JOB SAL---------- --------- ----------KING PRESIDENT 5000BLAKE MANAGER 2850CLARK MANAGER 2450JONES MANAGER 2975

Page 29: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 29/47

Page 30: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 30/47

Page 31: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 31/47

Page 32: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 32/47

Podstawy języka SQL 

Strona 63

Ję zyk definiowania danych

Podstawy języka SQL 

Strona 64

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 przyzastosowaniu odpowiednich opcji.

• Struktury danych mogą   być  modyfikowane w trakcie pracy systemu (chyba, żeakurat na nich dokonywane są  zmiany przez użytkowników).

• Użytkownicy mogą  zakładać własne, prywatne struktury.

Tworzenie tabelNazwa 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 typi czasami długość przechowywanej wartości.

Typy kolumn

Każda kolumna musi mieć określony typ danych:

CHAR (n) cią g dowolnych znaków stałej długości, parametr n wskazujemaksymalną  długość cią gu

VARCHAR2 (n)

VARCHAR (n)

cią g znaków zmiennej długości, parametr n wskazuje maksymalną  długość cią gu

NUMBER (p,s) liczba o precyzji p i skali s, precyzja (liczba cyfr znaczą cych) możeprzyjmować  wartości od 1 do 38, skala (liczba cyfr po przecinku)wartości od -84 do 127

DATE daty w przedziale mię dzy 1 stycznia 4712 roku a 31 grudnia 4712naszej ery, w dacie przechowywany jest tez składnik czasu

Page 33: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 33/47

Page 34: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 34/47

Page 35: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 35/47

Page 36: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 36/47

Podstawy języka SQL  Podstawy języka SQL 

Page 37: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 37/47

y ję y Q

Strona 73

Usuwanie tabel

Do usuwania tabel służy polecenie DROP TABLE.

DROPDROPDROPDROP TABLETABLETABLETABLE nazwa;

Usunię cie tabeli powoduje:

• utratę   wszystkich danych w niej zawartych i wszystkich indeksów zwią zanychz 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ę   CASCADECONSTRAINTS,

• tabelę  usunąć może właściciel tabeli lub administrator bazy.

Zmiana nazwy tabeli

Nazwę  tabeli zmieniamy poleceniem RENAME TABLE:

RENAME TRENAME TRENAME TRENAME TABLEABLEABLEABLE stara_nazwa TOTOTOTO nowa_nazwa;

y ję y Q

Strona 74

Podstawy języka SQL  Podstawy języka SQL 

Page 38: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 38/47

y ję y

Strona 75

Ję zyk manipulowania danymi

Strona 76

Wstawianie wierszy

Polecenie INSERT

Polecenie INSERT służy do wstawiania nowych wierszy do tabeli:

INSERTINSERTINSERTINSERT INTOINTOINTOINTO nazwa_tabeli [(lista_kolumn)]

VALUESVALUESVALUESVALUES (lista_wartości);

Przy wstawianiu do wszystkich kolumn tabeli nie musimy podawać  listy kolumn, alewtedy musimy wartości wprowadzać  w takiej kolejności, jaka była wyspecyfikowanapodczas polecenia  CREATE TABLE. Z tego wzglę du, aby uniezależnić  się   odpóźniejszych modyfikacji tabeli bezpieczniej jest podawać  listę   kolumn w klauzuliINSERT INTO.

Przykład

INSERT INTO dept (deptno, dname, loc)VALUES (50, 'SERVICE', 'NEW YORK');

W każdym poleceniu INSERT można wstawić tylko jeden wiersz.

W poleceniu INSERT dopuszczalne są  funkcje SQL dotyczą ce pojedynczych wierszy, niewolno natomiast używać podzapytań.

Wstawianie wierszy wybranych w podzapytaniu

Możemy wstawić do tabeli wiersze, które są  wynikiem zapytania SELECT.

INSERTINSERTINSERTINSERT INTOINTOINTOINTO nazwa_tabeli [lista_kolumn]

SELECTSELECTSELECTSELECT lista_wyrażeń 

FROMFROMFROMFROM ...

W ten sposób możemy za pomocą   pojedynczego polecenia INSERT  wstawić  wielewierszy.

Przykład

Aby skopiować  do tabeli MANAGER wszystkich pracowników pracują cych nastanowisku MANAGER napiszemy:

Page 39: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 39/47

Podstawy języka SQL  Podstawy języka SQL 

Page 40: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 40/47

Strona 79

Wykonanie jakiegokolwiek polecenia DDL spowoduje taki sam efekt, jak wykonaniepolecenia COMMIT.

Polecenie ROLLBACK

Służy do jawnego wycofywania transakcji.

ROLLBACKROLLBACKROLLBACKROLLBACK [WORKWORKWORKWORK];

Polecenie ROLBACK  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.

SAVEPOINTSAVEPOINTSAVEPOINTSAVEPOINT nazwa_punktu_zachowania;

Wprowadzenie punktu zachowania pozwala wycofać  transakcję   do określonego punktuzachowania, nie tracą c przy tym zmian wprowadzonych wcześniej.

Do wycofania zmian do ostatniego punktu zachowania służy nastę pują ce polecenie:

ROLLBACKROLLBACKROLLBACKROLLBACK [WORKWORKWORKWORK] TOTOTOTO [SAVEPOINTSAVEPOINTSAVEPOINTSAVEPOINT] 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 sesjiużytkownika, awarii komputera, braku zasilania itp.

Niejawne częściowe wycofanie transakcji ma miejsce w przypadku błę du wykonaniapolecenia. Wycofywane są  wtedy zmiany dokonane przez ten błę dny rozkaz.

Strona 80

Automatyczny COMMIT

W SQL*Plus możemy wymusić  automatyczne zatwierdzanie transakcji po każdym

poleceniu INSERT, UPDATE i DELETE.

SETSETSETSET AUTOAUTOAUTOAUTO [COMMITCOMMITCOMMITCOMMIT] ONONONON 

Dyrektywę  odwołujemy poleceniem:

SETSETSETSET AUTOAUTOAUTOAUTO [COMMITCOMMITCOMMITCOMMIT] OFFOFFOFFOFF 

Podstawy języka SQL  Podstawy języka SQL 

Page 41: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 41/47

Strona 81

Perspektywy

Strona 82

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 SELECT,• 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 przedstawionew czytelny sposób.

Tworzenie perspektyw

Polecenie CREATE VIEW

Perspektywę  tworzy się  za pomocą  poleceniaCREATE VIEW

:CREATECREATECREATECREATE [OROROROR REPLACEREPLACEREPLACEREPLACE] VIEWVIEWVIEWVIEW nazwa_perspektywy

[(lista_kolumn)]

ASASASAS 

SELECTSELECTSELECTSELECT …

Lista_kolumn to lista nazw kolumn perspektywy, muszą   one odpowiadać  pozycjomwyboru z listy SELECT.

Jeśli perspektywa o danej nazwie już istnieje, to aby utworzyć na jej miejsce nową  musimy

usunąć

 starą  lub u

żyć opcji

OROROROR REPLACEREPLACEREPLACEREPLACE

.Przykład

Aby utworzyć  perspektywę   zawierają ca niektóre dane o pracownikach zatrudnionych nastanowisku 'MANAGER', napiszemy:

CREATE VIEW Emp_ManagerASSELECT empno, ename, sal, deptnoFROM empWHERE job='MANAGER';

Podstawy języka SQL  Podstawy języka SQL 

Page 42: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 42/47

Strona 83

Perspektywy używa się  jak zwykłej tabeli:

SELECT *FROM Emp_ManagerORDER 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żemynałożyć  opcję  CHECKCHECKCHECKCHECK OPTIONOPTIONOPTIONOPTION, tak aby nie były dozwolone takie modyfikacje wierszy,które spowodują  ich wyrzucenie poza perspektywę .

Przykład

CREATE VIEW Emp_ManagerASSELECT empno, ename, sal, job, deptnoFROM empWHERE 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 DROP VIEW:

DROPDROPDROPDROP VIEWVIEWVIEWVIEW nazwa_perspektywy;

Perspektywa może być usunię ta tylko przez jej właściciela lub administratora.

Strona 84

Podstawy języka SQL  Podstawy języka SQL 

Page 43: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 43/47

Strona 85

Użytkownicy i uprawnienia

Strona 86

Każdy, kto rozpoczyna pracę   z Oracle musi być  zidentyfikowany poprzez podanieidentyfikatora i hasła, aby móc wykonać  operacje, do których jako ten użytkownik jestuprawniony.

Zarzą dzanie użytkownikami

Za zarzą dzanie użytkownikami, ich uprawnieniami i zasobami odpowiedzialny jestadministrator. 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 obiektyużytkownika,• zdefiniować uprawnienia użytkownika.

Dokładnie te zagadnienia są  omawiane na kursach administracji.

Tworzenie użytkownika

Użytkownika tworzy administrator poleceniem CREATE USER :

CREATE USERCREATE USERCREATE USERCREATE USER użytkownik

IDENTIFIED BYIDENTIFIED BYIDENTIFIED BYIDENTIFIED BY 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 DROP USER :

DROPDROPDROPDROP USERUSERUSERUSER użytkownik;

Jeśli użytkownik jest właścicielem jakiś obiektów, to usunię cie się  nie powiedzie, chyba żena końcu dodamy słowo kluczowe CASCADECASCADECASCADECASCADE. Wtedy razem z użytkownikiem usuwane są  utworzone przez niego obiekty.

Page 44: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 44/47

Podstawy języka SQL  Podstawy języka SQL 

Page 45: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 45/47

Strona 89

INDEX indeksowanie tabeli

REFERENCES odwołanie do tabeli w obcych kluczach

ALL wszystkie prawa

EXECUTE prawo wykonywania procedur, funkcji i pakietów

Przykład

Aby nadać użytkownikowi Scott prawa wyboru do swojej tabeli emp, użytkownik Adamsnapisze:

GRANT SELECTON empTO Scott;

 Dalsze przekazywanie uprawnień 

Domyślnie użytkownik nie może przekazywać  nadanych mu uprawnień  obiektowychinnemu użytkownikowi. Aby mógł to zrobić, uprawnienie musi być nadane z opcją  WITHWITHWITHWITH

GRANT OPTIONGRANT OPTIONGRANT OPTIONGRANT OPTION.

GRANTGRANTGRANTGRANT uprawnienie [, uprawnienie...]

ONONONON obiekt

TOTOTOTO użytkownik

WITH GRANTWITH GRANTWITH GRANTWITH GRANT OPTIONOPTIONOPTIONOPTION;

PrzykładAby nadać  użytkownikowi Scott prawa wyboru do swojej tabeli emp z prawemprzekazywania tego uprawnienia dalej, użytkownik Adams napisze:

GRANT SELECTON empTO ScottWITH GRANT OPTION;

Uprzywilejowanie typu PUBLIC

Aby przekazać  prawo do obiektu wszystkim użytkownikom bazy, używamy opcjiPUBLICPUBLICPUBLICPUBLIC:

GRANT SELECTON empTO PUBLIC;

Odbieranie uprawnień obiektowych

Do odbierania uprawnień obiektowych służy polecenie REVOKE:

Strona 90

REVOKEREVOKEREVOKEREVOKE uprawnienie [, uprawnienie...]

ONONONON obiekt

FROMFROMFROMFROM 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:

CREATE SYNONYMCREATE SYNONYMCREATE SYNONYMCREATE SYNONYM nazwa synonimuFORFORFORFOR [właściciel.]nazwa_obiektu;

Synonimy usuwa się  poleceniem DROP SYNONYM:

DROPDROPDROPDROP [PUBLICPUBLICPUBLICPUBLIC] SYNONYMSYNONYMSYNONYMSYNONYM nazwa_synonimu;

Role

Rola to zestaw uprawnień, jaki można przyznawać  użytkownikom bazy. Rola możezawierać  zarówno uprawnienia systemowe jak i obiektowe. Dzię ki rolom ułatwione jestadministrowanie bazą . Jeśli przykładowo dla kierowników działów zdefiniowana jest rolaKIEROWNICY, to chcą c wszystkim kierownikom nadać  jakieś  uprawnienie wystarczydodać je do roli KIEROWNICY.

Tworzenie roli

Rolę  tworzy się  poleceniem CREATE ROLE:

Podstawy języka SQL  Podstawy języka SQL 

Page 46: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 46/47

Strona 91

CREATE ROLECREATE ROLECREATE ROLECREATE ROLE rola

[IDENTIFIEDIDENTIFIEDIDENTIFIEDIDENTIFIED BYBYBYBY  hasło];

Klauzula IDENTIFIED BY służy do określania hasła, przy pomocy którego użytkownikidentyfikuje się  z rolą .

Definiowanie uprawnień roli

Uprawnieniami dla roli zarzą dzamy poleceniami GRANT i REVOKE, tak jak robiliśmy todla 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 DROP ROLE:

DROPDROPDROPDROP ROLEROLEROLEROLE rola;

Strona 92

Podstawy języka SQL  Podstawy języka SQL 

Page 47: Kurs Oracle - Podstawy SQL

7/23/2019 Kurs Oracle - Podstawy SQL

http://slidepdf.com/reader/full/kurs-oracle-podstawy-sql 47/47

Strona 93

Indeks

A

ADD, 71, 72

ALL, 32, 49, 58, 59, 89

ALTER, 71, 72, 78, 87, 89

ALTER TABLE, 71, 72ALTER 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, 91DROP SYNONYM, 90

DROP TABLE, 73

DROP USER, 86

E

ENABLE, 72

EXECUTE, 89

EXIST, 60, 61

FFOR, 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

HHAVING, 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

Strona 94

IS NULL, 22, 24, 26

L

LIKE, 22, 23, 24, 26

LONG, 65

M

MAX, 32, 33, 35, 37, 57, 58

MIN, 32, 33, 34, 37, 38, 60

MINUS, 50

MODIFY, 72

N

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

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

PPRIMARY KEY, 67, 68, 70

PUBLIC, 89, 90

R

RAW, 65

REFERENCES, 69, 70, 89

RENAME TABLE, 73

REPLACE, 82

REVOKE, 88, 90, 91

ROLLBACK, 78, 79

ROWID, 65

S

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

T

TO, 73, 79, 87, 88, 89

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, 71VARIANCE, 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