BD-1st-2.4-lab7.tresc-1.1-Slajd5
Tworzenie relacji
Nowe relacje tworzy się za pomocą polecenia CREATE TABLE, za którym podaje się nazwę relacji i listę atrybutów tej relacji. Listę atrybutów tworzy się wymieniając po przecinku wyrażenia złożone z nazwy atrybutu, jego typu i rozmiaru typu oraz opcjonalnie domyślnej wartości atrybutu. Domyślna wartość jest wstawiana do relacji w sytuacji, gdy nie podano w poleceniu INSERT wartości dla wszystkich atrybutów. Na slajdzie pokazano ogólną składnię polecenia CREATE TABLE (1). Przykład (2) zawiera polecenie tworzące relację PROJEKTY zawierającą atrybuty NAZWA, BUDZET i TERMIN_ZAK. Atrybut NAZWA reprezentuje nazwę projektu i jest typu łańcuchowego o maksymalnym rozmiarze 100 (typy zostaną dokładniej opisane na następnych slajdach). Atrybut BUDZET reprezentuje budżet projektu i jest typu liczbowego. Domyślną wartością tego atrybutu jest 200000. Atrybut TERMIN_ZAK reprezentuje termin zakończenia projektu, a domyślną wartością tego atrybutu jest wartość wyrażenia SYSDATE + INTERVAL '5-6' YEAR (1) TO MONTH, które oznacza datę systemową w momencie wstawiania krotki powiększoną o 5 lat i 6 miesięcy. Przykładowe polecenia wykorzystujące wartości domyślne dla atrybutów wyglądają następująco:
INSERT INTO projekty(nazwa) VALUES (‘System informatyczny dziekanatu’);
Polecenie to spowoduje wstawienie do relacji PROJEKTY projektu o nazwie „System informatyczny dziekanatu”, o budżecie 200000 zł i terminie zakończenia za pięć i pół roku od daty wstawienia krotki.
INSERT INTO projekty(nazwa, budzet) VALUES (‘System informatyczny dziekanatu’,100000);
Polecenie to spowoduje wstawienie do relacji PROJEKTY projektu o nazwie „System informatyczny dziekanatu”, o budżecie 100000 zł (podana wartość „nadpisuje” wartość domyślną) i terminie zakończenia za pięć i pół roku od daty wstawienia krotki.
Należy tutaj zwrócić uwagę na jeszcze jeden fakt. Otóż w niektórych SZBD wykonanie dowolnego polecenia DDL (w tym i CREATE TABLE) wiąże się z niejawnym wykonaniem zatwierdzenia wszystkich zmian (COMMIT). W konsekwencji nie jest możliwe wycofanie poleceń DDL. Jest tak np. w SZBD Oracle, natomiast w DB2 możliwe jest wycofywanie np. polecenia tworzącego relację.