MySQL MariaDB

Podzapytania MySQL

Podzapytania MySQL
Podzapytanie to zapytanie SQL w większym zapytaniu, które jest cykliczne lub podzapytanie jest uważane za zapytanie wewnętrzne. Natomiast zapytanie zewnętrzne jest określane jako zapytanie zawierające podzapytanie. Podzapytanie MySQL może być osadzone w zapytaniach, w tym SELECT, INSERT, UPDATE lub DELETE. Ponadto w ramach innego podzapytania podzapytanie może być zagnieżdżone. Podzapytanie frazy powinno być zamknięte w nawiasach, gdziekolwiek jest używane. Nauczymy Cię, jak i kiedy używać podzapytania MySQL do tworzenia skomplikowanych zapytań oraz opiszemy ideę związanego z nim podzapytania. Otwórz powłokę wiersza poleceń z pulpitu i wpisz hasło, aby zacząć z niego korzystać. Naciśnij Enter i kontynuuj.

Podzapytanie w rekordach pojedynczej tabeli:

Utwórz tabelę o nazwie „zwierzęta” w bazie danych „data”.' Dodaj poniższy następujący rekord różnych zwierząt o różnych właściwościach, jak pokazano. Pobierz ten rekord za pomocą zapytania SELECT w następujący sposób:

>> WYBIERZ * Z danych.Zwierząt;

Przykład 01:

Pobierzmy ograniczone rekordy tej tabeli za pomocą podzapytań. Korzystając z poniższego zapytania wiemy, że podzapytanie zostanie wykonane jako pierwsze, a jego dane wyjściowe zostaną użyte w zapytaniu głównym jako dane wejściowe. Podzapytanie po prostu pobiera wiek, w którym cena zwierzęcia wynosi 2500. Wiek zwierzęcia, którego cena to 2500 to 4 w tabeli. Główne zapytanie wybierze wszystkie rekordy tabeli, w których wiek jest większy niż 4, a dane wyjściowe podano poniżej.

>> WYBIERZ * Z danych.zwierzęta WHERE Wiek > ( SELECT Wiek Z danych.zwierzęta GDZIE Cena='2500' );

Przykład 02:

Użyjmy tej samej tabeli w różnych sytuacjach. W tym przykładzie użyjemy klauzuli Function zamiast WHERE w podzapytaniu. Przyjęliśmy średnią ze wszystkich podanych cen za zwierzęta. Średnia cena wyniesie 3189. Główne zapytanie wybierze wszystkie rekordy zwierząt o cenie powyżej 3189. Otrzymasz poniższe dane wyjściowe.

>> WYBIERZ * Z danych.zwierzęta WHERE Cena > ( SELECT AVG(Price) FROM data.Zwierząt);

Przykład 03:

Użyjmy klauzuli IN w głównym zapytaniu SELECT. Przede wszystkim podzapytanie przyniesie ceny większe niż 2500. Następnie główne zapytanie wybierze wszystkie rekordy tabeli „zwierzęta”, w których cena znajduje się w wyniku podzapytania.

>> WYBIERZ * Z danych.zwierzęta WHERE Price IN ( SELECT Price FROM data).zwierzęta GDZIE Cena > 2500 );

Przykład 04:

Korzystaliśmy z podzapytania, aby pobrać imię zwierzęcia, którego cena wynosi 7000. Ponieważ to zwierzę to krowa, dlatego nazwa „krowa” zostanie zwrócona do głównego zapytania. W głównym zapytaniu wszystkie rekordy zostaną pobrane z tabeli, w której nazwa zwierzęcia to „krowa”.'Ponieważ mamy tylko dwa rekordy dla krowy zwierzęcej, dlatego mamy poniższe dane wyjściowe.

>> WYBIERZ * Z danych.zwierzęta WHERE Nazwa = ( SELECT Nazwa Z danych.zwierzęta GDZIE Cena='7000' );

Podzapytanie w wielu rekordach tabeli:

Załóżmy, że poniższe dwie tabele, „uczeń” i „nauczyciel” w Twojej bazie danych. Wypróbujmy kilka przykładów podzapytań przy użyciu tych dwóch tabel.

>> WYBIERZ * Z danych.student;
>> WYBIERZ * Z danych.nauczyciel;

Przykład 01:

Za pomocą podzapytania pobierzemy dane z jednej tabeli i użyjemy ich jako danych wejściowych do głównego zapytania. Oznacza to, że te dwie tabele mogą być w jakiś sposób powiązane. W poniższym przykładzie użyliśmy podzapytania do pobrania imienia ucznia z tabeli „uczeń”, gdzie imię i nazwisko nauczyciela to „Samina.' To zapytanie zwróci 'Samina' do głównej tabeli zapytań 'nauczyciel.' Główne zapytanie wybierze następnie wszystkie rekordy związane z nazwą nauczyciela 'Samina.'Ponieważ mamy dwa rekordy dla tej nazwy, więc mamy taki wynik.

>> WYBIERZ * Z danych.nauczyciel WHERENazwiskoNaucza = ( SELECTNazwiskoNaucza FROM danych.student WHERE TeachName = 'Samina' );

Przykład 02:

Aby opracować podzapytanie w przypadku różnych tabel, wypróbuj ten przykład. Mamy podzapytanie, które pobiera nazwisko nauczyciela z tabeli student. Nazwa powinna mieć „i” na dowolnej pozycji w swojej wartości. Oznacza to, że wszystkie nazwy w kolumnie TeachName mające w swojej wartości „i” zostaną wybrane i zwrócone do głównego zapytania. Główne zapytanie wybierze wszystkie rekordy z tabeli „nauczyciel”, w której w danych wyjściowych zwróconych przez podzapytanie znajduje się nazwisko nauczyciela. Ponieważ podzapytanie zwróciło 4 nazwiska nauczycieli, dlatego będziemy mieć zapis wszystkich tych nazwisk znajdujących się w tabeli „nauczyciel.'

>> WYBIERZ * Z danych.nauczyciel WHERE TeachName IN ( SELECT TeachName FROM data.student WHERE TeachName LIKE '%i%' );

Przykład 03:

Rozważ poniższe dwie tabele, „zamówienie” i „zamówienie1”.

>> WYBIERZ * Z danych.zamówienie;
>> WYBIERZ * Z danych.zamówienie1;

Wypróbujmy klauzulę ANY w tym przykładzie, aby opracować podzapytanie. Podzapytanie wybierze „id” z tabeli „order1”, gdzie kolumna „Status” ma wartość „Nieopłacone”.' Identyfikator może być większy niż 1. Oznacza to, że więcej niż 1 wartość zostanie zwrócona do głównego zapytania, aby uzyskać wyniki tabeli „zamówienie”. W tym przypadku można użyć dowolnego „id”. Mamy poniższe dane wyjściowe dla tego zapytania.

>> SELECT Pozycja, Sprzedaż, id Z danych.order WHERE id= ANY ( SELECT id FROM data.order1 GDZIE Status= 'Nieopłacone' );

Przykład 04:

Załóżmy, że masz poniższe dane w tabeli „order1” przed zastosowaniem jakiegokolwiek zapytania.

>> WYBIERZ * Z danych.zamówienie1;

Zastosujmy zapytanie w zapytaniu, aby usunąć niektóre rekordy z tabeli „order1”. Po pierwsze, podzapytanie wybierze wartość „Status” z tabeli „Zamówienie”, w której pozycja to „Rezerwacja”.' Podzapytanie zwraca 'Zapłacone' jako wartość. Teraz główne zapytanie usunie wiersze z tabeli „order1”, w której wartość kolumny „Status” to „Opłacone.'

>> USUŃ Z danych.order1 WHERE Status= ( SELECT Status Z danych.zamów WHERE Item = 'Książka' );

Po sprawdzeniu mamy teraz poniższe rekordy w tabeli 'order1' po wykonaniu zapytania.

>> WYBIERZ * Z danych.zamówienie1;

Wniosek:

Sprawnie pracowałeś z wieloma podzapytaniami we wszystkich powyższych przykładach. Mamy nadzieję, że teraz wszystko jest jasne i czyste.

Gry Top 10 Games to Play on Ubuntu
Top 10 Games to Play on Ubuntu
Windows platform has been one of the dominating platforms for gaming because of the huge percentage of games that are developing today to natively sup...
Gry 5 najlepszych gier zręcznościowych dla systemu Linux
5 najlepszych gier zręcznościowych dla systemu Linux
W dzisiejszych czasach komputery to poważne maszyny używane do gier. Jeśli nie możesz uzyskać nowego wysokiego wyniku, będziesz wiedział, o co mi chod...
Gry Bitwa o Wesnoth 1.13.6 Wydanie rozwojowe
Bitwa o Wesnoth 1.13.6 Wydanie rozwojowe
Bitwa o Wesnoth 1.13.6 wydana w zeszłym miesiącu jest szóstą wersją rozwojową w 1.13.Seria x i zapewnia szereg ulepszeń, w szczególności w interfejsie...