DDL, Definionwanie schematu bazy danych
Tworzenie relacji przez podzapytanie.
Wynik zapytania można zmaterializowac w postaci relacji.
- Nowa relacja składa sie z atrybutów wymienionych w klauzuli SELECT zapytania;
- Jesli podano list nazw atrybutów nowej relacji to lista atrybutów w klauzuli SELECT zapytania musi sie pokrywac z ta lista;
Przykład.
CREATE TABLE roczne_place (nazwisko NOT NULL, etat, roczne) AS SELECT nazwisko, etat, 12*placa_pod + NVL(placa_dod, 0) FROM pracownicy;
Modyfikowanie schematu relacji.
Dodawanie nowych atrybutów i ograniczen;
ALTER TABLE nazwa_relacji ADD [ nazwa typ(rozmiar) [DEFAULT wartosc] ograniczenia | CONSTRAINT nazwa typ ograniczenie ];
Modyfikowanie istniejacych atrybutów;
ALTER TABLE nazwa_relacji MODIFY ( nazwa typ(rozmiar) [DEFAULT wartosc] [ NOT NULL ]);
Usuwanie atrybutów i ograniczen;
ALTER TABLE nazwa_relacji DROP [ COLUMN (nazwa) | CONSTRAINT ( nazwa ) ];
Zarzadzanie ograniczeniami integralnosciowymi.
Właczanie ograniczenia integralnosciowego;
ALTER TABLE relacja ENABLE [CONSTRAINT nazwa | rodzaj]; ALTER TABLE pracownicy ENABLE CONSTRAINT prac_fk;
Wyłaczenie ograniczenia integralnosciowego;
ALTER TABLE relacja DISABLE [CONSTRAINT nazwa | rodzaj]; ALTER TABLE pracownicy DISABLE PRIMARY KEY;
Zmiana nazwy relacji, usuwanie relacji.
Zmiana nazwy istniejacej relacji
RENAME stara_nazwa TO nowa_nazwa;
Dodanie komentarza do relacji;
COMMENT ON TABLE relacja IS ?komentarz?; COMMENT ON COLUMN relacja.atrybut IS ?komentarz?;
Usuniecie relacji;
DROP TABLE nazwa_relacji [ CASCADE CONSTRAINTS];
- wszystkie dane sa usuwane z relacji;
- wszystkie indeksy założone na relacji sa usuwane;
- jeżeli nie podano CASCADE CONSTRAINT to polecenie może zakonczyc sie błedem (jesli istnieja relacje zależne)