I progettisti di Structured Query Language ( SQL) creato uno strumento potente per gestire i dati con pochi semplici comandi . Uno dei più potenti costrutti si verifica quando i comandi sono annidati . A Selezionare , UPDATE o DELETE comando utilizza uno o più ulteriori comandi di selezione per limitare il suo funzionamento . A titolo di esempio , un aggiornamento sulla tabella clienti si verifica solo quando le vendite totali aggregati da diversi record di vendita ammontano a più di $ 250. Seguire questa procedura per creare diversi comandi di aggiornamento nidificati. Cose che ti serviranno base di dati SQL come Oracle , Sybase , Microsoft SQL Server o MySQL
comprensione di base dei comandi SQL e editor di query
Mostra più istruzioni
1 < p > Aprire l'editor di query SQL e creare un nuovo database chiamato SampleDB . Scegli questo database per la sessione di query
Crea database SampleDB ; .
Usa SampleDB ;
Questi esempi sono stati creati usando l'editor di query in Microsoft SQL Server 2008 Management Studio Express .
2
Creare due tabelle , clienti e vendite , e quindi aggiungere alcuni record di entrambe le tabelle utilizzando il seguente script .
creare clienti Tabella
( CustomerID int chiave primaria , Stati
Nome varchar ( 50 ) , Stati
Stato varchar ( 10) ) ;
Inserisci in clienti Valori ( 1 , ' John Smith ', ' Nuovo' ) ;
inserto
in clienti Valori ( 2 , ' Mary Jones ', ' Nuovo ');
Inserisci in clienti Valori ( 3 , ' Fred Adams ', ' Nuovo' ) ;
Crea tabella Vendite
( SalesID int chiave primaria , Stati
CustomerID int Referenze Clienti ,
Importo int);
inserto
in valori di vendita ( 1 , 1 , 500) ;
inserto
in valori di vendita ( 2 , 1 , 250) ;
inserto
in valori di vendita ( 3 , 3 , 50) ;
3
creare una query nidificate , combinando un aggiornamento con un'istruzione Select che imposta lo stato del cliente ad Active per quei clienti che hanno attività in tabella Vendite.
Aggiornamento
clienti
stato = ' Active'
dove IDCliente
( Selezionare CustomerID da vendita ) ;
Questa è una dichiarazione standard di aggiornamento SQL che imposta il campo Stato su attiva per una selezionata set di record nella tabella clienti . In una query nidificate , la clausola Where include uno o più istruzioni Select circondate da parentesi () . Ogni istruzione SELECT restituisce un elenco di valori che può essere paragonato a un campo nella tabella . In questo caso , solo i record dei clienti che hanno gli ID dei clienti trovati nella tabella vendite saranno aggiornati .
4
creare una seconda query nidificate utilizzando un'istruzione SELECT che aggrega i totali delle vendite .
< P > Aggiornamento clienti
Imposta stato =
'Premium' , dove IDCliente
(Seleziona CustomerID da vendita
gruppo
da CustomerID
avere sum ( Importo ) > 250) ;
analizzando le query nidificate , iniziare con le istruzioni Select trovati nella clausola Where. In questo caso, la tabella delle vendite è aggregato da ID cliente ( Raggruppa per CustomerID ) al totale degli importi di vendita ( Sum ( Importo ) ) . Quelle con un fatturato totale superiore a $ 250 sono scelti solo . Questo elenco viene poi utilizzato per filtrare i record dei clienti vengono aggiornati (cliente 1) .
5
Creare una query più nidificato che seleziona i record dei clienti che non si trovano nella tabella Vendite.
< P > Aggiornamento clienti
Imposta stato = 'Inattivo '
dove CustomerID Not In
(Seleziona CustomerID da vendita ) ;
Questa query seleziona prima un elenco di ID clienti trovati nella tabella Sales ( 1 e 3) e quindi aggiorna quelli che non si trovano nella lista ( cliente 2 ) .