Bazy danych - Materiały do laboratoriów VIII dr inż. Olga Siedlecka-Lamch Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska 23 kwietnia 2011 roku
Polecenie COMMIT i ROLLBACK Polecenie COMMIT - polecenie zatwierdzające wprowadzone dane. Dane, które nie zostały zatwierdzone, są widoczne wyłącznie w ramach sesji (w wypadku awarii zmiany zostaną wycofane). Polecenie ROLLBACK umożliwia wycofanie niezatwierdzonych zmian w bazie danych.
Polecenie INSERT INSERT INTO {tabela perspektywa} [(atrybut1 [,...] )] {DEFAULT VALUES VALUES (wartosc1 [,...]) SELECT... }; Przykłady: INSERT INTO pracownicy VALUES (9121, KUKULSKI, DYREKTOR, 8901, To_date( 1991/04/02, yyyy/mm/dd ), NULL, 5000, 1500, NULL, 30 INSERT INTO pracownicy (nr_akt, nazwisko) VALUES (9192, KOWALSKI INSERT INTO prac_archiw SELECT * FROM pracownicy WHERE nr_akt = 9192;
Polecenie UPDATE UPDATE {tabela perspektywa} SET {{atrybut = wartosc DEFAULT NULL}, {atrybut = wartosc DEFAULT NULL},... (atr1, atr2,...) = (SELECT...)} [WHERE warunek]; Przykłady: UPDATE pracownicy SET placa = placa * 1.1; UPDATE pracownicy SET placa = placa * 1.1 WHERE nr_akt IN (SELECT kierownik FROM pracownicy UPDATE pracownicy SET placa = (SELECT Min(placa) FROM pracownicy) WHERE nr_akt = 9010;
Polecenie DELETE DELETE FROM {tabela perspektywa} [WHERE warunek]; Przykłady: DELETE FROM stanowiska; DELETE FROM pracownicy WHERE nr_akt = 9192;
DML kontra DDL DML INSERT UPDATE DELETE DDL CREATE ALTER DROP
CREATE TABLE CREATE TABLE nazwa_tabeli ( kolumna1 typ[(rozmiar)] [DEFAULT wyrazenie1] [wiezy_kolumny1], kolumna2 typ[(rozmiar)] [DEFAULT wyrazenie2] [wiezy_kolumny2],..., [wiezy_tabeli],... Np.: CREATE TABLE mieszkancy ( PESEL NUMBER(11), nazwisko VARCHAR2(30), imiona VARCHAR2(30), data_zameldowania DATE DEFAULT CURRENT_DATE
DROP TABLE Usuwanie tabeli: DROP TABLE [schemat.]nazwa_tabeli [CASCADE CONSTRAINTS];
Typy ograniczeń Typy ograniczeń: NOT NULL - wartość obowiązkowa CHECK (warunek_logiczny) - wartość spełniająca narzucony warunek UNIQUE - wartość niepowtarzalna, jednoznaczna PRIMARY KEY - klucz główny FOREIGN KEY, REFERENCES - klucz obcy
CONSTRAINT I Definicja ograniczeń inline : CREATE TABLE nazwa_tabeli ( kol1 typ[(rozmiar)] [DEFAULT wyrazenie1] [[CONSTRAINT nazwa_ogr_kolumny] { [NOT] NULL UNIQUE PRIMARY KEY REFERENCES tabela(kol1 [, kol2]...) [ON DELETE { CASCADE SET NULL }] CHECK (warunek_logiczny) } [DISABLE ENABLE]],...
CONSTRAINT II Definicja ograniczeń out of line : CREATE TABLE nazwa_tabeli (..., [[CONSTRAINT nazwa_ogr_tabeli] { UNIQUE ( kol1 [, kol2]... ) PRIMARY KEY ( kol1 [, kol2]...) FOREIGN KEY ( kol1 [, kol2]...) REFERENCES tabela(kol1 [,kol2]...) [ON DELETE { CASCADE SET NULL }] CHECK (warunek_logiczny) } [DISABLE ENABLE]],...
NOT NULL NOT NULL - dla kolumn o wartościach obowiązkowych. CREATE TABLE osoby( nazwisko VARCHAR2(30) NOT NULL, data_urodzenia DATE CONSTRAINT data_nn NOT NULL,...
CHECK CHECK - wartości kolumny dla każdego wiersza spełnią zadany warunek (warunek nie może zawierać podzapytań, ani funkcji zmiennych w czasie). CREATE TABLE osoby( nazwisko VARCHAR2(30) NOT NULL, data_urodzenia DATE CONSTRAINT data_nn NOT NULL, plec CHAR(1) CHECK (plec IN ( K, M )), wiek NUMBER(3),..., CONSTRAINT wiek_ch CHECK (wiek BETWEEN 0 AND 120)
UNIQUE UNIQUE - wartości w kolumnie będą niepowtarzalne. CREATE TABLE osoby( pesel NUMBER(11) CONSTRAINT pesel_u UNIQUE, nip NUMBER(10), nazwisko VARCHAR2(30) NOT NULL, data_urodzenia DATE CONSTRAINT data_nn NOT NULL,..., UNIQUE(nip)
PRIMARY KEY I PRIMARY KEY - więzy klucza głównego oznaczają, że kolumna/kolumny przyjmą wartości jednoznaczne i niepuste. Dla klucza głównego tworzony jest automatycznie indeks. CREATE TABLE mieszkancy( pesel NUMBER(11) PRIMARY KEY nazwisko VARCHAR2(30) NOT NULL, data_urodzenia DATE NOT NULL, nr_dokumentu VARCHAR2(20) lub:
PRIMARY KEY II CREATE TABLE mieszkancy( pesel NUMBER(11) CONSTRAINT mieszy_pk PRIMARY KEY, nazwisko VARCHAR2(30) NOT NULL, data_urodzenia DATE NOT NULL, nr_dokumentu VARCHAR2(20) CREATE TABLE mieszkancy( pesel NUMBER(11), nazwisko VARCHAR2(30) NOT NULL, data_urodzenia DATE NOT NULL, nr_dokumentu VARCHAR2(20), PRIMARY KEY (pesel) CREATE TABLE mieszkancy( pesel NUMBER(11), nazwisko VARCHAR2(30) NOT NULL, data_urodzenia DATE NOT NULL, nr_dokumentu VARCHAR2(20), CONSTRAINT mieszy_pk PRIMARY KEY (pesel)
FOREIGN KEY I FOREIGN KEY - więzy klucza obcego - wartości z kolumn klucza istnieją we wcześniej zdefiniowanym kluczu kandydującym innej lub tej samej tabeli (może przyjąć wartość pustą). CREATE TABLE rachunki( nr_rachunku NUMBER(10) PRIMARY KEY, kwota NUMBER(6,2) NOT NULL, termin DATE, odsetki NUMBER(6,2), id_mieszkania NUMBER(10) REFERENCES mieszkania(id_mieszkania) lub:
FOREIGN KEY II CREATE TABLE rachunki(..., id_mieszkania NUMBER(10) CONSTRAINT rach_fk REFERENCES mieszkania(id_mieszkania) CREATE TABLE rachunki(..., id_mieszkania NUMBER(10), FOREIGN KEY (id_mieszkania) REFERENCES mieszkania(id_mieszkania) CREATE TABLE rachunki(..., id_mieszkania NUMBER(10), CONSTRAINT rach_fk FOREIGN KEY (id_mieszkania) REFERENCES mieszkania(id_mieszkania)
FOREIGN KEY III Opcje ON DELETE SET NULL i ON DELETE CASCADE CREATE TABLE rachunki(..., id_mieszkania NUMBER(10), CONSTRAINT rach_fk FOREIGN KEY (id_mieszkania) REFERENCES mieszkania(id_mieszkania) ON DELETE SET NULL CREATE TABLE rachunki(..., id_mieszkania NUMBER(10), CONSTRAINT rach_fk FOREIGN KEY (id_mieszkania) REFERENCES mieszkania(id_mieszkania) ON DELETE CASCADE