Bazy danych I: ćwiczenia z języka SQL |
Rys.1. Struktura relacji do ćwiczeń
Rys. 2. Zawartość relacji do ćwiczeń
Tworzenie relacji |
Wyświetl strukturę relacji FILMY.
Table "public.filmy"
Column | Type | Modifiers
---------------+-----------------------+-----------
id_filmu | integer |
tytul | character varying(40) |
rok_produkcji | integer |
cena | real |
Utwórz relację KSIAZKI o następującej strukturze:
ID_KSIAZKI - liczba całkowita
TYTUL - łańcuch znakowy, maksymalnie 30 znaków (zmienna dł.)
AUTOR - łańcuch znakowy, maksymalnie 30 znaków (zmienna dł.)
ROK_WYDANIA - liczba całkowita
Wstaw dwie nowe krotki do relacji KSIAZKI.
id_ksiazki | tytul | autor | rok_wydania
------------+-------------+--------------------+-------------
1 | Pan Tadeusz | Adam Mickiewicz | 1995
2 | Krzyzacy | Henryk Sienkiewicz | 1990
(2 rows)
Wyświetl strukturę relacji KSIAZKI.
Table "public.ksiazki"
Column | Type | Modifiers
-------------+-----------------------+-----------
id_ksiazki | integer |
tytul | character varying(30) |
autor | character varying(30) |
rok_wydania | integer |
Usuń relację KSIAZKI.
Ograniczenia integralnościowe |
Utwórz relację OSOBY o następującej strukturze:
PESEL łańcuch znakowy 11-znakowy (stała dł.)
IMIE łańcuch znakowy 15-znakowy (zmienna dł.)
NAZWISKO łańcuch znakowy 15-znakowy (zmienna dł.)
DATA_URODZENIA data
Ponadto, podczas tworzenia nowej relacji zdefiniuj następujące ograniczenia integralnościowe:
PESEL musi liczyć dokładnie 11 znaków
pierwsze dwie cyfry numeru PESEL muszą być takie same, jak ostatnie dwie cyfry roku w atrybucie DATA_URODZENIA
kolejne dwie cyfry numery PESEL muszą być takie same, jak numer miesiąca w atrybucie DATA_URODZENIA
kolejne dwie cyfry numeru PESEL muszą być takie same, jak numer dnia w atrybucie DATA_URODZENIA
atrybut PESEL jest kluczem głównym relacji
atrybuty IMIĘ i NAZWISKO muszą być wypełnione (niepuste)
Do relacji OSOBY wstaw następujące krotki. Czy operacje się powiodły? Dlaczego?
`39090100001','Jan','Kowalski','1939-09-01'
`750218','Adam','Nowak','1975-02-18'
`75021800123','Adam','Nowak','1975-02-20'
`75021800123','Adam','Nowak','1975-02-18'
Utwórz relację FAKTURY o następującej strukturze:
NUMER liczba całkowita, generowana automatycznie, klucz główny
PESEL łańcuch znakowy 11-znakowy, klucz obcy do relacji OSOBY
KWOTA liczba rzeczywista 8-cyfrowa, 2 cyfry po przecinku, większa od zera
Do relacji FAKTURY wstaw następujące krotki. Czy operacje się powiodły? Dlaczego?
PESEL='39090100001', KWOTA=123.45
PESEL='39090199999', KWOTA=678.90
PESEL='39090100001', KWOTA=1234567890
PESEL=`75021800123'
NUMER=1, PESEL='39090100001', KWOTA=123.45
Wyświetl pełną zawartość relacji FAKTURY.
numer | pesel | kwota
-------+-------------+-------
1 | 39090100001 | 123.5
2 | 75021800123 |
(2 rows)
Wyświetl numery faktur i figurujące na nich kwoty. W przypadku braku kwoty faktury wyświetl 0.
numer | kwota
-------+----------
1 | 123.5
2 | 0
(2 rows)
Wyświetl numery faktur i numery PESEL dla tych faktur, na których zabrakło kwoty.
numer | pesel
-------+------------
2 | 75021800123
(1 rows)
Z relacji OSOBY usuń krotkę opisującą osobę o imieniu `Jan'. Co się stało? Dlaczego?
W relacji FAKTURY w dowolny sposób zmodyfikuj numer PESEL osoby o imieniu `Jan'. Co się stało? Dlaczego?
Usuń relację OSOBY.
Usuń relację FAKTURY.
Utwórz relację MOJE_FILMY o takiej samej strukturze jak istniejąca relacja FILMY.
Z relacji FILMY przekopiuj do relacji MOJE_FILMY te krotki, które dotyczą filmów wyprodukowanych przed rokiem 1990.
baza1=# SELECT * FROM MOJE_FILMY;
id_filmu | tytul | rok_produkcji | cena
----------+--------------+---------------+------
2 | Ghostbusters | 1984 | 5.5
3 | Terminator | 1984 | 8.5
5 | Pluton | 1986 | 5
6 | Frantic | 1988 | 8.5
4 | Taksowkarz | 1976 | 5.5
(5 rows)
Usuń relację FILMY.
4