Die Designer der Structured Query Language (SQL) erstellt ein leistungsfähiges Werkzeug , um Daten mit nur ein paar einfachen Befehlen zu verwalten. Einer der mächtigsten Konstrukte tritt auf, wenn Befehle verschachtelt sind . A Select, aktualisieren oder löschen Befehl verwendet eine oder mehrere zusätzliche Befehle auswählen , um seinen Betrieb zu begrenzen. Als ein Beispiel , tritt ein Update auf der Customer-Tabelle nur, wenn Gesamtumsatz von mehreren Vertrieb Datensätze aggregiert mehr als $ 250 belaufen. Befolgen Sie diese Schritte, um mehrere verschachtelte UPDATE-Befehle erstellen. Things You
SQL Datenbank wie Oracle , Sybase, Microsoft SQL Server oder MySQL
Grundverständnis von SQL -Befehlen und Query -Editor
brauchen anzeigen Weitere Anweisungen
1
Öffnen Sie die SQL-Abfrage -Editor und erstellen Sie eine neue Datenbank mit dem Namen SampleDB . Wählen Sie diese Datenbank für die query session
Datenbank erstellen SampleDB ; .
Nutzungsbedingungen SampleDB ;
Diese Beispiele mit der Abfrage-Editor in Microsoft SQL Server 2008 Management Studio Express wurden .
2
erstellen Sie zwei Tabellen , Kunden und Vertrieb , und fügen Sie einige Datensätze in beiden Tabellen mit folgendem Skript .
Tabelle erstellen Kunden
( CustomerID int Primärschlüssel ,
name varchar (50 ), Stand
Stand varchar ( 10) );
Insert into Kunden Werte (1, ' John Smith ', ' New ') ;
insert into Kunden Werte (2, ' Mary Jones ', ' New ');
Insert into Kunden Werte (3, ' Fred Adams ', ' New ');
Tabelle erstellen Sales &
( SalesID int Primary Key , KundeID
int Referenzen Kunden ,
Betrag int);
Einsatz in Vertrieb Values ( 1, 1, 500);
Einsatz in Vertrieb Werte ( 2, 1, 250);
Einsatz in Vertrieb Werte ( 3, 3, 50);
3
erstellen verschachtelte Abfrage , die Kombination ein Update mit einer Select-Anweisung, Kundenstatus setzt auf Aktiv für jene Kunden, die Aktivität in der Sales-Tabelle haben .
Aktualisierung Kunden
Set Status = 'Aktiv'
wo In
KundeID ( Wählen KundeID Von Sales) ;
Dies ist ein Standard-SQL- Update-Anweisung , die das Feld Status auf Aktiv setzt für einen ausgewählten gesetzt der Datensätze in der Tabelle Customer . In einer verschachtelten Abfrage enthält der Where-Klausel ein oder mehrere Select-Anweisungen durch Klammern () umgeben . Jede SELECT-Anweisung gibt eine Liste von Werten, die auf ein Feld in der Tabelle verglichen werden können. In diesem Fall , werden nur die Datensätze, die Kunden Kunden -IDs in der Tabelle Sales gefunden aktualisiert werden.
4
Erstellen Sie eine zweite verschachtelte Abfrage mit einer Select-Anweisung , die Aggregate Gesamtumsätze .
< P > update Kunden
Set Status = "Premium"
wo In
KundeID (From Sales &
Gruppe von Kunden-
KundeID wählen unter sum (Betrag ) > 250);
bei der Analyse verschachtelte Abfragen , mit den Select-Anweisungen in der Where-Klausel gefunden zu starten. In diesem Fall wird die Tabelle Sales von Kunden-ID zusammengefasst ( Group By CustomerID ) , die Umsatzrendite beträgt ( Sum (Betrag) ) betragen. Nur diejenigen mit einem Gesamtumsatz von mehr als $ 250 sind gewählt . Diese Liste wird dann verwendet, um Filter, der Kunde Datensätze aktualisiert werden ( Kunde 1) .
5
erstellen eine weitere verschachtelte Abfrage, die Kunden Datensätze, die nicht in der Tabelle Sales gefunden auswählt.
< P > update Kunden
Set Status = ' Inaktive '
wo Not In
KundeID ( aus dem Verkauf KundeID wählen );
Diese Abfrage wählt zunächst eine Liste von Kunden -IDs in der Tabelle Sales ( 1 und 3) gefunden und aktualisiert dann diejenigen, die nicht in der Liste ( Kunde 2 ) gefunden.