Underforespørsel innen enkelttabell:
Lag en tabell med navnet "dyr" i databasedataene.'Legg til følgende register over forskjellige dyr med forskjellige egenskaper som vist. Hent denne posten ved hjelp av SELECT-spørringen som følger:
>> VELG * FRA data.dyr;
Eksempel 01:
La oss hente de begrensede postene i denne tabellen ved hjelp av underspørringene. Ved å bruke spørringen nedenfor, vet vi at undersøket vil bli utført først, og utdataene vil bli brukt i hovedspørringen som inndata. Et underspørsmål henter ganske enkelt alderen der dyreprisen er 2500. Alderen til et dyr hvis prisen er 2500 er 4 i tabellen. Hovedspørringen vil velge alle tabelloppføringene der alderen er større enn 4, og utdataene er gitt nedenfor.
>> VELG * FRA data.dyr HVOR Alder> (VELG Alder FRA data.dyr HVOR Pris = '2500');
Eksempel 02:
La oss bruke den samme tabellen i forskjellige situasjoner. I dette eksemplet vil vi bruke noen funksjoner i stedet for WHERE-ledd i underspørringen. Vi har tatt gjennomsnittet av alle prisene som er gitt for dyr. Gjennomsnittsprisen vil være 3189. Hovedforespørselen vil velge alle postene til dyr som har en pris på mer enn 3189. Du får utdataene nedenfor.
>> VELG * FRA data.dyr HVOR Pris> (VELG AVG (Pris) FRA data.dyr);
Eksempel 03:
La oss bruke IN-setningen i hoved SELECT-spørringen. Først og fremst vil undersøket hente priser som er større enn 2500. Etter det vil hovedspørringen velge alle postene til tabellen 'dyr' der prisen ligger i underspørselsresultatet.
>> VELG * FRA data.dyr HVOR Pris IN (VELG Pris FRA data.dyr HVOR Pris> 2500);
Eksempel 04:
Vi har brukt undersøket for å hente navnet på dyret der prisen er 7000. Siden det dyret er en ku, blir navnet "ku" returnert til hovedspørsmålet. I hovedforespørselen vil alle postene bli hentet fra tabellen der dyrenavnet er 'ku'.'Siden vi bare har to poster for dyreku', er det derfor vi har utdataene nedenfor.
>> VELG * FRA data.animals WHERE Name = (SELECT Name FROM data.dyr HVOR Pris = '7000');
Spørring innen flere tabellposter:
Anta nedenstående to tabeller, 'student' og 'lærer', i databasen din. La oss prøve noen eksempler på underspørsmål ved hjelp av disse to tabellene.
>> VELG * FRA data.student;>> VELG * FRA data.lærer;
Eksempel 01:
Vi henter data fra en tabell ved hjelp av underspørringen og bruker den som en inngang for hovedspørsmålet. Dette betyr at disse to tabellene kan relateres på noen måte. I eksemplet nedenfor har vi brukt undersøket til å hente studentens navn fra tabellen 'student' der lærernavnet er 'Samina.'Dette spørsmålet vil returnere' Samina 'til læreren til hovedspørringstabellen.'Hovedspørringen vil da velge alle postene knyttet til lærernavnet' Samina.'Siden vi har to poster for dette navnet, har vi derfor fått dette resultatet.
>> VELG * FRA data.lærer WHERE TeachName = (SELECT TeachName FROM data.student WHERE TeachName = 'Samina');
Eksempel 02:
For å utdype undersøket i tilfelle av forskjellige tabeller, prøv dette eksemplet. Vi har et underspørsmål som henter lærerens navn fra bordstudenten. Navnet skal ha 'i' til enhver posisjon i verdien. Dette betyr at alle navnene i kolonnen TeachName som har 'i' i verdien, blir valgt og returnert til hovedspørsmålet. Hovedspørringen vil velge alle postene fra 'lærertabellen' hvor lærernavnet er i utdataene som returneres av underspørringen. Da underforespørsel returnerte 4 navn på lærere, vil vi derfor ha en oversikt over alle disse navnene i tabellens lærer.'
>> VELG * FRA data.lærer WHERE TeachName IN (VELG TeachName FROM data.student WHERE TeachName LIKE '% i%');
Eksempel 03:
Vurder nedenstående to tabeller, 'orden' og 'orden1'.
>> VELG * FRA data.rekkefølge;>> VELG * FRA data.ordre1;
La oss prøve en hvilken som helst klausul i dette eksemplet for å utdype underspørring. Underspørringen vil velge "id" fra tabellen "rekkefølge1", der kolonnen "Status" har verdien "Ubetalt.'Id'et kan være mer enn 1. Dette betyr at mer enn 1 verdi vil bli returnert til hovedspørringen for å få resultatene fra tabellen. I dette tilfellet kan hvilken som helst 'id' brukes. Vi har utdataene nedenfor for dette spørsmålet.
>> VELG vare, salg, ID FRA data.rekkefølgen WHERE id = ANY (VELG id FRA data.order1 WHERE Status = 'Ubetalt');
Eksempel 04:
Anta at du har dataene nedenfor i tabellen 'order1' før du søker.
>> VELG * FRA data.ordre1;
La oss bruke spørringen i et spørsmål for å slette noen poster fra tabellen 'order1'. For det første vil underspørringen velge 'Status' verdi fra tabellen 'rekkefølge' der varen er 'Bok.'Delspørringen returnerer' Betalt 'som verdien. Nå vil hovedsøket slette radene fra tabellen 'order1' der 'Status' kolonneverdien er 'Betalt.'
>> SLETT FRA data.order1 WHERE Status = (VELG Status FROM data.bestill WHERE Item = 'Book');
Når vi har sjekket, har vi nå nedenstående poster holdt seg i tabellen 'order1' etter utførelsen av spørringen.
>> VELG * FRA data.ordre1;
Konklusjon:
Du har jobbet effektivt med mange underspørsmål i alle eksemplene ovenfor. Vi håper alt er klart og rent nå.