Tworzenie tabel
Utworzyć tabelę „miasto”, posiadającą klucz główny (np. id_miasta) oraz atrybut „nazwa”.
CREATE TABLE miasto (
id_miasta INTEGER NOT NULL,
nazwa VARCHAR2(50) NOT NULL,
PRIMARY KEY (id_miasta)
);
Utworzyć tabelę „osoba” posiadającą atrybuty: nazwisko, wiek, adres oraz id_miasta, które jest kluczem obcym z tabeli miasto.
CREATE TABLE osoba (
id_osoby INTEGER PRIMARY KEY,
id_miasta INTEGER NOT NULL,
nazwisko VARCHAR2(50) NOT NULL,
adres VARCHAR2(100) NULL,
wiek INTEGER NULL,
FOREIGN KEY (id_miasta) REFERENCES Miasto
);
Modyfikowanie tabeli
Dodać pole „zawod” do tabeli osoba.
ALTER TABLE osoba
ADD (zawod VARCHAR2(20) NULL);
Wstawianie danych
Wstawić kilka przykładowych miast do tabeli „miasto”.
INSERT INTO miasto (id_miasta, nazwa)
VALUES (1, `Warszawa');
Należy pamiętać, aby wartości klucza głównego (id_miasta) były unikalne.
Wstawić kilka osób do tabeli „osoba”.
INSERT INTO osoba (id_osoby, id_miasta, nazwisko, adres, wiek, zawod)
VALUES (1, 1, `Kowalski', `Koszykowa 86', 24, `Informatyk');
Wstawić do tabeli osoba wszystkich pracowników z tabeli emp. Dla brakujących pól (wiek, id_miasta, adres) można przyjąć stałą wartość dla wszystkich rekordów lub wartość NULL.
INSERT INTO osoba (id_osoby, id_miasta, nazwisko, adres, wiek, zawod)
SELECT empno, 1, ename, NULL, 30, job FROM emp;
Modyfikacja danych
Zmienić dowolnie wiek oraz adres osobom, które mają mniej niż 30 lat.
UPDATE osoba
SET wiek = 50,
adres = `Nowogrodzka 100'
WHERE wiek < 30;
Perspektywy
Utworzyć perspektywę „niepełnoletni”, wybierającą osoby mające mniej niż 18 lat.
CREATE VIEW niepelnoletni AS
SELECT id_miasta, nazwisko, adres, wiek, zawod
FROM osoba;
Sprawdzić działanie tej perspektywy wybierając z niej dane i przeprowadzając modyfikację danych.
SELECT * FROM niepelnoletni;
UPDATE niepelnoletni
SET adres = `aaa';
Usuwanie danych
Usunąć wszystkie osoby, których nazwisko zaczyna się na literę P.
DELETE FROM osoba
WHERE nazwisko LIKE `P%';
Perspektywa WITH CHECK OPTION
Utworzyć perspektywę zwracającą wszystkich pracowników zarabiających powyżej 1000 z użyciem opcji WITH CHECK OPTION. Sprawdzić, czy da się zmniejszyć pensję o 400 i czy da się zwiększyć pensję o dowolną wartość.
CREATE VIEW bogaci AS
SELECT * FROM emp WHERE sal > 1000
WITH CHECK OPTION;
UPDATE bogaci SET sal = sal - 400;
UPDATE bogaci SET sal = sal + 400;
UNIQUE
Do tabeli „osoba” dodać pole „PESEL” z opcją UNIQUE. Sprawdzić wstawiając kilka rekordów, czy unikalność numerów PESEL będzie rzeczywiście sprawdzana.
ALTER TABLE osoba ADD (PESEL VARCHAR2(11) UNIQUE);
CHECK
Do tabeli „osoba” dodać warunek CHECK, który będzie pilnował, aby wiek nie był większy nić 120. Czy da się wstawić osobę starszą niż 120 lat?
ALTER TABLE osoba ADD (CHECK (wiek<=120));
Usuwanie obiektów bazy danych
Usunąć obie stworzone tabele oraz perspektywę.
DROP VIEW niepelnoletni;
DROP VIEW bogaci;
DROP TABLE osoba;
DROP TABLE miasto;
Ważne jest, aby usuwać tabele w takiej kolejności, ponieważ nie można usunąć tabeli miasto, dopóki są jakieś powiązane rekordy w tabeli osoba.