Tworzenie tabel

  1. 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)
    );

  2. 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

  1. Dodać pole „zawod” do tabeli osoba.
    ALTER TABLE osoba
    ADD (zawod VARCHAR2(20) NULL);

Wstawianie danych

  1. 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.

  2. 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');

  3. 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

  1. 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

  1. 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

  1. Usunąć wszystkie osoby, których nazwisko zaczyna się na literę P.
    DELETE FROM osoba
    WHERE nazwisko LIKE `P%';

Perspektywa WITH CHECK OPTION

  1. 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

  1. 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

  1. 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

  1. 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.