Sekcja: Relacyjne bazy danych
1. Geneza relacyjnych baz danych
Pochodzący z Wielkiej Brytanii Edgar F. Codd studiował na Oxford University i uzyskał
dyplomy na wydziałach matematyki i chemii. W 1948 roku przeniósł się do USA. Jako
matematyk-programista rozpoczął pracę w IBM. Uczestniczył w projektach wielu ważnych
produktów firmy, w tym przy opracowaniu pierwszego komercyjnego komputera IBM 701 i
maszyny Stretch, której rozwiązania technologiczne legły u podstaw wszystkich komputerów
mainframe IBM.
Niezwykłość relacyjnego modelu danych polega na tym, że swoje powstanie zawdzięcza
głównie jednej osobie dr E. F. Coddowi. W 1970 r. dr E. F. Codd opublikował pracę, która
położyła fundament pod najbardziej popularny ze współczesnych modeli danych. Od 1968 do
1988 r. dr Codd opublikował ponad 30 prac na temat relacyjnego modelu danych. Dr Codd
traktował swoje prace wydane przed 1979 r.jako pierwszą wersję relacyjnego modelu danych.
Na początku 1979 r. na konferencji Australian Computer Society w miejscowości Hobert w
Tasmanii Codd przedstawił pracę pod tytułem Extending the relational database model to
capture more meaning. Rozszerzoną wersję relacyjnego modelu danych, którą sformułował w
swojej pracy, Codd nazwał RM/T (T od Tasmania). Edgar F. Codd do końca życia zajmował
się teoretycznymi podstawami informatyki. Jest między innymi twórcą - opatentowanego
wspólnie z żoną Sharon Weinberg - systemu Enterprise Delta, relacyjnego modelu
zarządzania regułami biznesowymi.
Edgar F. Codd zmarł w 2003 r., był pionierem i twórcą teoretycznych podstaw baz danych.
Jego relacyjny model baz danych stanowi obecnie podstawę rozwoju jednej z
najważniejszych branż przemysłu informatycznego, której wartość jest szacowana na ponad 7
miliardów dolarów rocznie. Obsługa kont bankowych, kart kredytowych, sprzedaż towarów
przez Internet, systemów rezerwacji biletów i innych form operacji transakcyjnych opiera się
na opracowanym przez Edgara F. Codda, wysoce abstrakcyjnym i złożonym modelu
matematycznym.
2. Cele relacyjnych baz danych
Wcześniejsze modele danych traktowały dane w niezdyscyplinowany sposób. Model
relacyjny, przy użyciu ścisłych narzędzi matematycznych, zwłaszcza teorii zbiorów,
wprowadza zdyscyplinowany sposób posługiwania się danymi. Dr Codd oczekiwał, że w
wyniku stosowania ścisłych metod zostaną osiągnięte dwie podstawowe korzyści: po
pierwsze, zostanie poprawiony możliwy do uzyskania poziom niezależności między
programami a danymi. po drugie, wzrośnie wydajność tworzenia oprogramowania.
3. Definicja danych
Baza danych jest faktycznie zbiorem struktur danych służących do organizowania i
przechowywania danych. W każdym modelu danych i w konsekwencji w każdym DBMS
(System Zarządzania Bazą Danych) musimy mieć do dyspozycji zbiór reguł określających
wykorzystanie takich struktur danych w aplikacjach baz danych. Tworząc definicję danych
używamy wewnętrznych struktur danych modelu danych z myślą o konkretnym zadaniu.
4. Tabela klucz główny (primary key).
Każda tabela w bazie powinna zawierać klucz główny. Klucz główny to kolumna lub grupa
kolumn, która w jednoznaczny sposób identyfikuje wiersz w tabeli. Na przykład dla tabeli
MIEJSCA kluczem głównym może być pole NR_M (numer miejsca). Klucz główny
zapobiega wstawianiu dwóch identycznych wierszy do tabeli.
CREATE TABLE MIEJSCA
(
NR_M INTEGER PRIMARY KEY,
ULICA VARCHAR(24) NOT NULL,
NUMER CHAR(8) NOT NULL,
MIASTO VARCHAR(24) NOT NULL,
KOD CHAR(6) NOT NULL,
TELEFON CHAR(16),
UWAGI VARCHAR(40),
);
Przykład 4: Tabela klucz główny (primary key).
5. Tabela klucz obcy (foreign key).
Klucz obcy to jedna lub więcej kolumn tabeli odwołujących się do klucza głównego w innej
tabeli. Klucze obce są wykorzystywane do utrzymywania integralności referencyjnej w bazie
danych. Tworząc klucz obcy, definiujemy związek między tabelą klucza głównego i tabelą
klucza obcego. Związek taki powstaje podczas złączenia kolumn takich samych typów
danych z każdej tabeli. Złączanie tabel przez odpowiednie kolumny chroni dane z tabeli
klucza obcego przed osieroceniem jakie mogłoby nastąpić w wyniku usunięcia
odpowiadających im danych z tabeli klucza głównego
CREATE TABLE PRACOWNICY
(
NR_P INTEGER
IMIE VARCHAR(20) NOT NULL,
NAZWISKO VARCHAR(20) NOT NULL,
DATA_ZATR DATE NOT NULL,
DZIAL VARCHAR(20) NOT NULL,
STANOWISKO VARCHAR(20) NOT NULL,
PENSJA DECIMAL(8,2),
DODATEK DECIMAL(8,2),
NR_M VARCHAR(4),
TELEFON CHAR(16),
CONSTRAINT NR_P_PK PRIMARY KEY (NR_P)
CONSTRAINT NR_M_FK FOREIGN KEY (NR_M) REFERENCES MIEJSCA(NR_M)
);
Przykład 5: Tabela klucz obcy (foreign key).
Sekcja: Język SQL - tabele
6. Definicja tabeli klienci w języku SQL
Tabelę w języku SQL definiujemy za pomocą instrukcji CREATE TABLE(). Pomiędzy
nawiasami znajdują opisy kolumn tabeli oraz ograniczenia. każda kolumna musi mieć
unikalną nazwę, typ danych, oraz pewne właściwości nazywane ograniczeniami.
Ograniczenia nienazwane mogą być w każdej kolumnie zaś nazwane na końcu definicji.
Przykładowe typy danych: integer definiujący liczby całkowite, character varying definiujący
pole tekstowe o zmiennej długości, character definiujący pola tekstowe o stałej długości.
Ograniczenie NOT NULL określa, że dane pole nie może być puste. Nazwane ograniczenie
CONSTRAINT x1 określa że kolumna (nr_klienta) jest tzw. kluczem głównym PRIMARY
KEY. Ponieważ wartości klucza głównego nie mogą się powtarzać, więc dzięki temu nigdy
nie zdarzy się, że będą takie same rekordy w tabeli.
CREATE TABLE klienci
(
nr_klienta integer NOT NULL,
imie character varying(20) NOT NULL,
nazwisko character varying(20) NOT NULL,
karta character(20),
firma character varying(40),
ulica character varying(20) NOT NULL,
dom character(8) NOT NULL,
miasto character varying(20) NOT NULL,
kod character(6) NOT NULL,
nip character(12),
tel character(16),
CONSTRAINT x1 PRIMARY KEY (nr_klienta)
)
Przykład 6: Definicja tabeli klienci w języku SQL
7. Definicja tabeli samochody w języku SQL
Poniższy przykład przedstawia definicję tabeli samochody w języku SQL.
CREATE TABLE samochody
(
nr_samochodu integer NOT NULL,
marka character varying(20) NOT NULL,
model character varying(16) NOT NULL,
rok_produkcji date NOT NULL,
kolor character varying(16) NOT NULL,
poj_silnika smallint NOT NULL,
przebieg integer NOT NULL,
CONSTRAINT x2 PRIMARY KEY (nr_samochodu)
)
Przykład 7: Definicja tabeli samochody w języku SQL
8. Definicja tabeli miejsca w języku SQL
Poniższy przykład przedstawia definicję tabeli miejsca w języku SQL. Pojawia się tutaj
dodatkowy typ danych text. Jest to nieograniczony ciąg znaków nie wymagający podania
długości.
CREATE TABLE miejsca
(
nr_miejsca integer NOT NULL,
ulica character varying(20) NOT NULL,
dom character(8) NOT NULL,
miasto character varying(20) NOT NULL,
kod character(6) NOT NULL,
tel character(16),
uwagi text,
CONSTRAINT x3 PRIMARY KEY (nr_miejsca)
)
Przykład 8: Definicja tabeli miejsca w języku SQL
9. Definicja tabeli pracownicy w języku SQL
Poniższy przykład przedstawia definicję tabeli pracownicy w języku SQL. Pojawia się w nim
drugi rodzaj ograniczenia nazwanego CONSTRAINT x5 FOREIGN KEY (nr_miejsca)
REFERENCES miejsca (nr_miejsca). Ograniczenie to określa, że pole (nr_miejsca) jest tzw.
kluczem obcym z tabeli miejsca. Oznacza to że w tej kolumnie mogą się znajdować jedynie
wartości klucza głównego (nr_miejsca) z tabeli miejsca.
CREATE TABLE pracownicy
(
nr_prac integer NOT NULL,
imie character varying(20) NOT NULL,
nazwisko character varying(20) NOT NULL,
data_zatr date NOT NULL,
dzial character varying(20) NOT NULL,
stanowisko character varying(20) NOT NULL,
pensja real,
dodatek real,
nr_miejsca integer,
tel character(16),
CONSTRAINT x4 PRIMARY KEY (nr_prac),
CONSTRAINT x5 FOREIGN KEY (nr_miejsca)
REFERENCES miejsca (nr_miejsca) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
Przykład 9: Definicja tabeli pracownicy w języku SQL
10. Definicja tabeli wypozyczenia w języku SQL
Poniższy przykład przedstawia definicję tabeli pracownicy w języku SQL. W tabeli pojawia
się typ danych date służący do przechowywania danych w postaci daty. Drugim typem
danych jest real służący do przechowywania liczb rzeczywistych.
CREATE TABLE wypozyczenia
(
nr_wypozyczenia integer NOT NULL,
nr_klienta integer,
nr_samochodu integer,
nr_prac_wyd integer,
nr_prac_odd integer,
nr_miejsca_wyd integer,
nr_miejsca_odd integer,
data_wyd date NOT NULL,
data_odd date,
kaucja real,
cena_jedn real NOT NULL,
CONSTRAINT x6 PRIMARY KEY (nr_wypozyczenia),
CONSTRAINT x7 FOREIGN KEY (nr_klienta)
REFERENCES klienci (nr_klienta) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT x8 FOREIGN KEY (nr_samochodu)
REFERENCES samochody (nr_samochodu) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT x9 FOREIGN KEY (nr_prac_wyd)
REFERENCES pracownicy (nr_prac) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
Przykład 5: Definicja tabeli wypozyczenia w języku SQL
Sekcja: Język SQL
11. Struktura polecenia SELECT
Zapytania SQL - Struktura polecenia SELECT. Każde polecenie SELECT musi posiadać
klauzulę SELECT oraz FROM, pozostałe klauzule są opcjonalne
SELECT opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje
FROM nazwy tabel lub widoków
WHERE warunek (wybieranie wierszy)
GROUP BY - nazwy kolumn
HAVING - warunek (grupowanie wybieranych wierszy)
ORDER BY nazwy kolumn lub pozycje kolumn
Przykład 11: Struktura polecenia SELECT
12. Wybieranie wszystkich kolumn
Wybieranie wszystkich kolumn i wierszy ma sens tylko w przypadku malych tabel. Symbol
gwiazdki oznacza, że wybieramy wszystkie kolumny.
Zobacz jak działa!
SELECT * FROM pracownicy;
Przykład 11: Wybieranie wszystkich kolumn z tabeli
13. Wybieranie określonych kolumn z tabeli
Wybieranie trzech wskazanych kolumn z tabeli pracownicy. Nazwy kolumn muszą być
rozdzielone przecinkami.
Zobacz jak działa!
SELECT imie, nazwisko, dzial
FROM pracownicy;
Przykład 3: Wybieranie określonych kolumn z tabeli
14. Porządkowanie wybieranych rekordów
Wynik uporządkowany jest wg nazwisk alfabetycznie. Klauzula ORDER BY domyślnie
porządkuje tabele wynikową w kierunku "wartości rosnących". Opcja domyślna klauzuli
ASC. Opcja klauzuli powodująca uporządkowanie w kierunku "wartości malejących" to
DESC.
Zobacz jak działa!
SELECT imie, nazwisko, dzial
FROM pracownicy
ORDER BY nazwisko ASC;
Przykład 14: Porządkowanie wybieranych rekordów
15. Porządkowanie wybieranych rekordów cd
Istnieje inny sposób na wskazanie kolumn w klauzuli ORDER BY. Zamiast nazywać
kolumny, możemy je wskazać poprzez ich pozycję na liście SELECT. Inne przykłady:
ORDER BY 3 ASC, nazwisko asc; ORDER BY 3 ASC, 2 ASC, dzial ASC;
Zobacz jak działa!
SELECT imie, nazwisko, stanowisko, dzial
FROM pracownicy
ORDER BY 3 ASC, 2 ASC;
Przykład 15: Porządkowanie wybieranych rekordów cd
16. Wycinanie duplikatów
Słowo kluczowe DISTINCT zapewnia, ze wynik zwrócony z zapytania zawierać będzie tylko
niepowtarzajace się wiersze. Wszystkie powtarzające się wartości nie zostaną wyświetlone.
Zobacz jak działa!
SELECT DISTINCT stanowisko FROM pracownicy;
Przykład 16: Wycinanie duplikatów
Sekcja: Język SQL
17. Klauzula WHERE - typ znakowy
Klauzula WHERE służy do wyboru tych rekordów które spełniają określony warunek. W
naszym przypadku wybieramy sprzedawców z tabeli pracownicy. W przypadku kolumn typu
znakowego, daty lub czasu, wartości dla których sprawdzany jest warunek musza być
otoczone pojedynczymi apostrofami. Przy porównaniu kolumn typu znakowego należy
pamiętać, ze rozróżniane są małe i duże litery.
Zobacz jak działa!
SELECT imie, nazwisko, stanowisko, dzial
FROM pracownicy
WHERE stanowisko = 'Sprzedawca';
Przykład 17: Klauzula WHERE - typ znakowy
18. Klauzula WHERE - typ liczbowy
Dla kolumn typu numerycznego FLOAT, porównywana wartość liczbowa nie jest otoczona
apostrofami - umożliwiając wykorzystanie następujących operatorów: równości, nierówności,
większości, nie mniejszości, mniejszości, nie większości. Uwaga: w PostgreSQL operatory
powyższe nie są określone dla formatów: INT i MONEY.
Zobacz jak działa!
SELECT imie, nazwisko, stanowisko, pensja
FROM pracownicy
WHERE pensja> 1400;
Przykład 18: Wybieranie wszystkich kolumn z tabeli
19. Operatory logiczne występujące w warunkach - AND
W warunkach logicznych występujących po klauzuli WHERE możemy używać operatorów
logicznych AND, OR i NOT. Użycie w warunku WHERE operatora logicznego AND
oznacza, ze prawdziwe muszą być oba argumenty operatora logicznego AND, Aby wynik
operacji logicznej był prawdziwy. Natomiast w przypadki użycia w warunku WHERE
operatora logicznego OR oznacza, że prawdziwy musi by przynajmniej jeden z argumentów
operatora logicznego OR aby wynik był prawdziwy.
Zobacz jak działa!
SELECT imie, nazwisko, stanowisko, dzial
FROM pracownicy
WHERE stanowisko = 'Sprzedawca' AND dzial = 'Obslugi Klienta';
Przykład 19: Operatory logiczne występujące w warunkach - AND
20. Operatory logiczne występujące w warunkach - OR
Poniższa kwerenda zwraca listę wszystkich pracowników pracujących jako sprzedawcy oraz
wszystkich pracowników technicznych.
Zobacz jak działa!
SELECT imie, nazwisko, stanowisko, dzial
FROM pracownicy
WHERE stanowisko = 'Sprzedawca' OR dzial = 'Techniczny';
Przykład 20: Operatory logiczne występujące w warunkach - OR
21. Złożone operatory logiczne
Operatory logiczne AND i OR są używane do budowy bardziej złożonych warunków. W
przykładzie kwerendy pokazane zostało, ze operator AND jest mocniejszy od operatora OR.
Zobacz jak działa!
SELECT imie, nazwisko, stanowisko, dzial
FROM pracownicy
WHERE stanowisko = 'Kierownik' AND dzial = 'Obslugi Klienta' OR dzial =
'Techniczny' ORDER BY dzial, nazwisko;
Przykład 21: Złożone operatory logiczne
22. Kolejność operatorów
W poprzednim przykładzie kwerendy pokazane zostało, że operator AND jest mocniejszy od
operatora OR. Używając nawiasy w warunku WHERE możemy narzucić kolejność
sprawdzania składowych warunku.
Zobacz jak działa!
SELECT imie, nazwisko, stanowisko, dzial
FROM pracownicy
WHERE stanowisko = 'Kierownik' AND (dzial = 'Obslugi Klienta' OR dzial =
'Techniczny') ORDER BY dzial, nazwisko;
Przykład 22: Kolejność operatorów
Sekcja: Język SQL
23. Predykat IN
Predykat IN umożliwia sprawdzenie przynależności wartości atrybutu do zbioru wartości.
Wszystkie elementy zbioru musza być tego samego typu. Wartości mogą być typu
numerycznego, znakowego typu daty lub czasu. Wartości typu znakowego, daty i czasu
musza być otoczone apostrofem.
Zobacz jak działa!
SELECT imie, nazwisko, stanowisko, dzial FROM pracownicy
WHERE stanowisko IN ('Sprzedawca', 'Kierownik')
ORDER BY stanowisko ASC, dzial DESC, nazwisko ASC;
Przykład 23: Predykat IN
24. Predykat IN - wartości numeryczne
Jeśli zbiór zawiera wartości jednego z typów numerycznych, to pomijamy apostrofy.
Zobacz jak działa!
SELECT marka, model, rok_produkcji, poj_silnika
FROM samochody
WHERE poj_silnika IN (1400, 1600);
Przykład 24: Predykat IN - wartości numeryczne
25. Predykat BETWEEN AND
Predykat BETWEEN pozwala sprawdzić, czy dana wartość zawiera się pomiędzy dwoma
wskazanymi wartościami.
Zobacz jak działa!
SELECT marka, model, rok_produkcji, kolor, poj_silnika
FROM samochody
WHERE poj_silnika BETWEEN 1100 AND 1800
ORDER BY marka, model;
Przykład 25: Predykat BETWEEN AND
26. Warunki z wartością NULL
Wybieranie wierszy z tabeli, w których jedno z pól zawiera wartość pusta NULL, polega na
użyciu predykatu NULL. W przykładzie wybieramy wszystkich klientów którzy w polu karta
nie posiadają żadnego wpisu.
Zobacz jak działa!
SELECT imie, nazwisko, karta, miasto
FROM klienci
WHERE karta IS NULL;
Przykład 26: Warunki z wartością NULL
27. Warunki z wartością NOT NULL
Możliwe jest wybranie wszystkich klientów posiadających kartę kredytowa. Wtedy w
klauzuli WHERE dla sprawdzenia wartości w polu karta używamy predykatu NULL ale z
zaprzeczeniem NOT.
Zobacz jak działa!
SELECT imie, nazwisko, karta, miasto
FROM klienci
WHERE karta IS NOT NULL;
Przykład 27: Warunki z wartością NOT NULL
Sekcja: Projekt bazy danych - uczelnia.
50. Projekt tabeli miasto w SQL.
Budujemy tabelę zawierającą dane studenta niezbędne w programie. Tabela posiada
następujące atrybuty:
nr, nazwa. Atrybut nr jest kluczem głównym (primary key - PK) tabeli miasto. Klucz główny
możemy deklarować na dwa sposoby: pisząc za definicją atrybutu słowo primary key, albo w
sekcji ograniczeń (constraint). Każde ograniczenie musi mieć unikalną nazwę w bazie
danych. W naszym przypadku ograniczenie nazywa się y1. Składnia ograniczenia wygląda
następująco:
constraint nazwa_ograniczenia primary key (nazwa_kolumny)
create table miasto
(
nr integer,
nazwa varchar(20),
constraint y1 primary key (nr)
);
Przykład 50: Projekt tabeli miasto w SQL.
51. Wprowadzanie danych do tabeli miasto.
Dane do tabeli wprowadzamy za pomocą instrukcji insert. Instrukcja posiada następującą
składnię:
insert into nazwa_tabeli [(atrybut1,...,atrybutn)] values(wartość1,...,wartośćn);
Jeśli wprowadzamy wszystkie atrybuty to nazwy atrybutów można opuścić.
insert into miasto (nr,nazwa) values(20,'Warszawa');
insert into miasto (nr,nazwa) values(21,'Wrocław');
insert into miasto (nr,nazwa) values(22,'Gdynia');
insert into miasto (nr,nazwa) values(23,'Kraków');
insert into miasto (nr,nazwa) values(24,'Aódz');
Przykład 51: Wprowadzanie danych do tabeli miasto.
52. Projekt tabeli student w SQL.
Tabela student zawiera następujące atrybuty: nr, imie, nazwisko, indeks, semestr, nr_miasta.
Atrybut jest kluczem głównym o czym mówi ograniczenie y2. Atrybut nr_miasta jest tzw.
kluczem obcym (foreign key - FK). Klucz obcy to wartość istniejącego klucza głównego z
tabeli słownikowej (tabeli miasto). Określa to ograniczenie y3. Składnia ograniczenia typu
klucz obcy wygląda następująco:
constraint nazwa_ograniczenia foreign key (nazwa_klucza_FK)
references nazwa_tabeli_słownikowej(nazwa_klucza_PK)
create table student
(
nr integer,
imie varchar(30),
nazwisko varchar(30),
indeks varchar(10),
semestr integer,
nr_miasta integer,
constraint y2 primary key (nr),
constraint y3 foreign key (nr_miasta) references miasto(nr)
);
Przykład 52: Projekt tabeli student w SQL.
53. Wprowadzanie danych do tabeli student.
Wprowadzając dane do tabeli student należy zwrócić uwagę aby atrybut nr_miasta wypełniać
istniejącymi wartościami kolumny (nr)czyli klucza głównego z tabeli miasto.
insert into student values(10,'Jan','Nowak','300',1,20);
insert into student values(11,'Stefan','Kowalski','301',1,21);
insert into student values(12,'Ewa','Nowak','302',1,22);
insert into student values(13,'Stefan','Szyszkownik','303',1,23);
insert into student values(14,'Roch','Kowalski','304',1,24);
Przykład 53: Wprowadzanie danych do tabeli student.
54. Wprowadzanie wartości kluczy głównych - inna metoda.
Zamiast wprowadzać wartości kluczy obcych w formie liczb, gdzie łatwo o pomyłkę możemy
wykorzystać zapytanie wybierające nazwę z tabeli słownikowej. W naszym przypadku
zamiast napisać liczbę 20 (wartość - FK) dla miasta Warszawa w tabeli miasto możemy
napisać:
(select nr from miasto where nazwa='Aódz')
insert into student values(10,'Jan','Nowak','300',1,(select nr from miasto
where nazwa='Warszawa'));
insert into student values(11,'Stefan','Kowalski','301',1,(select nr from
miasto where nazwa='Wrocław'));
insert into student values(12,'Ewa','Nowak','302',1,(select nr from miasto
where nazwa='Gdynia'));
insert into student values(13,'Stefan','Szyszkownik','303',1,(select nr
from miasto where nazwa='Kraków'));
insert into student values(14,'Roch','Kowalski','304',1,(select nr from
miasto where nazwa='Aódz'));
Przykład 54: Wprowadzanie wartości kluczy obcych - inna metoda.
55. Poprawianie danych w tabeli.
Dane w tabeli poprawiamy za pomocą instrukcji update set. Klauzula set ustawia nową
wartość atrybutów. W warunku musimy precyzyjnie określić jaki rekord (rekordy) chcemy
poprawić.
update student
set imie='Ewelina', nazwisko='Nowakowska'
where imie='Ewa' and nazwisko='Nowak';
Przykład 55: Poprawianie danych w tabeli.
Kasowanie danych w tabeli.
Dane w tabeli kasujemy instrukcją delete from. Należy zwrócić uwagę na dobranie takiego
warunku który wykasuje nam tylko te rekordy które chcemy.
delete from student where imie='Ewa' and nazwisko='Nowak';
Przykład 56: Kasowanie danych w tabeli.
Wyświetlanie danych z obu tabel.
Wyświetlanie danych z tabel student i miasto. Należy zwrócić uwagę na prawidłowo
zdefiniowany warunek złączenia.
select s.nr,s.imie,s.nazwisko,s.indeks,s.semestr,m.nazwa
from student s, miasto m
where s.nr_miasta=m.nr
order by s.nazwisko, s.imie;
Przykład 57: Wyświetlanie danych z obu tabel.
Gotowy skrypt tworzący bazę uczelnia.
Gotowy skrypt tworzący bazę danych oraz wprowadzający dane testowe. Przed pierwszym
uruchomieniem należy zaremować kasowanie tabel ponieważ nie ma ich jeszcze w bazie.
drop table student;
drop table miasto;
create table miasto
(
nr integer,
nazwa varchar(20),
constraint y1 primary key (nr)
);
insert into miasto (nr,nazwa) values(20,'Warszawa');
insert into miasto (nr,nazwa) values(21,'Wrocław');
insert into miasto (nr,nazwa) values(22,'Gdynia');
insert into miasto (nr,nazwa) values(23,'Kraków');
insert into miasto (nr,nazwa) values(24,'Aódz');
create table student
(
nr integer,
imie varchar(30),
nazwisko varchar(30),
indeks varchar(10),
semestr integer,
nr_miasta integer,
constraint y2 primary key (nr),
constraint y3 foreign key (nr_miasta) references miasto(nr)
);
insert into student values(10,'Jan','Nowak','300',1,(select nr from miasto
where nazwa='Warszawa'));
insert into student values(11,'Stefan','Kowalski','301',1,(select nr from
miasto where nazwa='Wrocław'));
insert into student values(12,'Ewa','Nowak','302',1,(select nr from miasto
where nazwa='Gdynia'));
insert into student values(13,'Stefan','Szyszkownik','303',1,(select nr
from miasto where nazwa='Kraków'));
insert into student values(14,'Roch','Kowalski','304',1,(select nr from
miasto where nazwa='Aódz'));
select s.nr,s.imie,s.nazwisko,s.indeks,s.semestr,m.nazwa
from student s, miasto m
where s.nr_miasta=m.nr;
Przykład 58: Gotowy skrypt tworzący bazę uczelnia.
Wyszukiwarka
Podobne podstrony:
Zajęcia 2 Podstawy SQL 2kurs oracle podstawy sqlpodstawy sqlPodstawy baz danych zajecia 2 z SQL Tabela BibliotekaPodstawy baz danych zajecia 3 z sqlPodstawy baz danych Zajecia 1 z SQL Tabela STUDENT07 Podstawa opodatkowania VAT 2014 zajęciaJezyk SQL podstawy zapytanPodstawy Jezyka SQLbd ii cw1 podstawy jezyka sqlPodstawy baz danych sql 19 11Podstawy baz danych 12 11 SQLSQL Server 2005 Programowanie od podstawSQL podstawyZajęcia 04 Ekspresja Emocji Podstawowychwięcej podobnych podstron