November 4
I progettisti di Structured Query Language (SQL) hanno creato un potente strumento per gestire i dati con pochi semplici comandi. Uno dei più potenti costrutti si verifica quando i comandi sono annidati. A Selezionare, aggiornare o cancellare il comando utilizza uno o più supplementari selezionare i comandi 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.
1 Aprire l'editor di query SQL e creare un nuovo database chiamato SampleDB. Scegliere questo database per la sessione di query.
Crea database SampleDB;
Utilizzare SampleDB;
Questi esempi sono stati creati utilizzando l'editor di query all'interno di 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 tabella Clienti
(Chiave primaria int CustomerID,
Nome varchar (50),
varchar di stato (10));
Inserire nel Valori Clienti (1, 'John Smith', 'Nuovo');
inserire i valori dei clienti (2, 'Mary Jones', 'Nuovo');
Inserire nel Valori Clienti (3, 'Fred Adams', 'Nuovo');
Crea una tabella vendite
(SalesID int chiave primaria,
CustomerID int Referenze clienti,
Importo int);
inserire valori di vendita (1, 1, 500);
inserire valori di vendita (2, 1, 250);
inserire valori di vendita (3, 3, 50);
3 Creare una query nidificate, combinando un aggiornamento con un'istruzione Select che imposta lo stato cliente di attivo per quei clienti che hanno attività nella tabella vendite.
aggiornamento clienti
Imposta stato = 'attivo'
dove CustomerID In
(Selezionare CustomerID delle vendite);
Questa è una dichiarazione di aggiornamento standard SQL che imposta il campo Stato attivo per un insieme selezionato di record nella tabella Clienti. In una query nidificate, la clausola WHERE include uno o più istruzioni Select circondati da parentesi (). Ogni istruzione SELECT restituisce un elenco di valori che possono essere comparati a un campo nella tabella. In questo caso, solo i record di clienti che hanno ID cliente si trovano nella tabella vendite verranno aggiornati.
4 Creare una seconda query nidificate utilizzando un'istruzione Select che aggrega totali delle vendite.
aggiornamento clienti
Imposta stato = 'Premium'
dove CustomerID In
(Selezionare CustomerID dalle vendite
GROUP BY CustomerID
Avendo sum (Importo)> 250);
Quando si analizzano le query nidificate, iniziare con le istruzioni Select presenti nella clausola WHERE. In questo caso, la tabella di vendite è aggregato da ID cliente (gruppo By CustomerID) al totale degli importi di vendita (Sum (importo)). Solo quelli con un fatturato totale superiore a 250 $ sono scelti. Questo elenco viene poi utilizzato per filtrare i record dei clienti vengono aggiornati (cliente 1).
5 Creare un altro di query nidificate che seleziona i record di clienti che non si trovano nella tabella vendite.
aggiornamento clienti
Imposta stato = 'inattivo'
dove CustomerID Not In
(Selezionare CustomerID delle vendite);
Questa query prima di selezionare un elenco di ID cliente si trovano nella tabella Sales (1 e 3) e poi aggiorna quelli che non si trovano in lista (cliente 2).