Designerne av Structured Query Language ( SQL) opprettet et kraftig verktøy for å administrere data med bare noen få enkle kommandoer . En av de mest kraftfulle konstruksjoner oppstår når kommandoene er nestet . En Select , oppdatere og slette kommandoen bruker ett eller flere ekstra Velg kommandoer for å begrense sin drift . Som et eksempel, oppstår det en oppdatering på Kundens tabellen bare når totale salget aggregeres fra flere salgsrekorder totalt mer enn $ 250 . Følg disse trinnene for å opprette flere nestede Oppdater kommandoer. Du trenger
SQL database som Oracle , Sybase , Microsoft SQL Server eller MySQL
Grunnleggende forståelse av SQL- kommandoer og spørring redaktør
Vis flere instruksjoner
1
Åpne SQL-spørringen redaktør og opprette en ny database kalt SampleDB . Velg denne databasen for søket økten
Opprett database SampleDB ; .
Bruk SampleDB ;
Disse eksemplene ble opprettet ved hjelp av spørringen redaktør i Microsoft SQL Server 2008 Management Studio Express.
2
lage to tabeller, kunder og salg , og deretter legge til et par poster til begge tabeller ved hjelp av følgende skript .
opprette tabellen Kunder
( CustomerID int primærnøkkel,
Navn varchar ( 50 ) , etter
Status varchar ( 10 ));
Sett inn Kunder Verdier ( 1 , ' John Smith ', ' Ny' ) ;
setter inn Kunder Verdier ( 2 , ' Mary Jones ', ' Ny' );
Sett inn Kunder Verdier ( 3 , ' Fred Adams ', ' Ny' );
opprette tabellen Sales
( SalesID int Primary Key, Kunde
int Referanser Kunder , etter
Beløp int );
innsatsen i salg Verdier ( 1 , 1 , 500 ) ;
innsatsen i salg Verdier ( 2 , 1 , 250 ) ;
innsatsen i salg Verdier ( 3, 3, 50 ) ;
3
Lag en nestet spørring , og kombinerer en oppdatering med en SELECT-setning som setter kunden status til Aktiv for de kundene som har aktivitet i Sales tabellen .
oppdatere Kunder
Set status = "Aktiv"
der Kunde i
( Velg Kunde Fra salg) ;
p Dette er en standard SQL Update uttalelse som setter status-feltet til Aktiv for en valgt sett med poster i Customer tabellen . I en nestet spørring, omfatter Hvor klausul ett eller flere Select uttalelser omgitt av parenteser () . Hvert SELECT-setning returnerer en liste over verdier som kan sammenlignes med et felt i tabellen . I dette tilfellet , vil bare de kunderegistre som har Kunde ID- funnet i Sales tabellen bli oppdatert .
4
Lag en andre nestet spørring ved hjelp av en SELECT-setning som samler salgssummer .
< P > Oppdater Kunder
Set Status = ' Premium '
der Kunde I
( velg Kunde Fra Sales
gruppe av CustomerID
Å ha sum ( beløp) > 250 ) ;
Når du analyserer nestede spørringer , starte med Select -forskrifter i WHERE-leddet . I dette tilfellet er det salg tabellen aggregert etter kunde-ID (Gruppe Av CustomerID ) til total salgsbeløpene ( Sum ( beløp) ) . Bare de med totalt salg større enn $ 250 er valgt . Denne listen blir så brukt til å filtrere hvilke Kunde postene er oppdatert ( kunde 1) .
5
Lag en mer nestet spørring som velger Kunde poster som ikke finnes i tabellen Sales .
< P > Oppdater Kunder
Set Status = "Inaktiv"
der Kunde Not In
( velg Kunde Fra salg) ;
p Dette søket velger først en liste av Kundens IDer funnet i tabellen Sales ( 1 og 3 ) og deretter oppdaterer dem som ikke finnes i listen ( kunde 2 ) .