środa, 2 sierpnia 2017

Lekcja 37. Użytkownicy.

Z tej lekcji dowiesz się jak tworzyć konto użytkownika i usuwać je oraz zmieniać hasło dostępu do niego.

Tworzenie konta użytkownika
Do tworzenia konta użytkownika w bazie danych służy instrukcja CREATE USER. Jej uproszczona postać:
CREATE USER nazwa_użytkownika PASSWORD ‘hasło
   FIRSTNAME ‘imię
   LASTNAME ‘nazwisko
GRAND ‘rola’ ROLE;

W poniższym przykładzie tworzymy konto użytkownika Patryk z hasłem haslo. Ustawiamy parametry FIRSTNAME na Patryk oraz LASTNAME na Sladek. Na koniec ustawiamy użytkownikowi uprawienia administratora:


Zmiana hasła użytkownika
Hasło użytkownika można zmienić za pomocą instrukcji ALTER USER. Na przykład poniższa instrukcja zmienia hasło użytkownika Patryk na nowehaslo:


Usuwanie konta użytkownika
Do usuwania kont użytkowników służy instrukcja DROP USER. W poniższym przykładzie zostaje usunięte konto Patryk:





Lekcja 36. Role.

Rola jest zbiorem uprawnień, które możemy przyznać użytkownikowi lub innej roli. Poniżej przestawiono listę zalet i właściwości ról:
  • Zamiast przyznawać uprawnienia kolejno każdemu użytkownikowi, możemy utworzyć rolę, przyznać jej uprawnienia, a następnie przyznać tę rolę wielu użytkownikom i rolom
  • Jeżeli dodamy lub usuniemy uprawnienia z roli, wszyscy użytkownicy i role, którym przyznano tę rolę, automatycznie otrzymają lub utracą to uprawnienie
  • Użytkownikowi i roli możemy przydzielać klika ról
  • Roli można przyznawać hasło
Tworzenie ról
Rolę tworzymy za pomocą instrukcji CREATE ROLE. Aby utworzyć rolę niezbędne jest posiadanie uprawnienia do tej instrukcji. W poniższym przykładzie tworzymy nową rolę newrole:


Przyznawanie uprawnień roli
Do przyznawania uprawnień roli służy instrukcja GRANT. Roli możemy przyznać zarówno uprawnienia systemowe, jak i obiektowe, a także przyznać ją innej roli. W poniższym przykładzie przyznajemy niezbędne uprawnienia roli newrole :


Przyznawanie roli użytkownikowi
Do przyznawania roli użytkownikowi służy instrukcja GRANT. W poniższym przykładzie przyznajemy rolę newrole użytkownikowi patryk:


Odbieranie roli
Do odbierania roli użytkownikowi służy instrukcja REVOKE. W poniższym przykładzie odbieramy rolę newrole użytkownikowi patryk:


Usuwanie roli
Do usuwania roli użytkownikowi służy instrukcja DROP ROLE. W poniższym przykładzie usuwamy rolę newrole:


wtorek, 25 lipca 2017

Lekcja 35. Transakcje bazodanowe.

Transakcja bazodanowa jest grupą instrukcji SQL, która wykonuje logiczną jednostkę pracy. Możemy ją sobie wyobrazić jako nierozłączny zbiór instrukcji SQL, których wyniki powinny być zapisane w bazie danych w całości (lub zostać w całości wycofane).

Przykładem transakcji bazodanowych jest przelew pieniędzy z konta bankowego na inne. Instrukcja UPDATE odejmuje daną sumę od ilości gotówki na jednym koncie, a druga instrukcja UPDATE dodaje ją do pieniędzy na drugim koncie. Zarówno odejmowanie, jaki i dodawanie muszą być trwale zapisane w bazie danych. W przeciwnym razie pieniądze zostaną utracone. Jeżeli wystąpi problem z przelewem, wówczas zarówno odejmowanie, jak i dodawanie muszą zostać wycofane. W tym prostym przykładzie są wykorzystywane jedynie dwie instrukcje UPDATE, transakcja może jednak zawierać wiele instrukcji INSERT, UPDATE i DELETE.

Zatwierdzenie i wycofanie transakcji
Aby trwale zapisać wyniki instrukcji SQL znajdujących się w transakcji, należy wykonać zatwierdzenie za pomocą instrukcji COMMIT. Jeżeli chcemy wycofać wycofać wyniki, wykonujemy instrukcję ROLLBACK, która przywraca pierwotne wartości wierszy.

W poniższym przykładzie do tabeli customer jest dodawany jeden wiersz, a następnie zmiana jest utrwalana przez wykonanie instrukcji COMMIT:


W poniższym przykładzie do tabeli customer jest dodawany kolejny wiersz, a następnie zmiana jest wycofana za pomocą instrukcji ROLLBACK:


To zapytanie pokazuje nowy wiersz zatwierdzony przez instrukcję COMMIT:


Informacje o kliencie numer 1019 zostały utrwalone przez instrukcję COMMIT, natomiast informacje o kliencie numer 1020 zostały wycofane przez instrukcję ROLLBACK.

Rozpoczynanie i kończenie transakcji
Transakcja jest logiczną jednostką pracy, która umożliwia rozdzielenie instrukcji SQL. Posiada początek i koniec.
Transakcja rozpoczyna się, gdy ma miejsce jedno ze zdarzeń:
  • Połączenie z bazą danych i wykonanie instrukcji DML (INSERT, UPDATE lub DELETE).
  • Wcześniejsza transakcja kończy się i wprowadzamy kolejną instrukcję DML.
Transakcja kończy się, gdy:
  • Zostaną wykonane instrukcje COMMIT lub ROLLBACK.
  • Zostanie wykonana instrukcja DDL, taka jak CREATE TABLE - w takim przypadku zatwierdzenie dokonywane jest automatycznie.
  • Zostanie wykonana instrukcja DCL, taka jak GRANT - w takim przypadku zatwierdzenie dokonywane jest automatycznie. Instrukcja GRANT zostanie opisana w następnej lekcji.
  • Nastąpi rozłączenie z bazą danych.
  • Wykonanie instrukcja DML nie powiedzie się - w takim przypadku instrukcja ROLLBACK jest wykonywania jedynie dla tej konkretnej instrukcji DML. 


środa, 5 lipca 2017

Lekcja 34. DDL - View

DDL (Data Definition Language) jest podzbiorem języka SQL Firebird i służy do tworzenia, modyfikowania oraz usuwania obiektów bazy danych.

Widok (View) jest predefiniowanym zapytaniem jednej lub wielu tabel (zwanych tabelami bazowymi). Pobieranie informacji z perspektywy odbywa się w taki sposób jak pobieranie informacji z tabeli. Wystarczy jedynie umieścić nazwę widoku w klauzuli FROM.
Widoki mają kilka zalet:
  • Umożliwiają umieszczenie złożonego zapytania w widoku i przyznania do niego dostępu użytkownikom. To pozwala ukryć złożoność przez użytkownikami.
  • Powalają na uniemożliwienie użytkownikom bezpośredniego wysłania zapytań do tabel bazy danych, przyznając im dostęp jedynie do widoków.
  • Umożliwiają przyznanie widokom dostępu jedynie do określonych wierszy tabel bazodanowych, co pozwala na ukrywanie wierszy przed użytkownikami.
Z tej lekcji dowiesz się jak tworzyć widoki i ich używać, modyfikować widoki, a także je usuwać.

Tworzenie widoku
Do tworzenia widoku służy instrukcja CREATE VIEW.  Perspektywy proste korzystają z jednej tabeli bazowej. W poniższym przykładzie tworzymy widok ENTRY_LEVEL_JOBS, który pobiera z tabeli wiesze (a właściwie wartości kolumn JOB_CODE i JOB_TITLE), dla których MAX_SALARY jest mniejsze niż 50000:


Odpytywanie widoku
Po utworzeniu widoku możemy go użyć do uzyskania dostępu do tabeli. Poniższe zapytanie zwraca wiesze z widoku ENTRY_LEVEL_JOBS:


Modyfikowanie widoku
Za pomocą instrukcji ALTER VIEW można modyfikować zapisany widok. W poniższym przykładzie użyto tej instrukcji do modyfikacji widoku ENTRY_LEVEL_JOBS:


 Poniższe zapytanie zwraca wiesze z widoku ENTRY_LEVEL_JOBS:



Usuwanie widoku
Do usuwania widoku służy instrukcja DROP VIEW. W poniższym przykładzie usuwany jest widok ENTRY_LEVEL_JOBS:

Lekcja 33. DDL - Index

DDL (Data Definition Language) jest podzbiorem języka SQL Firebird i służy do tworzenia, modyfikowania oraz usuwania obiektów bazy danych.

Jeżeli szukamy w książce informacji, możemy ją całą przeczytać albo użyć indeksu, żeby odnaleźć odpowiedni fragment. W założeniach indeks (index) tabeli bazy danych przypomina indeks książki, z tą różnicą, że indeksy bazodanowe są używane do wyszukiwania konkretnych wierszy w tabeli. Wada indeksów polega na tym, że gdy do tabeli jest wstawiany wiersz, jest wymagany dodatkowy czas konieczny do aktualizacji indeksu o nowy wiersz. Indeks powinien być tworzony na kolumnie, jeżeli pobieramy niewielką liczbę wierszy z tabeli zawierającej ich wiele.

Tworzenie indeksu
Do tworzenia indeksu służy instrukcja CREATE INDEX. Poniższa instrukcja zakłada indeks IDX_UPDATER na kolumnę UPDATER_ID tabeli SALARY_HISTORY.


Indeks można także założyć na więcej niż jedną kolumnę. Poniższa instrukcja zakłada indeks IDX_SALESTAT na kolumny ORDER_STATUS i PAID tabeli SALES.


Modyfikowanie indeksu
Do modyfikowania indeksu służy instrukcja ALTER INDEX. Za jej pomocą możemy aktywować i dezaktywować indeks. Poniższa instrukcja dezaktywuje indeks IDX_UPDATER:



Natomiast poniższa instrukcja aktywuje indeks IDX_UPDATER:


Usuwanie indeksu
Do usuwania indeksu służy instrukcja DROP INDEX. Poniższa instrukcja usuwa indeks IDX_UPDATER:



Lekcja 32. DDL - Sequence (Generator)

DDL (Data Definition Language) jest podzbiorem języka SQL Firebird i służy do tworzenia, modyfikowania oraz usuwania obiektów bazy danych.

Sekwencja(Generator) jest elementem bazy danych, generującym sekwencje liczb całkowitych. Liczby całkowite generowane przez sekwencje są zwykle używane do wprowadzania danych do liczbowej kolumny klucza głównego.

Tworzenie sekwencji
Do tworzenia sekwencji służy instrukcja CREATE SEQUENCE albo CREATE GENERATOR. W poniższym przykładzie tworzymy sekwencję o nazwie employee_no_gen za pomocą instrukcji CREATE SEQUENCE:

Poniższe polecenie wykonuje tą samą czynność za pomocą składni CREATE GENERATOR:

 
Modyfikowanie sekwencji
Do modyfikowania sekwencji służy instrukcja ALTER SEQUENCE.
Poniższa instrukcja ustawia bieżącą wartość sekwencji employee_no_gen na wartość 15:


Poniższe polecenie wykonuje tą samą czynność za pomocą składni SET GENERATOR:


Usuwanie sekwencji
Do usuwania sekwencji służy instrukcja DROP SEQUENCE. Poniższa instrukcja usuwa sekwencję employee_no_gen :

Poniższe polecenie wykonuje tą samą czynność za pomocą składni DROP GENERATOR:


wtorek, 4 lipca 2017

Lekcja 31. DDL - Table

DDL (Data Definition Language) jest podzbiorem języka SQL Firebird i służy do tworzenia, modyfikowania oraz usuwania obiektów bazy danych.

Z tej lekcji dowiesz się więcej o tworzeniu, modyfikacji, a także usuwaniu tabel.

Tworzenie tabeli
Tabelę tworzymy za pomocą polecenia CREATE TABLE. Tworząc tabelę podajemy pola jakie ta tabela ma posiadać, rodzaj danych przechowywanych przez te pola oraz własności tabeli. Poniżesz polecenie tworzy tabelę o nazwie employee_status posiadającą trzy kolumny:
  1. id – kolumna typu INTEGER, będąca kluczem głównym
  2. status – kolumna typu VARCHAR(10)
  3. last_modified – kolumna typu DATE z domyślną wartością current_date


Modyfikacja tabeli
Tabele modyfikujemy za pomocą polecenia CREATE TABLE.
  • Dodawanie kolumny
Poniższa instrukcja dodaje do tabeli employee_status kolumnę priority:

  • Usuwanie kolumny
Poniższa instrukcja usuwa z tabeli employee_status kolumnę priority:


  • Zmiana własności kolumny
Poniższa instrukcja dodaje CONSTRAINT CHECK do kolumny id tabeli employee_status:


Usuwanie tabeli
Tabelę usuwamy za pomocą polecenia DROP TABLE. Poniższe polecenie usuwa tabelę employee_status.