poniedziałek, 3 lipca 2017

Lekcja 30. DDL – Domain

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

Domena (Domain) jest jednym z typów obiektów w relacyjnej bazie danych. Domena jest tworzona jako konkretny typ danych z dołączonymi do niej atrybutami. Po zdefiniowaniu w bazie danych można ją wielokrotnie używać np. do definiowania kolumn.
Ta sekcja opisuje składnię instrukcji używanych do tworzenia, modyfikowania i usuwania domen.

CREATE DOMAIN
Polecenie CREATE DOMAIN  tworzy nową domenę.
Poniższe polecenie tworzy domenę o nazwie CUSTNO, która może przyjmować wartości większe niż 1000, z wartością domyślną 10 000.


Poniższe polecenie tworzy domenę o nazwie D_BOOLEAN, która może przyjmować wartości "Tak" i "Nie".

Poniższe polecenie tworzy domenę o nazwie D_POINT, zdefiniowaną jako tablica zawierająca 2 elementy typu NUMERIC (18, 3).
 
 
ALTER DOMAIN
Polecenie CREATE ALTER modyfikuje atrybuty domeny.
Poniższa instrukcja zmienia typ danych domeny CUSTNO na INTEGER i ustawienie wartość domyślną na 2000.

Poniższa instrukcja zmienia nazwę domeny D_BOOLEAN na D_BOOL.

 

Poniższa instrukcja zmienia więzy integralności CHECK domeny CUSTNO.

 

DROP DOMAIN
Polecenie DROP DOMAIN  usuwa domenę. Poniższa instrukcja usuwa domenę D_POINT.



czwartek, 15 czerwca 2017

Lekcja 29. DDL – Shadow

DDL (Data Definition Language) jest podzbiorem języka SQL Firebird i służy do tworzenia, modyfikowania oraz usuwania obiektów bazy danych.
Cień (Shadow) jest dokładną kopią bazy danych. Po utworzeniu
cienia wszystkie zmiany wprowadzone w oryginalnym pliku bazy danych są natychmiast odzwierciedlane w cieniu. W tej sekcji opisano sposób tworzenia i usuwania plików cieni.

CREATE SHADOW
Polecenie CREATE SHADOW tworzy nowy cień. Poniższa instrukcja tworzy cień aktualnej bazy danych (zapisany jako cień numer 1).

DROP SHADOW
Polecenie DROP SHADOW usuwa cień. Poniższa instrukcja usuwa cień aktualnej bazy danych (zapisany jako cień numer 1).

Lekcja 28. DDL – Database

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ę jak utworzyć bazę danych, połączyć się z istniejącą bazą danych, zmienić strukturę plików bazy danych i jak ją usunąć.

CREATE DATABASE
Polecenie CREATE DATABASE tworzy nową bazę danych. Poniższa instrukcja tworzy lokalną bazę danych na dysku C o rozmiarze 8192 strony. Właścicielem bazy danych będzie użytkownik SYSDBA. Baza danych będzie w Dialect 3. 
Poniższa instrukcja obrazuje w jaki sposób utworzyć bazę danych na serwerze zdalnym baseserver przy użyciu ścieżki określonej w aliasie test, który został zdefiniowany wcześniej w pliku aliases.conf (plik zawierający aliasy do plików baz danych). Stosowany jest protokół TCP / IP. Właścicielem bazy danych będzie użytkownik SYSDBA. Baza danych będzie w Dialect 3 oraz będzie używać UTF8 jako domyślnego zestawu znaków.
ALTER DATABASE
Polecenie ALTER DATABASE zmiana strukturę plików bazy danych lub przełącza jej stan na bezpieczne kopiowanie. 
Poniższa instrukcje pokazują w jaki sposób można modyfikować bazę danych.
  1. Dodawanie pliku dodatkowego do bazy danych. Po wypełnieniu 30000 stron w poprzednim podstawowym lub pomocniczym pliku, silnik Firebird rozpocznie dodawanie danych do pliku pomocniczego TEST2.FDB.
  2. Określenie ścieżki i nazwy pliku delta, w którym przechowywane są wszelkie mutacje bazy danych, gdy tylko zostanie przełączona do trybu bezpiecznego kopiowania.
  3. Usuwanie opisu (ścieżki i nazwy) pliku delta.
  4. Przełączanie bazy danych do trybu bezpiecznego kopiowania.
  5. Przełączanie bazy danych z trybu bezpiecznego kopiowania do normalnego trybu pracy.

DELETE DROP
Polecenie DROP DATABASE usuwa bazę danych. 


wtorek, 13 czerwca 2017

Lekcja 27. Instrukcja MERGE

Instrukcja MERGE umożliwia aktualizację i dołączenie wierszy z jednej tabeli do drugiej. Możemy na przykład złączyć z tabelą customer zmiany wprowadzone w klientach w innej tabeli. Aby dobrze zobrazować działanie instrukcji MERGE należy utworzyć nową tabelę customer_changes. Czynność tą realizuje poniższa instrukcja:


Poniższe zapytanie pobiera z tabeli customer_changes kolumny cust_no, customer i city:


Dla porównania poniższe zapytanie pobiera z tabeli customer kolumny cust_no, customer city:


Załóżmy, że chcemy scalić wiersze z tabeli customer_changes z tabelą customer zgodnie z poniższymi regułami:
  • W przypadku wierszy z takimi samymi wartościami cust_no w obu tabelach do istniejących wierszy tabeli customer. Na przykład w tabeli customer_changes miasto klienta numer 1009 jest inne niż w tabeli customer, dlatego też miasto tego klienta musi zostać zmienione w tabeli ­customer. Klient numer 1010 ma inną nazwę i cenę, więc w tabeli customer muszą zostać zmienione obydwie wartości.
  • Wiersze występujące tylko w tabeli customer_changes powinny zostać wstawione do tabeli customer. Klienci nr 1017 i 1018 występują tylko w tabeli ­customer_­changes, muszą więc zostać wstawione do tabeli customer.
Instrukcję MERGE najłatwiej zrozumieć analizując przykład (poniższy wykonuje scalanie zgodnie z przedstawioną listą reguł):


W instrukcji MERGE są następujące części:
  • Klauzula INTO określa nazwę tabeli, z którą będą scalane wiersze. W przykładzie jest to tabela customer, której nadano alias c.
  • Klauzula USING … ON określa złączenie tabeli. W przykładzie złączenie jest dokonywane przez kolumny cust_no tabel customer i customer_changes. Tabeli . Tabeli customer_changes nadano alias cc.
  • Klauzula WHEN MATCHED THEN określa czynność wykonywaną, gdy wiersz spełnia klauzulę USING … ON. W przykładzie czynnością jest instrukcja UPDATE, która przypisuje wartościom kolumn customer i city wiersza istniejącego w tabeli customer wartości odpowiedniego wiersza tabeli customer_changes.
  • Klauzula WHEN NOT MATCHED THEN określa czynność wykonywaną, gdy wiersz nie spełnia klauzuli USING … ON. W przykładzie czynnością jest instrukcja INSERT, która wstawia wiersz do tabeli customer, pobierając wartości kolumn z wiersza z tabeli customer_changes.
Po uruchomieniu przedstawionej instrukcji MERGE widzimy, że zostały scalone cztery wiesze. Są to wiesze, w których cust_no ma wartość 1009, 1010, 1017 i 1018.  Poniższe zapytanie pobiera z tabeli customer cztery scalone wiersze:

 


W tych wiersza zostały wprowadzone następujące zmiany:
  • klient numer 1009 ma nowe miasto
  • klient numer 1010 ma nową nazwę oraz miasto
  • klienci numer 1017 i 1018 zostali dodani do tabeli

poniedziałek, 12 czerwca 2017

Lekcja 26. Instrukcja DELETE

Usuwanie wierszy za pomocą instrukcji DELETE
Instrukcja DELETE służy do usuwania wierszy do tabeli. Zwykle należy określić klauzulę WHERE, która ograniczy wiersz przeznaczone do usunięcia. W przeciwnym razie zostaną usunięte wszystkie wiersze.

Poniższa instrukcja usuwa z tabeli customer wiersz, w którym ­cust_no ma wartość 1017:


Za pomocą instrukcji SELECT możemy sprawdzić, że wiersz został usunięty: 



Lekcja 25. Instrukcja UPDATE

Modyfikowanie wierszy za pomocą instrukcji UPDATE
Instrukcja UPDATE służy do modyfikowania wierszy tabeli. Zwykle określa się w niej następujące informacje:
  • nazwę tabeli
  • klauzulę WHERE, określającą wiersze, które mają zostać zmienione
  • listę nazw kolumn wraz z nowymi wartościami, określaną za pomocą klauzuli SET
Za pomocą jednej instrukcji UPDATE możemy zmienić jeden lub kilka wierszy. Jeżeli określimy kilka wierszy, ta sama zamiana zostanie wprowadzona we wszystkich tych wierszach. Na przykład poniższa instrukcja UPDATE wpisuje do kolumny customer słowo Nowa firma w wierszu, w którym cust_no ma wartość 1007:


Poniższe zapytanie obrazuje dokonanie modyfikacji:

 

Za pomocą jednej instrukcji UPDATE możemy zmienić wiele wierszy i wiele kolumn. Na przykład poniższa instrukcja UPDATE zwiększa wartość kolumny qty_ordered o 3 oraz zmienia order_status na open, dla rekordów których aktualna wartość qty_ordered jest mniejsza od 10:


Poniższe zapytanie obrazuje dokonanie modyfikacji:


piątek, 9 czerwca 2017

Lekcja 24. Instrukcja INSERT

Wstawianie wierszy za pomocą instrukcji INSERT
Instrukcja INSERT służy do wstawiania wierszy do tabeli. Możemy w niej określić następujące informacje:
  • tabelę, do której będzie wstawiany wiersz
  • listę kolumn, dla których chcemy określić wiersz
  • listę wartości do zapisania w określonych kolumnach
Wstawiające wiersze, zwykle przesyłamy wartość dla klucza głównego i wszystkich pozostałych kolumn zdefiniowanych jako NOT NULL. Nie musimy określać wartości dla kolumn NULL, domyślnie zostanie w nich zapisana wartość NULL.
Możemy sprawdzić, które kolumny są zdefiniowane jako NOT NULL, korzystając z polecenia Isql SHOW. W poniższym przykładzie wyświetlono opis tabeli customer:


Kolumny cust_no i customer są zdefiniowane jako NOT NULL, co oznacza, że konieczne jest podanie dla nich wartości. Reszta kolumn nie wymaga przesłania wartości. Jeżeli te wartości zostaną pominięte przy wstawianiu wiersza, zapisane zostanie NULL.
Poniższa instrukcja INSERT  wstawia wiersz do tabeli customer. Należy zauważyć, że kolejność wartości w klauzuli VALUES jest zgodny z tą, w jakiej kolumny są wymienione na liście kolumn.


Rezultat możemy sprawdzić, uruchamiając instrukcję SELECT:


Nowy wiersz jest wyświetlany w wynikach zapytania.

Pomijanie listy kolumn
Listę kolumny można pominąć, jeżeli zostaną przesłane wartości dla wszystkich kolumn, tak jak w poniższym przykładzie:

Rezultat możemy sprawdzić, uruchamiając instrukcję SELECT:


Jeżeli lista kolumn zostanie pomięta, kolejność przesłanych wartości musi być zgodna z  kolejnością kolumn wypisywanych przez poleceni SHOW.

Określanie wartości NULL dla kolumny
Za pomocą słowa kluczowego NULL możemy przypisać kolumnie wartość NULL. Na przykład poniższa instrukcja INSERT zapisuje wartość NULL w kolumnach address_line2 i on_hold:


Po wyświetleniu tego wiersza w kolumnach address_line2 i on_hold znajdzie się wartość NULL.
Rezultat możemy sprawdzić, uruchamiając instrukcję SELECT: