cw6


ZESTAW ĆWICZENIOWY NR 6

====================================================================================================================================================================

Zad. 1. W bazie danych zostało utworzonych 2 użytkowników stud1 i stud2. Jako użytkownik stud2 utworzyć relacje prac_stud2 zawierającą dane z relacji prac. Użytkownik stud1 może wyświetlać zawartość tej relacji poleceniem:

====================================================================================================================================================================

SQL> SELECT * FROM prac_stud1;
Odp:

CREATE TABLE prac_stud2 AS SELECT * FROM PRAC;
CREATE SYNONYM prac_stud1 FOR prac_stud2;

GRANT SELECT ON prac_stud2 TO stud1;
-- a nastepnie w celu ewentualnego zabrania
REVOKE SELECT ON prac_stud2 FROM stud1;


====================================================================================================================================================================

Zad. 2. Zmodyfikować prawa użytkownika stud1 do relacji prac_stud2 tak, aby mógł wykonywać na niej wszystkie operacje DML i DDL oraz nadawać przywileje innym użytkownikom do tej relacji.

====================================================================================================================================================================

Odp:

GRANT ALL ON prac_stud2 TO stud1;
REVOKE ALL ON prac_stud2 FROM stud1;


====================================================================================================================================================================

Zad. 3. Utworzyć unikalny indeks na atrybucie nazwisko relacji prac. Co się stanie po wykonaniu poleceń:

====================================================================================================================================================================

Odp:


CREATE UNIQUE INDEX nazwisko ON PRAC(nazwisko);


====================================================================================================================================================================

Zad. 4. Zdefiniować indeksy na odpowiednich atrybutach tak, aby przyspieszyć wykonanie poniższego polecenia:

====================================================================================================================================================================

select p.nazwisko, p.zatrudniony, s.nazwisko, s.zatrudniony
from prac p, prac s
where p.szef=s.id_prac
and p.placa_pod>s.placa_pod;

Indeksy tworzone są głównie z myślą o przyspieszeniu wyszukiwania, dlatego warto mieć zaindeksowane kolumny często występujące we frazie where, w związku z czym:

CREATE INDEX szef ON PRAC(id_szefa); -- nie dajemy unique, gdyz wartosc sie duplikuje, besides jest szybciej

-- to ponizej sie moze nie udac, gdyz wyglada na to, ze id_prac jest kluczem glownym, a jako taki ma juz indeksowanie
CREATE INDEX id_prac ON PRAC(id_prac);
-- i rzeczywiscie:
--CREATE INDEX id_prac ON PRAC(id_prac)
-- *
--
--BŁĄD w linii 1:
--ORA-01408: taka lista kolumn jest już zaindeksowana

CREATE INDEX placa_pod ON PRAC(placa_pod);

Indeks został utworzony.

Wyszukiwarka

Podobne podstrony:
cw6 arkusz obliczeniowy przyklad
LA cw6
cw6 3
cw6 ps
instrukcja cw6
pife1 cw6
cw6 fm06
14 Nowak?rtosz ćw6
est zip cw6
CW6 ARKv2014
cw6
WDA lab cw6
CW6 Zasada pelnosci

więcej podobnych podstron