Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --2.Utworzyć nowe tabele zesp1oraz prac1
- --tak, by spełnione były następujące warunki-
- -->Tabela zesp1 powinna posiadać następujące kolumny--
- --CREATE TABLE zesp1
- -- (nr_zesp smallint(11) PRIMARY KEY,
- -- nazwa_zesp char(30),
- -- nr_prac_kz int(11),
- -- nr_inst smallint(6))
- -->Tabela prac1powinna posiadać następujące kolumny--
- --Kluczem głównym tabeli prac1jest nr_prac.
- --Dodatkowo kolumna plecnie może posiadać wartości pustych.
- --CREATE TABLE prac1
- -- (nr_prac int(11) PRIMARY KEY ,
- -- plec char(1) NOT NULL ,
- -- data_ur DATETIME ,
- -- nazwisko char(15),
- -- nr_zesp smallint(6))
- --Na kolumnie nr_zesppowinien zostać utworzony indeks.
- --CREATE INDEX nr_zesp_inx ON prac1.nr_zesp
- --3.Wpisywanie danych do tabel--
- --Wykorzystując utworzone już wcześniej w systemie tabele,
- --wprowadzić należy do tabeli zesp1wszystkie wiersze z tabeli
- --ZESPOLY,Wykorzystując instrukcję insert
- --INSERT INTO zesp1 (SELECT * FROM zespoly)
- --Wykorzystując utworzone już wcześniej w systemie tabele,
- --wprowadzić należy do tabeli prac1wszystkie wiersze z tabeli
- --PRACOWNICY.Wykorzystując instrukcję insert
- --INSERT INTO prac1 (SELECT * FROM pracownicy)
- --4.Tak zmodyfikować tabele, by:
- -->W tabeli zesp1 kluczem obcym była kolumna nr_prac_kz,
- --dla której kluczem głównym jest kolumna nr_pracw
- --tabeli prac1. Należy zapewnić, by w przypadku próby
- --usunięcia pracownika z tabeli prac1, próba ta
- --nie powiodła się, gdy istnieje wiersz o tej samej
- --wartości klucza obcego w tabeli podrzędnej zesp1.
- -->Kolumna nr_zespjest kluczem obcym w tabeli prac1 i
- --należy zapewnić, by przy kasowaniu wierszy w tabeli
- --nadrzędnej zesp1w miejsce wartości kluczy obcych
- --odpowiadających wartości kasowanego klucza głównego
- --wpisywane były wartości NULL, a wiersze te nie były
- --usuwane z tabeli.
- --ALTER TABLE zesp1 add
- -- (FOREIGN KEY (nr_prac_kz)
- -- REFERENCES prac1(nr_prac)
- -- ON DELETE RESTRICT)
- --ALTER TABLE prac1 add
- -- (FOREIGN KEY (nr_zesp)
- -- REFERENCES zesp1(nr_zesp)
- -- ON DELETE SET NULL)
- --5.Wykonać ćwiczenie sprawdzające poprawność działania
- --więzów referencyjnych, pod kątem wprowadzania wartości
- --pustych, powtarzających się wartości oraz kasowania
- --wierszy mających swych odpowiedników w tabelach podrzędnych
- --oraz dokonywania zmian wartości.
- --INSERT INTO prac1 VALUES (NULL,NULL,NULL,NULL,NULL)
- /* SQL Error (1048): Column 'nr_prac' cannot be null */
- --INSERT INTO prac1 VALUES (1,'M',NULL,NULL,NULL)
- --INSERT INTO prac1 VALUES
- --(42,'M',1986-06-06,'Pracownik1', 1234)
- --INSERT INTO prac1 VALUES
- --(42,'K',1986-08-08,'Pracownik2', 1234)
- --DELETE FROM prac1 WHERE nr_prac = 3
- --DELETE FROM zesp1 WHERE nr_zesp = 3
- --6.Tworzenie użytkowników i przydzielanie im uprawnień:
- --Podłączyć się do bazy labbdX jako użytkownik adminX
- --z hasłem adminX
- -->jako adminx:
- --utworzyć użytkownika userX
- --CREATE USER 'userX'@'127.0.0.1'
- --i nadać mu uprawnienia do przeglądania tabeli
- --pracownicy
- --GRANT SELECT ON pracownicy TO userX
- -->jako userX:
- --Obejrzeć rekordy w tabeli pracownicy
- --SELECT * FROM pracownicy
- --Usunąć rekordy z tabeli pracownicy
- --DELETE FROM pracownicy WHERE nr_prac = 1
- --/* SQL Error (1142): DELETE command denied
- --to user 'userX'@'localhost' for table 'pracownicy' */
- --Obejrzeć rekordy w tabeli tematy
- --SELECT * FROM TEMATY
- --/* SQL Error (1142): SELECT command denied to
- --user 'userX'@'localhost' for table 'tematy' */
- -->jako adminX:
- --Nadać użytkownikowi userX prawo do usuwania rekordów w
- --tabeli zespoły
- --GRANT DELETE ON zespoly TO userX
- -->jako userX:
- --Obejrzeć rekordy w tabeli zespoly
- --/* SQL Error (1142): SELECT command denied to user
- --'userX'@'localhost' for table 'zespoly' */
- --Usunąć zespoł nr 1
- --DELETE FROM zespoly WHERE nr_zesp = 1
- --Co się stało i dlaczego?
- --/* SQL Error (1143): SELECT command denied to user
- --'userX'@'localhost' for column 'nr_zesp' in table
- --'zespoly' */
- --użytkownik nie ma opowiednich praw żeby przeglądać
- --tabelę "zespoly"
- -->jako adminX:
- --Nadać użytkownikowi userX prawo do przeglądania
- --tabeli zespoły
- --GRANT SELECT ON zespoly TO userX
- -->jako userX:
- --Usunąć zespoł nr 1
- --DELETE FROM zespoly WHERE nr_zesp = 4
- --Co się stało i dlaczego?
- --Nadaliśmy użytkownikowi userX prawo do usuwania rekordów w
- --tabeli zespoły i mogliśmy usunąć rekord
- -->jako adminX:
- --Utworzyć perspektywę stud zawierającą numery i nazwiska
- --studentów kierunku 'Informatyka'
- --CREATE VIEW stud AS
- --SELECT studenci.NR_STUD,studenci.NAZWISKO
- --FROM studenci,kierunki
- --WHERE studenci.NR_KIER = kierunki.NR_KIER
- --AND kierunki.NAZWA_KIER = 'Informatyka'
- --Nadać użytkownikowi userX prawo do przeglądania
- --perspektywy stud
- --GRANT SELECT ON stud TO userX
- -->jako userX:
- --Obejrzeć rekordy w tabeli/widoku stud
- --SELECT * FROM stud
- --Obejrzeć rekordy w tabeli studenci
- --SELECT * FROM studenci
- /* SQL Error (1142): SELECT command denied
- to user 'userX'@'localhost' for table 'studenci' */
- --Zmienić nazwisko studenta TUREK na GREK
- --UPDATE studenci
- --SET nazwisko = 'TUREK'
- --WHERE studenci.nazwisko = 'GREK'
- --Co się stało i dlaczego?
- /* SQL Error (1142): UPDATE command denied to
- user 'userX'@'localhost' for table 'studenci' */
- --użytkownik nie ma opowiednich praw żeby zmieniać
- --tabelę 'studenci'
- -->jako adminX:
- --Nadać użytkownikowi userX prawo do modyfikowania danych
- --w perspektywie stud
- --GRANT UPDATE ON stud TO userX
- --jako userX:
- --Zmienić nazwisko studenta TUREK na GREK
- --UPDATE studenci SET nazwisko = 'TUREK'
- --WHERE studenci.nazwisko = 'GREK'
- --Co się stało i dlaczego?
- --* SQL Error (1142): UPDATE command denied to user
- --'userX'@'localhost' for table 'studenci' */
- --nadal nie możemy ich zmieniać
- -->jako adminX:
- --Zmienić nazwisko studenta TUREK na GREK używając
- --perspektywy stud
- --UPDATE stud
- --SET nazwisko = 'GREK'
- --WHERE stud.nazwisko = 'TUREK'
- --Co się stało i dlaczego?
- --Mając uprawnienia możemy edytować rekordy w tabeli
- -->Utworzyć perspektywę stud2:
- --CREATE VIEW stud2 AS
- --SELECT studenci.nazwisko
- --FROM studenci
- --Wypisującą nazwiska studentów.Zmienić nazwisko studenta
- --TUREK na GREK używając perspektywy stud2
- --UPDATE stud2
- --SET nazwisko = 'GREK'
- --WHERE nazwisko = 'TUREK'
- --Co się stało i dlaczego?
- --udało się,bo mamy możliwość aktualizowania rekordów
- --używając perspektywy stud2
- -->Nadać użytkownikowi userX prawo do oglądania i modyfikacji
- --perspektywy stud2
- --GRANT SELECT,UPDATE ON stud2 TO userX
- -->jako userX:
- --Zmienić nazwisko studenta GREK na TUREK używając
- --perspektywy stud2
- --Co się stało i dlaczego?
- --udało się,bo mamy możliwość aktualizowania rekordów
- --używając perspektywy stud2
- -->jako adminX:
- --Utworzyć użytkownika pomX
- --CREATE USER 'pomX'@'127.0.0.1'
- --Nadać użytkownikowi pomX prawo do przeglądania
- --tabeli przedmioty
- --GRANT SELECT ON przedmioty TO pomX
- -->jako pomX:
- --Obejrzeć rekordy w tabeli przedmioty
- --SELECT * FROM przedmioty
- --Nadać użytkownikowi userX prawo do przeglądania
- --tabeli przedmioty
- --GRANT SELECT ON przedmioty TO userX
- --Co się stało i dlaczego?
- --/* SQL Error (1142): GRANT command denied to
- --user 'pomX'@'localhost' for table 'przedmioty' */
- --Nie mamy odpowiednich uprawnień
- -->jako adminX:
- --Nadać użytkownikowi pomX prawo do przeglądania tabeli przedmioty
- --z możliwością delegacji praw (WITH GRANT OPTION)
- --GRANT SELECT ON przedmioty TO pomX WITH GRANT OPTION
- -->jako pomX:
- --Nadać użytkownikowi userX prawo do przeglądania tabeli
- --przedmioty
- --Co się stało i dlaczego?
- --udało się bo użytkownik pomX ma prawo do przeglądania
- --tabeli przedmioty oraz może dawać prawa innym
- -->jako userX:
- --Obejrzeć rekordy w tabeli przedmioty
- --SELECT * FROM przedmioty
- ----------------------------------------
- Transakcje
- ----------------------------------------
- --alter table students engine=innodb
- SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
- (A)/* SQL Error (1054): Unknown column '’XX’' in 'field list' */
- (B)/* SQL Error (1054): Unknown column '’XX2’' in 'field list' */
- (C)
- (D)
- (E)
- (F)/* SQL Error (1054): Unknown column '’ZZ1’' in 'field list' */
- (G)/* SQL Error (1054): Unknown column '’ZZ2’' in 'field list' */
- SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
- (A)
- (B)
- (C)
- (D)
- (E)
- (F)
- (G)
- --SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
- --SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
- --SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
- --SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE
- --(1)
- --begin;
- --select * from students;
- --rollback;
- --(2)
- --begin;
- --select * from students;
- --select * from students;
- --select * from students;
- --rollback;
- --(3)
- --begin;
- --select * from students;
- --update students set student_name=’ZZ1’ where student_id=1;
- --rollback;
- --SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
- --SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
- --SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
- --SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE
- --(1)
- --begin; update students set student_name=’XX’ where student_id=1;
- --rollback;
- --(2)
- --begin;
- --update students set student_name=’XX2’ where student_id=1;
- --commit;
- --(3)
- --begin;
- --select * from students;
- --update students set student_name=’ZZ2’ where student_id=1;
- --rollback;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement