Designerne af Structured Query Language ( SQL) skabt et kraftfuldt værktøj til at styre data med kun et par simple kommandoer . Et af de mest magtfulde konstruktioner opstår, når kommandoer er indlejret . A Select, opdatere eller slette kommando bruger en eller flere yderligere vælge kommandoer til at begrænse dens drift. Som et eksempel, sker en opdatering på kundens bordet , når det samlede salg aggregerede fra flere Salgsstatistikker alt mere end 250 dollar. Følg disse trin for at oprette flere indlejrede Opdatering kommandoer. Ting du skal
SQL database som Oracle, Sybase, Microsoft SQL Server eller MySQL
Grundlæggende forståelse af SQL- kommandoer og query editor
Vis Flere Instruktioner
1 < p > Åbn SQL forespørgslen editor og oprette en ny database kaldet SampleDB . Vælg denne database for forespørgslen session
Opret database SampleDB ; .
Brug SampleDB ,
Disse eksempler blev skabt ved hjælp af forespørgslen editor i Microsoft SQL Server 2008 Management Studio Express.
2
Create to borde, Kunder og salg , og derefter tilføje et par poster for begge tabeller ved hjælp af følgende script .
Opret Tabel Kunder
(Kunde int primær nøgle , Amerikas
Navn varchar (50) ,
status varchar (10 )),
Indsæt i kundernes værdier ( 1 , 'John Smith ', 'Ny ' ) ;
insert into Kunder Værdier (2, ' Mary Jones ', 'Ny ');
Indsæt ind Kunder Værdier (3, ' Fred Adams ', 'Ny ');
oprette tabellen Sales
( SalesID int Primær nøgle , salg
CustomerID int Referencer Kunder ,
Beløb int) ;
indsætte i Sales Værdier ( 1, 1, 500 ),
indsætte i Sales Værdier ( 2, 1, 250 ),
indsætte i Sales Værdier ( 3, 3 , 50 ),
< br > 3
Opret en indlejret forespørgsel , der kombinerer en opdatering med en Select erklæring , der sætter kunden status til Aktiv for de kunder, der har aktivitet i Sales tabellen.
opdatering Kunder
Set status = 'Aktiv'
hvor CustomerID i
( Vælg Kunde From Sales ),
p Dette er en standard SQL UPDATE-sætning , der sætter feltet Status til Aktiv for en udvalgt sæt af poster i kundens tabellen. I en indlejret forespørgsel , indeholder WHERE én eller flere SELECT-sætninger omgivet af parenteser () . Hver Select sætning returnerer en liste over værdier , der kan sammenlignes med et felt i tabellen. I dette tilfælde vil kun de Kunde poster, der har Kunde -id'er fundet i Sales tabellen blive opdateret.
4
Opret en anden indlejret forespørgsel ved hjælp af en SELECT-sætning , at aggregater salg totaler.
< P > Opdater Kunder
Sæt status = ' Premium '
hvor CustomerID I
( Vælg Kunde From Sales
gruppe ved Kunde
under sum ( beløb) > 250 ),
Når man analyserer indlejrede forespørgsler , starte med de Select udsagn findes i WHERE . I dette tilfælde er Sales tabellen aggregeret af Kunde-id (Group By Kunde ) og den totale salget beløb ( Sum ( Beløb) ) . Kun dem med det samlede salg på mere end $ 250 er valgt . Denne liste er derefter bruges til at filtrere hvilke kundeoplysninger opdateres ( kunden 1).
5.
Opret en mere indlejret forespørgsel , der vælger Kundernes registre, der ikke findes i Sales tabellen.
< P > Opdater Kunder
Sæt status = ' Inaktiv '
hvor CustomerID Not In
( Vælg Kunde From Sales ),
Denne forespørgsel først vælger en liste af Kundens iD'er findes i Sales tabellen ( 1 og 3) , og opdaterer derefter dem, der ikke findes på listen ( kunde 2 ) .