MySQL MariaDB

MySQL-underforespørgsler

MySQL-underforespørgsler
En underforespørgsel er en SQL-forespørgsel inden for en større forespørgsel, der er rekursiv, eller en underforespørgsel betragtes som en intern forespørgsel. I modsætning hertil betegnes en ydre forespørgsel som den forespørgsel, der inkluderer underforespørgslen. En MySQL-underforespørgsel kan integreres i forespørgslerne, herunder SELECT, INSERT, UPDATE eller DELETE. Derudover kan en underforespørgsel indeholde en anden forespørgsel. Sætningen underforespørgsel skal lukkes i parentes, uanset hvor den bruges. Vi lærer dig, hvordan og hvornår du skal bruge MySQL-underforespørgsel til at komponere komplicerede forespørgsler og beskrive ideen om den tilknyttede underforespørgsel. Åbn kommandolinjeskallen fra skrivebordet, og skriv din adgangskode for at begynde at bruge den. Tryk på Enter og fortsæt.

Underforespørgsel inden for Single Table Records:

Opret en tabel med navnet 'dyr' i databasens data.'Tilføj nedenstående registrering af forskellige dyr med forskellige egenskaber som vist. Hent denne post ved hjælp af SELECT-forespørgslen som følger:

>> VÆLG * FRA data.dyr;

Eksempel 01:

Lad os hente de begrænsede poster i denne tabel ved hjælp af underforespørgslerne. Ved hjælp af nedenstående forespørgsel ved vi, at underforespørgsel udføres først, og dens output vil blive brugt i hovedforespørgslen som input. En underforespørgsel henter simpelthen den alder, hvor dyreprisen er 2500. Alderen på et dyr, hvis pris er 2500, er 4 i tabellen. Hovedforespørgslen vælger alle tabeloptegnelser, hvor alderen er større end 4, og output er angivet nedenfor.

>> VÆLG * FRA data.dyr HVOR Alder> (VÆLG Alder FRA data.dyr HVOR Pris = '2500');

Eksempel 02:

Lad os bruge den samme tabel i forskellige situationer. I dette eksempel bruger vi en funktion i stedet for WHERE-klausulen i underforespørgslen. Vi har taget gennemsnittet af alle de angivne priser for dyr. Den gennemsnitlige pris vil være 3189. Hovedforespørgslen vælger alle optegnelser over dyr, der har en pris på mere end 3189. Du får nedenstående output.

>> VÆLG * FRA data.dyr HVOR Pris> (VÆLG AVG (pris) FRA data.dyr);

Eksempel 03:

Lad os bruge IN-klausulen i den primære SELECT-forespørgsel. Først og fremmest vil underforespørgslen hente priser på mere end 2500. Derefter vælger hovedforespørgslen alle registreringer af tabel 'dyr', hvor prisen ligger i underforespørgselsresultatet.

>> VÆLG * FRA data.dyr HVOR Pris i (VÆLG pris FRA data.dyr HVOR Pris> 2500);

Eksempel 04:

Vi har brugt underforespørgslen til at hente navnet på dyret, hvor prisen er 7000. Da dette dyr er en ko, returneres navnet "ko" til hovedforespørgslen. I hovedforespørgslen hentes alle poster fra tabellen, hvor dyrenavnet er 'ko.'Da vi kun har to poster for animalsk' ko ', er det derfor, vi har nedenstående output.

>> VÆLG * FRA data.dyr HVOR Navn = (VÆLG Navn FRA data.dyr HVOR Pris = '7000');

Underforespørgsel inden for flere tabeloptegnelser:

Antag nedenstående to tabeller, 'studerende' og 'lærer', i din database. Lad os prøve nogle eksempler på underforespørgsler ved hjælp af disse to tabeller.

>> VÆLG * FRA data.studerende;
>> VÆLG * FRA data.lærer;

Eksempel 01:

Vi henter data fra en tabel ved hjælp af underforespørgslen og bruger dem som input til hovedforespørgslen. Dette betyder, at disse to tabeller kan relateres på en eller anden måde. I nedenstående eksempel har vi brugt underforespørgslen til at hente elevens navn fra tabellen 'elev', hvor lærernavnet er 'Samina.'Denne forespørgsel vil returnere' Samina 'til læreren til hovedforespørgselstabellen.'Hovedforespørgslen vælger derefter alle de poster, der er relateret til lærerens navn' Samina.'Da vi har to poster for dette navn, har vi derfor opnået dette resultat.

>> VÆLG * FRA data.lærer WHERE TeachName = (SELECT TeachName FROM data.student WHERE TeachName = 'Samina');

Eksempel 02:

For at uddybe underforespørgslen i tilfælde af forskellige tabeller, prøv dette eksempel. Vi har en underforespørgsel, der henter lærerens navn fra bordstudenten. Navnet skal have 'i' på enhver position i dets værdi. Dette betyder, at alle navnene i kolonnen TeachName, der har 'i' i deres værdi, vælges og returneres til hovedforespørgslen. Hovedforespørgslen vælger alle poster fra tabellen 'lærer', hvor lærerens navn er i den output, der returneres af underforespørgslen. Da underforespørgsel returnerede 4 navne på lærere, vil vi derfor registrere alle disse navne, der findes i tabellen 'lærer.''

>> VÆLG * FRA data.lærer WHERE TeachName IN (SELECT TeachName FROM data.studerende WHERE TeachName LIKE '% i%');

Eksempel 03:

Overvej nedenstående to tabeller, 'rækkefølge' og 'rækkefølge1'.

>> VÆLG * FRA data.bestille;
>> VÆLG * FRA data.rækkefølge1;

Lad os prøve en ALLE klausul i dette eksempel for at uddybe underforespørgsel. Underforespørgslen vælger 'id' fra tabellen 'rækkefølge1', hvor kolonnen 'Status' har en værdi på 'Ubetalt.'Id'et kan være mere end 1. Dette betyder, at mere end 1 værdi returneres til hovedforespørgslen for at få resultaterne af tabellen 'ordre'. I dette tilfælde kan ethvert 'id' bruges. Vi har nedenstående output til denne forespørgsel.

>> VÆLG vare, salg, id FRA data.rækkefølgen WHERE id = ANY (VÆLG id fra data.order1 WHERE Status = 'Ubetalt');

Eksempel 04:

Antag, at du har nedenstående data i tabellen 'rækkefølge1', inden du anvender nogen forespørgsel.

>> VÆLG * FRA data.rækkefølge1;

Lad os anvende forespørgslen i en forespørgsel for at slette nogle poster fra tabellen 'rækkefølge1'. For det første vælger underforespørgslen værdien 'Status' fra tabellen 'rækkefølge', hvor varen er 'Bog.'Underforespørgslen returnerer' Betalt 'som værdien. Nu sletter hovedforespørgslen rækkerne fra tabellen 'rækkefølge1', hvor kolonnen 'Status' er 'Betalt.''

>> SLET FRA data.ordre1 HVOR Status = (VÆLG status FRA data.bestil WHERE Item = 'Book');

Efter kontrol har vi nu nedenstående poster været i tabellen 'rækkefølge1' efter udførelsen af ​​forespørgslen.

>> VÆLG * FRA data.rækkefølge1;

Konklusion:

Du har effektivt arbejdet med mange underforespørgsler i alle ovenstående eksempler. Vi håber, at alt er klart og rent nu.

Sådan styrkes FPS i Linux?
FPS står for Billeder i sekundet. FPS's opgave er at måle billedhastigheden i videoafspilninger eller spiloptræden. I enkle ord betegnes antallet af u...
Top Oculus App Lab-spil
Hvis du er Oculus-headset-ejer, skal du være opmærksom på sideloading. Sideladning er processen med at installere ikke-butiksindhold på dit headset. S...
Top 10 spil at spille på Ubuntu
Windows-platform har været en af ​​de dominerende platforme til spil på grund af den enorme procentdel af spil, der udvikler sig i dag til indbygget a...