W e‑materiale Kwerendy modyfikujące, etap IPpJnXN8fDKwerendy modyfikujące, etap I został przedstawiony sposób użycia kwerend tworzących tabele i kwerend dołączających z wykorzystaniem narzędzi Microsoft Access i LibreOffice Base. W tym materiale zajmiemy się kwerendami aktualizującymi i usuwającymi. Wykorzystamy te same narzędzia oraz bazę Czytelnicy, której schemat przedstawia się następująco:
RWZhMJ2hZfiqw1
Ilustracja przedstawia zrzut ekranu z programu. Na grafice można zauważyć cztery kwadratowe pola, połączone oraz ułożone równolegle do siebie. Pierwsze od lewej, zawiera napis czytelnicy oraz id czytelnika, imię nazwisko oraz datę zapisu. Drugie pole to wypożyczenia, które zawierają id czytelnika, id egzemplarza oraz datę wypożyczenia. Trzecie pole to egzemplarze, które zawiera id egzemplarza, id tytułu oraz okładkę. Czwarte pole to tytuły, które zawiera id tytułu, tytuł, imię autora oraz nazwisko autora.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Polecenie 1
Pobierz i zapisz na dysku bazę danych Czytelnicy dla aplikacji LibreOffice Base lub Microsoft Access:
RI58lZSjYZ8VV
Przycisk służy do pobrania bazy danych LibreOffice Base.
W przypadku aplikacji LibreOffice Base do przygotowywania kwerend aktualizujących i usuwających używany jest język SQL. Więcej informacji na temat obsługi baz danych za pomocą języka SQL znajdziesz w serii e‑materiałów:
Kwerendy aktualizujące pozwalają na wprowadzenie zmian w istniejących rekordach w jednej tabeli lub większej liczbie tabel. W trakcie jednego wywołania modyfikowane są wszystkie rekordy spełniające wymagania określone w kwerendzie. Tworząc kwerendy aktualizujące, należy pamiętać, by poprawnie i precyzyjnie określić kryteria, wedle których wybierane będą przeznaczone do aktualizacji rekordy.
Ważne!
Niektóre typy pól występujących w bazach danych nie mogą być bezpośrednio lub wcale zmieniane. Zaliczamy do nich między innymi pola typu Autonumerowanie oraz pola obliczeniowe.
Polecenie 2
Do tabeli tytuly dołączono informacje o nowych pozycjach. Niestety, dane zawierają błędy i braki. W przypadku dwóch tytułów, które należą do zbiorów biblioteki, nie podano nazwiska autora, a nazwiska dwóch innych autorów zostały błędnie wprowadzone. Dla niektórych tytułów, których biblioteka nie ma, nie wprowadzono danych autora.
Przygotuj kwerendę aktualizującą, która:
dla tytułów "Superman Earth One - 1" oraz "Superman Earth One - 2" wprowadzi imię i nazwisko autora: "J. Michael Straczynski";
zmieni nazwiska autorów "Dhpande" na "Deshpande" oraz "Stainbeck" na "Steinbeck".
Na początku przygotuj w tabeli o nazwie tytuly_zmiany zestawienie zawierające identyfikatory tytułów, tytuły oraz nazwiska autorów pozycji, które zostaną zmodyfikowane.
Dla niektórych tytułów nie wprowadzono danych autora. Tym problemem zajmiemy się w sekcji dotyczącej kwerend usuwających.
Ważne!
Podstawą poprawnej kwerendy aktualizującej lub usuwającej jest właściwe określenie kryteriów wyboru rekordów przeznaczonych do aktualizacji lub usunięcia. Dlatego modyfikację bazy rozpoczynamy od utworzenia kwerendy wybierającej, dzięki której możemy sprawdzić poprawność kryteriów wyboru rekordów.
W programie LibreOffice Base aktualizacja i usuwanie wielu rekordów na raz możliwe są dzięki zapytaniom SQL, więc kwerendy wybierające nie są potrzebne. Mimo to warto je wcześniej utworzyć, aby sprawdzić poprawność wyboru rekordów i podejrzeć wygenerowany przez aparat bazy zapis kryteriów wyboru w języku SQL.
W programie MS Access kwerenda wybierająca jest obowiązkowa, ponieważ dopiero po jej przygotowaniu przekształcamy ją w kwerendę aktualizującą lub usuwającą dane.
LibreOffice Base
Zaczniemy od przygotowania kwerendy wybierającej wszystkie rekordy przeznaczone do modyfikacji. Nie jest ona konieczna, ale pozwoli nam przygotować kolejne kwerendy ułatwiające aktualizację nazwisk i sprawdzić później poprawność dokonanych zmian.
W widoku projektu tworzymy kwerendę opartą na tabeli tytuly. Wybieramy pola id_tytulu, tytul, nazwisko_autora. Dla pola tytul w wierszu Kryterium wprowadzamy tekst "Superman Earth One - 1", poniżej – w wierszu lub – wpisujemy "Superman Earth One - 2". Podobnie postępujemy z polem nazwisko_autora, w kolejnych wierszach lub wprowadzamy wartości "Dhpande" i "Stainbeck".
W ten sposób uzyskujemy zapytanie, które wszystkie kryteria łączy na zasadzie alternatywy.
R11WXCA5VunUN
Ilustracja zawiera zrzut ekranu z programu. W górnej części grafiki widnieje kwadratowe pole zawierające informację o tytułach takie jak id tytułu, tytuł, imię autora oraz nazwisko autora. Poniżej widoczna jest tabela zawierająca szczegółowe dane dotyczące tytułów.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Po wybraniu poleceń Widok, Włącz/Wyłącz widok projektu zobaczymy, jak zapytanie wygląda w widoku SQL:
Linia 1. SELECT cudzysłów id podkreślnik tytulu cudzysłów przecinek cudzysłów tytul cudzysłów przecinek cudzysłów nazwisko podkreślnik autora cudzysłów FROM cudzysłów tytuly cudzysłów.
Linia 2. WHERE otwórz nawias okrągły.
Linia 3. cudzysłów tytul cudzysłów znak równości apostrof Superman Earth One minus 1 apostrof OR.
Linia 4. cudzysłów tytul cudzysłów znak równości apostrof Superman Earth One minus 2 apostrof OR.
Linia 5. cudzysłów nazwisko podkreślnik autora cudzysłów znak równości apostrof Dhpande apostrof OR.
Linia 6. cudzysłów nazwisko podkreślnik autora cudzysłów znak równości apostrof Stainbeck apostrof zamknij nawias okrągły średnik.
SELECT "id_tytulu", "tytul", "nazwisko_autora" FROM "tytuly"
WHERE (
"tytul" = 'Superman Earth One - 1' OR
"tytul" = 'Superman Earth One - 2' OR
"nazwisko_autora" = 'Dhpande' OR
"nazwisko_autora" = 'Stainbeck');
Wracamy do widoku projektu i zapisujemy kwerendę pod nazwą kw_tytuly_zmiany. Po jej uruchomieniu zobaczymy rekordy, które zostaną zmodyfikowane:
Linia 1. id podkreślnik tytulu tytul nazwisko podkreślnik autora.
Linia 2. 25 Aghal Paghal Dhpande.
Linia 3. 26 Ahe Manohar Tari Dhpande.
Linia 4. 32 Apulki Dhpande.
Linia 5. 36 Asami Asami Dhpande.
Linia 6. 51 Burning Bright Stainbeck.
Linia 7. 55 Char Shabda Dhpande.
Linia 8. 106 Grapes of Wrath przecinek The Stainbeck.
Linia 9. 109 Gun Gayin Awadi Dhpande.
Linia 10. 130 Journal of a Novel Stainbeck.
Linia 11. 143 Life in Letters przecinek A Stainbeck.
Linia 12. 152 Moon is Down przecinek The Stainbeck.
Linia 13. 162 Once There Was a War Stainbeck.
Linia 14. 181 Radiowaril Bhashane ampersant Shrutika Dhpande.
Linia 15. 187 Russian Journal przecinek A Stainbeck.
Linia 16. 203 Superman Earth One minus 1.
Linia 17. 204 Superman Earth One minus 2.
Linia 18. 221 Vyakti ani Valli Dhpande.
Linia 19. 226 Winter of Our Discontent przecinek The Stainbeck.
id_tytulu tytul nazwisko_autora
25 Aghal Paghal Dhpande
26 Ahe Manohar Tari Dhpande
32 Apulki Dhpande
36 Asami Asami Dhpande
51 Burning Bright Stainbeck
55 Char Shabda Dhpande
106 Grapes of Wrath, The Stainbeck
109 Gun Gayin Awadi Dhpande
130 Journal of a Novel Stainbeck
143 Life in Letters, A Stainbeck
152 Moon is Down, The Stainbeck
162 Once There Was a War Stainbeck
181 Radiowaril Bhashane & Shrutika Dhpande
187 Russian Journal, A Stainbeck
203 Superman Earth One - 1
204 Superman Earth One - 2
221 Vyakti ani Valli Dhpande
226 Winter of Our Discontent, The Stainbeck
W programie LibreOffice Base dane można aktualizować w oknie Widok danych tabeli, za pomocą formularza lub przy użyciu poleceń SQL. To ostatnie rozwiązanie wykorzystujemy wtedy, kiedy chcemy zmieniać wartości w wielu rekordach od razu. Wykorzystamy instrukcję UPDATE, której składnia jest następująca:
Linia 1. UPDATE nazwa podkreślnik tabeli.
Linia 2. SET pole1 znak równości wartość przecinek pole2 znak równości wartość przecinek kropka kropka kropka.
Linia 3. WHERE warunek średnik.
UPDATE nazwa_tabeli
SET pole1 = wartość, pole2 = wartość, ...
WHERE warunek;
Chociaż, jak zaznaczyliśmy na wstępie, nie jest to konieczne, na podstawie zapisanej kwerendy przygotujemy osobne kwerendy wybierające, które ułatwią aktualizację nazwisk autorów. Zaznaczamy kwerendę kw_tytuly_zmiany, kopiujemy i wklejamy. W oknie Wstaw jako podajemy nazwę kw_nazwiska_1. W widoku projektu usuwamy pola id_tytulu oraz nazwisko_autora, zapisujemy zmiany i zamykamy.
R1sMmTsYXOxWq
Ilustracja przedstawia zrzut ekranu z programu. W górnej części widoczna jest tabela zawierająca informację na temat id tytułu oraz tytułu. Poniżej widoczne jest kwadratowe pole z informacjami na temat tytułów. Poniżej ponownie widoczna jest tabela z większą ilością informacji na temat id tytułu oraz tytułu.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Klikamy kwerendę kw_nazwiska_1 prawym przyciskiem myszy i z menu podręcznego wybieramy Edycja w widoku SQL.... Zaznaczamy i kopiujemy kod SQL. Zamykamy kwerendę. Wybieramy polecenie Narzędzia / SQL... i wklejamy skopiowany kod w oknie Polecenie do wykonania:. Zmieniamy kod, dodajemy instrukcję UPDATE oraz SET:
Linia 1. UPDATE cudzysłów tytuly cudzysłów.
Linia 2. SET cudzysłów imie podkreślnik autora cudzysłów znak równości apostrof J kropka Michael apostrof przecinek cudzysłów nazwisko podkreślnik autora cudzysłów znak równości apostrof Straczynski apostrof.
Linia 3. WHERE otwórz nawias okrągły.
Linia 4. cudzysłów tytul cudzysłów znak równości apostrof Superman Earth One minus 1 apostrof OR.
Linia 5. cudzysłów tytul cudzysłów znak równości apostrof Superman Earth One minus 2 apostrof.
Linia 6. zamknij nawias okrągły.
UPDATE "tytuly"
SET "imie_autora"='J. Michael', "nazwisko_autora"='Straczynski'
WHERE (
"tytul" = 'Superman Earth One - 1' OR
"tytul" = 'Superman Earth One - 2'
)
Ważne!
Podczas konstruowania kwerendy aktualizującej wykorzystujemy zapisaną w języku SQL klauzulę warunkową odpowiedniej kwerendy wybierającej.
Po kliknięciu Wykonaj powinniśmy zobaczyć między innymi komunikat 2 rows updated, co oznacza, że zaktualizowaliśmy 2 rekordy.
RKnsRrO5JBmb9
Ilustracja przedstawia zrzut ekranu z programu. W górnej części widoczny jest napis wykonaj instrukcję Es Ku El. Poniżej widoczne są Polecenia SQL do uzupełnienia. Widoczne jest również pole statusu oraz wyjścia.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Podobnie postępujemy w pozostałych przypadkach. Tworzymy kwerendę wybierającą o nazwie kw_nazwiska_2, która zwraca listę rekordów zawierających nazwisko autora "Dhpande".
R1T1L41YRCoE7
Ilustracja przedstawia zrzut ekranu z programu. W górnej części widoczne jest kwadratowe pole, opisane tytuły. W ty polu znajdują się napisy takie jak id tytułu, tytuł, imię autora oraz nazwisko autora. Poniżej widoczna jest tabela zawierająca informacje na temat id tytułu oraz nazwiska autora.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Kopiujemy kod SQL z kwerendy i wklejamy w oknie Wykonaj instrukcję SQL. Zmieniamy kod, dopisujemy instrukcję UPDATE i wykonujemy kwerendę.
Linia 1. UPDATE cudzysłów tytuly cudzysłów.
Linia 2. SET cudzysłów nazwisko podkreślnik autora cudzysłów znak równości apostrof Deshpande apostrof.
Linia 3. WHERE cudzysłów nazwisko podkreślnik autora cudzysłów znak równości apostrof Dhpande apostrof.
UPDATE "tytuly"
SET "nazwisko_autora"='Deshpande'
WHERE "nazwisko_autora" = 'Dhpande'
Kwerenda powinna zmodyfikować 8 rekordów.
R1E1A4SLHegTk
Ilustracja przedstawia zrzut ekranu z programu. W górnej części widoczny jest napis wykonaj instrukcję Es Ku El. Poniżej widoczne są Polecenia SQL do uzupełnienia. Widoczne jest również pole statusu oraz wyjścia.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Ćwiczenie 1
Wzorując się na przedstawionych przykładach, utwórz i wykonaj kwerendę, która w tabeli tytuly zmieni nazwisko "Stainbeck" na "Steinbeck".
Przygotuj kwerendę wybierającą, która z tabeli tytuly wybierze rekordy, w których nazwisko autora to "Stainbeck". Wykorzystaj klauzulę warunkową tej kwerendy zapisaną w języku SQL do skonstruowania i wykonania kwerendy aktualizującej.
R6tL4zZXzvrze
Ilustracja przedstawia zrzut ekranu z programu. W górnej części widoczna jest tabela zawierająca informację na temat id tytułu oraz nazwiska autora. Poniżej widoczne jest kwadratowe pole z informacjami na temat tytułów. Poniżej ponownie widoczna jest tabela z większą ilością informacji na temat id tytułu oraz nazwiska autora.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Kod SQL kwerendy:
Linia 1. UPDATE cudzysłów tytuly cudzysłów.
Linia 2. SET cudzysłów nazwisko podkreślnik autora cudzysłów znak równości apostrof Steinbeck apostrof.
Linia 3. WHERE cudzysłów nazwisko podkreślnik autora cudzysłów znak równości apostrof Stainbeck apostrof.
UPDATE "tytuly"
SET "nazwisko_autora" = 'Steinbeck'
WHERE "nazwisko_autora" = 'Stainbeck'
R1MyRhu0m1IDD
Ilustracja przedstawia zrzut ekranu z programu. W górnej części widoczny jest napis wykonaj instrukcję Es Ku El. Poniżej widoczne są Polecenia SQL do uzupełnienia. Widoczne jest również pole statusu oraz wyjścia.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Zmodyfikowanych zostało 8 rekordów.
Na koniec sprawdzimy, czy zmiany zostały wprowadzone. Wykorzystamy kwerendę kw_tytuly_zmiany. W widoku edycji usuwamy kryteria dla pola tytul, dodajemy natomiast nazwisko Straczynski w wierszu Kryterium dla pola nazwisko_autora. Nazwiska dwóch pozostałych autorów zmieniamy na "Deshpande" i "Steinbeck". Po wykonaniu zapytania powinniśmy zobaczyć 18 zaktualizowanych rekordów:
R9MXsVtddpJfW
Ilustracja przedstawia zrzut ekranu z programu. Widoczne są dwie tabele przedstawiające szereg informacji na temat id tytułu oraz nazwiska autora.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Microsoft Access
Zaczniemy od przygotowania kwerendy wybierającej wszystkie rekordy przeznaczone do modyfikacji. Nie jest ona konieczna, ale pozwoli nam przygotować kryteria wyboru rekordów i sprawdzić później poprawność dokonanych zmian.
W widoku projektu tworzymy kwerendę opartą na tabeli tytuly. Wybieramy pola id_tytulu, tytul, nazwisko_autora. Dla pola tytul w wierszu Kryterium wprowadzamy tekst "Superman Earth One - 1", poniżej – w wierszu lub – wpisujemy "Superman Earth One - 2". Podobnie robimy dla pola nazwisko_autora, w kolejnych wierszach lub wprowadzamy wartości "Dhpande" i "Stainbeck".
W ten sposób uzyskujemy zapytanie, które wszystkie kryteria łączy na zasadzie alternatywy.
R1CQi1km6ERGd
Ilustracja zawiera zrzut ekranu z programu. W górnej części grafiki widnieje kwadratowe pole zawierające informację o tytułach takie jak id tytułu, tytuł, imię autora oraz nazwisko autora. Poniżej widoczna jest tabela zawierająca szczegółowe dane dotyczące tytułów.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Zapisujemy kwerendę pod nazwą kw_tytuly_zmiany. Po jej uruchomieniu zobaczymy rekordy, które zostaną zmodyfikowane:
Linia 1. id podkreślnik tytulu tytul nazwisko podkreślnik autora.
Linia 2. 25 Aghal Paghal Dhpande.
Linia 3. 26 Ahe Manohar Tari Dhpande.
Linia 4. 32 Apulki Dhpande.
Linia 5. 36 Asami Asami Dhpande.
Linia 6. 51 Burning Bright Stainbeck.
Linia 7. 55 Char Shabda Dhpande.
Linia 8. 106 Grapes of Wrath przecinek The Stainbeck.
Linia 9. 109 Gun Gayin Awadi Dhpande.
Linia 10. 130 Journal of a Novel Stainbeck.
Linia 11. 143 Life in Letters przecinek A Stainbeck.
Linia 12. 152 Moon is Down przecinek The Stainbeck.
Linia 13. 163 Once There Was a War Stainbeck.
Linia 14. 181 Radiowaril Bhashane ampersant Shrutika Dhpande.
Linia 15. 187 Russian Journal przecinek A Stainbeck.
Linia 16. 203 Superman Earth One minus 1.
Linia 17. 204 Superman Earth One minus 2.
Linia 18. 221 Vyakti ani Valli Dhpande.
Linia 19. 226 Winter of Our Discontent przecinek The Stainbeck.
id_tytulu tytul nazwisko_autora
25 Aghal Paghal Dhpande
26 Ahe Manohar Tari Dhpande
32 Apulki Dhpande
36 Asami Asami Dhpande
51 Burning Bright Stainbeck
55 Char Shabda Dhpande
106 Grapes of Wrath, The Stainbeck
109 Gun Gayin Awadi Dhpande
130 Journal of a Novel Stainbeck
143 Life in Letters, A Stainbeck
152 Moon is Down, The Stainbeck
163 Once There Was a War Stainbeck
181 Radiowaril Bhashane & Shrutika Dhpande
187 Russian Journal, A Stainbeck
203 Superman Earth One - 1
204 Superman Earth One - 2
221 Vyakti ani Valli Dhpande
226 Winter of Our Discontent, The Stainbeck
Teraz w widoku projektu tworzymy kolejną kwerendę wybierającą rekordy, których pole tytul to "Superman Earth One - 1" lub "Superman Earth One - 2". Kwerendę zapisujemy pod nazwą kw_nazwiska_1 i uruchamiamy, aby sprawdzić, czy zwraca dwa rekordy. Wracamy do widoku projektu.
Program MS Access może połączyć kryteria nałożone na pole tytul przy użyciu operatora OR: "Superman Earth One - 1" Or "Superman Earth One - 2".
W widoku kwerendy przekształcamy kwerendę wybierającą w kwerendę aktualizującą – klikamy ikonę Aktualizuj w karcie Tworzenie. W wierszu Aktualizacja do w polu nazwisko_autora wpisujemy Straczynski, a w polu imie_autora wpisujemy: J. Michael. Tak przygotowane zapytanie uruchamiamy i potwierdzamy zamiar zaktualizowania 2 wierszy.
Rj2IaRGbSLnR8
Ilustracja zawiera zrzut ekranu z programu. W górnej części grafiki widnieją funkcje programu. Zaznaczona została funkcja aktualizacji. Poniżej widnieje kwadratowe pole zawierające informację o tytułach takie jak id tytułu, tytuł, imię autora oraz nazwisko autora. Poniżej widoczna jest tabela zawierająca szczegółowe dane dotyczące tytułów.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
W podobny sposób poprawimy błędy w dwóch pozostałych nazwiskach. Tworzymy kwerendę wybierającą o nazwie kw_nazwiska_2, która powinna zwracać 8 rekordów zawierających nazwisko "Dhpande". Następnie przekształcamy ją w kwerendę aktualizującą i wpisujemy nazwisko "Deshpande" w wierszu Aktualizacja do: pola nazwisko_autora. Po uruchomieniu zapytania potwierdzamy zamiar zaktualizowania 8 rekordów.
R1YL5PmaBL3Mq
Ilustracja zawiera zrzut ekranu z programu. W górnej części grafiki widnieją funkcje programu. Zaznaczona została funkcja aktualizacji. Poniżej widnieje kwadratowe pole zawierające informację o tytułach takie jak id tytułu, tytuł, imię autora oraz nazwisko autora. Poniżej widoczna jest tabela zawierająca szczegółowe dane dotyczące tytułów.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Ćwiczenie 2
Wzorując się na przykładach, przygotuj kwerendę aktualizującą, która w tabeli tytuly zmieni nazwisko "Stainbeck" na "Steinbeck".
Przygotuj kwerendę wybierającą, która z tabeli tytuly wybierze rekordy zawierające nazwisko "Stainbeck". Przekształć ją w kwerendę aktualizującą i wpisz we właściwym wierszu poprawną formę nazwiska ("Steinbeck"). Uruchom kwerendę.
RtWpCknBspcZ7
Ilustracja zawiera zrzut ekranu z programu. W górnej części grafiki widnieją funkcje programu. Zaznaczona została funkcja aktualizacji. Poniżej widnieje kwadratowe pole zawierające informację o tytułach takie jak id tytułu, tytuł, imię autora oraz nazwisko autora. Poniżej widoczna jest tabela zawierająca szczegółowe dane dotyczące tytułów.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Po uruchomieniu zaktualizowanych zostanie 8 rekordów.
Na koniec sprawdzimy, czy zmiany zostały wprowadzone. Wykorzystamy kwerendę kw_tytuly_zmiany, którą w widoku projektu przekształcamy z powrotem w wybierającą – klikamy ikonę Wybierz w karcie Tworzenie. Usuwamy kryteria dla pola tytul, dodajemy natomiast nazwisko Straczynski w wierszu Kryterium dla pola nazwisko_autora. Nazwiska dwóch pozostałych autorów zmieniamy na "Deshpande" i "Steinbeck".
RpXcD70h3UwuD
Ilustracja zawiera zrzut ekranu z programu. W górnej części grafiki widnieje kwadratowe pole zawierające informację o tytułach takie jak id tytułu, tytuł, imię autora oraz nazwisko autora. Poniżej widoczna jest tabela zawierająca szczegółowe dane dotyczące tytułów.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Po wykonaniu zapytania powinniśmy zobaczyć 18 zaktualizowanych rekordów:
RQ8coiwnkuPeV
Ilustracja przedstawia zrzut ekranu z programu. Grafika przedstawia tabele zawierającą informację na temat tytułów oraz nazwisk.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Kwerendy usuwające
Kwerendy usuwające służą do kasowania rekordów spełniających warunki określone w kwerendzie. Co ważne – usuwane są za ich pomocą całe rekordy, a nie tylko zawartość pól. Należy pamiętać, że operacja ta jest nieodwracalna. Warto więc przygotować wcześniej kopię tabel, z których usuwamy dane.
Polecenie 3
Tabela tytuly zawiera 230 rekordów i jest powiązana relacją 1..n (jeden‑do‑wielu) z tabelą egzemplarze, która zawiera 310 rekordów. W obydwu tabelach znajdują się rekordy zawierające niekompletne informacje. W tabeli tytuly brakuje niektórych imion i nazwisk autorów, natomiast w tabeli egzemplarze brakuje informacji nt. okładek niektórych egzemplarzy.
Przygotuj kwerendę usuwającą, która usunie z tabeli tytuly wszystkie rekordy, w których brak imienia lub nazwiska autora, a także powiązane z nimi rekordy z tabeli egzemplarze.
Na początku przygotuj kopie tabel tytuly i egzemplarze oraz zestawienie w formie tabeli tytuly_do_usuniecia zawierające identyfikator tytułu, identyfikator egzemplarza, tytuł, imię i nazwisko autora pozycji.
Ważne!
Jeżeli chcemy usuwać rekordy z tabel powiązanych ze sobą relacją typu 1..n (jeden‑do‑wielu), to jako pierwsze usuwamy dane z tabeli powiązanej zawierającej klucz obcyklucz obcyklucz obcy. Później usuwamy dane z tabeli nadrzędnej zawierającej klucz głównyklucz główny (klucz podstawowy)klucz główny.
LibreOffice Base
Zaczniemy od przygotowania kopii danych. Zaznaczamy tabelę tytuly, kopiujemy i wklejamy. W oknie Kopiuj tabelę podajemy nazwę kopia_tytuly, zaznaczamy opcję Definicja i dane i klikamy Utwórz.
R9Wlwvyv2uvbS
Ilustracja przedstawia zrzut ekranu. Grafika przedstawia opcję kopiuj tabele. Zawiera informację takie jak nazwa tabeli opcje definicji.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Tak samo postępujemy z tabelą egzemplarze.
Kolejnym krokiem będzie przygotowanie zestawienia usuwanych danych. Nie jest ono konieczne, ale pozwoli przygotować kryteria wyboru, a na końcu sprawdzić poprawność wykonanych operacji.
W widoku projektu tworzymy kwerendę wybierającą, której źródłami będą tabele tytuly i egzemplarze. Dodajemy pola id_tytulu, id_egzemplarza, tytul, imie_autora i nazwisko_autora. Na dwa ostatnie pola nakładamy połączone alternatywą kryterium IS EMPTY i wyłączamy widoczność tych pól. Kwerendę zapisujemy pod nazwą kw_tytuly_do_usuniecia.
RC3c0mPwo9ZHz
Ilustracja zawiera zrzut ekranu z programu. W górnej części grafiki widnieją kwadratowe pola zawierające informację o tytułach takie jak id tytułu, tytuł, imię autora, nazwisko autora oraz drugie pole zawierające informację o egzemplarzach takie jak id egzemplarza, id tytułu oraz okładka. Poniżej widoczna jest tabela zawierająca szczegółowe dane dotyczące tytułów.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Po uruchomieniu zapytania zobaczymy listę 35 rekordów, w których brakuje imienia lub nazwiska.
RFNGzMnRpgXPI
Ilustracja przedstawia zrzut ekranu z programu. Przedstawia tabele zawierającą informację na temat id tytułu, id egzemplarz oraz tytuł.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Do usuwania rekordów wykorzystamy instrukcję DELETE języka SQL.
Ogólna postać tej instrukcji:
Linia 1. DELETE FROM nazwa podkreślnik tabeli WHERE warunki średnik.
DELETE FROM nazwa_tabeli WHERE warunki;
Zaczniemy od usunięcia rekordów z tabeli powiązanej egzemplarze, dla których w nadrzędnej tabeli tytuly brak imienia lub nazwiska autora. Podobnie jak w przypadku aktualizacji wykorzystamy kwerendy wybierające, które nie są obligatoryjne.
Zaznaczamy, kopiujemy i wklejamy kwerendę kw_tytuly_do_usuniecia. W oknie Wstaw jako podajemy nazwę kw_egzemplarze_do_usuniecia. Otwieramy kwerendę w widoku projektu, usuwamy pola id_tytulu i tytul, ponieważ dla jednego tytułu mógł być zapisany więcej niż jeden egzemplarz w tabeli egzemplarze.
R9RABC7tXEPbW
Ilustracja zawiera zrzut ekranu z programu. W górnej części grafiki widnieją kwadratowe pola zawierające informację o tytułach takie jak id tytułu, tytuł, imię autora, nazwisko autora oraz drugie pole zawierające informację o egzemplarzach takie jak id egzemplarza, id tytułu oraz okładka. Poniżej widoczna jest tabela zawierająca szczegółowe dane dotyczące tytułów.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Kwerendę uruchamiamy, aby upewnić się, że zwraca 35 identyfikatorów. Następnie otwieramy ją w widoku edycji SQL i kopiujemy kod. Dalej wybieramy polecenie Narzędzia / SQL, w oknie Wykonaj instrukcję SQL wklejamy skopiowane instrukcje i dopisujemy instrukcję DELETE:
Linia 1. DELETE FROM cudzysłów egzemplarze cudzysłów WHERE cudzysłów egzemplarze cudzysłów kropka cudzysłów id podkreślnik tytulu cudzysłów IN.
Linia 2. otwórz nawias okrągły.
Linia 3. SELECT cudzysłów tytuly cudzysłów kropka cudzysłów id podkreślnik tytulu cudzysłów FROM cudzysłów egzemplarze cudzysłów przecinek cudzysłów tytuly cudzysłów.
Linia 4. WHERE cudzysłów egzemplarze cudzysłów kropka cudzysłów id podkreślnik tytulu cudzysłów znak równości cudzysłów tytuly cudzysłów kropka cudzysłów id podkreślnik tytulu cudzysłów.
Linia 5. AND otwórz nawias okrągły cudzysłów tytuly cudzysłów kropka cudzysłów imie podkreślnik autora cudzysłów IS NULL OR cudzysłów tytuly cudzysłów kropka cudzysłów nazwisko podkreślnik autora cudzysłów IS NULL zamknij nawias okrągły.
Linia 6. zamknij nawias okrągły.
DELETE FROM "egzemplarze" WHERE "egzemplarze"."id_tytulu" IN
(
SELECT "tytuly"."id_tytulu" FROM "egzemplarze", "tytuly"
WHERE "egzemplarze"."id_tytulu" = "tytuly"."id_tytulu"
AND ( "tytuly"."imie_autora" IS NULL OR "tytuly"."nazwisko_autora" IS NULL )
)
Operator IN pozwala podać w klauzuli warunkowej WHERE wiele wartości. W tym wypadku identyfikatorów tytułów do usunięcia. Ich listę zwraca użyta jako podzapytanie kwerenda wybierająca SELECT.
Po kliknięciu przycisku Wykonaj powinniśmy zobaczyć komunikat 35 rows updated.
R1L3Q1IxzIorp
Ilustracja przedstawia zrzut ekranu wykonania instrukcji SQL. Na grafice widoczne są ekrany poleceń do wykonania, poprzednie polecenia, status oraz wyjście.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
W podobny sposób usuwamy rekordy z tabeli nadrzędnej tytuly. Nie musimy jednak korzystać z operatora IN i podzapytania. Do wskazania rekordów przeznaczonych do usunięcia wystarczy klauzula warunkowa z kwerendy wybierającej identyfikatory tytułów, dla których brak imienia lub nazwiska autora.
Ćwiczenie 3
Przygotuj i wykonaj kwerendę usuwającą zapisaną w języku SQL, która usunie z tabeli tytuly rekordy, w których brak imienia lub nazwiska autora.
Przygotuj kwerendę zwracającą z tabeli tytuly listę identyfikatorów rekordów, w których brak imienia lub nazwiska autora. Skopiuj jej kod SQL, wklej w oknie Wykonaj instrukcję SQL, a początek kwerendy – tj. instrukcję SELECT id_tytulu – zastąp klauzulą DELETE.
R1AN3rwndNwyl
Ilustracja zawiera zrzut ekranu z programu. W górnej części grafiki widnieje kwadratowe pole zawierające informację o tytułach takie jak id tytułu, tytuł, imię autora, nazwisko autora Poniżej widoczna jest tabela zawierająca szczegółowe dane dotyczące id tytułów, imię autora oraz nazwisko autora.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Linia 1. DELETE FROM cudzysłów tytuly cudzysłów.
Linia 2. WHERE otwórz nawias okrągły.
Linia 3. cudzysłów tytuly cudzysłów kropka cudzysłów imie podkreślnik autora cudzysłów IS NULL OR.
Linia 4. cudzysłów tytuly cudzysłów kropka cudzysłów nazwisko podkreślnik autora cudzysłów IS NULL.
Linia 5. zamknij nawias okrągły.
DELETE FROM "tytuly"
WHERE (
"tytuly"."imie_autora" IS NULL OR
"tytuly"."nazwisko_autora" IS NULL
)
R1SACNPUDO5bt
Ilustracja przedstawia zrzut ekranu wykonania instrukcji SQL. Na grafice widoczne są ekrany poleceń do wykonania, poprzednie polecenia, status oraz wyjście.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Po wykonaniu kwerendy powinniśmy zobaczyć komunikat 35 rows updated, który oznacza, że z tabeli tytuly usunięto 35 rekordów.
Poprawność wykonanych operacji możemy sprawdzić dzięki kwerendzie kw_tytuly_do_usuniecia, po uruchomieniu nie powinna zwrócić żadnych rekordów. Ponadto w tabeli egzemplarze powinno zostać 275 (z 310) rekordów, a w tabeli tytuly 195 (z 230) rekordów.
Microsoft Access
Zaczniemy od przygotowania kopii danych. Zaznaczamy tabelę tytuly, kopiujemy i wklejamy. W oknie Wklejanie tabeli jako sprawdzamy, czy zaznaczona jest opcja Struktura i dane i klikamy OK.
RXEju5zRXXlZp
Ilustracja przedstawia zrzut ekranu z programu. Jest to grafika informująca o wklejaniu tabeli. Zawarte są tam informację takie jak Nazwa tabeli oraz opcje wklejania.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Tak samo postępujemy z tabelą egzemplarze.
Kolejnym krokiem będzie przygotowanie zestawienia usuwanych danych. Nie jest ono konieczne, ale pozwoli przygotować kryteria wyboru, a na końcu sprawdzić poprawność wykonanych operacji.
W widoku projektu tworzymy kwerendę wybierającą, której źródłami będą tabele tytuly i egzemplarze. Dodajemy pola id_tytulu, id_egzemplarza, tytul, imie_autora i nazwisko_autora. Na dwa ostatnie pola nakładamy połączone alternatywą kryterium IS NULL i wyłączamy widoczność tych pól. Kwerendę zapisujemy pod nazwą kw_tytuly_do_usuniecia. Po uruchomieniu zapytania zobaczymy listę 35 rekordów, w których brakuje imienia lub nazwiska.
RPFpWkGmKaXoQ
Ilustracja zawiera zrzut ekranu z programu. W górnej części grafiki widnieją kwadratowe pola zawierające informację o tytułach takie jak id tytułu, tytuł, imię autora, nazwisko autora oraz drugie pole zawierające informację o egzemplarzach takie jak id egzemplarza, id tytułu oraz okładka. Poniżej widoczna jest tabela zawierająca szczegółowe dane dotyczące tytułów.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Po uruchomieniu zapytania zobaczymy listę 35 rekordów, w których brakuje imienia lub nazwiska.
RFvJHCY2y025i
Ilustracja przedstawia zrzut ekranu z programu. Przedstawia tabelę zawierającą informacje na temat tytułów.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Zaczniemy od usunięcia rekordów z tabeli powiązanej egzemplarze, dla których w nadrzędnej tabeli tytuly brak imienia lub nazwiska autora. Identyfikatory usuwanych tytułów uzyskamy dzięki kwerendzie wybierającej.
Zaznaczamy, kopiujemy i wklejamy kwerendę kw_tytuly_do_usuniecia. W oknie Wklej jako podajemy nazwę kw_egzemplarze_do_usuniecia. Otwieramy kwerendę w widoku projektu, usuwamy pola id_tytulu i tytul, ponieważ dla jednego tytułu mógł być zapisany więcej niż jeden egzemplarz w tabeli egzemplarze.
R1pL6HRLUPahN
Ilustracja zawiera zrzut ekranu z programu. W górnej części grafiki widnieją kwadratowe pola zawierające informację o tytułach takie jak id tytułu, tytuł, imię autora, nazwisko autora oraz drugie pole zawierające informację o egzemplarzach takie jak id egzemplarza, id tytułu oraz okładka. Poniżej widoczna jest tabela zawierająca szczegółowe dane dotyczące tytułów.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Kwerendę uruchamiamy, aby upewnić się, że zwraca 35 identyfikatorów.
Przekształcamy kwerendę w usuwającą. W widoku projektu dwa razy klikamy symbol * (gwiazdka) w tabeli źródłowej egzemplarze, aby wskazać tabelę, z której chcemy usuwać dane. Następnie wybieramy polecenie Usuń w karcie Projektowanie.
RXxtu9SQiQILe
Ilustracja zawiera zrzut ekranu z programu. W górnej części grafiki widoczne są opcje programu, gdzie zaznaczona jest funkcja usuń. Poniżej widnieją kwadratowe pola zawierające informację o tytułach takie jak id tytułu, tytuł, imię autora, nazwisko autora oraz drugie pole zawierające informację o egzemplarzach takie jak id egzemplarza, id tytułu oraz okładka. Poniżej widoczna jest tabela zawierająca szczegółowe dane dotyczące tytułów.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Po uruchomieniu kwerendy powinniśmy zobaczyć komunikat o zamiarze usunięcia 35 wierszy, który potwierdzamy, klikając przycisk TAK.
W podobny sposób usuwamy dane z tabeli tytuly. Jedyna różnica będzie taka, że podczas przekształcania kwerendy w usuwającą symbol * (gwiazdka) powinniśmy kliknąć w tabeli tytuly a nie egzemplarze.
Ćwiczenie 4
Przygotuj i wykonaj kwerendę usuwającą, która usunie z tabeli tytuly rekordy, w których brak imienia lub nazwiska autora.
Przygotuj kwerendę zwracającą z tabeli tytuly listę identyfikatorów rekordów, w których brak imienia lub nazwiska autora. Przekształć ją w kwerendę usuwającą i nie zapomnij wskazać tabeli tytuly jako tej, z której usuwasz dane.
RfRhTYxYLLF5G
Ilustracja zawiera zrzut ekranu z programu. W górnej części grafiki widoczne są opcje programu, gdzie zaznaczona jest funkcja usuń. Poniżej widnieje kwadratowe pole zawierające informację o tytułach takie jak id tytułu, tytuł, imię autora, nazwisko autora. Poniżej widoczna jest tabela zawierająca szczegółowe dane dotyczące id tytułu, imienia autora, nazwiska autora oraz samego tytułu.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 4.0.
Po uruchomieniu kwerendy zobaczysz komunikat o zamiarze usunięcia 35 wierszy, który potwierdzasz, klikając przycisk TAK.
Poprawność wykonanych operacji możemy sprawdzić za pomocą kwerendy kw_tytuly_do_usuniecia. Zmieniamy jej typ na wybierającą, klikając przycisk Wybierz w karcie Projektowanie i wykonując ją. Tym razem nie powinna zwrócić żadnych wyników. Ponadto w tabeli egzemplarze powinno zostać 275 (z 310) rekordów, a w tabeli tytuly 195 (z 230) rekordów.
Słownik
klucz główny (klucz podstawowy)
klucz główny (klucz podstawowy)
(z ang. primary key); pole tabeli, w którym wartości liczbowe lub znakowe nie mogą się powtarzać, wykorzystywane do jednoznacznej identyfikacji rekordu
klucz obcy
klucz obcy
(z ang. foreign key) pole tabeli, które tworzy relację (związek) z inną tabelą, czyli przechowuje wartości klucza głównego (podstawowego) z innej tabeli; typ danych klucza obcego musi być taki sam jak typ danych klucza głównego (podstawowego)
relacyjna baza danych
relacyjna baza danych
baza danych, w której dane przechowywane są w postaci wzajemnie powiązanych ze sobą tabel
SQL
SQL
(od ang. Structured Query Language); strukturalny język zapytań, który stanowi standard komunikacji ze współczesnymi, relacyjnymi bazami danych