Kwerendy modyfikujące

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 AccessLibreOffice 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
Ź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.

Baza danych LibreOffice Base
Plik ODB o rozmiarze 37.54 KB w języku polskim
R1ZOfHgRmS6SY

Przycisk służy do pobrania bazy danych Microsoft Access.

Baza danych Microsoft Access
Plik ACCDB o rozmiarze 508.00 KB w języku polskim

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

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""Stainbeck".

W ten sposób uzyskujemy zapytanie, które wszystkie kryteria łączy na zasadzie alternatywy.

R11WXCA5VunUN
Ź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.

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.

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.

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
Ź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.
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
Ź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
Ź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.

Kwerenda powinna zmodyfikować 8 rekordów.

R1E1A4SLHegTk
Ź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".

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""Steinbeck". Po wykonaniu zapytania powinniśmy zobaczyć 18 zaktualizowanych rekordów:

R9MXsVtddpJfW
Ź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""Stainbeck".

W ten sposób uzyskujemy zapytanie, które wszystkie kryteria łączy na zasadzie alternatywy.

R1CQi1km6ERGd
Ź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.

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
Ź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
Ź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".

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""Steinbeck".

RpXcD70h3UwuD
Ź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
Ź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 tytulyegzemplarze 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
Ź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 tytulyegzemplarze. Dodajemy pola id_tytulu, id_egzemplarza, tytul, imie_autoranazwisko_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
Ź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
Ź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.

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_tytulutytul, ponieważ dla jednego tytułu mógł być zapisany więcej niż jeden egzemplarz w tabeli egzemplarze.

R9RABC7tXEPbW
Ź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.

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
Ź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.

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
Ź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 tytulyegzemplarze. Dodajemy pola id_tytulu, id_egzemplarza, tytul, imie_autoranazwisko_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
Ź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
Ź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_tytulutytul, ponieważ dla jednego tytułu mógł być zapisany więcej niż jeden egzemplarz w tabeli egzemplarze.

R1pL6HRLUPahN
Ź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
Ź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.

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