Advertisement
Guest User

Untitled

a guest
May 19th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.68 KB | None | 0 0
  1. --2.Utworzyć nowe tabele zesp1oraz prac1
  2. --tak, by spełnione były następujące warunki-
  3.  
  4. -->Tabela zesp1 powinna posiadać następujące kolumny--
  5.  
  6. --CREATE TABLE zesp1
  7. -- (nr_zesp smallint(11) PRIMARY KEY,
  8. -- nazwa_zesp char(30),
  9. -- nr_prac_kz int(11),
  10. -- nr_inst smallint(6))
  11.  
  12. -->Tabela prac1powinna posiadać następujące kolumny--
  13. --Kluczem głównym tabeli prac1jest nr_prac.
  14. --Dodatkowo kolumna plecnie może posiadać wartości pustych.
  15.  
  16. --CREATE TABLE prac1
  17. -- (nr_prac int(11) PRIMARY KEY ,
  18. -- plec char(1) NOT NULL ,
  19. -- data_ur DATETIME ,
  20. -- nazwisko char(15),
  21. -- nr_zesp smallint(6))
  22.  
  23. --Na kolumnie nr_zesppowinien zostać utworzony indeks.
  24. --CREATE INDEX nr_zesp_inx ON prac1.nr_zesp
  25.  
  26. --3.Wpisywanie danych do tabel--
  27.  
  28. --Wykorzystując utworzone już wcześniej w systemie tabele,
  29. --wprowadzić należy do tabeli zesp1wszystkie wiersze z tabeli
  30. --ZESPOLY,Wykorzystując instrukcję insert
  31.  
  32. --INSERT INTO zesp1 (SELECT * FROM zespoly)
  33.  
  34. --Wykorzystując utworzone już wcześniej w systemie tabele,
  35. --wprowadzić należy do tabeli prac1wszystkie wiersze z tabeli
  36. --PRACOWNICY.Wykorzystując instrukcję insert
  37.  
  38. --INSERT INTO prac1 (SELECT * FROM pracownicy)
  39.  
  40. --4.Tak zmodyfikować tabele, by:
  41. -->W tabeli zesp1 kluczem obcym była kolumna nr_prac_kz,
  42. --dla której kluczem głównym jest kolumna nr_pracw
  43. --tabeli prac1. Należy zapewnić, by w przypadku próby
  44. --usunięcia pracownika z tabeli prac1, próba ta
  45. --nie powiodła się, gdy istnieje wiersz o tej samej
  46. --wartości klucza obcego w tabeli podrzędnej zesp1.
  47.  
  48. -->Kolumna nr_zespjest kluczem obcym w tabeli prac1 i
  49. --należy zapewnić, by przy kasowaniu wierszy w tabeli
  50. --nadrzędnej zesp1w miejsce wartości kluczy obcych
  51. --odpowiadających wartości kasowanego klucza głównego
  52. --wpisywane były wartości NULL, a wiersze te nie były
  53. --usuwane z tabeli.
  54.  
  55. --ALTER TABLE zesp1 add
  56. -- (FOREIGN KEY (nr_prac_kz)
  57. -- REFERENCES prac1(nr_prac)
  58. -- ON DELETE RESTRICT)
  59.  
  60. --ALTER TABLE prac1 add
  61. -- (FOREIGN KEY (nr_zesp)
  62. -- REFERENCES zesp1(nr_zesp)
  63. -- ON DELETE SET NULL)
  64.  
  65. --5.Wykonać ćwiczenie sprawdzające poprawność działania
  66. --więzów referencyjnych, pod kątem wprowadzania wartości
  67. --pustych, powtarzających się wartości oraz kasowania
  68. --wierszy mających swych odpowiedników w tabelach podrzędnych
  69. --oraz dokonywania zmian wartości.
  70.  
  71. --INSERT INTO prac1 VALUES (NULL,NULL,NULL,NULL,NULL)
  72. /* SQL Error (1048): Column 'nr_prac' cannot be null */
  73.  
  74. --INSERT INTO prac1 VALUES (1,'M',NULL,NULL,NULL)
  75.  
  76. --INSERT INTO prac1 VALUES
  77. --(42,'M',1986-06-06,'Pracownik1', 1234)
  78.  
  79. --INSERT INTO prac1 VALUES
  80. --(42,'K',1986-08-08,'Pracownik2', 1234)
  81.  
  82. --DELETE FROM prac1 WHERE nr_prac = 3
  83. --DELETE FROM zesp1 WHERE nr_zesp = 3
  84.  
  85. --6.Tworzenie użytkowników i przydzielanie im uprawnień:
  86.  
  87. --Podłączyć się do bazy labbdX jako użytkownik adminX
  88. --z hasłem adminX
  89.  
  90.  
  91. -->jako adminx:
  92. --utworzyć użytkownika userX
  93. --CREATE USER 'userX'@'127.0.0.1'
  94.  
  95. --i nadać mu uprawnienia do przeglądania tabeli
  96. --pracownicy
  97. --GRANT SELECT ON pracownicy TO userX
  98.  
  99.  
  100. -->jako userX:
  101. --Obejrzeć rekordy w tabeli pracownicy
  102. --SELECT * FROM pracownicy
  103.  
  104. --Usunąć rekordy z tabeli pracownicy
  105. --DELETE FROM pracownicy WHERE nr_prac = 1
  106. --/* SQL Error (1142): DELETE command denied
  107. --to user 'userX'@'localhost' for table 'pracownicy' */
  108.  
  109. --Obejrzeć rekordy w tabeli tematy
  110. --SELECT * FROM TEMATY
  111. --/* SQL Error (1142): SELECT command denied to
  112. --user 'userX'@'localhost' for table 'tematy' */
  113.  
  114.  
  115. -->jako adminX:
  116. --Nadać użytkownikowi userX prawo do usuwania rekordów w
  117. --tabeli zespoły
  118. --GRANT DELETE ON zespoly TO userX
  119.  
  120. -->jako userX:
  121. --Obejrzeć rekordy w tabeli zespoly
  122. --/* SQL Error (1142): SELECT command denied to user
  123. --'userX'@'localhost' for table 'zespoly' */
  124.  
  125. --Usunąć zespoł nr 1
  126. --DELETE FROM zespoly WHERE nr_zesp = 1
  127.  
  128. --Co się stało i dlaczego?
  129. --/* SQL Error (1143): SELECT command denied to user
  130. --'userX'@'localhost' for column 'nr_zesp' in table
  131. --'zespoly' */
  132. --użytkownik nie ma opowiednich praw żeby przeglądać
  133. --tabelę "zespoly"
  134.  
  135.  
  136. -->jako adminX:
  137. --Nadać użytkownikowi userX prawo do przeglądania
  138. --tabeli zespoły
  139. --GRANT SELECT ON zespoly TO userX
  140.  
  141.  
  142. -->jako userX:
  143. --Usunąć zespoł nr 1
  144. --DELETE FROM zespoly WHERE nr_zesp = 4
  145.  
  146. --Co się stało i dlaczego?
  147. --Nadaliśmy użytkownikowi userX prawo do usuwania rekordów w
  148. --tabeli zespoły i mogliśmy usunąć rekord
  149.  
  150.  
  151. -->jako adminX:
  152. --Utworzyć perspektywę stud zawierającą numery i nazwiska
  153. --studentów kierunku 'Informatyka'
  154.  
  155. --CREATE VIEW stud AS
  156. --SELECT studenci.NR_STUD,studenci.NAZWISKO
  157. --FROM studenci,kierunki
  158. --WHERE studenci.NR_KIER = kierunki.NR_KIER
  159. --AND kierunki.NAZWA_KIER = 'Informatyka'
  160.  
  161. --Nadać użytkownikowi userX prawo do przeglądania
  162. --perspektywy stud
  163. --GRANT SELECT ON stud TO userX
  164.  
  165.  
  166. -->jako userX:
  167. --Obejrzeć rekordy w tabeli/widoku stud
  168. --SELECT * FROM stud
  169.  
  170. --Obejrzeć rekordy w tabeli studenci
  171. --SELECT * FROM studenci
  172. /* SQL Error (1142): SELECT command denied
  173. to user 'userX'@'localhost' for table 'studenci' */
  174.  
  175. --Zmienić nazwisko studenta TUREK na GREK
  176. --UPDATE studenci
  177. --SET nazwisko = 'TUREK'
  178. --WHERE studenci.nazwisko = 'GREK'
  179.  
  180. --Co się stało i dlaczego?
  181. /* SQL Error (1142): UPDATE command denied to
  182. user 'userX'@'localhost' for table 'studenci' */
  183. --użytkownik nie ma opowiednich praw żeby zmieniać
  184. --tabelę 'studenci'
  185.  
  186.  
  187. -->jako adminX:
  188. --Nadać użytkownikowi userX prawo do modyfikowania danych
  189. --w perspektywie stud
  190. --GRANT UPDATE ON stud TO userX
  191.  
  192. --jako userX:
  193. --Zmienić nazwisko studenta TUREK na GREK
  194. --UPDATE studenci SET nazwisko = 'TUREK'
  195. --WHERE studenci.nazwisko = 'GREK'
  196.  
  197. --Co się stało i dlaczego?
  198. --* SQL Error (1142): UPDATE command denied to user
  199. --'userX'@'localhost' for table 'studenci' */
  200. --nadal nie możemy ich zmieniać
  201.  
  202.  
  203. -->jako adminX:
  204. --Zmienić nazwisko studenta TUREK na GREK używając
  205. --perspektywy stud
  206. --UPDATE stud
  207. --SET nazwisko = 'GREK'
  208. --WHERE stud.nazwisko = 'TUREK'
  209.  
  210. --Co się stało i dlaczego?
  211. --Mając uprawnienia możemy edytować rekordy w tabeli
  212.  
  213. -->Utworzyć perspektywę stud2:
  214. --CREATE VIEW stud2 AS
  215. --SELECT studenci.nazwisko
  216. --FROM studenci
  217.  
  218. --Wypisującą nazwiska studentów.Zmienić nazwisko studenta
  219. --TUREK na GREK używając perspektywy stud2
  220. --UPDATE stud2
  221. --SET nazwisko = 'GREK'
  222. --WHERE nazwisko = 'TUREK'
  223.  
  224. --Co się stało i dlaczego?
  225. --udało się,bo mamy możliwość aktualizowania rekordów
  226. --używając perspektywy stud2
  227.  
  228. -->Nadać użytkownikowi userX prawo do oglądania i modyfikacji
  229. --perspektywy stud2
  230. --GRANT SELECT,UPDATE ON stud2 TO userX
  231.  
  232.  
  233. -->jako userX:
  234. --Zmienić nazwisko studenta GREK na TUREK używając
  235. --perspektywy stud2
  236.  
  237. --Co się stało i dlaczego?
  238. --udało się,bo mamy możliwość aktualizowania rekordów
  239. --używając perspektywy stud2
  240.  
  241.  
  242. -->jako adminX:
  243. --Utworzyć użytkownika pomX
  244. --CREATE USER 'pomX'@'127.0.0.1'
  245.  
  246. --Nadać użytkownikowi pomX prawo do przeglądania
  247. --tabeli przedmioty
  248. --GRANT SELECT ON przedmioty TO pomX
  249.  
  250.  
  251. -->jako pomX:
  252. --Obejrzeć rekordy w tabeli przedmioty
  253. --SELECT * FROM przedmioty
  254.  
  255. --Nadać użytkownikowi userX prawo do przeglądania
  256. --tabeli przedmioty
  257. --GRANT SELECT ON przedmioty TO userX
  258.  
  259. --Co się stało i dlaczego?
  260. --/* SQL Error (1142): GRANT command denied to
  261. --user 'pomX'@'localhost' for table 'przedmioty' */
  262. --Nie mamy odpowiednich uprawnień
  263.  
  264.  
  265. -->jako adminX:
  266. --Nadać użytkownikowi pomX prawo do przeglądania tabeli przedmioty
  267. --z możliwością delegacji praw (WITH GRANT OPTION)
  268. --GRANT SELECT ON przedmioty TO pomX WITH GRANT OPTION
  269.  
  270.  
  271. -->jako pomX:
  272. --Nadać użytkownikowi userX prawo do przeglądania tabeli
  273. --przedmioty
  274.  
  275. --Co się stało i dlaczego?
  276. --udało się bo użytkownik pomX ma prawo do przeglądania
  277. --tabeli przedmioty oraz może dawać prawa innym
  278.  
  279.  
  280. -->jako userX:
  281. --Obejrzeć rekordy w tabeli przedmioty
  282. --SELECT * FROM przedmioty
  283.  
  284. ----------------------------------------
  285. Transakcje
  286. ----------------------------------------
  287.  
  288. --alter table students engine=innodb
  289.  
  290. SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
  291.  
  292. (A)/* SQL Error (1054): Unknown column '’XX’' in 'field list' */
  293.  
  294.  
  295. (B)/* SQL Error (1054): Unknown column '’XX2’' in 'field list' */
  296.  
  297. (C)
  298.  
  299.  
  300. (D)
  301.  
  302.  
  303. (E)
  304.  
  305.  
  306. (F)/* SQL Error (1054): Unknown column '’ZZ1’' in 'field list' */
  307.  
  308.  
  309. (G)/* SQL Error (1054): Unknown column '’ZZ2’' in 'field list' */
  310.  
  311.  
  312.  
  313. SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
  314.  
  315. (A)
  316.  
  317.  
  318. (B)
  319.  
  320. (C)
  321.  
  322.  
  323. (D)
  324.  
  325.  
  326. (E)
  327.  
  328.  
  329. (F)
  330.  
  331.  
  332. (G)
  333.  
  334.  
  335. --SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
  336. --SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
  337. --SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
  338. --SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE
  339.  
  340. --(1)
  341. --begin;
  342. --select * from students;
  343. --rollback;
  344.  
  345. --(2)
  346. --begin;
  347. --select * from students;
  348. --select * from students;
  349. --select * from students;
  350. --rollback;
  351.  
  352. --(3)
  353. --begin;
  354. --select * from students;
  355. --update students set student_name=’ZZ1’ where student_id=1;
  356. --rollback;
  357.  
  358.  
  359.  
  360.  
  361. --SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
  362. --SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
  363. --SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
  364. --SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE
  365.  
  366. --(1)
  367.  
  368. --begin; update students set student_name=’XX’ where student_id=1;
  369. --rollback;
  370.  
  371. --(2)
  372. --begin;
  373. --update students set student_name=’XX2’ where student_id=1;
  374. --commit;
  375.  
  376.  
  377. --(3)
  378. --begin;
  379. --select * from students;
  380. --update students set student_name=’ZZ2’ where student_id=1;
  381. --rollback;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement