ćw.2
typy związków , SQL
modelowanie logiczne rzeczywistości - Encje – relacje, tabele, identyfikatory unikalne,
klucze główne (podstawowe PK) - związki
modelowanie fizyczne uwzględnia specyfikę danego typu bazy
symbolikę, klucze obce FK
Modelowanie logiczne – co rozwiązać
Modelowanie fizyczne – jak rozwiązać (implementacja)
Model danych:
Diagram Związków Encji
Entity Relationship Diagram
ERD
Podstawowe pojęcia modelu:
Encja
-
rzecz, składnik badanej dziedziny, informacje o którym mają
być przechowane
Atrybut
-
cecha, własność encji lub wyrażenie związku
Związek
-
powiązanie między encjami
Model danych
Encja
(tabela) - liczba kolumn (atrybutów) ustalona.
Z kolumną (polem) jest związana jej nazwa, dziedzina, typ wartości,
Wiersz reprezentuje jeden rekord informacji (wystąpienie encji)
Kolejności wierszy (rekordów) i kolumn (pól w rekordzie) jest nieistotna
Typ danych
- forma danych jaką przyjmuje środowisko obliczeniowe. Typy
danych na ogół nie są rozpoznawane „automatycznie”, trzeba je deklarować.
Są jednym z ważnych zagadnień w informatyce. Typ własnych danych można
dopasować do oferowanego przez środowisko korzystając ze spisu typów
dostępnych
W danej kolumnie tabeli (polach) obowiązuje jednolity typ danych !
Każdy obiekt jest inny, zatem żaden wiersz tabeli nie może się
powtórzyć !
dwa wiersze muszą się różnić w choć jednym polu
Więzy
(constrains)
więzy spójności danych w tabeli - reguły wprowadzania danych do poszczególnych
tabel.
Przykłady więzów:
•ograniczenie wartości wypłaty ( < 10000) , maska telefonu ##-##-## dla nr 6 cyfrowego, data
rozpoczęcia < daty ukończenia itp.,
•dla klucza głównego wartość : NOT NULL. (W Akcess – PK to klucz podstawowy)
•wartość FK = NOT Null, (W Akcess – FK to klucz zewnętrzny)
- warunki logiczne między kolumnami
- zależności między obiektami tabeli
NULL wartość (logiczna) – dana „zastępcza” gdy
konkretna wartość nie może być wpisana (jest w danej
chwili nieznana)
więzy spójności struktury tabel, integralność referencyjna
-zmiana (zmazanie lub dopisanie infrormacji w jednej z tabel) pociąga odpowiednie
zmiany we wszystkich tabelach związanych.
W bazie Access działania na zintegrowanych tabelach realizują
polecenia z przymiotnikiem „kaskadowe” np. usunięcie kaskadowe
W bazie danych
Acces
niewypełnienie okienka tabeli oznacza domyślnie
NULL
KSIĄŻKA
ISBN PK
Tytuł
Cena
WydID FK
1
W związku „ jeden do wiele” tabelę po stronie „wiele” nazywamy podrzędną
a tabelę po stronie „jeden” nadrzędną.
Analogia: tabela „wiele” jest dziedziną funkcji a tabela „jeden” przeciwdziedziną
t. podrzędna
t. nadrzędna
jeden do jeden - jednoznaczny (przez FK)
jeden do wiele - jednoznaczny (przez FK)
wiele do wiele - niejednoznaczny
WYDAWNICTWO
WydID PK
Nazwa
NrTelef
Związki encji
Przypomnienie: Jeśli w projekcie zdecydujemy, że potrzebne będą dwie encje, oraz nasza
wiedza prowadzi do wniosku, że związek między encjami jest typu 1 : wiele, wtedy
„mechanicznie” przenosimy klucz PK od strony encji„1” do encji po stronie „wiele” i
nazywamy go kluczem obcym FK w tej encji
WYDAWNICTWO
WydID PK
Nazwa
NrTelef
1
KSIĄŻKA
ISBN PK
Tytuł
Cena
WydID FK
AUTOR
AuID PK
Nazwisko
NrTelef
1
1
KSIĄŻKA/
AUTOR
ISBN FK1
AuID FK2
KSIĄŻKA
ISBN PK
Tytuł
Cena
WydID
AUTOR
AuID PK
Nazwisko
NrTelef
związek wiele do wiele jest
niejednoznaczny:
Przypomnienie : metodą ujednoznacznienia związku
wiele do wiele
jest wstawienie tabeli
pośredniej:
Autor/Książka
o kluczach obcych FK1 = ISBN i FK2 =AuID
Encje asocjacyjne
Typy związków encji
1
KSIĄŻKA
ISBN PK
Tytuł
Cena
WydID FK
AUTOR
AuID PK
Nazwisko
NrTelef
1
KSIĄŻKA/
AUTOR
ISBN FK1
Autor FK2
KSIĄŻKA/
AUTOR
ISBN PFK1
Autor PFK2
Uwaga
Często oznaczeniem encji asocjacyjne jest
prostokąt o zaokrąglonych narożach
Tabela asocjacyjna (encja asocjacyjna)
(słaba) dwa klucze PK pobrane
oddzielnie z tabel Autor i Ksiązka stają kluczami obcymi FK w tabeli Książka/Autor.
Te dwa klucze jednoznacznie identyfikują wiersze w tabeli Książka /Autor są więc dla
niej złożonym kluczem głównym. Stąd, niekiedy spotyka się w tabeli asocjacyjnej
oznaczenie PFK (primary foreign key) – ale należy je interptretować jako FK
Encje asocjacyjne
Typy związków encji
Do encji asocjacyjnej możemy dopisać jej atrybuty własne:
KSIĄŻKA/AUTOR
ISBN PFK
Autor PFK
Data rozpoczęcia :
Data zakończenia:
Wynagrodzenie: ?
Atrybuty Data rozpoczęcia, Data zakończenia
Czy Wynagrodzenie należy do atrybutów tej encji?
Być może należałoby opracować inny schemat logiczny i
uwzględnić Wydawnictwo a całą encję nazwać Umowa
Encje asocjacyjne można też wprowadzać modelując logikę
działania systemu np.
Pracod
awca
Praco
wnik
1
Pracod
awca
Pracown
ik
1
1
Umo
wa
1?
Ćw. wymodeluj sytuację: Studenci zaliczają przedmioty. Jak nazwiesz encję asocjacyjną ?
Typy związków encji
Encje asocjacyjne
KSIĄŻKA/AUTOR
ISBN PFK
Autor PFK
Data rozpoczęcia :
Data zakończenia:
Wynagrodzenie: ?
Typy związków encji
Encje asocjacyjne
Umowa
Pracodawca PFK
Pracownik PFK
wzajemne
zobowiązania
-- - - - - - - -
Zaliczenie
Student PFK
Przedmiot PFK
Obecność
Ocena
-- - - - - - - -
Zwróć uwagę, że encje opisują rzeczowniki a związki pomiędzy encjami określają
czasowniki (frazy czasownikowe): np. Autor pisze Książkę, Pacjent posiada Ubezpieczenie,
Książka (jej typ) ma Egzemplarze, Samochód składa się z Części, Studenci uczą się na
Wydziale.., itd.
Jeśli związki encji mają wiele atrybutów własnych i są często spotykane, wówczas
najczęściej w języku mówionym pojawia się „pojęcie” – określające taki związek np.
„umowa”, „zaliczenie”, „małżeństwo”, „stanowisko pracy” . Istnienie tych słów powinno
być wskazówką że warto w projekcie uwzględnić encję asocjacyjną.
Jakkolwiek dla encji asocjacyjnej Ksiązka/Autor nie znajdziemy oszczędnego „słowa”
oddającego jej semantykę, musimy ją wprowadzić z powodów formalnych już opisanych
KSIĄŻKA
ISBN PK
Tytuł
Cena
WydID
WYDAW
NICTWO
WydID
PK
Nazwa
NrTelef
1
Związki tabel
Związek binarny
związek binarny encji
linia ilustrująca związek łączy równocześnie tylko dwie
tabele.
ćwiczenie – podaj kilka przykładów związków binarnych, nazwij je, określ liczebności po
prawej i po lewej stronie związku
Typy związków encji
Wydawnictwo wydaje
Książkę
zaś Książka jest
wydawana przez Wydawnictwo.
Nazywanie związków objaśnia projekt !
Często stosuje się imiesłów przymiotnikowy lub rzeczownik
odsłowny (wydany, wydanie)
Dla związku Książka – Autor podaliśmy nazwę napisanie .
Powiązanie to zmieniło się na dwa związki typu jeden do
wiele, trudno jednak byłoby je nazwać
,
Związki więcej niż binarne (trój –arne, itd.) można zawsze przekształcić do
postaci binarnej.
Firma
usługowa
np. AutorID
Dzieło
np. (książka
(liczba stron, typ,
etap realizacji)
Zamawiający
np. WydawnictwoID
Scenariusz: Firma usługowa Autorów otrzymuje zlecenie od Wydawnictwa na napisanie
książki nie przekraczającej 50 stron o treści przygodowej.
Interpretacja: Zlecenie jest nazwą trójstronnego związku łączącego Firmę, Zamawiającego i
Dzieło . Dodając jednak z tego związku nową encję Zlecenie z jej własnymi atrybutami
otrzymamy tylko związki binarne
Firma
usługowa
np. AutorID
Dzieło
np. (książka
(liczba stron, typ,
etap realizacji)
Zamawiający
np. WydawnictwoID
Zlecenie
data rozp.,
data zakoń.,
objętość,
typ
Typy związków encji
Związek n - arny
Firma
usługowa
np. Autor
Dzieło
np. (książka
(liczba stron, typ)
Zamawiający
np. Wydawnictwo
Honorarium
W projekcie warto zastanowić się, czy utworzyć z niektórych atrybutów danej encji nową encję
(np. honorarium może być encją, do której dostęp nie musi być powszechny)
Firma
usługowa
np. AutorID
Dzieło
np. (książka
(liczba stron, typ,
etap realizacji)
Zamawiający
np. WydawnictwoID
Ćwiczenie – zaproponuj przekształcenie encji 4-arnej jak na rys po prawej
stronie na encje binarne
Typy związków encji
Związek n - arny
Typ związku
(opcjonalność)
Stopień związku
jeden - do - jednego
jeden - do - wielu
wiele - do - wielu
związek wymagany
(tutaj koniecznie i tylko jeden)
związek
opcjonalny
(związek wymagany tutaj: choć jeden)
Typy związków encji
przypomnienie: notacja o której wspomniano w ćw 1 (notacja Martina)
poszerza możliwości określania typów związków :
W związku opcjonalnym wartość klucza obcego może być NULL
, której nie
można stosować w
związku wymaganym
(mandatory)
środek
ochrony
roślin
interakcja
W związku unarnym (rekurencyjnym)
zachodzi związek w tej samej encji (konkretnie
między obiektami tej samej encji)
pracownik
zależność (szef-podwładny)
Ważne !
Typy związków encji
związek nieidentyfikujący
- instancję encji po stronie wiele identyfikuje tylko klucz
podstawowy.
Dla określenia tej encji nie jest potrzebna inna encja (encje składowe są „dobrze
indentyfikowalne”, „samodzielne” lub podobnie) Przykład:
związki między encjami: Książka, Wydawnictwo, Autor są nieidentyfikujące
(w niektórych środowiskach np. TOAD jest oznaczony linią przerywaną)
związek identyfikujący
- instancję encji po stronie wiele identyfikuje atrybut należący
do tej encji oraz klucz obcy encji związanej
.
Pełna identyfikacja tej encji wymaga odniesienia do innej encji (w innych słowach encja
po stronie wiele „nie istnieje” jeśli nie ma encji ją identyfikującej (definiującej). (w TOAD
związek jest oznaczony linią ciągłą)
Typy związków encji
Konkretny egzemplarz książki może być zidentyfikowany jeśli znany jest typ:
numer_ inwent
.
ISBN
.
Związek Egzemplarz – Książka jest wymagany
Encje słabe (nieistniejące
samodzielnie).
Związek identyfikujący
Jeśli dana encja nie egzystuje bez innej,
związek między nimi jest wymagany (nie opcjonalny),
Związek ten jest identyfikujący, a
encje podrzędne na podobieństwo do asocjacyjnych
przedstawiamy w prostokątach o zaokrąglonych narożach . Książka (jej typ) np. Bazy Danych
o PK = ISBN ma w bibliotece np. 20 ponumerowanych (PK = numer_inwent.) egzemplarzy
W encji Egzemparz książki musimy podać PFK = PK encji Książka dla pełnej identyfikacji
egzemplarza . Podobnie, nie egzystuje samodzielnie miejscówka z numerem miejsca i nr
wagonu. Trzeba jeszcze wiedzieć do jakiego pociągu została przypisana.
Typy związków encji
Egzemplarz nie istnieje bez typu: Książka)
Przykład
IDI
Klient
ID Klienta
PK
Imię
Nazwisko
Adres
Telefon
IDI
Zamówienie
ID Zamów
.
PK
ID Klienta
FK
Nr pozycji
PK
ID Zamów.
PK (= FK)
IDI
Towar
ID Towaru
P
K
Nazwa
Cena
1. Klient składa wiele (lub zero) zamówień
2. Dane zamówienie musi pochodzić od jednego klienta
1. Zamówienie posiada wiele (lub jedną) pozycji
2. Dane pozycja musi należeć tylko do jednego Zamówienia
1. Pozycja obejmuje tylko jeden towar
2. Dany Towar jest odnotowany w żadnej lub w jednej pozycj
i
Pozycja
Ilość
ID Towaru
FK
Związek identyfikujący
Związek nieidentyfikujący
Klucz główny
Pozycji jest kluczem
złożonym
z wartości własnej
i zapożyczonej
Typowe sytuacje: całość –część , hierarchie . Np FotelAutobusu z atrybutem „miejsce” jest nieidentyfikowalny jeśli
nie istnieje encja określająca ten Autobus. EgzemplarzKsiążki nie istnieje (jest nieidentyfikowalny) jeśli nie istnieje
encja opisująca typ ksiązki do którego odnosimy dany egzemplarz
. Związki „mieć”, „posiadać”, „składać
się”…..
Typy związków encji
KLIENT
* Adres
o e_mail
FAKTURA
Atrybuty
Encja
Zwi
ązek
Typy związków encji
przykłady : mgr Anna Michalczyk, Projektowanie relacyjnych
baz danych, IO, 2008/9
OPIS
ERD
Stanowisko w firmie musi być obsadzone
przez jednego lub wielu pracowników.
Pracownik musi być zatrudniony na
dokładnie jednym stanowisku
Typ związku encji wymagane - wymagane
Producent może wytwarzać wiele
produktów. Produkt musi mieć ustalonego
Producenta
Typ związku wymagane – opcjonalne
Stowarzyszenie musi posiadać jednego lub
wielu członków. Osoba może należeć do
jednego Stowarzyszenia
Typ związku opcjonalne - wymagane
Osoba może wykupić wiele dodatkowych
szczepień. Każde szczepienie może
dotyczyć wielu osób
Typ związku opcjonalne – opcjonalne
Przykłady:
Stanowisko
Pracownik
jest
zatrudniony
jest obsadzone
Producent
Produkt
wytwarza
ma
Stowarzyszenie
Osoba
posiada
należy
Osoba
Szczepienia
wykupuje
dotyczy
Typy związków encji
przykłady : mgr Anna Michalczyk, Projektowanie relacyjnych
baz danych, IO, 2008/9
SQL
- strukturalny język zapytań
-
instrukcja Select
-
złączenia (sprzężenia tabel)
SQL jest językiem deklaratywnym
Zapytanie do bazy danych ma charakter deklaratywny
.
Podobnie jak kalkulatorowi mówimy „co ma robić” naciskając klawisze np. „2”, „+” , „4”
„=„ tak samo w języku SQL prosimy bazę o wyszukanie potrzebnej informacji.
Podstawowa jest instrukcja SELECT i inne z nią związane.
Zapytanie do bazy nazywamy
kwerendą lub widokiem
. Np. widokiem jest zapytanie w języku naturalnym:
Które wydawnictwa wydały książki w cenie mniejszej od 12 zł ?
Aby odpowiedzieć na pytanie baza wykonuje na strukturze tabel różne operacje. Korzysta
tu z różnych typów sprzężeń (złączeń (join)) tabel. Wynik przedstawiany jest w tabeli
wynikowej – nie należy ona do struktury zamkniętej w bazie danych, jest tabelą
zewnętrzną, wirtualną, podobnie jak wynik działania na kalkulatorze nie ingeruje w
działanie kalkulatora. Tabelę wirtualną można oczywiście zapisać i używać dla różnych
celów.
Tabele struktury bazy powinny być normalizowane.
Tabele wynikowe powinny natomiast kojarzyć i dostarczać informację
użyteczną i nie stawiamy im takich wymagań.
Tabela nadrzędna WydID i podrzędna Książkę są połączone związkiem „jeden do wiele. Klucz główny PK, ma wartość
NOT NULL zaś tabela podrzędna posiada także klucz obcy FK który tutaj może być gdzieniegdzie NULL (opcjonalność)
(w bazie Access jest Null gdy niewypełnimy kratki) .
Niezależnie od spełnienia (czy też nie) warunków integralności referencyjnej rozróżnia się
ponadto kilka możliwości połączenia poniższych tabel nazywanych operacją sprzężenia
Wydawnictwo
WydID (PK)
WydNazwa
WydTelefon
1
PWN
222-111
2
NT
222-222
3
POL
ISBN (PK)
Tytuł
WydID (FK)
Cena
11-11
aaa
10,00 zł
11-12
bbb
1
11,00 zł
11-13
ccc
2
12,00 zł
11-14
ddd
4
0
Książka
Przypomnienie. Integralność referencyjna zachodzi, gdy każdy wiersz tabeli podrzędnej
można połączyć z odpowiednim nadrzędnej - a więc można odtworzyć tabelę jednorodną
Tabele powyższe nie zachowują integralności integracyjnej. W tabeli podrzędnej dla ISBN 11-14 znajduje się książka
odwołująca się do nieistniejącego Wydawnictwa (FK = 4) w tabeli nadrzędnej.
t.nadrzędna
t.podrzędna
UWAGA . Jeśli otwierasz w Accessie plik z zapisaną już własną bazą danych
przed rozpoczęciem jakichkolwiek operacji koniecznie zrób kopię zapasową.
Można albo w tradycyjny sposób skopiować plik przed jego otwarciem, albo po
otwarciu w MS Access nacisnąć przycisk pakietu Office i w zakładce Zarządzaj
Kopia zapasowa.
Niektórych błędnych operacji w bazie danych nie można cofnąć i tym samym można
utracić rezultaty czasem wielogodzinnej pracy
Ćwiczenie
Utwórz tabele jak wyżej w Accesie. Sprawdź czy jest zachowana integralność referencyjna gdy:
-istnieje byt w tabeli nadrzędnej nie posiadający odpowiednika w tabeli podrzędnej (WydID =3)
- istnieje byt w tabeli podrzędnej nie posiadający odpowiednika w tabeli nadrzędnej (ISBN =11-14)
- związek po stronie wiele jest opcjonalny tzn WydID (FK) posiada wartość NULL
Uwaga – „integralność” pojawia się z chwilą tworzenia w Accessie związków (relacji)
między tabelami.
Otwórz Access z tabelami do eksperymentów
Zamknij wszystkie tabele jeśli były otwarte (kliknij P kl.myszki na pasku nad tabelami i wybierz Zamknij
Wszystkie)
otwórz zakładkę Narzędzia, następnie zakładkę Relacje
naciśnij Pokaż tabelę (to okno może otworzyć się domyślnie) , zaznacz dwie tabele , naciśnij Dodaj, i zamknij
okno.
Od tabeli nadrzędnej (jej klucza) w stronę tabeli podrzędnej do jej klucza obcego przeciągnij myszką z
naciśniętym L klawiszem. Pojawi się okno dialogowe.
Zaznacz wymuszaj więzy integralności a następnie Utwórz
Relacje, sprzężenia -Access
Pojawi się komunikat, że operacja wymuszenia integralności nie powiodła się. Zamknij komunikat i
okno dialogowe, otwórz tabelę Książka, zmień odwołanie FK = 4 na FK = 2 zapisz i zamknij tę tabelę.
Teraz wymuszenie więzów integralności powinno się powieść – zobaczysz też, że schematy graficzne
tabel połączyła linia z nadpisanymi liczebnościami związku. Wnioskujemy, że brak książki
odpowiadającej Wydawnictwu PK=3 w tabeli nadrzędnej, oraz wartość Null w kluczu obcym tabeli
podrzędnej nie zakłócają integralności referencyjnej.
Zakłóca ją brak obiektu w tabeli nadrzędnej do
której odwołuje się obiekt podrzędny
Po utworzeniu więzów integralności otwórz tabelę Książka i powtórnie spróbuj zmienić FK=2 na FK=4
przechodząc do następnego rekordu. Zobaczysz komunikat o niemożności wykonania tej zmiany.
Pozostaw więc FK=2, zamknij tabelę i przejdź do tabeli nadrzędnej Wydawnictwo. Wprowadź
Wydawnictwo PK = 4. Możesz sprawdzić, że teraz w tabeli Książka możliwe jest odwołanie do tego
Wydawnictwa.
Spróbuj usunąć Wydawnictwo PK =4 z tabeli Wydawnictw. Operacja ta powiedzie się tylko wtedy,
gdy w tabeli Książka nie będzie żadnej książki odwołującej się do tego Wydawnictwa
Wróćmy do postaci wyjściowej tabel.
Wprawdzie nie zachowują integralności referencyjnej, ale Access oferuje nam inne (słabsze)
możliwości sprzężenia tych tabel.
Aby się o tym przekonać trzeba wykonać te same czynności jak przy próbie wymuszenia
integralności referencyjnej. W ostatnim kroku zamiast jednak zaznaczać „wymuszaj więzy
integralności” naciskamy przycisk Typ sprzężenia… . Zobaczysz okno dialogowe jak na rysunku.
Po wyborze 1, 2 lub 3 i zatwierdzeniu, schematy tabel połączy linia albo bez, albo z zaznaczonym
kierunkiem. Niezgodności w tabelach wyjściowych nie były przeszkodą dla utworzenia tego typu
sprzężeń
Kontynuując pracę tego kreatora utworzymy jeden z żądanych typów, ale nie zobaczymy
jawnie skutków tego sprzężenia. Możemy przekonać się, że ten typ sprzężeń nie nakłada
ograniczeń, możemy niezależnie mazać lub dodawać do tabel nowe rekordy.
sprzężenie typu
wewnętrznego
sprzężenia typu
zewnętrznego
Sprzężenia te zilustrujemy później posługując się językiem SQL, przedtem podstawowe
instrukcje
Rozróżnia się sprzężenia:
wewnętrzne - only include rows where the joined fields from both tables are equal.
Operacja scali dwie tabele ale w tych rekordach w których pola łączone są równe. To
oznacza że w związku opcjonalnym wiersze ujmujące Wydawnictwa, które po stronie
tabeli Książki mają wartość NULL (czyli nie posiadają książek) będą w połączonej tabeli
pominięte.
zewnętrzne
lewostronne – include All records from „Wydawnictwo”and only those records
from „Książka” where the joined fields are equals. Uwzględnia wszystkie rekordy
tabeli nadrzędnej (Wydawnictwa) także nie posiadające książek, ale tylko te
rekordy z tabeli podrzędnej dla których jest połączony z nimi rekord tabeli
nadrzędnej – a więc tylko te książki, które mają zdeklarowane Wydawnictwo
prawostronne include All records from „Książka”and only those records from
„Wydawnictwo” where the joined fields are equals czyli odwrotnie jak
poprzednio, uwzględni wszystkie rekordy z tabeli podrzędnej ale tylko określone
z nadrzędnej.
Ogólnie zapytanie (query) SQL ma postać:
select A1, A2, .... , An
from r1, r2, ... ,rm
where P;
Każde Ai reprezentuje atrybut, każde ri relacje, P jest predykatem. Zapytanie SQL kończy się
średnikiem.
Operatory:
– równy =
– nierówny <>
– mniejszy <
– większy >
– mniejszy lub równy <=
– większy lub równy >=
„atrybut” = „pole w tabeli” = „kolumna w tabeli”, „relacja” = „tabela”, „predykat” = „warunek”
Jeżeli predykat został pominięty, przyjmuje się, że ma on wartość true. Rezultatem
zapytania SQL’a jest pewna relacja. Mechanizm jest następujący: SQL tworzy produkt
kartezjański relacji z klauzuli from, następnie wybiera te elementy, które spełniają
warunki z where (przy pomocy algebry relacji), a następnie konfrontuje wynik z
żądanymi atrybutami z klauzuli select. SQL potrafi też, dla zwiększenia efektywności
obliczeń, zamieniać wyrażenia w postać dla siebie korzystniejszą.
Zapytajmy,
które książki z tabeli Książka mają cenę niższą od 12 zł
Zaczniemy od szkieletu
SELECT
FROM
WHERE
jaki jest warunek wyszukiwania, które rekordy chcemy zobaczyć w tabeli wynikowej ?
WHERE [Cena]<12;
warunek (filtr) prosty lub złożony, średnik kończy sekwencje instrukcji
Jakie kolumny chcemy (z tabel deklarowanych we FROM) zobaczyć ? Teraz Select czyli
projekcja (inaczej wybór kolumn). Załóżmy, że chcemy znać tytuł książki, jej cenę i nr ISBN
w wymienionej kolejności, dopisujemy :
SELECT Książka.Tytuł, Książka.Cena, Książka.ISBN
ponieważ źródłem jest tylko jedna tabela, nie ma konfliktu nazw, można tę klauzulę
uprościć. Zapisując wszystko otrzymujemy
gotowy kod :
SELECT Tytuł, Cena, ISBN
FROM Książka
WHERE Cena<12;
może najpierw z jakiego źródła: tabel lub kwerend chcemy korzystać ?
FROM Książka
nawias kwadratowy jest w tym przypadku zbędny, ale byłby konieczny gdyby napis posiadał
tzw znaki specjalne w tym spacje. Np. gdyby kolumna nazywała się Moja Cena.
Otwórz Access z tabelami do eksperymentów w postaci wyjsciowej
-otwórz zakładkę – Tworzenie
-W sekcji inne otwórz Projekt Kwerendy
-Zamknij wszytkie tabele także ewentualnie pojawiajace się okno Pokazywanie tabeli
-naciśnij Pmysz i wybierz Widok SQL
-teraz wpisz kod SQL podany na poprzednim slajdzie
-na zakładce kwerendy naciśnij Pmysz i wybierz Widok Arkusza Danych
-zobaczysz tabelę wynikową
implementacja kodu w Access
naciśnij Pmysz przejdź znowu do Widok SQL i dopisz:
SELECT Książka.Tytuł, Książka.Cena, Książka.ISBN
FROM Książka
WHERE [Cena]<12;
przechodząc do Widoku Arkusza Danych zobaczysz w tabeli dodatkową kolumnę ISBN.
Zamiast deklarować kolumny napisz SELECT* W wyniku zobaczysz wszystkie kolumny tabeli
Książka i oczywiście te rekordy, które spełniają warunek.