Topic 3: Computer classification

advertisement
1
Informatyczne Systemy
Zarządzania
Wykład 4: Język zapytań
SQL (46 slajdów)
Wykładowca:
Prof. Anatoly Sachenko
2
Ogólny zarys wykładu
 Definicja
i Historia
 Struktura SQL
 Typy danych
 Standardowo wbudowane funkcje w SQL 2
 Pisanie poleceń SQL
 Instrukcja SELECT
 Składnia
 FROM
 WHERE
 Łączenie
 Wbudowane podzapytania
 Łączenia zewnętrzne
 Instrukcje manipulowania danymi
3
Definicje i historia
(Structured Query Language – Strukturalny Język Zapytań)jest bazodanowym językiem komputerowym zaprojektowanym w
celu wyszukiwania i zarządzania danymi w Relacyjnych Bazach
Danych, kreowania i modyfikacji schematu bazy danych, oraz
zarządzaniem dostępem do obiektów Bazy Danych
 innymi słowy SQL jest interaktywnym standardem i
programowalnym językiem do zapytań i modyfikacji danych
oraz zarządzania bazą danych
 pierwsza wersja SQL była rozwijana w IBM (po algebrze
relacyjnej) przez Donald D. Chamberlin and Raymond F. Boyce
we wczesnych latach ’70.
 Poźniej SQL był stosowany w dużych ilościach komercyjnych
DBMS
 dlatego stało się to rzeczywistym standardem dla języków
manipulacji w relacyjnym DBMS
 SQL
4
Definicje i Historia – Standaryzacja
SQL został przyjęty jako standard przez Amerykański Narodowy
Instytut Normalizacji (ANSI) w roku 1986 jako SQL/86, i
 został formalnie uznany przez Międzynarodową Organizację
Normalizacyjną (ISO) w 1987 roku jako SQL/87
 do roku 1996 National Institute of Standards and Technology
(NIST) program standaryzacji zarządzania danymi został
przydzielony do certyfikowania SQL DBMS, jednakże został on
rozwiązany w 1996
 Drobna korekta w 1989 roku przyjęta przez FIPS (Federal
Information Processing Standard) jako SQL/89
 Główna korekta pod koniec 1992 roku - SQL/92 lub SQL2


1999 - SQL3, zostało dodane :
 dopasowywanie wyrażeń regularnych
 zapytania rekurencyjne i wyzwalacze
 wsparcie dla procedur i kontroli przepływu wykonania
instrukcji oraz typów nieskalarnych
 niektóre cechy obiektowe
5
Struktura SQL
język
bazodanowy
użytkownikowi na:
 idealny
powiniene
pozwolić
stworzenie bazy danych i struktury tabeli
 wykonywanie podstawowych zadań, jak: insert, update, delete
 wykonywanie – prostych i złożonych zapytań
 SQL w odróżnieniu od algebry relacyjnej
 jest kompletnym językiem zwierającym nie tylko działania na
kwerendach
 SQL jest językiem
zorientowanym na transformację z dwoma
głownymi składnikami:
 DDL (Data Definition Language – Język Defininicji Danych) – do
definiowania struktury bazy danych
 DML (Data Modeling Language – Język Modelowania Danych) –
do wyszukiwania i uaktualniania danych
 Operatory SQL mogą być użyte interaktywnie lub mogą być
osadzone w zaawansowanych językach (np. C, C++, Java, …)

6
Struktura SQL – Główne Elementy
język SQL jest podzielony na dalsze części w kilka elementów
języka wliczając w to:
 instrukcje, które mogą mieć trwały skutek na schematy i dane, lub
które mogą kontrolować transakcje, przepływy programów,
połączenia, sesje lub diagnozować
 zapytania, które wyszukują dane oparte na konkretnych kryteriach
 wyrażenia, które mogą przedstawiać również wartości skalarne lub
tabele składające się z kolumn i wierszy z danymi
 orzeczenia, które określają warunki, które mogą być oszacowane do
trzech wartości logicznych SQL
 klauzule, które są (w pewnych przypadkach opcjonalne) częścią
składową instrukcji i zapytań
 „białe znaki” są generalnie ignorowane w instrukcjach i
zapytaniach SQL, czyniąc je łatwiejszymi do formatowania kodu
SQL dla jego czytelności
 instrukcje SQL zawierają także średnik (";") - instrukcje kończące

7
Struktura SQL - Data Query Language (DQL)
– język definiowania zapytań dla wyszukiwania danych
najbardziej powszechnymi działaniami w bazach danych SQL są
zapytania, które są wykonywane z deklaratywnymi zapytaniami
wybierającymi słowa kluczowe
 SELECT jest najbardziej kompleksową instrukcją w języku SQL z
kilkoma opcjonalnymi słowami kluczowymi i klauzulami, włączając
w to :

FROM klauzula, która pokazuje źródło tabeli lub tabele, z których dane
mają być wyszukane
 WHERE klauzula zawierająca porównanie orzeczenia, które jest
używane do ograniczenia liczby wierszy zwracanych przez zapytanie
 GROUP BY klauzula jest używana, aby łączyć lub grupować wiersze z
powiązanymi wartościami w elementy mniejszych zbiorów wierszy
 HAVING klauzula zawierająca porównanie orzeczenia używany w celu
usunięcia wierszy po klauzuli GROUP BY, jest stosowany, aby
otrzymać zbiór wyników
 ORDER BY klauzula identyfikująca, które kolumny są używane do
sortowania danych wynikowych i w jakim porządku powinny być one
uporządkowane

8
Struktura SQL - Data Manipulation
Language (DML)- język manipulacji danymi
 DML
jest podzbiorem języka używanym do dodawania,
aktualizowania i usuwania danych :
 INSERT jest używany do dodawania wierszy do istniejącej
tabeli
 UPDATE jest używany do zmieniania wartości zbiorów
istniejących wierszy tabeli
 DELETE usuwa zero lub wiele istniejących wierszy z
tablicy
 MERGE łączy dane z różnych tabel
 jest to pewna kombinacja elementów INSERT i
UPDATE
9
Struktura SQL – Transaction Control
(Kontrola Transakcji)
 Transakcje,
jeśli są dostępne, mogą być użyte w obrębie
operacji DML:
 BEGIN WORK (lub START TRANSACTION, lub BEGIN
TRANSACTION, w zależności od dialektu SQL) jest
używana do oznaczenia startu transakcji Bazy Danych,
która także uzupełnia całkowicie albo wcale
 COMMIT powoduje zmianę wszystkich danych w
transakcji by zostały zatwierdzone na stałe
 ROLLBACK powoduje, że wszystkie dane zmienione od
ostatniego COMMIT lub ROLLBACK zostaną odrzucone
(anulowane), po to, aby stan danych został przywrócony
10
SQL Structure - Data Definition
Language (DDL) – Język Definicji Danych
 Drugą
grupą poleceń jest DDL, który pozwala użytkownikowi
na definiowanie nowych tabeli i związanych elementów
 większość skomercjalizowanych Bazy Danych SQL mają
własne rozszerzenia w ich DDL, co pozwala kontrolować
niestandardowe funkcje systemu Baz Danych
 najbardziej podstawowe pozycje DDL to instrukcje:
CREATE powoduje, że obiekt (np. tabela) zostaje utworzony w
Bazie Danych
 DROP powoduje, że istniejący obiekt w Bazie Danych zostaje
usunięty, zwykle nieodwracalnie
 TRUNCATE usuwa wszystkie dane z tabeli (niestandardowe, ale
powszechne instrukcje SQL)
 ALTER instrukcja pozwalająca użytkowinkowi na modyfikację
istniejącego obiektu na różne sposoby – np. dodając kolumnę do
istniejącej tabeli

11
SQL Structure - Data Control Language
(DCL) - Język Kontroli nad Danymi
 Trzecią
grupą poleceń SQL jest DCL, który
obsługuje aspekty uprawnień danych i pozwala
użytkownikowi na kontrolę kto ma dostęp do wglądu
lub manipulacji danymi w Bazie Danych
 Są dwa główne polecenia:
 GRANT uprawnia jednego lub więcej
użytkowników do wykonania operacji lub zbioru
operacji na obiekcie
 REVOKE usuwa lub ogranicza uprawnienia
użytkowników do wykonania operacji lub zbioru
operacji
12
Struktura SQL – Programowanie SQL
– ustawia nazwe I definiuje relacyjne zapytania do
BD które są jednakowe z wirtualnym zbiorem danych
 OPEN formy wirtualnego zbioru danych, które odpowiadają
bieżącemu stanowi Bazy Danych
 FETCH – odczytanie kolejnego wiersza wskazanego przez
parametr z wirtualnego zbioru danych
 CLOSE – kończy dostęp do aktywnego zbioru danych
 PREPARE - przygotowuje klauzule SQL do dynamicznego
wykonywania i generuje plan wykonywanego zapytania który
jest równy danej klauzurze SQL
 EXECUTE – uruchamia klauzule SQL, która została
przygotowana wcześniej do dynamicznego wykonywania
 DECLARE
13
Typy danych – SQL/89
 CHARACTER
(n) ,CHAR(n) – ciąg znaków o stałej długości n
znaków
 NUMERIC[(n, m)] – precyzuje liczby, gdzie n – całkowita ilość
cyfr w liczbie, m – ilość cyfr, która występuje po lewej stronie
przecinka dziesiętnego
 DECIMAL[(n,m)] – precyzuje liczby, gdzie n – całkowita ilość
cyfr w liczbie, m – ilość cyfr, która występuje po lewej stronie
przecinka dziesiętnego
 DEC[(n, m)] – to samo co DECIMAL[(n,m)]
 INTEGER lub INT – liczba całkowita
 SMALLINT – liczba całkowita o mniejszym zasięgu
 FLOAT[(n)] – wysoko precyzyjne liczby przechowywane w
zmiennoprzecinkowych
 n – liczba bajtów zarezerwowana do
 REAL – konkretny typ liczby, który odpowiada liczbą
zmiennoprzecinkowym z mniejszą dokładnością niż FLOAT
 DOUBLE PRECISION – precyzuje typ danych z dokładnością
większą niż dokładność REAL
14
Typy Danych – dodane w SQL/92
– ciąg znaków o zmiennej długości
 NCHAR(N) – ciąg kodowanych znaków o stałej
długości
 NCHAR VARYING(n) - ciąg kodowanych znaków o
zmiennej długości
 BIT(n) – łańcuch liczb binarnych o stałej długości
 BIT VARYING(n) - łańcuch liczb binarnych o
zmiennej długości
 DATE – data kalendarzowa
 TIMESTAMP (dokładność) – data i czas z określoną
dokładnością
 INTERVAL – dziedzina czasu
 VARCHAR(n)
15
Standardowo Wbudowane Funkcje
w SQL2
 BIT_LENGTH
(ciąg) – ilość bitów w ciągu
 CAST – (wartość AS typ danych) – wartość
przetworzona w określony typ danych
 CHAR_LENGTH (ciąg) – długość ciągu znaków
 CONVERT (ciąg USING funkcja) – zmienia zbiór
danych według określonych funkcji
 CURRENT_DATE
 CURRENT_TIME (dokładność) – bieżący czas z
określoną dokładnością
 CURRENT_TIMESTAMP (dokładność) – bieżąca
data i czas z określoną dokładnośćią
 LOWER (ciąg) - zamienia ciąg znaków na małe litery
16
Standardowo Wbudowane Funkcje w SQL2
(kontynuajca)
 OCTED_LENGTH(ciąg)
- bajty grupowane w ciąg znaków
 POSITION(pierwszy ciąg IN drugi ciąg) – pozycja od
pierwszego ciągu rozpoczyna wpis do drugiego
 SUBSTRING (ciąg FROM n FOR długość) – część ciągu
rozpoczyna od n-tego symbolu i ma określoną długość
 TRANSLATE (ciąg USING funkcja) – zmienienie ciągu
używając życiu określonej funkcji
 TRIM (BOTH znak FROM ciąg) – ciąg, w którym wszystkie
pierwsze i ostatnie znaki są usuwane
 TRIM(LEADING znak FROM ciąg) ) – ciąg, w którym
wszystkie pierwsze znaki są usuwane
 TRIM(TRAILING znak FROM ciąg) – ciąg, w którym
wszystkie ostatnie znaki są usuwane
 UPPER(ciąg) - zamienia ciąg znaków na duże litery
17
Pisanie Komend SQL
SQL składają się zastrzeżonych słów i słów
zdefiniowanych przez użytkownika
 słowa zastrzeżone - stałe części SQL i muszą być dokładnie
przeliterowane jak jest to wymagane i nie mogą być
rozdzielone przez linie
 słowa zdefiniowane przez użytkownika – wymyślony przez
użytkownika i reprezentujące nazwy wielu obiektów z bazy
danych, takich jak tabele, kolumny, podglądy
 Większość składników instrukcji SQL jest niepodatnych na
wielkość liter, z wyjątkiem dosłownych danych znakowych
 Instrukcje
18
Pisanie Komend SQL (kontynuacja)
 Użycie




rozszerzonych oznaczeń formatów
 wielkie litery reprezentują słowa zastrzeżone
 małe litery reprezentują słowa zdefiniowane przez
użytkownika
| - wskazuje wybór pomiędzy alternatywami
( ) - wskazuje element wymagany
[] - wskazuje element opcjonalny
… - wskazuje opcjonalne powtórzenia (0 lub więcej)
> - wartośći
 * - ustala, że wszystkie kolumny ze wstępnego zapytania są
włączane w zbiór wyników
<
19
Instrukcja SELECT - Składnia
 Jak
zostało wspomniane wcześniej SQL zawiera tylko jedną
instrukcję SELECT
 Jednakże nie jest proste pisanie tu zapytań
 Musi to być zrobione w taki sposób, aby czas trwania był
najkrótszy
 Składnia SELECT
 SELECT [ALL | DISTINCT](<lista pól>| *)
 FROM <lista tabel>
 [WHERE <Predykat wyboru lub połączenie>]
 [GROUP BY <Lista pól rezultatów>]
 [HAVING <Predykat grup>]
 [ORDER BY <Lista poł używana do sortowania danych
wynikowych>]
20
Instrukcja SELECT – Składnia
(kontynuacja)
– polecenie decydujące o tym, że wszystkie rekordy
spełniające warunki zapytania są włączone w powstały zbiór
wyników
 DISTINCT - polecenie decydujące o tym, że rożne rekordy są
włączone w zbiór wyników
 FROM – określa tabele, która (-e) mają być użyte
 WHERE – filtruje rekordy
 GROUP BY - forma grupowania rekordów z tymi samymi
wartościami kolumn
 HAVING – filtruje grupę podmiotów wg. pewnych warunków
 ORDER BY - określa porządek wyswietlania
 SELECT
21
Instrukcja SELECT – FROM
 FROM
jest słowem kluczowym
 jest prezentowane w każdym zapytaniu podobanie jak
SELECT
 Jest łącznie z pustymi miejscami i
 Nazwami tabel, które są używane jako źródło informacji
 Jeśli jest wskazana więcej niż jedna nazwa tabeli, pozwala
pośrednio wywnioskować, że
 Iloczyn kartezjański działa z wliczonymi tabelami
 Nazwy-pseudonimy mogą być przypisane do tabel
 jest to pomocne:
 dla operacji łączenia tabeli z nią samą, lub
 dla dostępu z wbudowanego podzapytania do bieżącego
rekordu zewnętrznego zapytania
22
Instrukcja SELECT - WHERE
WHERE klauzula ta ustawia warunki wyboru wynikowych wierszy,
lub
 Warunki połączenia wierszy do początkowych tabeli jako
operacja warunkowego połączenia w Algebrze Relacyjnej
 Są w niej używane następujące predykaty:
 Predykaty zestawienia { =, <>, >,<, >=,<= }, które mają
tradycyjne znaczenie
 Predykat BETWEEN A i B akceptuje wartości pomiędzy A i B
 Predykat jest prawdziwy kiedy porównane wartości znajdują
się w określonych przedziałach, włączając w to granice
przedziałów
 Predykat przeciwny NOT BETWEEN A i B jest prawdziwy
kiedy porównane wartości nie znajdują się w określonych
przedziałach
 Predykat wejścia do zbioru IN (zbiór) jest prawdziwy, gdy
porównywane wartości znajdują się w zbiorze wartości
określonych
 Predykat przeciwny NOT IN (zbiór) jest prawdziwy, gdy
porównane wartości nie znajdują się w zbiorze określonych
wartości.

23
Zapytanie SELECT – WHERE (cd)
Zapytanie o porównanie ze wzorem: LIKE i LIKE NOT
 Zapytanie LIKE wymaga specyfikacji szablonu, który
porównuje z wyszczególnioną wartością
 Orzeczenie jest prawdziwe, jeżeli porównana wartość
koresponduje szablonem i
 W przeciwnym przypadku jest fałszywe
 Zapytanie LIKE NOT ma przeciwne znaczenie
 Zgodnie ze standardem szablon może zawierać następujące
znaki specjalne:
 Znak podkreślenia ( _ ) — dla opisu dowolnego
pojedynczego symbolu
 Symbol procentu ( % ) — dla opisu dowolnej kolejności
znaków
Reszta symboli w szablonie wyznacza się sama.
24
Zapytanie SELECT – WHERE (cd)
 Zapytanie
o porównanie z nieokreśloną wartością IS NULL
 Nieokreślona wartość w Algebrze Relacji interpretuje się
jako wartości, która jest obecnie nie znana
 Ta wartość może zostać zamieniona na dowolną
wyszczególnioną wartość, jeżeli taka informacja się
kiedykolwiek ukaże
 Standardowe reguły porównania nie działają przy porównaniu
nieokreślonych wartości
 Jedna nieokreślona wartość nigdy nie jest równa innym
 Specjalne standardowe orzeczenia są użyte, by określić
równość wartości jakiejś cechy z wartością nieokreśloną:
 < imię cechy > NULL IS i
 < imię cechy > NULL NOT IS
 Zapytanie o istnienie EXIST i
 Zapytanie o nieistnienie EXIST NOT
 Obie odnoszą się do szczególnych pytań
25
SELECT Statement – Przykład
Video
SELECT catalogNo, title, dailyRental
FROM Video;
26
SELECT DISTINCT Statement – Przykład
Video
• Użyj funkcji DISTINCT, by wyeliminować duplikaty:
SELECT DISTINCT category
FROM Video;
27
Zapytanie SELECT – Suma
ISO definiuje pięć funkcji agregowania, które
pozwalają obliczyć ogólne grupowe wartości, należą do nich:
 COUNT liczba wartości w wyszczególnionej kolumnie
 SUM dodaje wartości w wyszczególnionej kolumnie
 AVG średnia wartości w wyszczególnionej kolumnie
 MIN zwraca najmniejszą wartość w wyszczególnionej
kolumnie
 MAX zwraca największą wartość w wyszczególnionej
kolumnie
 Aby użyć innych funkcji agregowana niż wyżej
wymienione, należy przeprowadzić wstępną operację
grupowania:
 Cały komplet relacji tuples należy podzielić się na grupy
Grupy zbierają tuples, który ma te sam wartości cech
wyszczególniających w liście grupowania
 SQL
28
Zapytanie SELECT – Suma (cd)
 Każda
funkcja odnosi się do pojedynczej kolumny w tabeli i
zwraca pojedynczą wartość
 COUNT, MIN i MAX odnosi się do numerycznych i
nienumerycznych pól, ale
 SUM i AVG zwraca wartość tylko dla numerycznych
pól
 Oprócz COUNT(*), każda funkcja eliminuje najpierw puste
pola i działa tylko na polach z danymi wartościami.
 COUNT(*) liczy wszystkie rekordy tablicy, nie zważając,
czy występują puste pola lub powtarzają się wartości
 DISTINCT może zostać użyty przed nazwą kolumny, by
wyeliminować duplikaty
DISTINCT nie ma żadnego znaczenia dla MIN / MAX, ale
może mieć dla SUM / AV
29
Zapytanie SELECT – Suma (cd)
 Funkcje
agregowana mogą zostać użyte tylko:
w liście SELECT i klauzuli HAVING
 Jeżeli
lista SELECT zawiera funkcję zagregowaną i nie ma
żadnej klauzuli BY GROUP to:
 kolumna
Listy SELECT nie ma powiązania z funkcją
agregacji
 Poniższy
przykład jest nieprawidłowy:
SELECT StaffNo, COUNT(Salary)
FROM Staff;
30
Zagnieżdzone podzapytania
 Niektóre
stwierdzenia SQL mogą zawierać zagnieżdzony
SELECT
 Podwybór może zostać użyte w warunku WHERE i
klauzulach HAVING zewnętrznego SELECT, gdzie jest
zwane podzapytaniem
 Podzapytanie można również zastosować w komendach
INSERT, UPDATE i stwierdzeniu DELETE
 Lista SELECT podzapytanie musi składać się z pojedynczej
nazwy kolumny albo wyrażenia, z wyjątkiem podzapytań,
które używają EXISTS
 Kiedy podzapytanie jest argumentem w porównaniu, musi
znajdować się po jego prawej stronie
 Podzapytanie nie może zostać użyte jako argument w
wyrażeniu
31
Zagnieżdzone podzapytania - Sub query
with Equality
Przykład: Znajdź pracownika z 8-go działu
Jefferson Way
SELECT staffNo, name, position
FROM Staff
WHERE branchNo =
(SELECT branchNo
FROM Branch
WHERE street=‘8 Jefferson Way’);
32
Embedded Sub queries - Sub query with
Aggregate
Przykład: Lista wszystkich pracowników,
których pensja jest większa niż pensja
przeciętna.

SELECT staffNo, name, position
FROM Staff
WHERE salary >
(SELECT AVG(salary)
FROM Staff);
33
Połączenia Zewnętrzne
 Często
konieczne jest, aby połączyć dwie tabele, w tym celu
muszą być spełnione następujące warunki:
 Wszystkie rekordy pierwszej tablicy są zawarte w wyniku i
 Nieokreślone wartości dostają się do wyniku, zamiast tych
rekordów z drugiej tablicy, które nie pozwalają dołączyć się
do warunku, lub vice versa
 Wszystkie rekordy drugiej tablicy są zawarte w wyniku, i
 Nieobecne części rekordów z pierwszej tablicy, są
dodawane jako nieokreślone wartości.
 Będą nazywane jako outer joins (połączenia zewnętrzne), w
przeciwieństwie do
 Nowa zdefiniowana norma przez którą przyjęła nazwę jako
inner joins (wewnętrzne połączenia )
 Joins determining by SQL1 standard which became to be
named as inner joins
34
Połączenia Zewnętrzne– FROM Syntax
FROM <list of initial tables> |
< expression of natural join> |
< join expression >
< expression of cross join> |
< expression of query for join >
 < list of initial tables >::= <table_1> [ table synonym name_1] [ ...]
[,<table_ name__n>[ < table synonym name > ] ]
 < expression of natural join :: =
<table_name_1> NATURAL { INNER | FULL [OUTER] |
LEFT [OUTER] | RIGHT [OUTER]} JOIN <table_name_2>
 < expression of cross join : = <table_name_1>
CROSS JOIN <table_name_2>
 < expression of query for join :=
<table_name_1> UNION JOIN <table_name_2>
 < expression of join> := <table_name_1> { INNER |
FULL [OUTER] | LEFT [OUTER] | RIGHT [OUTER]}
JOIN {ON condition [USING (columns list)]} <table_name_2>

35
FROM Syntax - projektowanie
INNER — połącz wewnętrznie
 LEFT — odrzuć połączenie
 W rezultacie zawiera wszytskie kolumny z tablicy 1 i
 Części wyniku tuples – który nie miał odpowiednich wartości w
tablicy 2 – jest dodany jako wartości NULL
 RIGHT –połącz, połączenie zewnętrzne: w przeciwieństwie do LEFT
 Wszystkie rekordy drugiej tablicy są zawarte, i
 Wcześniej puste części rekordów pierwszej tablicy zostały dodane
przez nieokreślone wartości
 FULL – pełne połączenie zewnętrzne:dla left jak również right
 RIGHT i LEFT łączą się w tym miejscu i w rezultacie mamy w całości:
 wszystkie kolumny tablic 1 i 2 dodane przez nieokreślone wartości
 OUTER - określa połączenie zewnętrzne, ale
 Jeżeli słowa kluczowe takie jak: FULL, LEFT, RIGHT są
wyszczególnione wtedy połączenie zawsze brane jest jako zewnętrzne

36
Płączenia zewnętrzne – Przykład
 Spróbujmy
wziąć za przykład taką bazę danych «Bibliotekę»,
która składa się z trzech całości:
 BOOKS (ISBN, TITL, AUTHOR, COAUTHOR,
YEARPRINT, PAGES)
 Tabela BOOKS opisuje wszystkie książki, które są w
bibliotece i posiadają następujące cechy:
 ISBN — unikalny szyfr książki;
 TITL — tytuł książki;
 AUTHOR — nazwisko autora;
 COAUTHOR — nazwisko współautora;
 YEARPRINT — działalność wydawniczy rok;
 PAGES — liczba stron.
37
Połączenia zewnętrzne-przykład (cd)
CZYTELNIK(NUM_CZYTELNIKA,NAZWA_CZYTELNI
KA, ADRES, TEL_DOMOWY,
TEL_SŁUŻBOWY,DAT_URODZIN)
Tabela CZYTELNIK zawiera informację o wszystkich
czytelnikach biblioteki i ma natępujące cechy:
 NUM_CZYTELNIKA — unikalny liczba karty
biblioteki
 NAZWA_CZYTELNIKA — czytelnicy przezywają i
inicjały
 ADRES — czytelnicy zwracają do
 TEL_DOMOWY — do domu numer telefonu
 TEL_SŁUŻBOWY — numer telefonu pracy
 DAT_URODZIN
— data narodzin czytelników
38
Połączenia zewnętrzne-przykład (cd)
 EXEMPLARE
(INV, ISBN, YES_NO, NUM_READER,
DATE_IN, DATE_DUT)
Entity called EXEMPLARE includes the following
attributes :
 INV — unique inventory number of the book
exemplar
 ISBN - book cipher
 YES_NO — indication of presence or absence of a
book exemplar
 NUM_READER — number of readers card if a book
is given to the reader, and Null – in opposite case
 DATE_IN - a date when a book was given to the
reader;
 DATE_OUT - a date when the reader has to return a
book
39
Połączenia zewnętrzne-przykład (cd)
Aby zdefiniować taki rodzaj szukania używamy odrzucenia połączenia
zewnętrznego
 włącz wszystkie rekordy CZYTELNICY i tablice EGZEMPLARZE
 jeżeli druga tablica nie ma żadnego rekordu z odpowiednią liczbą kart
czytelników wtedy cecha EXEMPLARE.INV w skutku wywołania
równa się NULL:
 SELECT CZYTELNIK.NAZWA_CZYTELNIKA,
EGZEMPLARZ.INV
 FROM READER RIGHT JOIN EXEMPLARE ON
READER.NUM_READER=EXEMPLARE.NUM_READER
 Operacja połączenia zewnętrznego może być używana do uformowania
źródeł wyrażenia FROM:
 SELECT *
 FROM ( KSIĄŻKI LEFT JOIN EGZEMPLARZE)
 LEFT JOIN ( CZYTELNICY NATURAL JOIN EGZEMPLARZE)
 USING (ISBN)

40
POŁĄCZENIA ZEWNĘTRZNEUNION (przykład)
Operacja pytania związku jest równa, by ustawić teoretyczny związek
algebry
 Kwerenda związku zrobiona jest zgodnie ze schematem:SELECTkwerenda,SELECT UNION – kwerenda SELECT UNION - kwerenda
 żadna z kwerend nie powinna zwierać wyrażeń(słów)
 Przykład: Odszukaj listę czytelników, którzy wypożyczyli książkę
CLEOPATRA albo ZBRODNIA I KARA używamy pytań:
 WYBIERZ CZYTELNIK.NAZWA_CZYTELNIK
 CZYTELNIK FROM, EGZEMPLARZ.BOOKS
 GDZIE EGZEMLARZ.NUM_CZYTELNIK=CZYTELNIK.NUMCZYTELNIK AND EGZEMPLARZ.ISBN=BOOKS.ISBN AND
 KSIĄŻKA.TYTUŁ=CLEOPATRA
 CZĘŚĆ WSPÓLNA
 WYBÓR CZYTELNIK.NAZWA_CZYTELNIK
 FROM CZYTELNIK, EGZEMPLARZ, KSIĄŻKA GDZIE
 EGZEMPLARZ.NU_CZYTELNIK=CZYTELNIK.NUM_CZYTELNI
K AND
 EGZEMPLARZ.ISBN=KSIĄŻKA.ISBN AND
 KSIĄŻKA.TYTUŁ=ZBRODNIA I KARA

41
Stwierdzenia Manipulacji Danych
 Są
trzy rodzaje manipulacji(zmiany) danych:
 Operacja zapisu usuwającego – klauzula DELETE,
 Operacja dodawania albo wejście nowych zapisów —
klauzula INSERT
 Operacja aktualizacji danych — klauzula UPDATE.
 Zauważ:
Wszystkie operacje manipulacji danych mogą zmieniać
wartości(dane) tylko w jednej tablicy
42
Polecenie Manipulacji danych-DELATE
Syntax
DELETE FROM tabela_nazwa WHERE [wybór warunków]
 Jeżeli warunek selekcji nie jest wyszczególniony wszystkie rekordy są
usunięte z tablicy
 Jednakże to nie znaczy, że cała tablica jest usunięta
 Początkowa tablica pozostaje i funkcjonuje jako pusta i nie
wypełniona
 Na przykład : aby usunąć skutki ostatniej sesji egzaminacyjnej,
usuwamy wszystkie kolumny od relacji R1 używając rozkazu
DELETE FROM R1
 Warunki selekcji w części WHERE mają ten sam tryb jako warunki
filtracji w SELECT.
 Te warunki określają, które kolumny będą usunięte od początkowej
relacji
 Na przykład : aby wyłączyć studenta John Harber, piszemy:
 FROM DELETE R2 WHERE imię = ‘ Harber Johna'
 Wstawione pytanie może zostać znalezione w części WHERE

43
Polecenie manipulacji danych- DELETE
przykład
Musimy usunąć studentów mających jedną ocenę dwa i więcej niż jedną
(znaków 2)
 Wtedy musimy zobaczyć warunki selekcji i znaleźć studentów mających
dwa i więcej znaków 2, OR
 Musimy wybrać warunki wyboru i znaleźć studentów mających dwa i
więcej znaków 2 OR
 Studenci którzy mają jedną 2 lub więcej nie zdali egzaminu.
 Aby znaleźć tych studentów, wybieramy z relacji R! te rekordy z oceną
2 lub nie są zdefiniowane(czyli nie mają oceny)
 Wtedy grupujemy otrzymany wynik na atrybuty: IMIE_NAZWISKO i
 Oceniamy te numery kolumn dla których nawiązuje do numeru nie
zdany egzamin dla każdego studenta.
 Poniżej przedstawione jest konstrukcja napisana w języku SQL
 FROM DELETE R2 WHERE R2.IN IMIĘ_NAZWISKO { Rl WYBIERZ.
FROM IMIĘ_NAZWISKO Rl
 OCENA WHERE = 2 BY GROOP NULL IS MARK OR
 Rl. LICZBA STUDENTÓW MAJĄCYCH: IMIĘ_NAZWISKO (*) >= 2

44
Polecenie manipulacji danych- INSERT
Syntax
INTO INSERT tablica_imię [(< lista kolumn >) ]
VALUES (< lista wartości >)
 Ta składnia pozwala na wejście tylko jednego wiersza do tablicy
 Wyznaczenie listy kolumn nie jest konieczne, jeżeli wejdziemy do wierszy
z wyznaczonymi wartościami dla wszystkich kolumn
 Na przykład , wprowadź nową książkę w tablice KSIĄŻKI
KSIĄŻKI INTO INSERT (ISBN, TYTUŁ, AUTOR, WSPÓŁ AUTOR,
DATA WYDANIA, STRONY)
WARTOŚCI ("0-201-3574 7 - X”," Widok ogólny informatyka. szósta
Edycja”, " Brookshear Glenn J.”, 2000, 688)
 To jest tylko jeden autor dla tej książki, jednakże
 Wyznaczyliśmy kolumnę WSPÓŁ AUTOR w liście kolumn i
Dlatego musieliśmy wyszczególnić korespondencje wartość w rozdziale
WARTOŚCI – włączyliśmy pusty rząd, ponieważ na pewno wiemy , że nie
ma żadnego współautora

45
Polecenie manipulacji danych –
UPDATE(uaktualnianie) Syntax
UAKTUALNIENIE tablica_imię
SET kolumny_nazwa = nowa wartość [ wybór_warunki WHERE]
 Część warunku WHERE nie jest konieczna tak jak w stwierdzeniu
DELETE
 Funkcjonuje to na tej samej zasadzie co DELETE, pozwalającym
wybrać rzędy, gdzie operacja modyfikacji będzie użyta
 Jeżeli warunek selekcji nie zostanie wyznaczony wtedy operacja
modyfikacji będzie użyta w każdym wierszu tablicy
 Przykład: student Ellen Brown poprawiła egzamin z DB z oceny 2 na 4
 Dla jej przypadku przeprowadzamy następującą operację:
UPDATE Rl
Rl SET.Ocena = 4
WHERE R1.IMIĘ = "Ellen Brown" AND
R1.Przedmiot = "Baza danych”

46
Literatura







Lecture Notes. Database (e-version). Based on a book by T.S.
Karpova. Database: Models, Development, Implementation.
(in Russian). S.Pitersburg. Piter. 2002, 304p., (translated and
edited by Anatoly Sachenko)
C.J.Date. An Introduction to Database Systems. AddisonWesley, Copyright , 1024 p., 2003
Thomas Connolly, Carolyn Begg. Database Systems: A
Practical Approach to Design, Implementation, and
Management. 3rd Edition. Addison Wesley. 1236 p., 2001
Beynon-Davies P.: Systemy baz danych. WNT, Warszawa
2000.
Internet: Strona domowa przedmiotu:
http://www.roz6.polsl.pl/bazydanych.
Internet: Portal wiedzy Katedry Informatyki i Ekonometrii
http://www.roz6.polsl.pl/portalwiedzy.html
http://www.roz6.polsl.pl/asachenko/sutaa.html
Download