zoz, 5 JĘZYK HA/. DANYCH M.U-
5. Daty i czas reprezentuje się odpowiednio poprzez typy DATĘ oraz TIME. W punkcie 5.1.4 omawialiśmy już to zagadnienie. Wartościami są w tym przypadku teksty o specyficznym formacie. W rzeczywistości można daty i czas przekształcać na postać tekstową i odwrotnie, jeśli ma to sens, można przekształcać teksty na postać daty lub czasu.
Najprostsza postać deklaracji schematu relacyjnego składa się ze słowa kluczowego CREATE table, po którym wymienia się nazwy relacji z listami nazw i typów atrybutów, ujętymi w nawiasy.
PRZYKŁAD 5.32
Na rysunku 5.13 przedstawiono deklarację tabeli SQL, odpowiadającej schematowi relacji GwiazdaFilmowa, który w sposób nieformalny został wprowadzony w podrozdziale 3.9. Pierwsze dwa atrybuty: nazwisko i adres były tam zadeklarowane jako ciągi znaków. Jeśli chodzi o nazw isko, to zdecydowaliśmy wówczas, że będziemy używać ciągów o stałej długości 30 znaków, przy czym w przypadkach nazwisk krótszych niż 30 znaków postanowiliśmy uzupełniać jc spacjami, a w przypadku krótszych - wpisywać tylko pierwszych 30 znaków. Natomiast adres został określony jako ciąg znaków o zmiennej długości, nie przekraczającej 255 znaków*. Nie można stwierdzić, czy tak określone typy są najlepsze z możliwych, ale tutaj służą wyłącznie jako przykład stosowania dwóch różnych typów tekstowych.
□
1) CREATE TABLE GwiazdaFilmowa {
2) nazwisko CHAR(30),
3) adres VARCHAR(255),
4) pleć CHAR(l),
5) dataUrodzenia DATĘ ) ;
RYSUNEK 5.13
Deklaracja schematu relacji GwiazdaFilmowa
Atrybut pleć może przyjmować dokładnie jedną z dwóch możliwych wartości: k lub m. Można całkiem bezpiecznie określić typ tego atrybutu jako pojedynczy znak. Natomiast atrybut dataUrodzenia oczywiście powinien
’ 255 nic jest w tym przypadku wartością losową, którą przypadkiem wybraliśmy jako długość typowego adresu. Pojedynczy bajt może przechowywać wartości całkowite między 0 i 255. a zatem maksymalną długość napisu mniejszą niż 255 można przechowywać w jednym bajcie. Jednakże komercyjne systemy baz danych dopuszczają napisy o zmiennej długości większej niż 255 znaków.
być typu DATĘ. Jeśli w jakimś systemie, który nie pokrywa się ze standardem SQL2, nie ma tego typu, to można zastosować typ CHAR {10), ponieważ wszystkie daty można przedstawić za pomocą 10 znaków, ośmiu cyfr oraz dwóch myślników.
Relacje stanowiące części długowiecznej bazy danych są zazwyczaj tworzone raz, a następnie wypełniane krotkami przez całe lata. Relacja może być wypełniana danymi pochodzącymi z zewnętrznego źródła za pomocą procedur importujących dane i tłumaczących je na postać ciągu instrukcji wstawień SQL; a mogą również istnieć inne mechanizmy wbudowane w system zarządzania bazami danych pełniące te funkcje. Dodatkowo można zmieniać zawartość relacji przez systematyczne, codzienne wstawianie nowych wartości. Ma przykład relacja Fi im może na samym początku zostać wypełniona krotkami pochodzącymi z jakiejś istniejącej bazy, a następnie być aktualizowana w miarę pojawiania się nowych filmów.
Jednakże istnieją takie sytuacje, kiedy trzeba usunąć relacje ze schematu bazy danych. Ma przykład może się zmienić sytuacja i dane w tabeli przestaną być potrzebne. Relacja może też służyć do przechowywania danych chwilowych, na przykład pośrednich wyników przetwarzania skomplikowanego zapytania, którego nic da się wyrazić za pomocą jednej instrukcji SQL. Jeśli tak się zdarzy, to będzie można usunąć relację R za pomocą następującej instrukcji SQL:
DROP R;
Częstsze niż usuwanie relacji ze schematu są sytuacje, kiedy trzeba zmieniać schemat istniejącej relacji. Wówczas stosuje się instrukcję SQL, która zaczyna się od słowa kluczow ego Al TER table, po którym podaje się nazwę relacji. Potem można określić jedno z kilku działań na tabelach, wśród których najważniejszymi są następujące działania:
1. ADD (dodaj), po którym występuje nazwa now ej kolumny oraz jej typ.
2. drop (usuń), po którym podaje się nazwę usuwanej kolumny.
PRZYKŁAD 5.33
Niech modyfikacja tabeli GwiazdaFilmowa polega na tym, że trzeba do niej dołączyć atrybut telefon. Posłuży do tego następująca instrukcja:
ALTER TABLE GwiazdaFilmowa ADD telefon CHAR(16);