Tworzenie baz danych zasobów internetowychpraktycznie nie różni się od standardowych baz danych tworzonych w systemie MS SQL SERVER. Z reguły język MY SQL jest używany do tego rodzaju zasobów, chociaż można go również zastosować do tworzenia standardowych produktów oprogramowania do użytku lokalnego. Ale ten artykuł nie jest o tym.
Często podczas pracy z bazami danych w każdym zjęzyków, zadaniem jest sporządzenie próbki danych do wyprowadzenia do różnych raportów, wykresów i tak dalej. Z reguły przy realizacji takich zadań trzeba korzystać nie z jednej, a z kilku tabel, łącząc je w jedno zapytanie, co znacznie komplikuje jego projektowanie. W takim przypadku należy wziąć pod uwagę, w jaki sposób dane będą wyświetlane, w jaki sposób zostaną „podciągnięte” tabele i jaki wynik będzie najbardziej akceptowalny dla programisty. Do rozwiązania takich problemów wykorzystuje się jedną ze standardowych konstrukcji języka MySQL - Join.
Pojęcie słowa Dołącz
Języki programowania baz danych, nie ma znaczenia, któreto jest język, jako podstawę brane są standardowe słowa ze słowników anglojęzycznych (dlatego pod warunkiem, że znasz angielski, praca z tabelami będzie znacznie łatwiejsza). Aby zaimplementować połączenie tabel w selekcji, brane jest to samo słowo - Połącz. W języku programowania baz danych używany jest język My SQL. Tłumaczenie tego słowa usługowego jest dokładnie takie samo, jak w samym języku - „związek”.
Interpretacja konstrukcji MySQL - Join ikażdy z nich będzie dokładnie taki sam. Jeśli rozszyfrujemy cel konstrukcji, czyli schemat jej działania, to otrzymamy następujące znaczenie: struktury pozwolą zebrać potrzebne pola z różnych tabel lub zagnieżdżonych zapytań w jedną selekcję.
Rodzaje struktur do łączenia
Jeśli programista musi pobrać próbkę zkilka tabel i wie, które kluczowe pola się w nich znajdują i jakiego rodzaju dane są potrzebne do raportu, wtedy możesz użyć jednej z podstawowych konstrukcji złączenia, aby osiągnąć pożądany wynik. Istnieją cztery podstawowe konstrukcje (do łączenia tabel):
- Połączenie wewnętrzne.
- Łączenie krzyżowe.
- Lewe połączenie.
- Right Join.
W zależności od wykonywanego zadania każdy ze standardowych projektów da inne wyniki, co pozwoli na otrzymywanie raportów o różnych parametrach w krótkim czasie.
Tworzenie i wypełnianie tabel do dalszego wykorzystania
Zanim zaczniesz, na przykład zastanów sięmechanizmy pracy z konstrukcjami sumy danych, warto przygotować kilka tabel, z którymi będziemy pracować w przyszłości. Pomoże to wizualnie pokazać wszystkie zasady działania operatorów, dodatkowo w ten sposób łatwiej jest początkującym nauczyć się wszystkich podstaw programowania tabel.
Pierwsza tabela opisuje niektóre przedmioty, z którymi dana osoba stale się spotyka przez całe życie.
W drugiej tabeli opiszemy niektóre właściwości obiektów z pierwszej tabeli, abyś mógł z nimi pracować w przyszłości.
Ogólnie rzecz biorąc, wystarczą dwie tabele, aby zilustrować ich pracę na przykładzie. Teraz możesz przystąpić do praktycznej analizy naszych projektów.
Korzystanie z połączenia wewnętrznego
Podczas korzystania z konstrukcji MySQL - Join Ineerwarto zastanowić się nad niektórymi jego cechami. Ten projekt pozwoli ci wybrać z obu tabel tylko te rekordy, które znajdują się w pierwszej i drugiej tabeli. Jak to działa? W pierwszej tabeli mamy klucz główny – ID, który wskazuje na liczbę porządkową rekordów w tabeli.
Podczas tworzenia drugiej tabeli ten sam kluczjest używany jako numer seryjny, przykład można zobaczyć na rysunkach. Podczas wybierania danych instrukcja Select określi w rezultacie tylko te rekordy, których numery sekwencyjne pokrywają się, co oznacza, że znajdują się one zarówno w pierwszej, jak i drugiej tabeli.
Korzystając z konstrukcji, musisz zrozumiećjakie dane musisz uzyskać. Najczęstszym błędem, szczególnie dla początkującego programisty baz danych, jest nieracjonalne i nieprawidłowe użycie konstrukcji Inner Join. Jako przykład MySQL Inner Join można rozważyć skrypt, który zwróci nam z wcześniej opisanych i wypełnionych tabel informacje o obiektach i ich właściwościach. Ale i tutaj może być kilka sposobów wykorzystania struktury. Pod tym względem My SQL jest językiem bardzo elastycznym. Możesz więc spojrzeć na przykłady użycia połączenia wewnętrznego MySQL.
Łączenie tabel bez określania żadnych parametrów. W takim przypadku otrzymamy wynik takiego planu:
Jeśli wskażemy za pomocą słowa usługowego, żekonieczne jest uwzględnienie kluczy głównych rekordów w tabelach, wtedy wynik selekcji zmieni się dramatycznie. W takim przypadku otrzymamy selekcję, która zwróci tylko te wiersze, które mają te same klucze główne.
Możliwy jest również trzeci przypadek użycia.konstrukcje, gdy w zapytaniu poprzez słowo „na” wskazane są pola, którymi należy łączyć tabele. W takim przypadku wybór zwróci następujące dane:
Funkcje korzystania z Left Join
Jeśli rozważasz inny sposób łączenia tabel przy użyciu konstrukcji MySQL - Join, możesz zauważyć różnicę w wyświetlanych danych. Ten mechanizm to konstrukcja Left.
Użycie konstrukcji Left Join MySQL ma pewne osobliwości i, podobnie jak Inner, wymaga jasnego zrozumienia wyniku, który należy uzyskać.
W takim przypadku wszystkie rekordy zostaną wybrane jako pierwsze.z pierwszej tabeli, a później zostaną do nich dołączone rekordy z drugiej tabeli właściwości. W tym samym czasie, jeśli pierwsza tabela zawiera rekord, na przykład "stool", a druga tabela nie ma dla niego ani jednej właściwości, to lewy operator wyświetli wartość null przed tym rekordem, co mówi programiście że nie ma znaków na tego typu obiekt ...
Zastosowanie tego projektu pozwoli Ci określić, które pola lub na przykład towary w sklepie nie są wycenione, okres gwarancji itd.
Przykład użycia Left
Do praktycznego rozważenia operatoraKonstrukcje MySQL Left Join korzystają z wcześniej opisanych tabel. Na przykład musisz wybrać całą listę produktów, które są w sklepie i sprawdzić, dla których z nich nie ma znaków ani właściwości. W takim przypadku zaznaczenie spowoduje wyświetlenie wszystkich produktów, a dla tych, które nie posiadają właściwości, zostaną ustawione puste wartości.
Używanie Where w klauzuli Join
Jako parametr sprzężenie może obejmować nie tylko określenie pól, za pomocą których tabele muszą być połączone, ale może również zawierać operator klauzuli Where.
Rozważmy na przykład skrypt, który powinien:zwrócić do nas tylko te rekordy, dla których oznaczenie nie jest umieszczone. W takim przypadku musisz dodać operator warunku do konstrukcji Join i określić, co dokładnie ma zostać zwrócone w wyniku.
Podczas korzystania z Join - gdzie w MySQL, musisz jasno zrozumieć, że zostaną pokazane tylko te rekordy, do których ma zastosowanie określony warunek, a wybór będzie wyglądał następująco:
Takie zapytania umożliwiają dokonywanie wyborów wedługkonkretne dane, które odnoszą się do stanu wybranego przez programistę. Możesz określić kilka takich warunków, jednocześnie maksymalizując parametry wyboru danych z połączonych tabel.
Używanie łączenia do modyfikowania danych w tabelach
Konstrukcja Join jest zasadniczo uniwersalna.Pozwala nie tylko na dokonywanie różnorodnych selekcji, ale także na uwzględnienie w zapytaniach od jednej do kilku tabel, wprowadzenie dodatkowych warunków w selekcji. Konstrukcja może być również używana do innych operacji na danych. Na przykład Join może służyć do modyfikowania danych w tabeli. Raczej w celu wyjaśnienia warunków w tabeli lub w przypadkach, w których musisz zaktualizować dane w kilku tabelach dla tych samych warunków.
Na przykład rozważmy następujący problem.Istnieją trzy tabele, które zawierają pewne dane. Musisz zmienić dane w obu tabelach za pomocą jednego zapytania. Aby rozwiązać tego rodzaju zadania, możesz użyć konstrukcji Join w poleceniu Update. Rodzaj samej konstrukcji Join zależy, podobnie jak w przypadku próbkowania danych, od wyniku, jaki chce uzyskać programista.
Spójrzmy na najprostszy przykład.Konieczne jest zaktualizowanie danych dla tych samych warunków jednym żądaniem. Zapytania tego rodzaju są budowane w celu optymalizacji pracy z bazą danych. Po co pisać różne zapytania dla każdej z tabel, skoro wszystkie operacje na danych można wykonać za pomocą jednego zapytania? Przykładowa funkcja MySQL Update Join w naszym przypadku będzie wyglądać następująco:
Budowanie złożonych zapytań
Dość często podczas pracy z bazą danychkonieczne jest budowanie zapytań nie tylko z łączeniem kilku tabel, ale także z wykorzystaniem podzapytań. Takie zadania są dość trudne do zrozumienia dla początkującego programisty baz danych. Trudność polega na tym, że trzeba przemyśleć każdy krok, określić, jakie dane z jakiej tabeli lub zapytania należy pobrać i jak będziesz musiał z nimi pracować w przyszłości.
Aby uzyskać bardziej szczegółowe zrozumienie, możesz rozważyć(w MySQL Join) przykłady złożonych zapytań. Jeśli jesteś początkującym i dopiero zaczynasz pracować z bazami danych, to takie szkolenie przyniesie same korzyści. Idealną opcją byłyby przykłady łączenia lewostronnego MySQL.
Ta prośba zwróci nam 58 rekordów kontraktowychsprzedaż, dla której saldo gotówki jest wypełnione lub istnieje na wybrany dzień. W tym przypadku jest to aktualna data. Dodatkowo do selekcji został dodany warunek, że nazwa kontraktu musi zawierać symbole - „123”. Informacje (dane) wyświetlane na ekranie zostaną posortowane - uporządkowane według numeru umowy.
Poniższy przykład wyświetli dane o wszystkich płatnościach, w których wskazany będzie numer umowy.
Korzystanie z podzapytań
Jak wspomniano wcześniej, podczas pracy z bazami danychdane, możesz łączyć nie tylko tabele, ale także tabelę z zapytaniem. Ten projekt służy głównie do przyspieszenia zapytania i jego optymalizacji.
Na przykład, jeśli to konieczne ze stołu, któryma kilkaset pól i powiedzmy tysiąc rekordów, wybierz tylko dwa pola, wtedy powinieneś użyć zapytania, które zwróci tylko wymagane pola i połączy je z głównym zbiorem danych. Jako przykład MySQL Join Select, możesz rozważyć zapytanie tego typu:
To nie wszystkie sposoby korzystania ze standarduKonstrukcje MySQL, ale tylko standardowe. Jak korzystać z konstrukcji Join iw jakich formach zależy to od samego programisty, warto jednak pamiętać i wziąć pod uwagę, jaki wynik należy uzyskać wykonując zapytanie.