bazy danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie...
TRANSCRIPT
![Page 1: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/1.jpg)
Bazy Danych (cz. 1)● Normalizacja/Denormalizacja● Podstawowe bloki składowe, zasady tworzenia● Diagramy ERD● Algebra relacyjna● Podstawy SQL na przykładzie Oracle
![Page 2: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/2.jpg)
Literatura● Oracle Database 10g: SQL Fundamentals II● Książka SQL. Zaawansowane techniki
programowania, Joe Celko● ...
![Page 3: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/3.jpg)
Normalizacja
![Page 4: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/4.jpg)
Postać nieunormowanaid
zamówieniaid
dostawcynazwa
dostawcyadres
dostawcyid
częścinazwa części ilość
0001 M$ USA 0088 System op.
0004 111 Polska 0089 Obudowa 1
456 0001 Karta graficzna 1
Toshiba Japonia Bateria 55
Jak postać nieunormowana może też występować tabela, w której adres jest w pisany w jednym polu (tzn. Razem kod, ulica, miejscowość, numer domu etc.). W przypadku normalizacji te dane powinny zostać rozbite (atomowe, swoiste, niezwiązane o określonym typie) na poszczególne kolumny. W przedstawionym przykładzie pozostawimy tylko adres jako jedną kolumnę ze względu na oszczędność miejsca (nie będziemy też podawać pełnych danych).
![Page 5: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/5.jpg)
Postać nieunormowanaInne przykłady nieunormowanych schematów BD
osoba Ulubione koloryMieczysław beż, róż, żółtyRoman czarny, niebieski
osoba kolor1 kolor2 kolor3Mieczysław beż róż żółtyRoman czarny niebieski NULL
UWAGA: chodzi tu o powtarzające się grupy, teoretycznie tylko przykład pierwszy łamie zasady projektowania (normalizacja), drugi przykład możemy sobie wyobrazić jako zestaw opisujący kolory różnych elementów (z punktu bazy danych kolumny w przykładzie drugim przechowują jedną wartość).Jednak drugi przykład nie jest zalecany jeśli baza ma się rozbudowywać.
![Page 6: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/6.jpg)
AnomalieNadmiarowość – w przypadku nowego elementu tego samego producenta zostaną zdublowane jego dane: adres, nazwa. Jeśli dane te zostaną błędnie wprowadzone baza danych utraci spójność.
Anomalia wstawiania – Jeśli zajdzie potrzeba dodania nowego producenta ale bez podawania zamówienia. Baza danych stanie się wtedy niepełna (gdy będzie w 1NF to przejdzie do postaci nieunormowanej).
Anomalia modyfikacji – zmiana nazwy dostawcy wymaga zmian we wszystkich wierszach. W przypadku wielu rekordów spowoduje to nadmierne obciążenie systemu.
Anomalia usuwania – Jeśli jest wpisane jedno zamówienie to jego usunięcie spowoduje też usunięcie informacji o dostawcy.
![Page 7: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/7.jpg)
Pierwsza postać normalna (1NF)id
zamówieniaid
dostawcynazwa
dostawcyadres
dostawcyid
częścinazwa części ilość
0001 222 M$ USA 0088 System op. 1
0004 111 Blacharnia Polska 0089 Obudowa 1
0007 456 Nvidia USA 0001 Karta graficzna 1
0010 768 Toshiba Japonia 0002 Bateria 55
Każda komórka reprezentuje wartość atomową (przy czym należy to rozumieć w sensie rzeczywistości opisywanej prze projektanta bo np.. datę można rozbić na dzień, miesiąc i rok co nie ma sensu jeśli potrzebna nam jest pełna data).
Wartości NULL w komórkach: Wielu twierdzi, że łamie to zasady 1NF. Teoretycznie nie jednak zaleca się jak najmniejszą liczebność wartości NULL ze względu, że w SQL jest to trzecia wartość logiczna, którą trzeba specjalnie traktować.
![Page 8: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/8.jpg)
Klucz kandydujący● Minimalny zestaw atrybutów definiujący krotkę
(wiersz)● Relacja (tabela) może zawierać kilka kluczy
kandydujących● Zazwyczaj wybiera się jeden z kluczy
kandydujących (staje się on wtedy kluczem głównym).
● Atrybuty (kolumny) nie występujące w kluczach kandydujących nazywa się atrybutem pobocznym (non-prime), atrybut należący atrybutem głównym (prime).
![Page 9: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/9.jpg)
Druga postać normalna (2NF)
id dostawcy
nazwa dostawcy
adres dostawcy
222 M$ USA
111 Blacharnia Polska
456 Nvidia USA
768 Toshiba Japonia
id zamówienia
id dostawcy
id części
ilość
0001 222 0088 1
0004 111 0089 1
0007 456 0001 1
0010 768 0002 55
id części
nazwa części nazwa producenta
adres producenta
0088 System op. M$ USA
0089 Obudowa Blacharnia Polska
0001 Karta graficzna
ATI USA
0002 Bateria Toshiba Japonia
Relacja jest w drugiej postaci normalnej wtedy i tylko wtedy gdy jest w I postaci normalnej i każda kolumna zależy funkcyjnie od całego klucza kandydującego (głównego)
Poprzednia postać nie była w 2NF gdyż w tabeli wraz z kluczem iddostawcy, idczesci oraz idzamowienia pojawiał się wartość związana tylko z częścią klucza np. Adres dostawcy jest związany tylko i wyłącznie z kluczem iddostawcy
Dostawca nie musi być związany z producentem
![Page 10: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/10.jpg)
Trzecia postać normalna (3NF)Schemat jest w 3NF jeżeli jest w 2NF i pomiędzy atrybutami nie należącymi doklucza głównego nie występują zależności funkcjonalne.
id części id producenta
nazwa części
0088 0088 System op.
0089 0089 Obudowa
0001 0001 Karta graficzna
0002 0002 Bateria
Tabela opisująca części jest w 2NF bo od klucza idczesci zależą pola w tabeliale nie jest w 3NF dlatego, że nazwa dostawcy nie należy do opisu części samochodowej
id producenta
nazwa producenta
adres producenta
0088 M$ USA
0089 Blacharnia Polska
0001 Nvidia USA
0002 Toshiba Japonia
![Page 11: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/11.jpg)
Trzecia postać normalna (3NF)id
zamówieniaid
dostawcyid
częściilość
0001 222 0088 1
0004 111 0089 1
0007 456 0001 1
0010 768 0002 55
id dostawcy
nazwa dostawcy
adres dostawcy
222 M$ USA
111 Blacharnia Polska
456 Nvidia USA
768 Toshiba Japonia
id producenta
nazwa producenta
adres producenta
0088 M$ USA
0089 Blacharnia Polska
0001 Nvidia USA
0002 Toshiba Japonia
id części id producenta
nazwa części
0088 0088 System op.
0089 0089 Obudowa
0001 0001 Karta graficzna
0002 0002 Bateria
![Page 12: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/12.jpg)
Wnioski
Trzecia postać normalna jest wystarczająca do większości zastosowań pozostałe postacie normalne stosuje się gdy wymagana jest większa optymalizacja.
W przedstawionym przykładzie zastosowaliśmy pewnego typu uproszczenie (swoją drogą często stosowane) a mianowicie wprowadziliśmy unikalne oznaczenia (id) dla elementów. Równie dobrze, można by zastosować klucz „nazwa dostawcy” zamiast „id dostawcy”. Można by też zbudować unikalny klucz składający się z większej liczby kolumn.
![Page 13: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/13.jpg)
RozbudowaRozbudujmy poprzedni przykład pomijając klucze (id) i wprowadzając kupującego.Kolumny pokolorowane będą teraz oznaczały unikalne klucze dla tabeli.Wyjaśni nam to dlaczego tak zrobiliśmy (po części intuicyjnie) w poprzednim przykładzie.
nazwa dostawcy
adres dostawcy
M$ USA
Blacharnia Polska
Nvidia USA
Toshiba Japonia
nazwa dostawcy
nazwa części Ilość w magazynie
M$ System op. 11
Blacharnia Obudowa 24
Nvidia Karta graficzna 111
Toshiba Bateria 876
nazwa kupującego
adres
Kazio Emiraty A
Możliwość zamiennika – ta sama część
Czego jeszcze potrzeba ?
![Page 14: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/14.jpg)
Elementu opisującego transakcję oraz upewnieniu się w której postaci normalnej jesteśmy (3NF).
nazwa dostawcy
nazwa części nazwa kupującego
Data transakcji Ilość
M$ System op. Kazio 2008-01-01 1
W tabeli mamy jednak nadal pewien problem, możemy zarezerwować kilka transakcji w tymSamym czasie dla tego samego kupującego (zakładając hh:mm:ss), co jest nierealne w rzeczywistym świecie.
![Page 15: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/15.jpg)
UWAGAZakłada się, że w 3NF nie ma zależności przechodnich. Oznacza to, że brak jest sytuacji w której w tabeli z kolumnami X,Y,Z można przedstawić w następujący sposób X->Y, Y->Z z czego wynika X->Z. Jednak dotyczy to całego klucza i jest dopuszczalne występowanie zależności przechodnich gdy X nie jest kluczem.
Do takich zależności zależy też np. kolumna powierzchnia wyliczana na podstawieBoków kwadratu a i b.
![Page 16: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/16.jpg)
Postać normalna klucza elementarnego
EKNF – Elementary Key Normal Form
Metoda ta jest bardzo subtelną modyfikacją 3NF i częściej jest zastępowana przez następną z postaci normalnych.
nazwa dostawc
y
nazwa części id części Ilość w magazynie
M$ System op. A01 11
Blacharnia
Obudowa B02 24
Nvidia Karta graficzna
C03 111
Toshiba Bateria C04 876
nazwa dostawc
y
id części Ilość w magazynie
M$ A01 11
Blacharnia
B02 24
Nvidia C03 111
Toshiba C04 876
id części nazwa części
A01 System op.B02 ObudowaC03 Karta
graficznaC04 Bateria
![Page 17: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/17.jpg)
Postać normalna Boyce-CoddaBCNF – Boyce-Codda Normal Form
W tej postaci normalnej nie ma nietrywialnych (poza X->X) zależności a jedynie pomiędzy atrybutami a kluczem.
Przykład X->Y, Y->Z z opisowego przykładu już nie był by w postaci BCNF
![Page 18: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/18.jpg)
Czwarta postać normalna (4NF)Problem wielowartościowych zależności.MVD - Multivalued Dependencies
Jeśli w jednym zamówieniu będziemy chcieli umieścić więcej elementów powstanie problem. Bo np. Dodając część musimy dodać od razu wydziały, w których zostanie zostanie wykorzystana (czyli więcej niż jeden wiersz).
wydział zadanie częśćA Z1 C1A Z1 C2A Z2 C3C Z3 C1
wydział zadanieA Z1A Z2C Z3
wydział częśćA C1A C2A C3C C1
4NF jest zawsze możliwa do osiągnięcia ale nie zawsze warto/jest potrzebna.
![Page 19: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/19.jpg)
Piąta postać normalna (5NF)Project-join normal form (PJ/NF) - postać połączonej projekcji. Zakłada ona, że istnieją zależności nie tylko między kluczami i opiera się na bezstratnym połączeniu (JOIN).Stosowana gdy mamy problem n-stronny (n>2). Buduje się ją z 3NF przy założeniu, że klucze to pojedyncze kolumny.
kupujący sprzedawca Firma Roman Genowefa SuperRoman Stefania pol-exKazimierz Stefania Super
kupujący Firma Roman SuperRoman pol-exKazimierz Super
sprzedawca Firma Genowefa SuperStefania pol-exStefania Super
kupujący sprzedawcaRoman GenowefaRoman StefaniaKazimierz Stefania
![Page 20: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/20.jpg)
UWAGAJest to silna zależność w której wykorzystane zostało połączenie JOIN
Można sobie wyobrazić iloczyn kartezjański tych zbiorów (bardziej jasne będzie to przy poznaniu zapytania SELECT) w którym otrzymamy zarówno poprawne wiersze jak i te niepoprawne (anomalia połączenia projekcji).
kupujący sprzedawca firma Roman Genowefa SuperRoman Stefania pol-exRoman Stefania SuperKazimierz Stefania Super
![Page 21: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/21.jpg)
Postać normalna klucza domenyDKNF - Domain Key Normal Form
Wymaga się aby klucz w jednoznaczny sposób identyfikował wiersz aby była spełniona ta zależność (DKNF) powinny być spełnione:
- pole powinno być dobrze zdefiniowane - pole powinno być związane z obiektem który chcemy trzymać w tabeli - każde pole powinno być zależne od klucza - tabela powinna reprezentować jeden temat/rodzaj obiektów
Zatem na pewno odpadają tabele wielowartościowe, relacje przechodnie. Można stwierdzić że tabela powinna być w 5NF.
Niestety forma ta jest trudna do otrzymania w praktyce w dodatku zależy od intuicji ...
![Page 22: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/22.jpg)
(6NF)
SQL and Relational Theory: How to Write Accurate SQL Code By C. J. Date (Appendix B)
Postać ta powstała w 2002 roku i ma na celu normalizacje danych mogących się zmieniać w czasie/zależeć od czasu.
Może to być np. tabela zawierająca informacje o zatrudnieniu jakiegoś pracownika i informacji od kiedy do kiedy jest on zatrudniony. Pojawia się tu też problem łączenia danych w blokach czasu (przedłużenie ciągłości zatrudnienia).
Obecnie dopiero powstają (brak chyba jeszcze jakiś standardów)Temporal database - Temporalna baza danych
![Page 23: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/23.jpg)
DenormalizacjaDenormalizacja jest trudnym problemem, występuje tu zjawisko polaryzacji środowiska. Pojawiają się tu osoby silnie przestrzegające zasad normalizacji jak i takie które wręcz używają postaci nieunormowanych. Można by to przyrównać do fanatyków Linux'a lub Windows'a niemających pojęcia jeden o drugim.
Zatem kiedy stosować denormalizację ?
Z pewnością kiedy mamy problemy z wydajnością (długie oczekiwanie na generowanie raportów, wolne ładowanie strony etc.). Czasami denormalizacja potrafi znacznie podnieść taką wydajność, jednak mimo wszystko powinno się najpierw sprawdzić czy nasze zapytania na pewno są dobrze zoptmalizowane, czy indeksy są dobrze założone, czy system nie wymaga ''wyczyszczenia''. Zakłada się nawet (np. SQL... J.Celko), że denormalizacja powinna być przeprowadzana tylko i wyłącznie na hurtowniach danych (w przybliżeniu baza danych do odczytu).
![Page 24: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/24.jpg)
Projektowanie bazy danych
Dodatki z literatury
● Oracle FAQ (http://www.orafaq.com) 2009.10.11
● Data Modeling and Relational Database Design English Student Subscription (20000GC13 Production 1.3 August 2002 D37098 Orcale)
Przykład projektu BD (popularne forum phpBB)
![Page 25: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/25.jpg)
Modelowanie danych● Co będzie przydatne i kiedy: Normalizacja czy
Denormalizacja ? Jak ma się modelowanie do normalizacji ?
● Papier, Ekran, Paint czy specjalistyczne oprogramowanie (ER) ?
Model konceptualny >>>>>>> Model fizyczny
CDM – Conceptual Data ModelPDM – Physical Data Model
![Page 26: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/26.jpg)
Encje, Atrybuty, Relacje
![Page 27: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/27.jpg)
Encje - Entities
Czym jest encja ?
Encja powinna określać co w naszych danych jest istotne, godne przechowywania. Elementy te powinny być dobrze zdefiniowane, tak aby było możliwe ich rozróżnienie. Powinny to być informacje o obiektach takich które można umieścić w liście. Nazwy encji najczęściej przyjmuje się jako rzeczownik w liczbie mnogiej np. użytkownicy, przedmioty.Aczkolwiek są różne zdania. Ja wychodzę z założenia, że:● Należy na 100% stosować tą samą notację w całym projekcie.● Dostosować się do istniejącej notacji, notacji używanej przez grupę do której się dołączyło
UżytkownicyImięPESELData urodzeniaAdresUprawnienia
Encje zazwyczaj można utożsamiać z tabelami.
![Page 28: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/28.jpg)
Encja a instancja Encji
Zbiór instancji encji
UżytkownicyImię RomanPESEL 64062687368Data urodzenia 1964-06-26Adres PoznańUprawnienia Użytkownik
Instancja encji
UWAGA !Bardzo często mówi
się o instancji encji, encja
![Page 29: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/29.jpg)
Atrybuty - Attributes
Poszczególne atrybuty pozwalają na odróżnienie poszczególnych instancji encji.Podczas projektowania encji należy zaznaczyć który z nich jest identyfikatorem.Dopuszcza się też podanie domeny oraz typu atrybutu.Zatem atrybut jest: - własnością jednowartościową opisującą encje - reprezentuje jakiś ważny wycinek logiki - reprezentuje informację którą możemy opisać, klasyfikować, kwalifikować, podać ilość/wielkość oraz jest istotna z punktu widzenia encji.
UżytkownicyImię RomanPESEL 64062687368Data urodzenia 1964-06-26Adres PoznańUprawnienia Użytkownik
Na diagramie często wyświetlenie wszystkich atrybutów mogło by go zaciemnićWyświetla się wtedy tylko najważniejsze informacje (np. Klucze własne, obce)
![Page 30: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/30.jpg)
Relacje - Relations
● Reprezentują fragment opisywanej rzeczywistości
● Opisują wzajemne relacje encji● Zawsze Istnieją pomiędzy dwoma encjami (albo
jednej podwójnie)● Mają dwie perspektywy● Są nazwane na obu końcach
![Page 31: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/31.jpg)
Przykład● Pracownik ma stanowisko● Stanowisko jest utrzymywane przez
pracownika● Produkt jest klasyfikowany wedle typu
produktu● Typ produktu jest jest klasyfikacją dla
produktu● Ludzie robią rezerwacje● Rezerwacją jest robiona przez ludzi
![Page 32: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/32.jpg)
● Wszyscy pracownicy mają stanowisko ● Nie ma pracownika bez stanowiska● Nie wszystkie stanowiska są obsadzone● Niektóre stanowiska są obsadzone więcej niż jednym
pracownikiem
![Page 33: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/33.jpg)
Perspektywy
![Page 34: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/34.jpg)
![Page 35: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/35.jpg)
![Page 36: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/36.jpg)
Czytanie relacji
![Page 37: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/37.jpg)
![Page 38: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/38.jpg)
Więzy - Constraints
● Unikalny identyfikator (UID - Unique Identifiers)● ARC Relationship
![Page 39: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/39.jpg)
Unikalny identyfikatorJuż pojawiły się takie jak zestaw danych teleadresowych, unikalny numer (EAN, PESEL).Mogą być jeszcze (i wiele wiele innych):
![Page 40: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/40.jpg)
ARC Relationship
Relacje tego typu opisują relacje pomiędzy relacjami wykluczającymi się np.
Numer konta bankowego może być firmowy albo prywatny, jednak nigdy na raz firmowy i prywatny
XOR 0 10 0 11 1 0
![Page 41: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/41.jpg)
Dobre przykłady
![Page 42: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/42.jpg)
Źle zdefiniowane
Ma należeć do jednej encji
Relacje powinny być tego samego typu
Przynajmniej dwie relacje
Ta może być ale mogą pojawić się problemy przy implementacji
![Page 43: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/43.jpg)
Dodatkowe więzy integralności● Ważność wobec daty● Zakres parametrów
![Page 44: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/44.jpg)
Diagramy związków encjiERD – Entity-relationship diagrams
● Modelują sferę ''biznesu'' a nie implementacje● Są techniką mającą dobrze zdefiniowaną
strukturę i składnię● Jako rezultat otrzymujemy diagramy ułatwiające
poznanie struktury
![Page 45: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/45.jpg)
Diagramy związków encji
● Zawierają wszystkie informacje● Informacje występują tylko raz ● Jeśli informacje da się odziedziczyć z już
stworzonego modelu, nie jest ona powtarzana● Informacje znajdują się w odpowiednim miejscu
(logika)
ERD – Entity-relationship diagrams
![Page 46: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/46.jpg)
Diagramy związków encjiERD – Entity-relationship diagrams
● Notacja Barkera (Oracle)● Notacja Martina (kruczej stopki -
Crow's Foot)● EER (Extended Entity
Relationship Diagrams)● UML
![Page 47: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/47.jpg)
EER
![Page 48: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/48.jpg)
EER [n:m]
![Page 49: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/49.jpg)
Barkera
![Page 50: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/50.jpg)
Crow's FootTODO:Błąd w oznaczeniu
![Page 51: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/51.jpg)
1:1
1:n
n:m
![Page 52: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/52.jpg)
Relacje n:m
Czy ten opis jest wystarczający ? Czy czegoś nie brakuje ?
![Page 53: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/53.jpg)
![Page 54: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/54.jpg)
Czy dodanie atrybutu poprawi naszą sytuacje oraz czy będzie zgodne z zasadami ?Najchętniej dodalibyśmy atrybut pośrodku a zatem ...
![Page 55: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/55.jpg)
... powinniśmy utworzyć nową encje i zastosować relacje 1:n
![Page 56: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/56.jpg)
Idąc dalej jeśli chcielibyśmy obsługiwać zamówienia składające się z większej liczby towarów
![Page 57: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/57.jpg)
![Page 58: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/58.jpg)
![Page 59: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/59.jpg)
Słowniki danychTekstowy opis modelu, daje to możliwość umieszczenia danych, które zaciemniły by diagramLub nie ma możliwości ich zamieszczenia (dodatkowe więzy).
O ile w przypadku encji, atrybutów, relacji jest to oczywiste (tabela z opisem),To w przypadku dodatkowych więzów warto podać choć wyjaśniającą tabelkę
Sposób max_min_objętośćopis Zapewnia kontrolę objętości płynu.zawartość Pozwala utrzymać objętość w zakresie od
100l do 1000l
![Page 60: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/60.jpg)
Manipulowanie danymiAlgebra Relacyjna
Algebra relacyjna jest podstawowym zbiorem operacji dla modelu relacyjnego.Za pomoc operacji należących do algebry relacyjnej użytkownik ma możliwość budowania zapytań wyszukiwania. Operacja może działać na jedną lub więcej istniejących relacji a wynikiem jest relacja.Operacje należące do algebry relacyjnej:
● Suma,● Różnica,● Część wspólna,● Iloczyn kartezjański,● Selekcja,● Projekcja,● Złączenie,
![Page 61: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/61.jpg)
Relacja
Czemu nie ''tabela''. Otóż aby tabela mogła zostać nazwana relacją (będącą jedyna strukturą danych w modelu relacyjnym) musi spełnić następujące kryteria (już znane):
1) Każda tabela ma unikalną nazwę w obrębie bazy danych.2) Każda kolumna ma unikalną nazwę w obrębie tabeli.3) Wszystkie wartości w kolumnie są tego samego typu, w każdej tabeli jest co najmniej
jedna kolumna.4) Każdy wiersz jest unikalny w obrębie tabeli (nie ma dwóch takich samych). Tabela
może być pusta.5) Dane są atomowe (nie można przechowywać zbioru wartości).6) Kolejność nie jest istotna.7) Kolejność kolumny nie jest istotna.
![Page 62: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/62.jpg)
Operacja sumy (łączenia)
Relacja wynikowa zawiera wszystkie wiersze z relacji wejściowych bez powtórzeń.Obie tabele (po za tym, że muszą być relacjami) muszą mieć identyczną strukturę (ale dopuszcza się różne nazwy kolumn).
R1 UNION R2 -----> RESULT
![Page 63: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/63.jpg)
Operacja różnicy
Operacja różnicy tworzy relacje na podstawie dwóch relacji biorąc wszystkie wiersze w relacji pierwszej nie występujące w drugiej relacji.
UWAGA: Istotna jest kolejność podania relacji.
R1 DIFFERENCE R2 -----> RESULT1R2 DIFFERENCE R1 -----> RESULT2
![Page 64: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/64.jpg)
Operacja przecięcia (część wspólna)
R1 INTERSECTION R2 ---> RESULT
Relacja wyjściowa zawiera wiersze wspólne dla obu relacji wejściowych.W tym przypadku struktura tabel też powinna być taka sama.
![Page 65: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/65.jpg)
Operacja iloczynu kartezjańskiego
PRODUCT R1 WITH R2 ---> RESULT
Jako relacja wynikowa pojawia się tablica ze wszystkimi kombinacjami wierszy z jednej relacji z wierszami z drugiej relacji. W przypadku tej operacji nie jest wymagane aby relacje miały identyczne struktury
![Page 66: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/66.jpg)
Operacja selekcji (ograniczenia)
RESTRICT R1 WHERE WAR -> RESULTDziałą na pojedynczą relacje zwracając relacje z ograniczoną liczbą wierszy do podanego warunku (np. Ograniczenie do jednego miasta Gdańsk relacji – zakładając, że istnieje kolumna odpowiedzialna za przechowywanie tego typu danych - miasto).
![Page 67: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/67.jpg)
Operacja projekcji (rzutowania)
PROJECT R1 (COL LIST) -> RESULT
Operacja działa na atrybuty relacji, wybiera tylko zadane w liście kolumn (COL LIST)
![Page 68: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/68.jpg)
Operacja złączenia (scalania)
Jako argumenty mogą być podane dwie relacje o różnych strukturach. Jako dodatkowe argument przyjmuje się nazwy kolumn, po jednej z każdej relacji (kolumny złączenia). Wartości z kolumn muszą pochodzić z tej samej dziedziny oraz warunek scalający nie musi być warunkiem równości. Najczęściej wybiera się kolumny będące też kluczami.
![Page 69: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/69.jpg)
● Równozłączenie● Złączenie naturalne● Złączenie zewnętrzne● Lewostronne złączenie zewnętrzne● Prawostronne złączenie zewnętrzne● Obustronne złączenie zewnętrzne
![Page 70: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/70.jpg)
Równozłączenie
EQUIJOIN R1 WITH R2 ON K1=K2 -> RESULT
W relacji wynikowej znajdują się tylko te wiersze z dwóch relacji, w których wartości w kolumnach złączenia są takie same .
![Page 71: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/71.jpg)
Złączenie naturalne
JOIN R1 WITH R2 ON K1=K2 -> RESULT
Różni się od równozłączenia tym że eliminuje powtarzające się wiersze.
![Page 72: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/72.jpg)
Integralność● Encji● Referencyjnej● Semantyczną (dziedziny)
![Page 73: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/73.jpg)
Integralność encji
Już było !
![Page 74: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/74.jpg)
Integralność referencyjna
Reguła określająca stan klucza obcego. Teoretycznie dopuszczalne są dwie wartości: może on przyjąć wartość klucza głównego albo wartość NULL. Ostatnia możliwość oznacz, że element nie ma reprezentanta . Przypadek taki występuje bardzo rzadko (np. drzewo) i nie jest on pożądany.
Zachowanie tego typu integralności możliwe jest na poziomie tworzenia schematu. Istnieją trzy możliwości wyboru:
●Zmiany ograniczone (RESTRICTED)●Zmiany kaskadowe (CASCADES)●Zmiany powodujące ustawienie NULL (NULLIFIES)
Jako przykład (użytkownicy+tematy)
![Page 75: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/75.jpg)
Integralność semantyczna
Constrains – dodatkowe więzy brane pod uwagę przy zmianach w bazie danych, takie których nie da uwzględnić się w projektowanym diagramie.
np. - data związana z człowiekiem (> od urodzenia) - ograniczenie do poszczególnych miast
Ma to zabezpieczyć przed typowo ludzkimi pomyłkami.
![Page 76: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/76.jpg)
Podstawy języka SQLSQL - Structured Query Language
IBM: Donald D. Chamberlin, Raymond F. Boyce wczesne lata 1970
Pierwszą firmą która zastosowała SQL w produkcie komercyjnym była Oracle
ROK Nazwa Uwagi1986 SQL-86 Pierwszy st.1989 SQL-891992 SQL-92 CROSS JOIN 1999 SQL:1999 Reg. Exp. Rekurencja, wyzwalacze, typy nieskalarne, OO2003 SQL:2003 XML, Kolumny z automatyczną generacją numeru2006 SQL:20062008 SQL:2008 TRUNCATE, dodatki do wyzwalaczy, ORDER BY
American National Standards Institute (ANSI)
(tyle ile będzie potrzeba aby zrozumieć niektóre akcje)
![Page 77: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/77.jpg)
Rozwinięcia proceduralne
Wikipedia, hasło SQL (eng)
Na razie zaznaczam różnorodność, szczegóły później (tu albo następny semestr)
![Page 78: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/78.jpg)
Alternatywy do SQL
Literatura uzupełniająca (do SQL):●Introduction to Oracle9i SQL English Instructor Subscription 40049GC11 Production 1.1 October 2001 D33996
●Oracle® Database SQL Reference 10g Release 1 (10.1) Part Number B10759-01 (SELECT), http://download.oracle.com/docs/cd/B14117_01/server.101/b10759/statements_10002.htm, 2009.10.18
LINQ Language Integrated QueryJPQL Java Persistence Query LanguageOQL Object Query Language
...i naturalnie wiele innych, te jednak zdobywają coraz większą popularność (szczególnie LINQ)
![Page 79: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/79.jpg)
Składnia SQL
![Page 80: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/80.jpg)
Pisanie zapytań SQL● Zapytania SQL nie są czułe na wielkość
znaków (aczkolwiek nazwy tabel mogą być)● Zapytanie może mieć więcej niż jedną linię● Słowa kluczowe nie mogą być ujęte w apostrofy
oraz nie mogą być dzielone między liniami● Warunki zazwyczaj umieszcza się w jednej lini● Zaleca się stosować formatowanie składni
(wcięcia, DUŻE/małe litery)
![Page 81: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/81.jpg)
Kolejność operatorów
● Dzielenie i mnożenie ponad dodawaniem i odejmowaniem
● W przypadku tych samych operatorów działania wykonywane są od lewej do prawej
● Nawiasy aby wymusić kolejność i wprowadzić porządek ( ... jak w innych przypadkach tego typu)
![Page 82: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/82.jpg)
Typ NULL i trzy stanowa logika
SQL,http://en.wikipedia.org/wiki/SQL,2009.10.18
![Page 83: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/83.jpg)
Typy danych w OracleW bazie Oracle typ danych jest atrybutem kolumny (lub zmiennej). Określa on ty informacji w nich przechowanych. Typy można podzielić na trzy grupy
- Znakowe - Liczbowe - Pozostałe
Typy też są dostępne w PL/SQL (o czym później)
![Page 84: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/84.jpg)
Znakowe typy danych
Character data types
● CHAR● VARCHAR2 (VARCHAR - dep.)● NCHAR● NVARCHAR2● LONG● CLOB● NCLOB
![Page 85: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/85.jpg)
CHAR
Przechowuje od 1 do 2000 znaków. Domyślnie jeden znak. Baza danych Oracle wypełnia automatycznie pozostałe miejsca pustymi znakami. Jest to typ o stałej długości łańcucha znaków.
CHAR = CHAR(1)CHAR(10)CHAR(255)
Jako synonim dla tego typu: CHARACTER
![Page 86: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/86.jpg)
VARCHAR2
W przeciwieństwie do poprzedniego umożliwia składowanie ciągów znaków o różnej długości. Podobnie jak poprzednio określa się długość tego typu jednak pola nie są dopełniane pustymi znakami. Typ może przechowywać do 1-4000 znaków.
VARCHAR(500)
Typ ten może być w niektórych przypadkach bardziej oszczędny jeśli chodzi o miejsce niż typ CHAR.
Istnieje jeszcze typ VARCHAR jednak Oracle zaleca porzucenie go na rzecz VARCHAR2 oraz nie zapewnia kompatybilności między tymi typami w przyszłości.
Synonimy: STRING, VARCHAR
![Page 87: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/87.jpg)
NCHAR i NVARCHAR
Oba te typy są podobne do opisanych poprzednio jednak pozwalają przechowywać łańcuchy znaków w zestawie znaków innym niż domyślny dla bazy danych Oracle (ustawionym w konfiguracji).
Od wersji 9i można określać pola w liczbie znaków a nie bajtów
Od wersji 10g istnieje wsparcie dla wyszukiwania oraz akcentów
Zachęta:Zapoznać się z UTF8 - 8-bit Unicode Transformation FormatBOM - byte order mark (np. utf8 EF BB BF)
![Page 88: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/88.jpg)
LONG, CLOB, NCLOB
Zawiera do 2GB danych znakowych już nie praktykowany. Typ ten ma pewne ograniczenia jeśli chodzi o zapytania SQL. Nie można tu stosować np.
GROUP BYORDER BYCONNECTED BYDISTINCT
Nie można też utworzyć indeksu na takiej kolumnie.
CLOB - Character Large ObjectNCLOB - National Character Large Object
Mogą zawierać do 4GB(128TB).
Typy te należą do typów LOB – Large Object
![Page 89: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/89.jpg)
Liczbowe typy danych● NUMBER(p,s) np. NUMBER(10,-2)● DECIMAL● INTEGER● INT● SMALLINT● FLOAT● DOUBLE PRECISION● REAL● BINARY_FLOAT● BINARY_DOUBLE
![Page 90: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/90.jpg)
daty● DD-MIE-RR GG:MI:SS MIE (3 lit skrót)● DATE● TIMESTAMP● TIMESTAMP (precyzja sek.) WITH {LOCAL}
TIMEZONE
![Page 91: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/91.jpg)
Inne typy danych● RAW● LONG RAW
Typy nie interpretujące danych (surowe)
![Page 92: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/92.jpg)
● ROWID
Pseudo kolumna zawierająca informacje o położeniu fizycznym danych (nie można jej zmieniać poleceniami SQL)
![Page 93: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/93.jpg)
● ORA_ROWSCN
Pseudokolumna pozwalająca obserwować zmiany zachodzące podczas transakcji
![Page 94: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/94.jpg)
● LOB● CLOB● NLOB● BLOB – Binary Large Object
![Page 95: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/95.jpg)
● BFILE
Wskaźniki do plików poza bazą danych. Dane tylko do odczytu.
![Page 96: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/96.jpg)
● XMLType
Wsparcie dla XML. Dane w CLOB
![Page 97: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/97.jpg)
CREATE TABLE
![Page 98: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/98.jpg)
Przykład tworzenia tabeliCREATE TABLE employees_demo ( employee_id NUMBER(6) , first_name VARCHAR2(20) , last_name VARCHAR2(25) CONSTRAINT emp_last_name_nn NOT NULL , email VARCHAR2(25) CONSTRAINT emp_email_nn NOT NULL , phone_number VARCHAR2(20) , hire_date DATE DEFAULT SYSDATE CONSTRAINT emp_hire_date_nn NOT NULL , job_id VARCHAR2(10) CONSTRAINT emp_job_nn NOT NULL , salary NUMBER(8,2) CONSTRAINT emp_salary_nn NOT NULL , commission_pct NUMBER(2,2) , manager_id NUMBER(6) , department_id NUMBER(4) , dn VARCHAR2(300) , CONSTRAINT emp_salary_min CHECK (salary > 0) , CONSTRAINT emp_email_uk UNIQUE (email) ) ;
![Page 99: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/99.jpg)
Wyświetlenie struktury tabeli
![Page 100: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/100.jpg)
Szczegółowe informacje o tabeli● Każda baza danych ma inne rozwiązanie w
przypadku MySQL jest to konstrukcja SHOW CREATE TABLE [nazwa] lub dostęp do metadanych.
● W Oracle mamy dostęp do metadanych● SELECT * FROM user_objects WHERE
object_type = 'NazwaTabeli'; ● Lub informacje o samych kolumnach SELECT *
FROM user_tab_columns WHERE table_name = 'NazwaTabeli';
![Page 101: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/101.jpg)
Tworzenie tabeli tymczasowej (Temporary Table)
● W Oracle służy do tego instrukcja CREATE GLOBAL TEMPORARY TABLE.
● np.CREATE GLOBAL TEMPORARY TABLE test( id INTEGER, test VARCHAR2(20),) ON COMMIT PRESERVE ROWS;
![Page 102: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/102.jpg)
Wartości domyślne dla kolumn● Definiujemy za pomocą słowa kluczowego
DEFAULT● Po słowie kluczowym podajemy wartość
domyślną.● Możliwość wykorzystania niektórych
pseudokolumn takich jak SYSDATE● Domyślną wartością domyślną jest NULL
![Page 103: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/103.jpg)
Możliwość szyfrowania kolumn● W bazach danych takich jak Oracle istnieje
możliwość szyfrowania poszczególnych kolumn bazy danych (słowo kluczowe ENCRYPT)
● Informacje o kolumnach szyfrowanych znajdują się w „user_encrypted_columns”
●
![Page 104: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/104.jpg)
UWAGA: W przypadku Oracle najpierw trzeba utworzyć w systemie portfel pozwalający przechowywać informacje o systemie autoryzacji
![Page 105: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/105.jpg)
Kolumny wirtualne● Nie wszystkie bazy danych pozwalają na
wstawianie tego typu kolumn● Kolumna wirtualna to taka, która odwołuje się
do innych kolumn w tabeli
![Page 106: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/106.jpg)
Zmiany tabeli (ALTER)● Polecenie ALTER TABLE służy do wszelkich
zmian w obrębie tabeli takich jak:● Dodanie, usunięcie, zmiana kolumny● Dodanie, usunięcie, odblokowanie, zablokowanie
więzów● Zmiana nazwy● Każda baza danych ma jeszcze swoje dodatkowe
elementy, które można zmieniać np. dla MySQL ALTER TABLE ENGINE
![Page 107: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/107.jpg)
WSTAWIANIE KOLUMNY● Dla tabeli TEST dodanie kolumny NOWA
wygląda następująco● ALTER TABLE TEST ADD NOWA INTEGER
● Po nazwie kolumny pojawia się definicja kolumny w takiej samej postaci jak w przypadku CREATE TABLE.
● Podobnie możemy postępować w przypadku kolumny wirtualnej, szyfrowanej, ...
![Page 108: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/108.jpg)
MODYFIKOWANIE KOLUMNY
● Zmiany rozmiaru kolumny np. VARCHAR2(15) na VARCHAR2(20). UWAGA: Wartość może być zmniejszona tylko gdy kolumna nie zawiera wierszy lub są ustawione na NULL (Oracle). Podobnie w przypadku zmiany precyzji dla kolumny liczbowej
● Zmiana typu danych. Zmiany mogą być dokonane tylko w przypadku kiedy istnieje możliwość konwersji.
![Page 109: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/109.jpg)
● ALTER TABLE tabela MODIFY kolumna VARCHAR(100)
● Usunięcie tabeli wymaga podania tylko nazwyALTER TABLE tabela DROP COLUMN kolumna
![Page 110: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/110.jpg)
WięzyTu omówione tylko bardzo wstępnie. Właściwie z ograniczeniem do PK i FK i to też oględnie.
![Page 111: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/111.jpg)
![Page 112: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/112.jpg)
FOREIGN KEY
![Page 113: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/113.jpg)
![Page 114: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/114.jpg)
DODAWANIE WIĘZÓW● Więzy CHECK (dla kolumny liczba)
ALTER TABLE tabela ADD CONSTRAINT nazwa_wiezu CHECK(liczba IN (1,2,3,4,5));
● Więzy NOT NULL dla kolumny id● ALTER TABLE tabela MODIFY id
CONSTRAINT nazwa_wiezu NOT NULL;
![Page 115: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/115.jpg)
WŁĄCZANIE WYŁĄCZANIE WIĘZÓW
● ALTER TABLE tabela ENABLE CONSTRAINT nazwa_wiezu;
● ALTER TABLE tabela DISABLE CONSTRAINT nazwa_wiezu;
● Mamy możliwość włączenia więzów ze sprawdzeniem tych co już były ENABLE VALIDATE (domyślnie) lub ze sprawdzeniem tylko nowo dodanych wierszy ENABLE NONVALIDATE
![Page 116: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/116.jpg)
Więzy odroczone● Słowo kluczowe INITIALLY DEFERRED● Konstrukcja:● ALTER TABLE tabela ADD CONSTRAINT
nazwa_wiezu NOT NULL DEFERRABLE INITIALLY DEFERRED
● Tak dodane wiązanie nie będzie aktywny aż do wydania polecenia COMMIT.
● Często stosowane w przypadku kiedy w skrypcie SQL więzy nie są definiowane w odpowiedniej kolejności.
![Page 117: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/117.jpg)
● Możliwość zmiany nazwy kolumny za pomocą polecenia RENAME dla ORACLE w przypadku np. MySQL realizujemy też za pomocą ALTER TABLE
● Pod tym względem (polecenie ALTER) różne systemy bazodanowe mogą posiadać drobne różnice !!
![Page 118: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/118.jpg)
Obcinanie tabeli● TRUNCATE TABLE tabela;● Powoduje usunięcie wszystkich wierszy w tabeli
i przywrócenie (zależy od BD) ustawień dla wybranej tabeli.
● UWAGA: To polecenie ze względu na szybkość wykonania jest często używane zamiast polecenie DELETE należącego do zbioru poleceń manipulujących danymi DML. Polecenie truncate należy do DDL a zatem nie ma tutaj mowy o przywróceniu danych w obrębie transakcji !!
![Page 119: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/119.jpg)
DROP TABLE● Usuwanie tabeli: DROP TABLE tabela;● W niektórych systemach istnieją konstrukcje
DROP TABLE IF EXISTS● Opcjonalne są też reguły (np. kaskadowo czy
restrykcyjnie).
![Page 120: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/120.jpg)
Sekwencje● Sekwencje istnieją w większości baz danych.
Służą one do generowania sekwencji liczb rzeczywistych co wykorzystuje się najczęściej w przypadku klucza głównego.
● W bazie MySQL istnieje specyficzny typ dla kolumny AUTO_INCREMENT (nieudolnie wypełniając brak po sekwencjach)
![Page 121: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/121.jpg)
Definicja● Najczęściej w systemach BD mamy do
dyspozycji● Nazwę● Liczbę początkową● Skok● Minimalną oraz Maksymalną wartość● Czy ma być cykliczna● Czy wartości mają być przechowywane w pamięci
podręcznej (tzw. CACHE)
![Page 122: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/122.jpg)
Przykład wykorzystania sekwencji
![Page 123: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/123.jpg)
SELECT
SELECT *|{[DISTINCT] column|expression [alias],...}FROM table;
![Page 124: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/124.jpg)
SELECT - tablice do przykładów
![Page 125: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/125.jpg)
![Page 126: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/126.jpg)
![Page 127: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/127.jpg)
SELECT – alias kolumn● Zmienia nagłówek(nazwę) kolumny● Przydatny podczas obliczeń na kolumnach● Występuje odrazu po nazwie kolumny
poprzedzony słowem kluczowym AS● Potrzebne ” ” gdy zawiera spacje lub ma być
czuły na wielkość liter
![Page 128: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/128.jpg)
![Page 129: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/129.jpg)
SELECT – znów o NULL
![Page 130: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/130.jpg)
Operator złączenia● Łączy kolumny lub ciągi znaków w inną
kolumnę● Zapisuje się go jako: ||● Rezultatem działania jest ciąg znaków
![Page 131: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/131.jpg)
![Page 132: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/132.jpg)
![Page 133: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/133.jpg)
UWAGA
RDBMS Operacja WynikOracle last_name||job_id PanX22Oracle last_name||NULL NULLPostgreSQL last_name||job_id PanX22FireBird last_name||job_id PanX22MySQL CONCAT(last_na,me||job_id) PanX22MySQL CONCAT(last_name, NULL) NULL
Zakładamy, że mamy wartości:
last_name = PanXjob_id = 22
Działanie w większości baz danych jest podobnie ale są odstępstwa, oraz przyzwyczajenia z innych programów (np. Język c++). Nie zawsze jest oczywisty wynik funkcji CONCAT w MySQL (większość spodziewa się PanX zamiast NULL, jednak to było by niezgodne ze sposobem traktowania wartości NULL)
![Page 134: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/134.jpg)
![Page 135: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/135.jpg)
Podwójne wiersze
![Page 136: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/136.jpg)
![Page 137: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/137.jpg)
Ograniczenie danych
![Page 138: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/138.jpg)
![Page 139: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/139.jpg)
![Page 140: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/140.jpg)
WHERE i napisy/daty
- napisy/daty umieszczone w apostrofach ('jakiś tekst')- czułe na małe duże litery i format daty- domyślny format daty DD-MON-RR
![Page 141: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/141.jpg)
Operatory porównania
![Page 142: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/142.jpg)
![Page 143: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/143.jpg)
Pozostałe operacje porównania
![Page 144: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/144.jpg)
Użycie BETWEEN
![Page 145: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/145.jpg)
Użycie IN
![Page 146: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/146.jpg)
Użycie LIKE● Umożliwia podanie wzorca wyszukiwania w
ciągach znaków● Wzorzec może zawierać zarówno litery jak i
cyfry● Znak % oznacza dowolny ciąg znakó● Znak _ oznacza jeden znak
![Page 147: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/147.jpg)
Dla wyszukania znaków % oraz _ należy użyć znaku ESCAPE
SELECT last_name FROM employees WHERE last_name LIKE '!%' escape '!';
![Page 148: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/148.jpg)
Warunki dla NULL
![Page 149: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/149.jpg)
Zastosowanie operatorów logicznych w ograniczeniu
WARUNEK
AND Zwraca prawdę gdy oba prawdziwe
OR Zwraca prawdę gdy jeden z dwóch prawdziwy lub oba prawdziwe
NOT Zwraca prawdę gdy nieprawdziwy
![Page 150: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/150.jpg)
AND
![Page 151: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/151.jpg)
OR
![Page 152: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/152.jpg)
NOT
![Page 153: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/153.jpg)
Kolejność wykonywania działań
![Page 154: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/154.jpg)
![Page 155: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/155.jpg)
ORDER BYMożna sortować: - ASC: rosnąco, ta wartość jest domyślna - DESC: malejącoSkładnia ORDER BY pojawia się ostatnio w składni SELECT
![Page 156: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/156.jpg)
Sortowanie: malejące
![Page 157: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/157.jpg)
Sortowanie po aliasie
![Page 158: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/158.jpg)
Sortowanie po wielu kolumnach
![Page 159: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/159.jpg)
Można też sortować po kolumnie, której nie ma zapytaniu SELECT
np.
SELECT * FROM tablica ORDER BY dbms_random.value
![Page 160: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/160.jpg)
Wyświetlanie danych z wielu tabel
![Page 161: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/161.jpg)
Iloczyn kartezjański jako efekt złego zapytania
![Page 162: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/162.jpg)
Znaczenie konstrukcji● Optymalizator zwalnia nas z wnikliwego
analizowania zapytań w początkowej fazie, jednak tam gdzie wiemy jaki powinien być kierunek optymalizacji powinniśmy go napisać jawnie a nie liczyć na optymalizator.
● Dodatkowo, jeśli tworzymy rozwiązanie uniwersalne, działające na wielu systemach spełniających standardy SQL powinniśmy założyć różne optymalizatory (skrajnie ich brak ?!)
● Poniżej trywialny przykład pokazujący różnicę.
![Page 163: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/163.jpg)
UWAGA !!!● Tam gdzie nie mamy pomysłu na optymalizacje
nie powinniśmy robić nic na siłę.● Optymalizator w takim przypadku w 99% będzie
dawał lepsze rezultaty) w szczególności biorąc pod uwag rozwój bazy danych (przyrost)
● Należy też zakładać rozwój optymalizatora w kolejnych wersjach systemów BD.
![Page 164: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/164.jpg)
● CREATE TABLE a (id INT PRIMARY KEY);● CREATE TABLE b (id INT PRIMARY KEY, ida
INT NOT NULL );● INSERT INTO a VALUES(1);● INSERT INTO a VALUES(2);● INSERT INTO b VALUES(1,1);● INSERT INTO b VALUES(2,2);
![Page 165: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/165.jpg)
![Page 166: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/166.jpg)
![Page 167: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/167.jpg)
Zaczerpnięte z 8.2.2. EXPLAIN Output Format (2013.02.17)http://dev.mysql.com/doc/refman/5.0/en/explain-output.html#explain_select_type
![Page 168: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/168.jpg)
![Page 169: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/169.jpg)
![Page 170: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/170.jpg)
Typy złączenia
Oracle● Equijoin● Non-equijoin● Outer join● Self join
SQL: 1999● "Cross join"● "Natural join"● z zastosowaniem klauzuli
(np. ON)● Pełny albo dwustronny "outer
join"● dowolny warunek złączenia
("join") dla "outer join"
![Page 171: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/171.jpg)
Składnia Oracle
Dostęp do przestrzeni tabel (spotykany w przypadku baz SQL)
tabela.kolumnanazwa_bazy_danych.tabela.kolumna
Warunek złączenia umieszczany jest w klauzuli WHERE
![Page 172: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/172.jpg)
Equijoin
![Page 173: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/173.jpg)
![Page 174: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/174.jpg)
Stosowanie aliasów na tablice
![Page 175: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/175.jpg)
Połączenie więcej niż jednej tablicy
Aby połączyć n tablic należy użyć minimalnie n-1 złączeń !
![Page 176: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/176.jpg)
Non-equijoin
![Page 177: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/177.jpg)
![Page 178: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/178.jpg)
Outer join
![Page 179: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/179.jpg)
Outer join (złączenie zewnęrzne) stosuje się wtedy gdy che się zobaczyć wiersze nie spełniające warunku.
W BD Oracle oznaczone jako (+)
![Page 180: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/180.jpg)
![Page 181: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/181.jpg)
Self joins - samozłączenie
![Page 182: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/182.jpg)
![Page 183: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/183.jpg)
Składnia SQL: 1999
![Page 184: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/184.jpg)
CROSS JOIN
UWAGA: CROSS JOIN daje taki sam wynik jak iloczyn kartezjański dla dwóch tabel
![Page 185: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/185.jpg)
NATURAL JOIN● Bazuje na kolumnach z obu tabel, które mają
takie same nazwy● Wybiera te wiersze, które mają te same
wartości we wszystkich pasujących kolumnach● W przypadku tych samych nazw a różnych
typów zwracany jest błąd
![Page 186: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/186.jpg)
![Page 187: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/187.jpg)
Składnia USING● Stosuje się tam gdzie nie można NATURAL
JOIN ale też NATURAL JOIN może być modyfikowany za pomocą USING
● Stosować należy do złączenia jednej kolumny gdy pasuje więcej
● Nie należy stosować aliasów ani nazw tablic dla kolumn
● NATURAL JOIN i USING wzajemnie się wykluczają
![Page 188: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/188.jpg)
TODO: bardziej czyt. przykład
![Page 189: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/189.jpg)
Złączenie z klauzulą ON● Bazuje na equijoin łącząc kolumny o tej samej
nazwie● Aby wybrać kolumny do złączenia lub jakiś
warunek złączenia stosuje się klauzule ON● Warunek złączenia jest odseparowany od
innych warunków wyszukania
![Page 190: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/190.jpg)
![Page 191: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/191.jpg)
![Page 192: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/192.jpg)
INNER .vs. OUTER
![Page 193: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/193.jpg)
![Page 194: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/194.jpg)
![Page 195: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/195.jpg)
Dołączanie dodatkowych warunków
![Page 196: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/196.jpg)
Agregacja danych w SQL (podstawy - minimum)
● Klauzula GROUP BY i jej zastosowanie● Podstawowe funkcje agregujące COUNT, MAX, MIN, AVG● Klauzula HAVING i podstawowe zapytania z SELECT
(wszystko było na tablicy)
![Page 197: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/197.jpg)
Funkcje w bazie Oracle
![Page 198: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/198.jpg)
Typy funkcji
![Page 199: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/199.jpg)
Funkcje działające na jeden wiersz● Zmieniają dane● Otrzymują argumenty, zwracają wartość● Działają na jeden wiersz po czym zwracają
wartość● Zwracają jedną wartość dlajednego wiersza● Mogą zmieniać typ● Mogą być zagnieżdżone● Argumentem może być kolumna albo wartość
![Page 200: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/200.jpg)
![Page 201: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/201.jpg)
![Page 202: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/202.jpg)
![Page 203: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/203.jpg)
![Page 204: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/204.jpg)
![Page 205: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/205.jpg)
Funkcje operujące na datach/czasie
![Page 206: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/206.jpg)
● MONTHS_BETWEEN ('01-SEP-95','11-JAN-94') --> 19.6774194● ADD_MONTHS ('11-JAN-94',6) --> '11-JUL-94'● NEXT_DAY ('01-SEP-95','FRIDAY') --> '08-SEP-95'● LAST_DAY('01-FEB-95') --> '28-FEB-95'
![Page 207: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/207.jpg)
Funkcje jawnej konwersji typów
![Page 208: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/208.jpg)
Oracle dokonuje niejawnie konwersji dla:
Przypisania
Wyrażeń
![Page 209: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/209.jpg)
Jawnie
![Page 210: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/210.jpg)
Istnieją jeszcze TO_NUMER, TO_DATE – tu chciałem tylko zaznaczyć problem konwersji !
![Page 211: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/211.jpg)
Funkcja NVL● Konwertuje NULL na podaną wartość● Wartość może być: datą, ciągiem znaków,
liczbą całkowitą● Typy danych muszą się zgadzać ! Np.
NVL(hire_date,'01-JAN-97')
![Page 212: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/212.jpg)
![Page 213: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/213.jpg)
Podobne do NVL● NVL (expr1, expr2)● NVL2 (expr1, expr2, expr3)● NULLIF (expr1, expr2)● COALESCE (expr1, expr2, ..., exprn)
![Page 214: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/214.jpg)
![Page 215: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/215.jpg)
![Page 216: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/216.jpg)
![Page 217: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/217.jpg)
Podzapytania● Podzapytania to zapytania zawarte w innych
zapytaniach● W większości baz danych (w tym w Oracle)
podzapytanie może znaleźć się w klauzuli:● WHERE● FROM● SELECT
● Podzapytanie mogą być związane z innymi zapytaniami jak np. UPDATE (w tych przypadkach istnieją większe ograniczenia).
![Page 218: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/218.jpg)
Zalety/Wady● Podzapytania pozwalają na prostszą bardziej
czytelną konstrukcję (SQL – strukturalny)● Nieumiejętnie utworzone podzapytania może
wpłynąć negatywnie na wydajność bazy danych lub podać dane o które nam nie chodziło.
![Page 219: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/219.jpg)
Podzapytanie jako skalar● W najprostszym przypadku możemy sobie
wyobrazić zapytanie SQL, które zwraca dokładnie jeden wiersz i jedną kolumnę (a zatem skalar).
● SELECT * FROM tabela WHERE data = (SELECT sysdate FROM DUAL);
![Page 220: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/220.jpg)
Podzapytania z ALL, ANY, SOME
Operator ALL przyrównuje z listą bądź podzapytaniemKonstrukcję:SELECT * FROM tabela WHERE pole > ANY(10,20)Można zapisać jakoSELECT * FROM tabela WHERE pole > 10 AND pole > 20
![Page 221: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/221.jpg)
Podzapytanie może zatem wyglądać następującoSELECT * FROM tabela WHERE data >= ANY (SELECT daty FROM tabelaDat)
![Page 222: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/222.jpg)
● W przypadku ANY w konstrukcji porównania nadal możemy używać >,<,= jak w ALL z tym, że warunek jest z operatorem OR (w przypadku ALL był to operator AND). Wybieramy zatem przynajmniej jeden z.
● SOME dokonuje dokładnie tego samego porównania co ANY
![Page 223: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/223.jpg)
Podzapytanie z operatorem IN● Zgodnie z zasadą działania IN otrzymamy
wartość prawda jeśli w zbiorze zwróconym przez zapytanie znajdzie się chociaż raz wartość porównywana.
● Stwórzmy tabele Liczby z kolumną id dodajmy 5 wierszy jako kolejne liczby: 1,2,3,4,5
● SELECT 'jest' FROM dual WHERE 1 IN (SELECT id FROM Liczby);
● W tym przypadku zwróci napis jest, jeśli podali byśmy liczbę np.6 nie otrzymali byśmy w rezultacie ani jednego wiersza.
![Page 224: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/224.jpg)
Podzapytania skorelowane (correlated subquery)
● Podzapytania skorelowane odnoszą się do tablicy zewnętrznejSELECT * FROM tabela1 WHERE pole1 IN(SELECT pole2 FROM tabela2 WHERE tabela2.id2 = tabela1.id1);
![Page 225: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/225.jpg)
Podzapytania odnoszące się do wektora
● Dotychczas porównanie podzapytań odnosiło się do wartości skalarnych, SQL umożliwia wykonywanie zapytań porównujących wektor danych np.SELECT 'jest' FROM dual WHERE (2,4) = (SELECT 2,4 FROM dual);
![Page 226: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/226.jpg)
Podzapytania w klauzuli WHERE (nested subqueries)
● W tym przypadku stosuje się podzapytania pozwalające na porównywanie z danym zbiorem danych (dotychczasowe przypadki podzapytań właśnie były w klauzuli where)
![Page 227: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/227.jpg)
Podzapytania w klauzuli SELECT● Podzapytania w tej klauzuli muszą zwracać
wartość skalarną.● Aby uzyskać warunek pozwalający na to, że
zapytanie w sekcji SELECT zwróci jedną wartość, stosuje się funkcje agregujące.
●
![Page 228: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/228.jpg)
Podzapytanie w klauzuli FROM (inline views)
● W tym przypadku podzapytanie można traktować jak tabelę (w uproszczeniu).SELECT * FROM (SELECT * FROM Liczby) AS AliasTabeli
![Page 229: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/229.jpg)
Język manipulacji danymi DML - Data Manipulation Language
● INSERT● UPDATE● DELETE
![Page 230: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/230.jpg)
Dodawanie wierszy
![Page 231: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/231.jpg)
INSERT
INSERT INTO table [(column [, column...])]VALUES (value [, value...]);
![Page 232: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/232.jpg)
INSERT
INSERT INTO departments(department_id, department_name, manager_id, location_id)VALUES (70, 'Public Relations', 100, 1700);
![Page 233: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/233.jpg)
INSERT z NULL'ami
![Page 234: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/234.jpg)
Wartości specjalne
![Page 235: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/235.jpg)
Kopiowanie wartości z innej tabeliSkładnia
INSERT … SELECT … FROM
![Page 236: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/236.jpg)
Konstrukcje wczytujące naraz n-wierszy
● MySQL/MSSQL 2008: dodawanie n-wierszy narazINSERT INTO tabela VALUES(1), (2), (3) … ;
● Oracle posiada konstrukcję● INSERT ALL
INTO tabela VALUES(1)INTO tabela VALUES(2) … SELECT * FROM dual;
● Zawsze (jeśli zależy nam na jednym zapytaniu) możemy użyć konstrukcji z UNION (ALL)
![Page 237: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/237.jpg)
Rozwiązania pozwalające ładować wiersze z pliku
● Standardowe skrypty SQL (zawierające n-INSERT'ów)
● Duża część baz danych posiada składnię LOAD (czy to umieszczoną niejako składnie rozszerzającą SQL czy też w pakietach narzędziowych – wtedy dostępna tylko tam)
![Page 238: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/238.jpg)
LOAD w oracle● LOAD DATA
INFILE <dataFile>APPEND INTO TABLE <tableName>FIELDS TERMINATED BY '<separator>'(<list of all attribute names to load>)
● W tym przypadku jest możliwość podania jak plik * i po linijce BEGINDATA można rozpocząć transmisje danych bezpośrednio.
![Page 239: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/239.jpg)
LOAD DATAINFILE *INTO TABLE tabelaFIELDS TERMINATED BY '|'(id, data DATE 'yyyy.mm.dd')BEGINDATA1|2012.06.222|1999.11.11
![Page 240: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/240.jpg)
LOAD w MYSQL● LOAD DATA INFILE 'c:\test.txt' INTO TABLE
test FIELDS TERMINATED BY ',' ;
● Plika test.txt zawiera dane rozdzielane przecinkami, struktura tabeli powinna być odpowiednia do danych
● W MySQL LOAD posiada bogaty wybór opcji.
![Page 241: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/241.jpg)
BULK INSERT w MSSQL
BULKINSERT tabelaFROM 'c:\test.txt'WITH(
FIELDTERMINATOR = ',',ROWTERMINATOR = '\n'
)GO
![Page 242: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/242.jpg)
● Przedstawione tutaj przykłady to jedne z możliwych rozwiązań bazy danych nie mają jednego wspólnego standardu ładowania dużej ilości danych, każda posiada rozwiązania własne umożliwiające wczytywanie konkretnych formatów pliku (np. XML, XLS), własne „loadery”
● Istnieje też możliwość tworzenia własnych „loaderów” danych.
![Page 243: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/243.jpg)
Zmiana wartości w tabeli
![Page 244: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/244.jpg)
UPDATE
UPDATE tableSET column = value [, column = value, ...][WHERE condition];
![Page 245: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/245.jpg)
![Page 246: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/246.jpg)
UWAGA na więzy
![Page 247: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/247.jpg)
Usuwanie wierszy
![Page 248: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/248.jpg)
DELETE
DELETE [FROM] table[WHERE condition];
![Page 249: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/249.jpg)
DELETE
![Page 250: Bazy Danych (cz. 1) - dbserver.mif.pg.gda.pldbserver.mif.pg.gda.pl/wyk/dbora.pdf · postacie normalne stosuje się gdy wymagana jest większa optymalizacja. W przedstawionym przykładzie](https://reader030.vdocuments.site/reader030/viewer/2022020416/5c766dbf09d3f220278bd636/html5/thumbnails/250.jpg)
Więzy !