D D L S Q L Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?
D D L S Q L - p o d s t a w y DDL SQL (Data Definition Language) Jest to zbiór instrukcji i definicji danych, którym posługujemy się podczas pracy z bazami danych SQL. W DDL mamy do czynienia z kilkoma podstawowymi instrukcjami: CREATE DOMAIN CREATE TABLE (tworzenie) ALTER DOMAIN ALTER TABLE (edycja) DROP DOMAIN DROP TABLE (usuwanie) Teraz zajmiemy się pokrótce opisem każdej z w/w instrukcji.
D D L S Q L - C R E A T E D O M A I N CREATE DOMAIN w wolnym tłumaczeniu stwórz dziedzinę Na poziomie dziedzin w SQL możemy definiować: a) typy danych, b) definicje wielkości domyślnych, c) więzy integralności. Dziedziny w SQL służą do określania prostych typów danych. Raz określona dziedzina może być wykorzystana w wielu kolumn w różnych tabelach bazowych (podstawowa). Dziedzinę można porównać do pewnej klasy określającej grupę typów danych przypisujących tym typom pewne charakterystyczny cechy.
D D L S Q L - C R E A T E D O M A I N c d. Składnia dziedziny w SQL jest następująca: CREATE DOMAIN nazwa_dziedziny typ_danych [definicja_warto ści_domyślnej] [lista_definicji_wi ęzów_dziedzin]; Uwaga: wyrażenia zawarte w nawiasach [ ] są opcjonalne. Przykład: CREATE DOMAIN COLOR CHAR(6); Nazwa dziedziny to color, typ zmiennej to char (character).
D D L S Q L - C R E A T E D O M A I N c d. Ad. a) typy danych są to wartości, które charakteryzują rodzaj danych wprowadzanych do bazy (liczbowe, literowe, logiczne itd.) CHARACTER [ VARYING ] (n) INTEGER DATE BIT [ VARYING ] (n) SMALLINT TIME NUMERIC (p,q) FLOAT (p) TIMESTAMP DECIMAL (p,q) INTERVAL
D D L S Q L - C R E A T E D O M A I N c d. Ad. b) Definiowanie wartości domyślnych jest to opcja, dzięki której niekreślonym wartością (np. INTEGER) jest przypisywana pewna wartość DEFAULT. Postać takiego odwołania jest następująca: CREATE DOMAIN COLOR CHAR(6) DEFAULT '???'
D D L S Q L - C R E A T E D O M A I N c d. Ad. c) Więzy integralności jest to lista opcji, które są przypisane zadeklarowanemu wcześniej typowi danych. Jest to pewien zbiór więzów (constrainst) integralności. Lista taka w deklaracji dziedziny wygląda następująco: CREATE DOMAIN COLOR CHAR(6) DEFAULT '???' CONSTRAINT VALID_COLOR CHECK ( VALUE IN ( 'Red', 'Yellow', 'Blue', 'Green', '???' ) );
zostanie dodana do komórki tabeli. DDL SQL - CREATE TABLE Polecenie to odnosi się do tworzenie tabeli podstawowej P. Jest to tabela części, która mieć postać następującą: CREATE TABLE P (...,COLOR COLOR,...) ; Jeżeli wstawiając do tabeli P wiersz i nie podamy dla kolumny COLOR wartości w/w wiersza zostanie wstawiona w tym miejscu wartość domyślna określona w dziedzinie opisującej tą kolumnę (DEFAULT '???'). Natomiast jeśli będziemy starali się umieścić wartość różną od zadeklarowanych w dziedzinie wywołamy wyświetlenie komunikatu o zaistniałym błędzie (VALID_COLOR) i jednocześnie wartość ta nie
DDL SQL - CREATE TABLE cd. Składnia polecenia CREATE TABLE: CREATE TABLE nazwa_tabeli (lista_elementów_tabeli); Opisywane polecenie odnosi się tylko do tzw. tabeli bazowych. W definicji tej obowiązkowe jest określenie przynajmniej jednego elementu tabeli. Elementem tabeli może być: definicja kolumny, definicja więzów tabeli.
DDL SQL - CREATE TABLE cd. Element ten definiujemy w następujący sposób: nazwa_kolumny reprezentacja [def_wartości_domy ślnej] Przez reprezentację rozumie się typ danych lub dziedzinę. Def. wartości domyślnej jest jak widać opcjonalna. Jeżeli nie określimy wartości domyślnej podczas tworzenia kolumny oraz nie zostanie ona określona na poziomie dziedziny wówczas zakłada się, że wartość domyślna jest równa NULL.
DDL SQL - CREATE TABLE cd. Definicje więzów tabeli dzielimy na trze grupy: definicja klucza kandydującego, definicja klucza obcego, definicja warunku do sprawdzenia Klucz kandydujący ma następującą konstrukcję: UNIQUE ( przecinkowa_lista_kolumn ) PRIMERY KEY ( przecinkowa_lista_kolumn ) W obu przypadkach przecinkowa lista kolumn nie może być pusta. Można określić definicję najwyżej jednego klucza PRIMERY KEY, ale za to kluczy typu UNIQUE można określać dowolną ilość.
DDL SQL - CREATE TABLE cd. Klucz obcy jego definicja ma następującą postać: FOREIGN KEY (przecinkowa_lista_kolumn) REFERENCES tabela_bazowa [(przecinkowa_lista_kolumn)] [ON DELETE opcja] [ON UPDATE opcja] Warunek do sprawdzenia jest to warunek następującej postaci: CHECK ( wyrażenie_warunkowe ) Na przykład jeżeli będziemy mieli tabelą X, w której będzie określony warunek CHECK, taki że w pewnej kolumnie nie może występować wartość NULL i użytkownik pozostawi w/w wartość nieedytowaną system nie dopuści do zatwierdzenia takiej zmiany.
DDL SQL - CREATE TABLE cd. Przykładowa tabela: CREATE TABLE SP( S# S# NOT NULL, P# P# NOT NULL, QTY QTY NOT NULL PRIMARY KEY (S#, P# ), FOREIGN KEY ( S# ) REFERENCES S ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY ( P# ) REFERENCES P ON DELETE CASCADE ON UPDATE CASCADE, CHECK (QTY > 0 AND QTY <5001 ) ); S#, P# oraz QTY są to wcześniej zdefiniowane dziedziny. W sposób jawny przedstawiono S i P jako klucze główne. W zapisie zastosowano również NOT NULL. Można to zastąpić: CHECK (nazwa_kolumny IS NOT NULL)
DDL SQL - ALTER TABLE Jeżeli stworzyliśmy sobie jakąś tabele o nazwie S to dzięki poleceniu ALTER TABLE możemy ją w edytować w każdej chwili. Składnia tego polecenia jest następująca: ALTER TABLE (operacja_na_tabeli) nazwa_tabeli (opcje); Najprościej będzie poprzeć to przykładem: ALTER TABLE S ADD COLUMN RABAT INTEGER DEFAULT -1; do tabeli S dodano kolumnę RABAT o wartościach typy INTEGER i ustawiono wartość domyślną na 1.
DDL SQL - ALTER TABLE cd. Polecenie ALTER TABLE dopuszcza następujące zmiany: dodawanie/usuwanie kolumny, definiowanie wartości (dodawanie/usuwanie) domyślnej kolumny (zastąpienie lub przypisanie wartości), określenie/usunięcie warunku integralności dla tabeli bazowej.
DDL SQL - DROP TABLE Jeżeli zaistnieje potrzeba usunięcia którejś z tabel można to w prosty sposób wykonać za pomocą polecenia: DROP TABLE Składnia tego polecenia jest następująca: DROP TABLE nazwa_tabeli_bazowej opcja ; Opcja w tej składni może przybierać następujące wartości: RESTRICT jeżeli usuwana tabela jest użyta w jakiejkolwiek definicji perspektywy lub więzach integralności to polecenie DROP nie zakończy się powodzeniem, CASCADE niezależnie od powiązań usuwanej tabeli zostanie ona usunięta wraz z wpisami odwołującymi się do niej (definicje perspektyw oraz więzy integralności). ~the end~