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 przykladLA cw6cw6 3cw6 psinstrukcja cw6pife1 cw6cw6 fm0614 Nowak?rtosz ćw6est zip cw6CW6 ARKv2014cw6WDA lab cw6CW6 Zasada pelnosciwięcej podobnych podstron