Formgivarna av Structured Query Language ( SQL ) skapade ett kraftfullt verktyg för att hantera data med endast ett fåtal enkla kommandon . En av de mest kraftfulla konstruktioner uppstår när kommandon är kapslade . A Select , uppdatera eller ta bort kommando använder en eller flera ytterligare välja kommandon för att begränsa dess funktion . Som ett exempel , sker en uppdatering på kundens tabellen endast när den totala försäljningen aggregeras från flera Salerekord totalt mer än $ 250 . Följ dessa steg för att skapa flera kapslade Uppdatera kommandon . Saker du behöver
SQL-databas som Oracle , Sybase , Microsoft SQL Server eller MySQL Review Grundläggande förståelse för SQL-kommandon och query editor
Visa fler instruktioner
1
Öppna SQL editor och skapa en ny databas som kallas SampleDB . Välj denna databas för frågan sessionen
Skapa databas SampleDB , .
Använd SampleDB ,
Dessa exempel skapades med frågan redaktör inom Microsoft SQL Server 2008 Management Studio Express .
2
Skapa två tabeller, Kunder och försäljning , och sedan lägga till några poster i de båda tabellerna med följande script .
Skapa Tabell Kunder
( Kundnr int primärnyckel,
Namn varchar ( 50 ) ,
Status varchar ( 10 ) ) ;
Sätt in Kunder Värden ( 1 , ' John Smith ' , ' Ny ' ) ;
infoga i Kunder Värden ( 2 , " Mary Jones ' , ' Ny ');
Sätt in Kunder Värden ( 3 , ' Fred Adams ' , ' Ny ' ) ;
Skapa Tabell Sales
( SalesID int Primary Key , customerId
int Referenser Kunder ,
Belopp int) ;
infoga i försäljningsvärdet ( 1 , 1 , 500 ) ;
infoga i försäljningsvärdet ( 2 , 1 , 250 ) ;
infoga i försäljningsvärdet 3 ( 3, 50 ) ,
3
Skapa en kapslad fråga , kombinerar en uppdatering med en SELECT-sats som sätter kunden status till Aktiv för de kunder som har verksamhet i tabellen Sales .
uppdatering Kunder
set status = ' Active '
där CustomerID i
( Välj Kundnr Från försäljning ) ,
Detta är en standard SQL Update uttalande som anger fältet Status till Active för en vald uppsättning poster i kundens tabellen . I en kapslad fråga , inkluderar WHERE en eller flera SELECT-uttryck omgivna av parenteser () . Varje SELECT-sats returnerar en lista med värden som kan jämföras med ett fält i tabellen . I detta fall kommer endast de kundregister som har kund-ID som finns i tabellen Sales uppdateras .
4
Skapa en andra kapslad fråga med SELECT som aggregat försäljningssummor .
Uppdatera Kunder
Ange status = ' Premium '
där CustomerID I
( Välj Kundnr från försäljning
grupp genom Kundnr
med summan (belopp ) > 250 ) ,
vid analys nästlade frågor , börja med Select uttalanden finns i WHERE. I det här fallet är tabellen Sales aggregerade efter kundnummer ( Gruppera Kundnr ) att summera försäljningen belopp ( summan (belopp ) ) . Endast de med den totala försäljningen är större än $ 250 väljs . Denna lista används sedan för att filtrera vilka kundregister uppdateras ( kund 1 ) .
5
Skapa en mer kapslad fråga som väljer kundregister som inte finns i tabellen Sales .
Uppdatera Kunder
Ange status = ' Inaktiv '
där Kundnr Not In
( Välj Kundnr Från försäljning ) ,
här frågan väljer först en lista av kund-ID som finns i tabellen Sales ( 1 och 3 ) och sedan uppdaterar de som inte finns med i listan ( kund 2 ) .