De ontwerpers van Structured Query Language ( SQL ) creëerde een krachtige tool om data te beheren met slechts een paar simpele commando's . Een van de meest krachtige constructies ontstaat wanneer opdrachten worden genest . Een Select , bijwerken of verwijderen commando gebruikt een of meer extra Select commando's om de werking ervan te beperken . Als voorbeeld , een update op de tabel Klant treedt alleen op als de totale omzet geaggregeerd uit verschillende verslagen van de Verkoop in totaal meer dan $ 250. Volg deze stappen om meerdere geneste commando update te creëren . Wat je nodig hebt SQL-database , zoals Oracle , Sybase , Microsoft SQL Server of MySQL Basiskennis van SQL- commando's en query-editor Toon Meer Aanwijzingen 1 Open de SQL- query-editor en maak een nieuwe database genaamd SampleDB . Kies deze databank voor de query sessie Database maken SampleDB ; . Gebruik SampleDB ; Deze voorbeelden zijn gemaakt met behulp van de query-editor binnen Microsoft SQL Server 2008 Management Studio Express . kopen van 2 Create twee tabellen Klanten en Sales , en voeg vervolgens een paar platen aan beide tabellen met behulp van het volgende script . Maak tabel Klanten ( CustomerID int primaire sleutel , Naam varchar ( 50 ) , Status varchar ( 10 ) ) ; invoegen in Klanten Waarden ( 1 , ' John Smith ' , ' Nieuw ' ) ; insert in Klanten Waarden ( 2 , ' Mary Jones ' , ' Nieuw' ) ; invoegen in Klanten Waarden ( 3 , ' Fred Adams ' , ' Nieuw' ) ; Maak Tafel Sales from ( SalesID int Primary Key , Verenigde CustomerID int Referenties Klanten , Bedrag int ) ; insert in Sales Waarden ( 1 , 1 , 500 ) ; insert in Sales Waarden ( 2 , 1 , 250 ) ; insert in Sales Waarden ( 3 , 3 , 50 ) ; < br > 3 Maak een geneste query, een update met een Select-instructie die status Klant stelt om actief voor die klanten die activiteit in de tabel Sales hebben combineren . aanpassing Klanten Set Status = ' Actief ' waar CustomerID In ( Selecteer CustomerID van Sales ) ; p Dit is een standaard SQL -update verklaring dat het veld Status wordt ingesteld op Actief voor een geselecteerde set van records in de tabel Klant . In een geneste query, de Where-component bevat een of meer Select statements omgeven door haakjes ( ) . Elk Select-instructie geeft een lijst van waarden die kunnen worden vergeleken met een veld in de tabel . In dit geval zal alleen die Klant records die Klant -id's hebben gevonden in de tabel Sales worden bijgewerkt . 4 Maak een tweede geneste query met een Select-instructie die aggregaten verkoop totalen . Update Klanten Set Status = ' Premium ' waar CustomerID In ( Selecteer CustomerID van Sales groep door CustomerID hebben sum ( bedrag) > 250 ) ; bij het analyseren van geneste queries , beginnen met de Select verklaringen gevonden in de Where-component . In dit geval wordt de tabel Sales geaggregeerd door Customer ID ( Group Door CustomerID ) aan de omzet bedragen ( Som ( Bedrag ) ) totaal . Alleen degenen met een totale omzet van meer dan $ 250 worden gekozen . Deze lijst wordt vervolgens gebruikt om te filteren welke Klant records worden bijgewerkt ( klant 1 ) . 5 Maak nog een geneste query die Klant records die niet zijn gevonden in de tabel Sales selecteert . Update Klanten Set Status = ' Inactief ' waar CustomerID Not In ( Selecteer CustomerID Van Sales ) ; Deze query selecteert eerst een lijst van klant -id in de tabel Sales ( 1 en 3 ) en werkt daarna die welke niet in de lijst ( klant 2 ) .
|