Złączenia wewnętrzne w bazach danych
|
|
- Magda Górecka
- 8 lat temu
- Przeglądów:
Transkrypt
1 Rozdział 23 Złączenia wewnętrzne w bazach danych Streszczenie. W rozdziale pokazano problemy związane ze stosowaniem złączeń (ang. joins) tabel w modelu relacyjnym. Pozornie proste złączenia (kanon pracy z modelem relacyjnym) będące elementem zapytania SQL mogą być źródłem istotnych błędów w przypadku stosowania różnych składni języka SQL dostępnych w danym systemie bazodanowym. Zasygnalizowane problemy zilustrowano przykładami zapytań budowanych w wybranym systemie komercyjnym (Oracle), które dopuszczają stosowanie zarówno firmowej składni (nie w pełni zgodnej z normą ANSI) jak i składni zdefiniowanej w normie ANSI. W rozdziale omówiono jedynie problemy dotyczące złączeń wewnętrznych (ang. Inner Joins). Drugi podstawowy typ złączeń (złączenia zewnętrzne; ang. Outer Joins) oraz tzw. złączenia hierarchiczne (ang. Self Joins) omówiono w rozdziale Złączenia zewnętrze i hierarchiczne w bazach danych. 1 Wstęp Jedną z najważniejszych cech języka SQL jest możliwość pobierania danych z więcej niż jednej relacji (tabeli). W praktyce bowiem trudno sobie wyobrazić rzeczywistą aplikację operującą na jednej tylko tabeli. W konsekwencji bezbłędna i wydajna obsługa złączeń tabel z poziomu języka SQL nabiera pierwszorzędnego znaczenia. Niniejszy rozdział poświęcony jest omówieniu wybranych aspektów złączeń w relacyjnej bazie danych Oracle. W dostępnej literaturze stosunkowo mało miejsc poświęca się na wnikliwe omówienie zagadnień związanych ze złączeniami w relacyjnych bazach danych. Problem ten jest tak stary jak teoria (i praktyka) tych baz i wydawałoby się, że na ten temat wszystko już zostało powiedziane i wszystko jest jasne i klarowne. Nie jest to jednak prawdą, gdyż producenci systemów baz danych nadal w swoich nowych wersjach produktów wprowadzają różnego rodzaju zmiany i uzupełnienia. Znamiennym przykładem jest tutaj firma Oracle, która dopiero od wersji 9i swojej bazy zdecydowała się na pełną implementację złączeń w stylu Jarosław Gramacki, Artur Gramacki: Uniwersytet Zielonogórski, Instytut Informatyki i Elektroniki, ul. Podgórna 50, , Zielona Góra {j.gramacki, A.Gramacki}@iie.uz.zgora.pl
2 J. Gramacki, A. Gramacki zalecanym przez normę ANSI. Nadal jednak pozostawiono wsparcie dla dotychczasowej starej składni (przynajmniej do wersji 10g, która w chwili pisania pracy jest ostatnim wydaniem systemu). Pokazano, że równoległe istnienie obu składni wprowadza pewne problemy, zwłaszcza, że obie składnie nie są ze sobą w pełni zgodne. Szczególną uwagę zwrócono na pokazanie wspólnych cech oraz różnic obu dostępnych składni oraz różnych problemów i potencjalnych błędów, które mogą się w związku z tym ujawnić. Omówiono zagadnienia dotyczące złączeń wewnętrznych (ang. Inner Joins). Drugi podstawowy typ złączeń (złączenia zewnętrzne; ang. Outer Joins) oraz tzw. złączenia hierarchiczne (ang. Self Joins) będące pewnym szczególnym przepadkiem złączeń wewnętrznych omówiono w rozdziale Złączenia zewnętrze i hierarchiczne w bazach danych. 2 Model danych Przy opisie jakichkolwiek zagadnień dotyczących języka SQL konieczny jest odpowiedni, adekwatny do opisywanych problemów, schemat tabel relacyjnych wraz z ich powiązaniami. Na rys. 1 przedstawiono wykorzystywany w pracy model relacyjny 1. Jest to znany większości użytkowników systemu Oracle model o nazwie Human Resource (HR) [1] uzupełniony o dwie dodatkowe tabele: Sports oraz Sport_enrollment. Opisują one prowadzone w firmie ligi sportowe oraz pracowników, którzy zapisali się na dane rozgrywki. Poniżej pokazano dane umieszczone w tych tabelach: Tablela Sports DISCIPLINE SEASON football spring05 football winter05 hockey autumn05 hockey spring05 tennis spring05 tennis spring06 tennis summer05 volleyball spring05 volleyball summer05 volleyball winter05 Tabela Sports_enrollment DISCIPLINE SEASON EMPLOYEE_ID hockey spring tennis summer tennis summer Potrójny klucz primary (na wszystkich kolumnach tabeli Sport_enrollment) utworzono, aby bezkosztowo uniemożliwić wielokrotne zapisanie się tego samego pracownika na te same rozgrywki. Wymieńmy kilka cech schematu, które będą istotne w pracy: Kolumna Employees.manager_ID dopuszcza wartość NULL. Nie każdy więc zarejestrowany w bazie pracownik musi mieć swojego podwładnego. Kolumna Employees.department_ID dopuszcza wartość NULL. Nie każdy więc zarejestrowany w bazie pracownik musi być przypisany do konkretnego działu firmy. Kolumna Departments.manager_ID dopuszcza wartość NULL. Nie każdy więc zarejestrowany w bazie dział firmy musi mieć swojego kierownika. Wygodna na etapie modelowania, ale sprawiająca trudności w użyciu i podatna na błędy, relacja wewnętrzna Employees.employee_ID -> Employees.manager_ID. 1 W pracy wszystkie nazwy tabel pisane są małymi literami + pierwsza litera duża (np. Departments), nazwy kolumn w całości małymi literami (np. title), aliasy dla kolumn to jedna bądź dwie duże litery (np. J, SE). 226
3 Złączenia wewnętrzne w bazach danych W tabeli Sport_enrollment pracownik może zapisać się do sekcji sportowej, która akurat nie jest prowadzona w danym sezonie (np. sekcja tenisa jest oferowana tylko w sezonie letnim 2005). Rys. 1. Model relacyjny HR wykorzystywany w pracy Część z wymienionych właściwości (pierwsze trzy) może być efektem celowo przyjętych założeń i z formalnego punktu widzenia nie stanowi to błędu. Właściwość czwartą można by zastąpić odpowiednią strukturą typu master-detail (mniej podatna na błędy w zapytaniach SQL), jednak wtedy należałoby z góry ustalić ilość poziomów podległości pracowników. Właściwość piąta jest wynikiem pewnego niedbalstwa projektanta bazy (żeby nie powiedzieć szkolnego błędu). Bez problemu można było utworzyć odpowiednie ograniczenie, np. poleceniem: ALTER TABLE Sport_enrollment ADD CONSTRAINT xxx_fk FOREIGN KEY (discipline, season_id) REFERENCES Sports (discipline, season_id); Ograniczenie to widać co prawda na rys. 1. ale na potrzeby artykułu dezaktywowano je. Abstrahując jednak od powyższej dyskusji, w praktyce często przychodzi nam pracować na modelu takim, jaki jest (nie mamy możliwości zmiany modelu). Dużego znaczenia nabiera wtedy poprawne konstruowanie zapytań opartych na danym modelu. 227
4 J. Gramacki, A. Gramacki 3 Złączenia w systemie Oracle Złączenia zajmują ważne miejsce w każdej bazie relacyjnej i są to jej bardzo newralgiczne elementy. Dokumentacja systemu Oracle poświęca im jednak stosunkowo niewiele miejsca, dodatkowo prawie zupełnie nie zwracając uwagi na różne związane z nimi niuanse (prezentowane tam przykłady są maksymalnie uproszczone). Ponadto w oryginalnej dokumentacji systemu Oracle pojawia się aż siedem pojęć, w których używana jest fraza join 2, zestawiono je poniżej. W nawiasach podano również inne, pojawiające się w różnych publikacjach nazwy, które jednak nie pojawiają się w dokumentacji Oracle. W tabeli 1 krótko opisano każde ze złączeń: Natural Joins, Equijoins, Self Joins, Cartesian Products, Inner Joins (Simple Joins), Outer Joins, Antijoins, Semijoins, (Theta Joins) Najogólniej mówiąc wszelkie złączenia można podzielić na dwie podstawowe grupy: wewnętrznych (ang. Inner Joins) oraz zewnętrzne (ang. Outer Joins).Wszelkie inne bardziej szczegółowe podziały dotyczą pewnych zawężonych obszarów zastosowania. Mimo tego w sumie bardzo prostego i oczywistego podziału dokumentacja firmy Oracle dopiero od wersji 10g w sposób wyraźny wprowadza ten podział w diagramach syntaktycznych dla polecenie. Pojawiają się tam oddzielne bloki o nazwach [4, str. 19-8]: inner_cross_join_clause, outer_join_clause, outer_join_type, podczas gdy w dokumentacji do wersji 9i są tylko bloki o ogólnych nazwach [5, str. 18-8]: joined_table, join_type, które zawierają w sobie elementy zarówno złączeń zewnętrznych jak i wewnętrznych. Z analizy zawartości tabeli 1 wynika, że istnienie przynajmniej kilku z podanych tam pojęć jest dyskusyjne, gdyż służą one do opisu stosunkowo wąskiego zbioru zapytań. Z drugiej strony niektóre nazwy opisują bardzo ogólne właściwości, typowe raczej dla całego podejścia relacyjnego. Dla każdego wymienionego typu złączenia w dalszej części tego Rozdziału (oraz w Rozdziale Złączenia zewnętrze i hierarchiczne w bazach danych ) podano odpowiednio dobrany, rzeczywisty przykład zapytania. Tabela 1. Różne używane pojęcia związane ze złączeniami relacyjnymi Nazwa Inner Joins Opis Złączenie dwóch lub więcej tabel, które zwraca w wyniku tylko wiersze 2 Wszędzie użyto pisowni zgodnej z używaną w oryginalnej dokumentacji firmy Oracle. 228
5 Złączenia wewnętrzne w bazach danych (Simple Joins) pasujące do warunku złączenia. Outer Joins Rozszerzenie funkcjonalności oferowanej przez złączenie typu Inner Joins. Do wyniku, który generowałby Inner Join dodawane są wiersze niepasujące. Rozróżnia się złączenia zewnętrzne lewostronne (Left Outer Joins), prawostronne (Right Outer Joins), pełne (Full Outer Joins). Natural Joins Złączenie dwóch lub więcej tabel poprzez kolumny o tych samych nazwach. Jest to szczególny przypadek złączeń Inner Joins. Equijoins Dotyczy złączenia opisanego operatorem porównania. Nie wspomina się o żadnych dodatkowych zagadnieniach/założeniach szczegółowych. Może to więc być zarówno złączenie Outer Joins jaki i Inner Joins. Self Joins Dotyczy złączenia w obrębie jednej tabeli. Tabela ta musi więc dwa razy pojawić się w klauzuli (z reguły z dwoma różnymi aliasami). Struktura taka zwykle zawiera dane mające postać struktury hierarchicznej (podległościowej). Jest to również szczególny przypadek złączeń Inner Joins. Cartesian Products Wynik złączenia dwóch lub więcej tabel, dla których nie podano warunku złączenia. Każdy wiersz z jednej tabeli złączony zostanie z każdym wierszem drugiej tabeli. Poza rzadkimi przypadkami szczególnymi, jest to z reguły wynik błędu w zapytaniu. Jest to również szczególny przypadek złączeń Inner Joins. Antijoins Złączenie zwracające wiersze, które NIE pasują do podanego warunku. Semijoins Złączenie z warunkiem EXISTS. Duplikaty zostają usunięte. Theta Joins Złączenie nierównościowe. Złączenie dwóch relacji dla kryterium złączenia innym niż równość. 4 Przykłady zapytań W pozostałej części rozdziału zamieszczono pewną liczbę przykładów ilustrujących wybrane zagadnienia dotyczące złączeń relacyjnych oraz krótkie komentarze tychże przykładów. Część przykładów zaczerpnięto z prac [2], [3], dostosowując je do używanego w rozdziale schematu relacyjnego. Przykłady starano się dobrać tak, aby pojawiały się w nich pewne problemy. Tam, gdzie to tylko było możliwe, zastosowano nową (dostępną począwszy od wersji 9i bazy Oracle) składnię złączeń zdefiniowaną w standardzie SQL/99 3. Należy jednak zaznaczyć, że nowa składnia NIE wprowadza żadnej nowej funkcjonalności, której nie było w systemie do tej pory. Czyni jednak zapytania bardziej zgodnymi z normą ANSI- SQL 4. Ponadto nowa składnia w wielu przypadkach jest bardziej samodokumentująca się i łatwiejsza w czytaniu (zwłaszcza, gdy zapytanie złącza wiele tabel np. kilkanaście- i wówczas nie zawsze łatwo jest się zorientować, co zapytanie dokładnie robi). 3 W wielu publikacjach pojawia się taka właśnie nazwa. Należy ją jednak traktować jako umowny skrót. Równie dobry skrót byłby SQL/2003 Poprawna nazwa normy to: ANSI/ISO/IEC [tu numer od 1 do 14]: Norma dostępna na stronie 229
6 J. Gramacki, A. Gramacki 4.1 Złączenia naturalne (ang. Natural Joins) Złączenia naturalne dotyczą szczególnego przypadku, gdy w łączonych tabelach kolumny kluczowe mają te same nazwy. W składni ANSI złączenie to, choć merytorycznie bardzo proste, podatne jest na niespodziewane błędy. Przykład 1 R.region_id, R.region_name, C.country_id, C.country_name Countries C, Regions R R.region_id = C.region_id AND LOWER(R.region_name) LIKE %europe%'; region_id, R.region_name, C.country_id, C.country_name Regions R NATURAL JOIN Countries C LOWER(R.region_name) LIKE '%europe%'; składnia ANSI umożliwia rozdzielenie warunków złączenia od innych warunków w klauzuli tu ograniczających wyniki do regionów europejskich. W dotychczasowej składni oba warunki musiały występować w klauzuli i dla złożonych zapytań trudno było odróżnić je od siebie. dla składni ANSI, często w takim przypadku pojawia się błąd: ORA-25155: column used in NATURAL join cannot have qualifier. Nie jest możliwe więc używanie prefiksów tabel dla łączonych kolumn. Stąd zamiast R.region_id musi być region_id (nawet pomimo istnienia aliasów dla tabel). wydaje się, że używanie klauzuli NATURAL JOIN, jest podatne na błędy. Łatwo bowiem o (trudny do wykrycia) błąd, który wystąpi po dodaniu do schematu kolumny, która przypadkowo będzie nazywała się tak samo, jak kolumna w zapytaniu używającym NATURAL JOIN. W tym przypadku system użyje w złączeniu wszystkich kolumn o pasujących nazwach. System Oracle implementuje tą składnię, ale wynika to chyba raczej z potrzeby zapewnienia zgodności ze standardem ANSI, którego użyteczność w przypadku NATURAL JOIN jest jednak dyskusyjna. zabronione jest używanie innych klauzul (na przykład opisywanej niżej klauzuli ON) z klauzulą NATURAL JOIN. w przypadku naturalnego złączenia więcej niż dwóch tabel należy używać nawiasów. Bez nich w niektórych systemach to samo zapytanie może być inaczej obsługiwane (system Oracle stosuję łączność lewostronną): Wyrażenie a NATURAL JOIN b JOIN c ON b.c1 = c.c1 bez nawiasów może być interpretowane na dwa sposoby a NATURAL JOIN (b JOIN c ON b.c1 = c.c1) lub (a NATURAL JOIN b) JOIN c ON b.c1 = c.c1 Pomiędzy łączonymi tabelami może oczywiście istnieć więcej niż tylko jedno złączenie. Określeniu, podług których kolumn ma następować złączenie służy w takich przypadkach klauzula USING. Użycie jej wymaga jednak ostrożności. 230
7 Przykład 2 D.department_name, E.last_name ' ' e.first_name Name, E.hire_date Departments D, Employees E D.department_id = E.department_id AND E.job_id = 'IT_PROG'; Złączenia wewnętrzne w bazach danych D.department_name, E.last_name ' ' e.first_name Name, E.hire_date Departments D JOIN Employees E USING (department_id) E.job_id = 'IT_PROG'; W złożonych zapytaniach istotnym problemem jest rozdzielenie warunków złączeń wynikających z postaci relacyjnej schematu od pozostałych warunków ograniczających ilość zwracanych wyników. (nie-ansi) nie posiada żadnych formalnych mechanizmów dyscyplinujących programistę. Może on dowolnie wymieszać po jeśli w zapytaniu w notacji ANSI zamiast: Departments D JOIN Employees E USING (department_id) zapiszemy: Departments D NATURAL JOIN Employees warunków, to otrzymamy zły wynik. W powyższym przykładzie natura zagrożenia jest inna niż zagrożenie sygnalizowane w przykładzie 1. Tabele Employees oraz Departments łączą DWIE relacje (department_id = department_id oraz department_id = department_id) i dlatego należy doprecyzować, o które złączenie chodzi. Umożliwia to klauzula USING. klauzuli USING można używać tylko wówczas, gdy odpowiednie kolumny obu tabel mają takie same nazwy. Dotychczasowa składnia jest wolna od takich zagrożeń, gdyż warunek złączenia podany jest jawnie. Mówimy tu jednak ciągle o złączeniach naturalnych, które ze swej natury wymagają kolumn o identycznych nazwach. klauzula USING subtelnie psuje jednak semantykę zapytania. Błędem zakończy się np. D.department_name, D.department_ID, E.department_ID,... gdyż zapytanie zwróci: ORA column part of USING clause cannot have qualifier. W dotychczasowej składni błąd ten nie wystąpi. w klauzuli USING nie ma ograniczenia na ilość kolumn w niej wymienianych. Zapytanie jak poniżej jest jak najbardziej poprawne: discipline, -- Błąd, gdy S.discipline - patrz opis wyżej season_id, SE.employee_ID Sports S INNER JOIN Sport_enrollment SE USING (discipline, season_id); zamiast klauzuli JOIN można użyć dłuższej, ale bardziej opisowej wersji INNER JO- IN, która podkreśla, że chodzi o złączenie wewnętrzne. Oracle nie wymusza jednak tego. Podobnie jest ze słowem kluczowym OUTER w złączeniach zewnętrznych. Ta opcjonalność w użyciu słów INNER oraz OUTER jest nieco dziwna. W praktyce nic to nie daje a tylko wprowadza niepotrzebną niekonsekwencję. Należy więc przypuszczać, że wśród programistów zapanuje duża dowolność w jego stosowaniu. klauzula USING istotnie zwiększa czytelność zapytania. 4.2 Złączenia wewnętrzne (ang. Inner Joins) 231
8 J. Gramacki, A. Gramacki szczególne warunki w klauzuli, co często czyni zapytanie trudnym do czytania. Klauzula INNER JOIN jest więc pod tym względem krokiem w dobrym kierunku. Przykład 3a D.department_name, E.last_name ' ' E.first_name Name, SE.discipline, SE.season_ID Departments D, Employees E, Sport_enrollment SE D.department_id = E.department_id AND E.employee_ID=SE.employee_ID AND E.job_id = 'IT_PROG'; 232 D.department_name, E.last_name ' ' E.first_name Name, SE.discipline, SE.season_ID Departments D INNER JOIN Employees E ON (D.department_id =E.department_id) INNER JOIN Sport_enrollment SE ON (E.employee_ID=SE.employee_ID) E.job_id = 'IT_PROG'; sens zastosowania klauzuli ON sprowadza się jedynie do (eleganckiego) rozdzielenia warunków złączenia od innych warunków logicznych W tradycyjnej składni wszystkie warunki występowały razem w ramach klauzuli. Przykład 3b S.discipline, S.season_ID, E.employee_ID, -- alias konieczny E.last_name Sports S, Sport_enrollment SE, Employees E S.discipline = SE.discipline AND S.season_id = SE.season_id AND E.employee_ID = SE.employee_ID discipline, season_id, employee_id, -- teraz alias -- zabroniony E.last_name Sports S INNER JOIN Sport_enrollment SE USING (discipline, season_id) INNER JOIN Employees E USING (employee_id) złączenia wielokrotne są możliwe. INNER JOIN uwypukla kolejność złączeń, Oracle domyślnie wykonuje złączenia w kierunku od lewej do prawej. Najpierw złączenie Sports z Sport_enrollment, a następnie wynik tego złączenia z Employees. Można to jednak zmienić stosując w odpowiednim miejscu nawiasy. Przykład 3c S.discipline, S.season_ID, SE.employee_ID Sports S, Sport_enrollment SE S.discipline = SE.discipline AND -- wersja z USING discipline, -- tu alias zabroniony season_id, -- tu alias zabroniony SE.employee_ID Sports S INNER JOIN Sport_enrollment SE USING (discipline, season_id)
9 S.season_id = SE.season_id; Złączenia wewnętrzne w bazach danych -- wersja z ON S.discipline, -- tu alias obowiązkowy S.season_ID, -- tu alias obowiązkowy SE.employee_ID Sports S INNER JOIN Sport_enrollment SE ON S.discipline = SE.discipline AND S.season_id = SE.season_id; wersje z USING i ON są w tym przypadku równoważne, gdyż odpowiednie kolumny łączonych tabel mają takie same nazwy. W praktyce nie zawsze ma to miejsce, klauzula ON jest mniej czytelna od klauzuli USING. Mając wybór lepiej zastosować USING, gdyż jest ona krótsza i bardziej czytelna, w klauzuli ON może pojawić się dowolne wyrażenie logiczne. Niemniej w praktyce większość zapytań to zapytania równościowe (Equijoins), w których porównujemy odpowiednie kolumny dwóch (lub więcej) tabel, zwracamy uwagę na obowiązkowość / niedozwoloność stosowania aliasów przy nazwach kolumn. Przejście między obu składniami wymaga więc dodania / usunięcia odpowiednich aliasów. Jest to czynność czysto mechaniczna, jednak często o tym po prostu zapominamy. 4.3 Złączenia nierównościowe (ang. Theta Joins) Złączenia nierównościowe, zdecydowanie rzadziej stosowane w praktyce, niosą ze sobą niebezpieczeństwo istotnego obniżenia wydajności systemu. Cecha ta nie jest jednak widoczna dla niewprawnego programisty. Przykład 4 E.job_id, J.job_title, E.first_name ' ' E.last_name Name, J.min_salary '--' J.max_salary "Przedział", E.salary Employees E, Jobs J E.salary BETWEEN J.min_salary AND J.max_salary AND E.last_name LIKE 'Abel' ORDER BY E.last_name; E.job_id, J.job_title, E.first_name ' ' E.last_name Name, J.min_salary '--' J.max_salary "Przedział", E.salary Employees E INNER JOIN Jobs J ON (E.salary BETWEEN J.min_salary AND J.max_salary) E.last_name LIKE 'Abel' ORDER BY E.last_name; przykład pokazuje złączenie nierównościowe (ang. Theta Joins). Zdecydowanie rzadziej używane niż złączenia równościowe, w powyższym przykładzie wyświetlono listę pracowników oraz, na bazie tabeli Jobs, sprawdzono, czy zarobki poszczególnych pracowników mieszczą się w widełkach. Można przykładowo zauważyć, że pracownik o nazwisku Abel, pracujący na stanowisku Sales Representative zarabia kwotę , która to kwota mieści się w przedziale dla pięciu innych stanowisk, 233
10 J. Gramacki, A. Gramacki złączenie jest bardzo pracochłonne do wykonania. Wymaga najpierw utworzenia iloczynu kartezjańskiego a następnie wybraniu z niego wierszy, dla których zadany warunek jest spełniony: -- Wynik zapytania JOB_ID JOB_TITLE NAME Przedział SALARY SA_REP Finance Manager Ellen Abel ,00 SA_REP Accounting Manager Ellen Abel ,00 SA_REP Sales Representative Ellen Abel ,00 SA_REP Sales Manager Ellen Abel ,00 SA_REP Marketing Manager Ellen Abel ,00 SA_REP Purchasing Manager Ellen Abel , Złączenia wykluczające (ang. Antijoins) Zdarzają się sytuacje, w których intuicyjnie gorsza wersja zapytania jest / może być wydajnościowo lepsza w innej jego postaci. Właściwy wybór uzależniony jest od umiejętności dostrzegania takich przypadków w pisanych zapytaniach. Przykład 5 -- Antijoins E.job_id, E.first_name ' ' E.last_name Name, E.salary Employees E department_id NOT IN ( department_id Departments location_id BETWEEN 1700 AND 2700); -- Equijoins E.job_id, E.first_name ' ' E.last_name Name, E.salary Departments D, Employees E D.department_id=E.department_id AND D.location_ID NOT BETWEEN 1700 AND 2700; -- Antijoins Nie dotyczy -- Equijoins E.job_id, E.first_name ' ' E.last_name Name, E.salary Departments D INNER JOIN Employees E USING (department_id) D.location_ID NOT BETWEEN 1700 AND 2700; Plany wykonania -- Antijoins STATEMENT FILTER TABLE ACCESS FULL EMPLOYEES TABLE ACCESS BY INDEX ROWID DEPARTMENTS INDEX RANGE SCAN DEPT_LOCATION_IX -- Equijoins STATEMENT 234
11 CONCATENATION TABLE ACCESS BY INDEX ROWID EMPLOYEES NESTED LOOPS TABLE ACCESS BY INDEX ROWID DEPARTMENTS INDEX RANGE SCAN DEPT_LOCATION_IX INDEX RANGE SCAN EMP_DEPARTMENT_IX TABLE ACCESS BY INDEX ROWID EMPLOYEES NESTED LOOPS TABLE ACCESS BY INDEX ROWID DEPARTMENTS INDEX RANGE SCAN DEPT_LOCATION_IX INDEX RANGE SCAN EMP_DEPARTMENT_IX Złączenia wewnętrzne w bazach danych przykład pokazuje zapytanie, w którym interesuje nas BRAK zachodzenia danej relacji (złączenie Antijoins). Pokazano pracowników pracujących na wydziałach zlokalizowanych w wybranych lokalizacjach (poprzez negacje pozostałych), dla Antijoins występuje podzapytanie. Dyskusja nad użyciem składni ANSI jest wiec dla tego przykładu bezprzedmiotowa, ten sam wynik osiągnąć można stosując zwykłe złączenia równościowe dwóch tabel, plan wykonania zapytania Equijoins w stosunku do planu zapytania Antijoins będzie jednak bardziej złożony. W planie dla Antijoins występuje jednakże operacja TABLE ACCESS FULL. W konkurencyjnym planie wszędzie korzystamy z indeksów, decyzję, czy użyć złączenia Antijoins, czy zwykłego równościowego Equijoins powinna poprzedzić analiza planu zapytania pod kątem ewentualnych korzyści i/lub strat. 4.5 Iloczyn kartezjański (ang. Cartesian Product) Przykład 6 D.department_name, L.city, departments D, locations L; D.department_name, L.city departments D CROSS JOIN locations L; iloczyn kartezjański najczęściej pojawia się jako niezamierzony wynik (brak jakiegoś koniecznego złączenia). Nowa składnia wymaga jawnego wskazania, że intencją programisty był iloczyn kartezjański, ponieważ jednak tradycyjna składnia ciągle jest (i pewnie będzie) obsługiwana przez bazę Oracle, więc praktyczna użyteczność CROSS JOIN w sensie eliminacji błędów jest bardzo dyskusyjna. Porządkuje jedynie sprawę pod katem terminologicznym. 5 Wnioski W rozdziale pokazano, że z pozoru proste zagadnienia jakim są złączenia relacyjne, po uwzględnieniu wielu zagadnień szczegółowych, stają się podatne na błędy. Jeśli dodatkowo uwzględni się możliwość korzystania z nowej składni ANSI, ewentualnych problemów przybędzie. SQL nie zawsze jest w 100% odpowiednikiem składni dotychczasowej. Warto o tym zawsze pamiętać. Na wyniki zapytań ze złączeniami istotnie wpływać mogą również przyjęte założenia projektowe odzwierciedlone w modelu relacyjnym. 235
12 J. Gramacki, A. Gramacki Literatura 1. Oracle Database, Sample Schemas, 10g Release 1 (10.1), Part No. B Gennick J.: An Incremental Approach to Developing SQL Queries. Oracle Magazine, July/August 2000, Volume XIV, Issue 4 3. Czuprynski J.: Getting ANSI About Joins, dostępne na otn.oracle.com 4. Oracle Database SQL Reference 10g Release 1 (10.1) Part Number B Oracle Database SQL Reference 9i Release 2 (9.2) Part Number A Gramacki J., Gramacki A.: Połączenia - pułapki i nowe możliwości, Systemy informatyczne. Projektowanie, implementowanie, eksploatowanie - PLOUG : X Konferencja użytkowników i deweloperów ORACLE. Kościelisko, Polska, 2004, Warszawa, Stowarzyszenie Polskiej Grupy Użytkowników Systemu Oracle, 2004, strony
Autor: Joanna Karwowska
Autor: Joanna Karwowska Jeśli pobieramy dane z więcej niż jednej tabeli, w rzeczywistości wykonujemy tak zwane złączenie. W SQL istnieją instrukcje pozwalające na formalne wykonanie złączenia tabel - istnieje
Bardziej szczegółowoJęzyk SQL Złączenia. Laboratorium. Akademia Morska w Gdyni
Akademia Morska w Gdyni Gdynia 2004 1. Złączenie definicja Złączenie (JOIN) to zbiór rekordów stanowiących wynik zapytania służącego pobraniu danych z połączonych tabel (związki jeden-do-jeden, jeden-do-wiele
Bardziej szczegółowoJęzyk SQL. Rozdział 5. Połączenia i operatory zbiorowe
Język SQL. Rozdział 5. Połączenia i operatory zbiorowe Iloczyn kartezjański, połączenie równościowe, połączenie nierównościowe, połączenie zwrotne, połączenie zewnętrzne, składnia jawna połączeń, składnia
Bardziej szczegółowoAliasy Select p.first_name, p.salary, j.job_title from employees p, jobs j where p.job_id=j.job_id;
Dane z kilku tabel Aliasy Select p.first_name, p.salary, j.job_title from employees p, jobs j where p.job_id=j.job_id; Łączenie kilku selectów w jeden posortowany wynik 1. UNION suma bez powtórzeń. Powoduje,
Bardziej szczegółowoWykład 6. SQL praca z tabelami 3
Wykład 6 SQL praca z tabelami 3 Łączenie wyników zapytań Język SQL zawiera mechanizmy pozwalające na łączenie wyników kilku pytań. Pozwalają na to instrukcje UNION, INTERSECT, EXCEPT o postaci: zapytanie1
Bardziej szczegółowo3. Podzapytania, łączenie tabel i zapytań
3. Podzapytania, łączenie tabel i zapytań I. PODZAPYTANIE (SUBSELECT) oddzielna, ujęta w nawiasy instrukcja SELECT, zagnieżdżona w innej instrukcji SQL, zazwyczaj w instrukcji SELECT w instrukcji SELECT,
Bardziej szczegółowoZłączenie CROSS JOIN jest to tzw. złączenie krzyżowe, którego ogólna postać wygląda następująco:
Połączenia krzyżowe Złączenie typu CROSS JOIN Złączenie CROSS JOIN jest to tzw. złączenie krzyżowe, którego ogólna postać wygląda następująco: SELECT kolumna1, kolumna2,..., kolumnan FROM tabela1 CROSS
Bardziej szczegółowoIntegralność danych Wersje języka SQL Klauzula SELECT i JOIN
Integralność danych Wersje języka SQL Klauzula SELECT i JOIN Robert A. Kłopotek r.klopotek@uksw.edu.pl Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW Integralność danych Aspekty integralności
Bardziej szczegółowoPaweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/
Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/ Wprowadzenie Historia i standardy Podstawy relacyjności Typy danych DDL tabele, widoki, sekwencje zmiana struktury DML DQL Podstawy, złączenia,
Bardziej szczegółowoSystemy GIS Tworzenie zapytań w bazach danych
Systemy GIS Tworzenie zapytań w bazach danych Wykład nr 6 Analizy danych w systemach GIS Jak pytać bazę danych, żeby otrzymać sensowną odpowiedź......czyli podstawy języka SQL INSERT, SELECT, DROP, UPDATE
Bardziej szczegółowoWprowadzenie do projektowania i wykorzystania baz danych Relacje
Wprowadzenie do projektowania i wykorzystania baz danych Relacje Katarzyna Klessa Dygresja nt. operatorów SELECT 2^2 SELECT 2^30 SELECT 50^50 2 Dygresja nt. operatorów SELECT 2^30 --Bitwise exclusive OR
Bardziej szczegółowoKonstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT
Studia podyplomowe Inżynieria oprogramowania współfinansowane przez Unię Europejska w ramach Europejskiego Funduszu Społecznego Projekt Studia podyplomowe z zakresu wytwarzania oprogramowania oraz zarządzania
Bardziej szczegółowoBazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski
Bazy danych Andrzej Grzybowski Instytut Fizyki, Uniwersytet Śląski Wykład 5 Strukturalny język zapytań (SQL - Structured Query Language) Algebraiczny rodowód podstawowe działania w przykładach Bazy danych.
Bardziej szczegółowo1 DML - zapytania, część II Grupowanie Operatory zbiorowe DML - modyfikacja 7. 3 DCL - sterowanie danymi 9.
Plan wykładu Spis treści 1 DML - zapytania, część II 1 1.1 Grupowanie................................... 1 1.2 Operatory zbiorowe............................... 5 2 DML - modyfikacja 7 3 DCL - sterowanie
Bardziej szczegółowoInstytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska
Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl Wydział Mechaniczny technologiczny Politechnika Śląska Laboratorium 3 (Tworzenie bazy danych z użyciem UML, proste
Bardziej szczegółowoInstytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska
Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl Wydział Mechaniczny technologiczny Politechnika Śląska Laboratorium 3 (Tworzenie bazy danych z użyciem UML, proste
Bardziej szczegółowoInstytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/
Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl fb.com/groups/bazydanychmt/ Wydział Mechaniczny technologiczny Politechnika Śląska Laboratorium 3 (Tworzenie
Bardziej szczegółowoPRZESTRZENNE BAZY DANYCH WYKŁAD 2
PRZESTRZENNE BAZY DANYCH WYKŁAD 2 Baza danych to zbiór plików, które fizycznie przechowują dane oraz system, który nimi zarządza (DBMS, ang. Database Management System). Zadaniem DBMS jest prawidłowe przechowywanie
Bardziej szczegółowoGrupowanie i funkcje agregacji
Grupowanie i funkcje agregacji Funkcje agregujące: COUNT([DISTINCT] wyrażenie *), MIN(wyrażenie), MAX(wyrażenie), SUM([DISTINCT] wyrażenie), AVG([DISTINCT] wyrażenie). Klauzula GROUP BY Grupowanie polega
Bardziej szczegółowoGrupowanie i funkcje agregacji. Grupowanie z użyciem rollup
Grupowanie i funkcje agregacji Grupowanie z użyciem rollup Funkcje agregujące: COUNT([DISTINCT] wyrażenie *), MIN(wyrażenie), MAX(wyrażenie), SUM([DISTINCT] wyrażenie), AVG([DISTINCT] wyrażenie). Klauzula
Bardziej szczegółowoTechnologie baz danych
Plan wykładu Technologie baz danych Wykład 6: Algebra relacji. SQL - cd Algebra relacji operacje teoriomnogościowe rzutowanie selekcja przemianowanie Małgorzata Krętowska Wydział Informatyki Politechnika
Bardziej szczegółowoOracle11g: Wprowadzenie do SQL
Oracle11g: Wprowadzenie do SQL OPIS: Kurs ten oferuje uczestnikom wprowadzenie do technologii bazy Oracle11g, koncepcji bazy relacyjnej i efektywnego języka programowania o nazwie SQL. Kurs dostarczy twórcom
Bardziej szczegółowoPodstawy języka SQL. standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi. Bazy danych s.5-1
Podstawy języka SQL standardy SQL formułowanie zapytań operacje na strukturach danych manipulowanie danymi Bazy danych s.5-1 Język SQL SQL (ang. Structured Query Language, strukturalny język zapytań) język
Bardziej szczegółowoMarek Rakowski Zdanie SELECT wybieranie danych z wielu tabel Strona 1 z 6
Marek Rakowski Zdanie SELECT wybieranie danych z wielu tabel Strona 1 z 6 Wybieranie danych z wielu tabel polega na użyciu więcej niż jednej tabeli w klauzuli FROM i, najczęściej, kolumn z więcej niż jednej
Bardziej szczegółowoWstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9
Wstęp 5 Rozdział 1. Podstawy relacyjnych baz danych 9 Tabele 9 Klucze 10 Relacje 11 Podstawowe zasady projektowania tabel 16 Rozdział 2. Praca z tabelami 25 Typy danych 25 Tworzenie tabel 29 Atrybuty kolumn
Bardziej szczegółowoPrzestrzenne bazy danych Podstawy języka SQL
Przestrzenne bazy danych Podstawy języka SQL Stanisława Porzycka-Strzelczyk porzycka@agh.edu.pl home.agh.edu.pl/~porzycka Konsultacje: wtorek godzina 16-17, p. 350 A (budynek A0) 1 SQL Język SQL (ang.structured
Bardziej szczegółowoAlgebra relacji. nazywamy każdy podzbiór iloczynu karteziańskiego D 1 D 2 D n.
Algebra relacji Definicja 1 (Relacja matematyczna). Relacją R między elementami zbioru D 1 D 2 D n, gdzie przypomnijmy D 1 D 2 D n = {(d 1, d 2,..., d n ) : d i D i, i = 1, 2,..., n}, nazywamy każdy podzbiór
Bardziej szczegółowoTechnologie baz danych
Plan wykładu Technologie baz danych Wykład 2: Relacyjny model danych - zależności funkcyjne. SQL - podstawy Definicja zależności funkcyjnych Reguły dotyczące zależności funkcyjnych Domknięcie zbioru atrybutów
Bardziej szczegółowoZłączenia pułapki i nowe możliwości
X Konferencja PLOUG Kościelisko Październik 2004 Złączenia pułapki i nowe możliwości Jarosław Gramacki, Artur Gramacki Uniwersytet Zielonogórski Instytut Informatyki i Elektroniki ul. Podgórna 50, 65-246,
Bardziej szczegółowoBazy danych. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski
Bazy danych Andrzej Grzybowski Instytut Fizyki, Uniwersytet Śląski Wykład 1 Algebra relacyjnych baz danych jako podstawa języka SQL i jego implementacji w systemach baz danych Oracle Bazy danych. Wykład
Bardziej szczegółowoWykład 2. Relacyjny model danych
Wykład 2 Relacyjny model danych Wymagania stawiane modelowi danych Unikanie nadmiarowości danych (redundancji) jedna informacja powinna być wpisana do bazy danych tylko jeden raz Problem powtarzających
Bardziej szczegółowoBazy danych. Plan wykładu. Zależności funkcyjne. Wykład 2: Relacyjny model danych - zależności funkcyjne. Podstawy SQL.
Plan wykładu Bazy danych Wykład 2: Relacyjny model danych - zależności funkcyjne. Podstawy SQL. Deficja zależności funkcyjnych Klucze relacji Reguły dotyczące zależności funkcyjnych Domknięcie zbioru atrybutów
Bardziej szczegółowoopisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje nazwy tabel lub widoków warunek (wybieranie wierszy)
Zapytania SQL. Polecenie SELECT jest używane do pobierania danych z bazy danych (z tabel lub widoków). Struktura polecenia SELECT SELECT FROM WHERE opisuje nazwy kolumn, wyrażenia arytmetyczne, funkcje
Bardziej szczegółowoD D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?
D D L S Q L Co to jest DDL SQL i jakie s jego ą podstawowe polecenia? D D L S Q L - p o d s t a w y DDL SQL (Data Definition Language) Jest to zbiór instrukcji i definicji danych, którym posługujemy się
Bardziej szczegółowoZasady transformacji modelu DOZ do projektu tabel bazy danych
Zasady transformacji modelu DOZ do projektu tabel bazy danych A. Obiekty proste B. Obiekty z podtypami C. Związki rozłączne GHJ 1 A. Projektowanie - obiekty proste TRASA # * numer POZYCJA o planowana godzina
Bardziej szczegółowoWprowadzenie do języka SQL
Wprowadzenie do języka SQL język dostępu do bazy danych grupy poleceń języka: DQL (ang( ang.. Data Query Language) DML (ang( ang.. Data Manipulation Language) DDL (ang( ang.. Data Definition Language)
Bardziej szczegółowoWykład XII. optymalizacja w relacyjnych bazach danych
Optymalizacja wyznaczenie spośród dopuszczalnych rozwiązań danego problemu, rozwiązania najlepszego ze względu na przyjęte kryterium jakości ( np. koszt, zysk, niezawodność ) optymalizacja w relacyjnych
Bardziej szczegółowoWykład 8. SQL praca z tabelami 5
Wykład 8 SQL praca z tabelami 5 Podzapytania to mechanizm pozwalający wykorzystywać wyniki jednego zapytania w innym zapytaniu. Nazywane często zapytaniami zagnieżdżonymi. Są stosowane z zapytaniami typu
Bardziej szczegółowoSQL (ang. Structured Query Language)
SQL (ang. Structured Query Language) SELECT pobranie danych z bazy, INSERT umieszczenie danych w bazie, UPDATE zmiana danych, DELETE usunięcie danych z bazy. Rozkaz INSERT Rozkaz insert dodaje nowe wiersze
Bardziej szczegółowoPawel@Kasprowski.pl Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl
Bazy danych Podstawy języka SQL Dr inż. Paweł Kasprowski pawel@kasprowski.pl Plan wykładu Relacyjne bazy danych Język SQL Zapytania SQL (polecenie select) Bezpieczeństwo danych Integralność danych Współbieżność
Bardziej szczegółowoRBD Relacyjne Bazy Danych
Wykład 7 RBD Relacyjne Bazy Danych Bazy Danych - A. Dawid 2011 1 Selekcja σ C (R) W wyniku zastosowania operatora selekcji do relacji R powstaje nowa relacja T do której należy pewien podzbiór krotek relacji
Bardziej szczegółowoPrzykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.
Marek Robak Wprowadzenie do języka SQL na przykładzie baz SQLite Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi. Tworzenie tabeli Pierwsza tabela W relacyjnych bazach danych jedna
Bardziej szczegółowoSQL Structured Query Language
SQL Structured Query Language stworzony na początku lat 70 ubiegłego wieku w IBM przez Donalda Messerly'ego, Donalda Chamberlina oraz Raymonda Boyce'a pod nazwą SEQUEL pierwszy SZBD System R utworzony
Bardziej szczegółowoPodzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę
Podzapytania Rozdział 5 Podzapytania podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, klauzula WITH, operatory ANY, ALL i EXISTS, zapytania hierarchiczne Podzapytanie jest poleceniem
Bardziej szczegółowoRozpatrzymy bardzo uproszczoną bazę danych o schemacie
Wykład 6 Algebraiczne podstawy implementacji strukturalnego języka zapytań (SQL) w systemach baz danych Oracle zapytania w języku algebry relacyjnych baz danych i ich odpowiedniki w SQL Rozpatrzymy bardzo
Bardziej szczegółowoLaboratorium nr 8. Temat: Podstawy języka zapytań SQL (część 2)
Laboratorium nr 8 Temat: Podstawy języka zapytań SQL (część 2) PLAN LABORATORIUM: 1. Sortowanie. 2. Warunek WHERE 3. Eliminacja powtórzeń - DISTINCT. 4. WyraŜenia: BETWEEN...AND, IN, LIKE, IS NULL. 5.
Bardziej szczegółowoBAZY DANYCH LABORATORIUM. Studia niestacjonarne I stopnia
BAZY DANYCH LABORATORIUM Studia niestacjonarne I stopnia Gdańsk, 2011 1. Cel zajęć Celem zajęć laboratoryjnych jest wyrobienie praktycznej umiejętności tworzenia modelu logicznego danych a nastepnie implementacji
Bardziej szczegółowo77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.
77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego. Przy modelowaniu bazy danych możemy wyróżnić następujące typy połączeń relacyjnych: jeden do wielu, jeden do jednego, wiele
Bardziej szczegółowoBazy danych. Plan wykładu. Diagramy ER. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych. Podstawy modeli relacyjnych
Plan wykładu Bazy danych Wykład 9: Przechodzenie od diagramów E/R do modelu relacyjnego. Definiowanie perspektyw. Diagramy E/R - powtórzenie Relacyjne bazy danych Od diagramów E/R do relacji SQL - perspektywy
Bardziej szczegółowoWykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania.
Wykład 7 Implementacja języka SQL w systemach baz danych Oracle sortowanie, funkcje agregujące i podzapytania. Przykładowa RBD o schematach relacji (tzw. płaska postać RBD): N(PRACOWNICY) = {ID_P, IMIĘ,
Bardziej szczegółowoTemat : SBQL 1 obiektowy język zapytań.
Laboratorium Języki i środowiska przetwarzania danych rozproszonych Temat : SBQL 1 obiektowy język zapytań. Historia zmian Data Wersja Autor Opis zmian 23.4.2012 1.0 Tomasz Kowalski Utworzenie dokumentu
Bardziej szczegółowoPRZEWODNIK PO PRZEDMIOCIE
Nazwa przedmiotu: Bazy danych Database Kierunek: Rodzaj przedmiotu: obieralny Rodzaj zajęć: wykład, laboratorium Matematyka Poziom kwalifikacji: I stopnia Liczba godzin/tydzień: 2W, 2L Semestr: III Liczba
Bardziej szczegółowoJęzyk SQL. Rozdział 2. Proste zapytania
Język SQL. Rozdział 2. Proste zapytania Polecenie SELECT, klauzula WHERE, operatory SQL, klauzula ORDER BY. 1 Wprowadzenie do języka SQL Język dostępu do bazy danych. Język deklaratywny, zorientowany na
Bardziej szczegółowoSQL - Structured Query Language -strukturalny język zapytań SQL SQL SQL SQL
Wprowadzenie do SQL SQL - Structured Query Language -strukturalny język zapytań Światowy standard przeznaczony do definiowania, operowania i sterowania danymi w relacyjnych bazach danych Powstał w firmie
Bardziej szczegółowoPodzapytania. Rozdział 5. Podzapytania. Podzapytania wyznaczające wiele krotek (1) Podzapytania wyznaczające jedną krotkę
Podzapytania Rozdział 5 Podzapytania podzapytania proste i skorelowane, podzapytania w klauzuli SELECT i FROM, klauzula WITH, operatory ANY, ALL i EXISTS, zapytania hierarchiczne Podzapytanie jest poleceniem
Bardziej szczegółowoOptymalizacja poleceń SQL Metody dostępu do danych
Optymalizacja poleceń SQL Metody dostępu do danych 1 Metody dostępu do danych Określają, w jaki sposób dane polecenia SQL są odczytywane z miejsca ich fizycznej lokalizacji. Dostęp do tabeli: pełne przeglądnięcie,
Bardziej szczegółowoAlicja Marszałek Różne rodzaje baz danych
Alicja Marszałek Różne rodzaje baz danych Rodzaje baz danych Bazy danych można podzielić wg struktur organizacji danych, których używają. Można podzielić je na: Bazy proste Bazy złożone Bazy proste Bazy
Bardziej szczegółowoSQL SERVER 2012 i nie tylko:
SQL SERVER 2012 i nie tylko: Wstęp do planów zapytań Cezary Ołtuszyk coltuszyk.wordpress.com Kilka słów o mnie Starszy Administrator Baz Danych w firmie BEST S.A. (Bazy danych > 1TB) Konsultant z zakresu
Bardziej szczegółowoJęzyk SQL. Rozdział 9. Język definiowania danych DDL, część 2.
Język SQL. Rozdział 9. Język definiowania danych DDL, część 2. Ograniczenia integralnościowe, modyfikowanie struktury relacji, zarządzanie ograniczeniami. 1 Ograniczenia integralnościowe Służą do weryfikacji
Bardziej szczegółowoProgram szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL
Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL 1 Podstawy relacyjnego modelu danych. 3h UWAGA: Temat zajęć jest typowo teoretyczny i stanowi wprowadzenie do zagadnień
Bardziej szczegółowoLaboratorium Bazy danych SQL 2
Klauzula order by występuje jako ostatnia klauzula w poleceniu select, powoduje posortowanie wierszy będących wynikiem zapytania według wartości atrybutu w niej wskazanego. Domyślnie sortowanie jest według
Bardziej szczegółowoIndeksowanie w bazach danych
w bazach Katedra Informatyki Stosowanej AGH 5grudnia2013 Outline 1 2 3 4 Czym jest indeks? Indeks to struktura, która ma przyspieszyć wyszukiwanie. Indeks definiowany jest dla atrybutów, które nazywamy
Bardziej szczegółowoBazy Danych. SQL Podstawy języka III: powtórzenie. Krzysztof Regulski WIMiIP, KISiM, B5, pok. 408
Bazy Danych SQL Podstawy języka III: powtórzenie Krzysztof Regulski WIMiIP, KISiM, regulski@agh.edu.pl B5, pok. 408 Modyfikacja schematu relacji Utwórz tabelę wg schematu: CREATE TABLE ODDZIAL ( numer_oddzialu
Bardziej szczegółowoWstęp do SQL. copyright: KGiIS WGGiOŚ AGH
Wstęp do SQL SQL (Structured Query Language) strukturalny język zapytań używany do tworzenia, modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych. Język SQL jest językiem deklaratywnym.
Bardziej szczegółowoZłaczenia tablic: FROM, WHERE, JOIN
JOIN Łączenie tablic 1 Bazy Danych Wykład p.t. Złaczenia tablic: FROM, WHERE, JOIN Antoni Ligęza ligeza@agh.edu.pl http://galaxy.uci.agh.edu.pl/~ligeza Wykorzystano materiały: http: //www.postgresql.org/docs/8.3/interactive/index.html
Bardziej szczegółowoPHP: bazy danych, SQL, AJAX i JSON
1 PHP: bazy danych, SQL, AJAX i JSON SYSTEMY SIECIOWE Michał Simiński 2 Bazy danych Co to jest MySQL? Jak się połączyć z bazą danych MySQL? Podstawowe operacje na bazie danych Kilka dodatkowych operacji
Bardziej szczegółowoBazy danych. Dr inż. Paweł Kasprowski
Plan wykładu Bazy danych Podstawy relacyjnego modelu danych Dr inż. Paweł Kasprowski pawel@kasprowski.pl Relacyjne bazy danych Język SQL Zapytania SQL (polecenie select) Bezpieczeństwo danych Integralność
Bardziej szczegółowoLaboratorium nr 5. Temat: Funkcje agregujące, klauzule GROUP BY, HAVING
Laboratorium nr 5 Temat: Funkcje agregujące, klauzule GROUP BY, HAVING Celem ćwiczenia jest zaprezentowanie zagadnień dotyczących stosowania w zapytaniach języka SQL predefiniowanych funkcji agregujących.
Bardziej szczegółowoSIECI KOMPUTEROWE I BAZY DANYCH
KATEDRA MECHANIKI I ROBOTYKI STOSOWANEJ WYDZIAŁ BUDOWY MASZYN I LOTNICTWA, POLITECHNIKA RZESZOWSKA SIECI KOMPUTEROWE I BAZY DANYCH Laboratorium DB2: TEMAT: Relacyjne bazy danych Cz. I, II Cel laboratorium
Bardziej szczegółowoCel przedmiotu. Wymagania wstępne w zakresie wiedzy, umiejętności i innych kompetencji 1 Język angielski 2 Inżynieria oprogramowania
Przedmiot: Bazy danych Rok: III Semestr: V Rodzaj zajęć i liczba godzin: Studia stacjonarne Studia niestacjonarne Wykład 30 21 Ćwiczenia Laboratorium 30 21 Projekt Liczba punktów ECTS: 4 C1 C2 C3 Cel przedmiotu
Bardziej szczegółowoBazy danych Ćwiczenia projektowe
Bazy danych Ćwiczenia projektowe Przygotował: Piotr Hajder Katedra Informatyki Stosowanej i Modelowania Wydział Inżynierii Metali i Informatyki Przemysłowej, AGH Agenda 01. Typy danych 02. Polecenia DDL
Bardziej szczegółowoWykład 3 2014-04-25 12:45 BD-1 W_3
Wykład 3 SQL - język operacji na bazach danych Schemat przykładowej bazy danych Uczelnia Skrypt SQL - utworzenie bazy Uczelnia Polecenia selekcji i projekcji Interakcyjny dostęp do bazy danych 2014-04-25
Bardziej szczegółowoBazy danych - wykład wstępny
Bazy danych - wykład wstępny Wykład: baza danych, modele, hierarchiczny, sieciowy, relacyjny, obiektowy, schemat logiczny, tabela, kwerenda, SQL, rekord, krotka, pole, atrybut, klucz podstawowy, relacja,
Bardziej szczegółowoPodstawowym zadaniem, które realizuje
Funkcje wyszukiwania i adresu INDEKS Mariusz Jankowski autor strony internetowej poświęconej Excelowi i programowaniu w VBA; Bogdan Gilarski właściciel firmy szkoleniowej Perfect And Practical; Pytania:
Bardziej szczegółowoSQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści
SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop. 2016 Spis treści O autorach 11 Podziękowania 12 Część I Wprowadzenie do języka SQL 13 Godzina 1. Witamy w świecie języka SQL 15
Bardziej szczegółowoCREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Zestaw ćwiczeń1 Dzięki DDL (Data Definition Language) można operować na strukturach, w których dane są przechowywane czyli np. dodawać, zmieniać i kasować tabele lub bazy. Najważniejsze polecenia tej grupy
Bardziej szczegółowoModel relacyjny. Wykład II
Model relacyjny został zaproponowany do strukturyzacji danych przez brytyjskiego matematyka Edgarda Franka Codda w 1970 r. Baza danych według definicji Codda to zbiór zmieniających się w czasie relacji
Bardziej szczegółowoJęzyk SQL. instrukcja laboratoryjna. Politechnika Śląska Instytut Informatyki. laboratorium Bazy Danych
Politechnika Śląska Instytut Informatyki instrukcja laboratoryjna laboratorium Bazy Danych przygotowali: mgr inż. Paweł Kasprowski (Kasprowski@zti.iinf.polsl.gliwice.pl) mgr inż. Bożena Małysiak (bozena@ivp.iinf.polsl.gliwice.pl)
Bardziej szczegółowoMicrosoft SQL Server Podstawy T-SQL
Itzik Ben-Gan Microsoft SQL Server Podstawy T-SQL 2012 przełożył Leszek Biolik APN Promise, Warszawa 2012 Spis treści Przedmowa.... xiii Wprowadzenie... xv Podziękowania... xix 1 Podstawy zapytań i programowania
Bardziej szczegółowoAdministracja i programowanie pod Microsoft SQL Server 2000
Administracja i programowanie pod Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 5 Kursory w SQL Serverze Wprowadzenie Modele kursorów Używanie kursorów Rodzaje kursorów Praca
Bardziej szczegółowoLaboratorium nr 10. Temat: Połączenia relacji
Laboratorium nr 10 Temat: Połączenia relacji Dotychczas omawiane zapytania zawsze dotyczyły jednej relacji. MoŜliwe jest jednak pisanie zapytań, które odczytują i łączą dane z wielu relacji. Celem tego
Bardziej szczegółowoDane wejściowe. Oracle Designer Generowanie bazy danych. Wynik. Przebieg procesu
Dane wejściowe Oracle Designer Generowanie bazy danych Diagramy związków encji, a w szczególności: definicje encji wraz z atrybutami definicje związków między encjami definicje dziedzin atrybutów encji
Bardziej szczegółowoSIECI KOMPUTEROWE I BAZY DANYCH
KATEDRA MECHANIKI I ROBOTYKI STOSOWANEJ WYDZIAŁ BUDOWY MASZYN I LOTNICTWA, POLITECHNIKA RZESZOWSKA SIECI KOMPUTEROWE I BAZY DANYCH Laboratorium DB2: TEMAT: Relacyjne bazy danych Cz. I, II Cel laboratorium
Bardziej szczegółowoBazy danych Wykład zerowy. P. F. Góra
Bazy danych Wykład zerowy P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2012 Patron? Św. Izydor z Sewilli (VI wiek), biskup, patron Internetu (sic!), stworzył pierwszy katalog Copyright c 2011-12 P.
Bardziej szczegółowoProjekt jest finansowany ze środków Unii Europejskiej, Europejskiego Funduszu Społecznego i budŝetu państwa. Studia Podyplomowe dla Nauczycieli
Projekt jest finansowany ze środków Unii Europejskiej, Europejskiego Funduszu Społecznego i budŝetu państwa Studia Podyplomowe dla Nauczycieli Bazy danych SQL Języki baz danych Interfejs DBMS składa się
Bardziej szczegółowoSQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści
SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, 2017 Spis treści O autorze 9 Wprowadzenie 11 Lekcja 1. Zrozumieć SQL 15 Podstawy baz danych 15 Język SQL
Bardziej szczegółowoSzkolenie autoryzowane. MS Tworzenie zapytań do Microsoft SQL Server Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje
Szkolenie autoryzowane MS 10774 Tworzenie zapytań do Microsoft SQL Server 2012 Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje Opis szkolenia Uwaga! Szkolenie wycofane z oferty. Zapraszamy
Bardziej szczegółowo1 Wstęp do modelu relacyjnego
Plan wykładu Model relacyjny Obiekty relacyjne Integralność danych relacyjnych Algebra relacyjna 1 Wstęp do modelu relacyjnego Od tego się zaczęło... E. F. Codd, A Relational Model of Data for Large Shared
Bardziej szczegółowo3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota
Laboratorium nr 3 1 Bazy Danych Instrukcja laboratoryjna Temat: Wprowadzenie do języka SQL, tworzenie, modyfikacja, wypełnianie tabel 3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota 1)
Bardziej szczegółowoStruktura drzewa w MySQL. Michał Tyszczenko
Struktura drzewa w MySQL Michał Tyszczenko W informatyce drzewa są strukturami danych reprezentującymi drzewa matematyczne. W naturalny sposób reprezentują hierarchię danych toteż głównie do tego celu
Bardziej szczegółowoXQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery
http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod
Bardziej szczegółowoT-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15
T-SQL dla każdego / Alison Balter. Gliwice, cop. 2016 Spis treści O autorce 11 Dedykacja 12 Podziękowania 12 Wstęp 15 Godzina 1. Bazy danych podstawowe informacje 17 Czym jest baza danych? 17 Czym jest
Bardziej szczegółowoModel relacyjny. Wykład II
Model relacyjny został zaproponowany do strukturyzacji danych przez brytyjskiego matematyka Edgarda Franka Codda w 1970 r. Baza danych według definicji Codda to zbiór zmieniających się w czasie relacji
Bardziej szczegółowoRelacyjne bazy danych. Podstawy SQL
Relacyjne bazy danych Podstawy SQL Język SQL SQL (Structured Query Language) język umożliwiający dostęp i przetwarzanie danych w bazie danych na poziomie obiektów modelu relacyjnego tj. tabel i perspektyw.
Bardziej szczegółowo1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Bardziej szczegółowoBazy danych Algebra relacji Wykład dla studentów matematyki
Bazy danych Algebra relacji Wykład dla studentów matematyki 8 marca 2015 Algebra relacji Model teoretyczny do opisywania semantyki relacyjnych baz danych, zaproponowany przez T. Codda (twórcę koncepcji
Bardziej szczegółowoWprowadzenie do baz danych
Wprowadzenie do baz danych Bazy danych stanowią obecnie jedno z ważniejszych zastosowań komputerów. Podstawowe zalety komputerowej bazy to przede wszystkim szybkość przetwarzania danych, ilość dostępnych
Bardziej szczegółowoWprowadzenie do baz danych
Wprowadzenie do baz danych Dr inż. Szczepan Paszkiel szczepanpaszkiel@o2.pl Katedra Inżynierii Biomedycznej Politechnika Opolska Wprowadzenie DBMS Database Managment System, System za pomocą którego można
Bardziej szczegółowoUzupełnij pola tabeli zgodnie z przykładem poniżej,
1. Wykonaj bazę danych biblioteki szkolnej, Otwórz MS Access a następnie z menu plik wybierz przycisk nowy, w oknie nowy plik wybieramy pusta baza danych nadaj jej nazwę Biblioteka i wybierz miejsce w
Bardziej szczegółowo