Prima di iniziare ad apprendere i fondamenti della programmazione in SQL, è necessario comprendere i concetti e i termini relativi ad SQL e database relazionale. Imparerai a conoscere alcuni degli strumenti che è possibile utilizzare per lavorare con SQL Server. Attraverso queste basi sarai preparato ad utilizzare le abilità che apprenderai nel resto di questo corso.
Nel caso in cui non si abbia familiarità con i sistemi client/server, i primi due argomenti che seguono ti presentano i componenti hardware e software essenziali. Questi sono i tipi di sistemi con cui è più probabile che utilizzi SQL. Poi, l'ultimo argomento ti dà un'idea di quanto possano essere complessi i sistemi client/server.
La Figura 1-1 presenta i tre componenti hardware di un sistema client/server: i client, la rete e il server. I client sono solitamente i PC che sono disponibili sui desktop di tutta l'azienda. E la rete è costituita da cavi, linee di comunicazione, schede di interfaccia di rete, hub, router e altri componenti che collegano i client e il server. Il server, comunemente indicato come server di database, è un computer che dispone di velocità del processore, memoria interna (RAM) e spazio di archiviazione su disco sufficienti per archiviare i file e i database del sistema e fornire servizi ai clienti del sistema. Questo computer è solitamente un PC ad alta potenza, ma può anche essere un sistema di fascia media. Quando un sistema è costituito da reti, sistemi midrange e sistemi mainframe, spesso diffusi in tutto il paese o nel mondo, a cui si fa comunemente riferimento come sistema impresa. Per eseguire il backup dei file di un sistema client/server, un server solitamente dispone di una unità nastro o qualche altra forma di archiviazione offline. Spesso ha una o più stampanti o dispositivi specializzati che possono essere condivisi dagli utenti del sistema. E può fornire programmi o servizi come la posta elettronica a cui possono accedere tutti gli utenti del sistema. In un semplice sistema client/server, i client e il server fanno parte di una rete locale (LAN). Tuttavia, due o più LAN che risiedono in separate posizioni geografiche possono essere collegate come parte di una rete più ampia come una rete geografica (WAN). Inoltre, possono essere connessi tramite Internet.
La Figura 1-2 presenta i componenti software di un tipico client/server sistema. Oltre ad un sistema operativo di rete che gestisce le funzioni della rete, il server richiede un sistema di gestione del database (DBMS) come Microsoft SQL Server o Oracle. Questo DBMS gestisce i database che sono memorizzati sul server. A differenza di un server, ogni client necessita di un software applicativo per funzionare. Può trattarsi di un pacchetto software acquistato come un pacchetto di contabilità oppure può essere un software personalizzato. Sebbene il software applicativo venga eseguito sul client, utilizza i dati archiviati sul server. Per fare ciò, utilizza un'API di accesso ai dati (application programming interfaccia) come ADO.NET. Poiché la tecnica che usi per lavorare con un'API dipende dal linguaggio di programmazione e dall'API che stai utilizzando, non imparerai quelle tecniche in questo corso. Invece, imparerai un linguaggio standard chiamato SQL, o Structured Query Language, che consente a qualsiasi applicazione di comunicare con qualsiasi DBMS. (Nella conversazione, SQL viene pronunciato come S-Q-L o sequel.) Una volta installato il software sia per il client che per il server, il file client comunica con il server tramite query SQL (o semplicemente query) che vengono passate al DBMS tramite l'API. Dopo che il client ha inviato una query al DBMS, il DBMS interpreta la query e invia i risultati al client. Come puoi vedere in questa figura, l'elaborazione eseguita da un sistema client/server è diviso tra client e server. In questo caso, il DBMS su cui il server sta elaborando le richieste effettuate dall'applicazione in esecuzione sul client. In teoria, almeno, questo bilancia il carico di lavoro tra i clienti e il server in modo che il sistema funzioni in modo più efficiente. Al contrario, in un sistema di gestione di file, i client fanno tutto il lavoro perché il server viene utilizzato solo per archiviare i file utilizzati dai client.
Nella sua forma più semplice, un sistema client/server è costituito da un unico database server e uno o più client. Molti sistemi client/server oggi, però, possono includere server aggiuntivi. Nella figura 1-3, ad esempio, potete vedere due sistemi client/server che includono un server aggiuntivo tra i client e il server della banca dati. La prima illustrazione riguarda un semplice sistema basato su Windows. Con questo sistema, sul client viene eseguita solo l'interfaccia utente di un'applicazione. Il resto dell'elaborazione viene eseguita dall'applicazione archiviata in una o più aziende componenti sul server delle applicazioni. Quindi, il client invia le richieste al file server delle applicazioni per l'elaborazione. Se la richiesta comporta l'accesso a dati in un database, il server delle applicazioni formula la query appropriata e la trasmette al server del database. I risultati della query vengono quindi inviati al file server delle applicazioni, che elabora i risultati e invia il file della risposta appropriata al client. Un trattamento simile viene effettuato da un sistema basato sul web, come illustrato dal secondo esempio in questa figura. In questo caso, però, è in esecuzione un browser Web su cui è in esecuzione il client viene utilizzato per inviare richieste a un'applicazione Web in esecuzione su un server Web da qualche parte su Internet. L'applicazione web, a sua volta, può utilizzare i servizi web per eseguire alcune delle sue elaborazioni. Quindi, l'applicazione Web o il servizio Web possono passare le richieste di dati al server del database. Anche se questa figura dovrebbe darti un'idea di come funzionano i sistemi client/server e di come possono essere configurati, dovresti capire che possono essere molto più complicati rispetto a quanto mostrato qui. In un sistema basato su Windows, ad esempio, business i componenti possono essere distribuiti su un numero qualsiasi di server delle applicazioni e tali componenti possono comunicare con i database su qualsiasi numero di database server. Allo stesso modo, le applicazioni e i servizi web in un sistema basato sul web possono essere distribuite su numerosi server Web che accedono a numerosi database server. Nella maggior parte dei casi, tuttavia, non è necessario conoscere come il funzionamento di un sistema è configurato per utilizzare SQL. Prima di proseguire, dovresti sapere che i sistemi client/server non sono gli unici sistemi che supportano SQL. Ad esempio, i sistemi mainframe tradizionali e anche i sistemi thin client più recenti utilizzano SQL. A differenza dei sistemi client/server, però, la maggior parte dell'elaborazione per questi tipi di sistemi viene eseguita da un mainframe o un'altra macchina ad alta potenza. I terminali o i PC collegati al il sistema fa poco o nessun lavoro.
Nel 1970, il Dr. E. F. Codd sviluppò un modello per un nuovo tipo di database chiamato database relazionale. Questo tipo di database ha eliminato alcuni dei problemi associati a file standard e ad altri progetti di database. Utilizzando il modello relazionale, è possibile ridurre la ridondanza dei dati, risparmiando spazio su disco e questo porta ad un recupero efficiente dei dati. Puoi anche visualizzare e manipolare i dati in un certo modo che è allo stesso tempo intuitivo ed efficiente. Oggi i database relazionali sono la realtà standard per le applicazioni di database.
Il modello per un database relazionale afferma che i dati sono archiviati in uno o più database tavoli. Si afferma inoltre che ciascuna tabella può essere vista come una matrice bidimensionale costituita da righe e colonne. Ciò è illustrato dalla tabella relazionale in figura 1-4. Ogni riga di questa tabella contiene informazioni su un singolo fornitore. In pratica, le righe e le colonne di una tabella di database relazionale sono spesso indicate con i termini più tradizionali, documenti e documenti. In effetti, alcuni pacchetti software utilizzano un insieme di termini, alcuni l'altro e altri ancora a combinazione. In questo libro utilizzo i termini righe e colonne perché sono utilizzati da SQL Server. In generale, ogni tabella è modellata su un'entità del mondo reale come un fornitore o una fattura. Quindi, le colonne della tabella rappresentano gli attributi dell'entità come nome, indirizzo e numero di telefono. E ogni riga della tabella rappresenta un'istanza dell'entità. Un valore viene memorizzato all'intersezione di ciascuna riga e colonna, talvolta chiamata cella. Se una tabella contiene una o più colonne che identificano in modo univoco ciascuna riga nella tabella è possibile definire queste colonne come chiave primaria della tabella. Ad esempio, la chiave primaria della tabella Vendors in questa figura è la colonna ID del fornitore. In questo esempio, la chiave primaria è costituita da una singola colonna. Tuttavia, una chiave primaria può anche essere composta da due o più colonne, nel qual caso viene chiamata una chiave primaria composita. Oltre alle chiavi primarie, alcuni sistemi di gestione di database consentono di definire chiavi aggiuntive che identificano in modo univoco ogni riga in una tabella. Se, ad esempio, la colonna VendorName nella tabella Vendors contiene dati univoci, può essere definita come chiave non primaria. In SQL Server questa è denominata chiave univoca. Gli indici forniscono un modo efficiente per accedere alle righe in una tabella basata sui valori in una o più colonne. Poiché le applicazioni in genere accedono a righe di una tabella facendo riferimento ai relativi valori chiave, viene creato automaticamente un indice per ogni chiave definita. Tuttavia, è possibile definire gli indici anche per altre colonne. Se, ad esempio, hai spesso bisogno di ordinare le righe del Fornitore per codice postale, puoi impostare un indice per quella colonna. Come una chiave, un indice può includere una o più colonne.
Quando definisci una colonna in una tabella, le assegni le proprietà come indicato dalla progettazione della tabella Fatture nella figura 1-6. La proprietà più critica per una colonna è il suo tipo di dati, che determina il tipo di informazioni che possono essere memorizzate nella colonna. Con SQL Server 2022 in genere si utilizza uno dei tipi di dati elencati in questa figura. Quando definisci ciascuna colonna in una tabella, generalmente prova ad assegnare il tipo di dati che ridurrà al minimo l'uso dello spazio di archiviazione su disco perché questo migliorerà in seguito le prestazioni delle query. Oltre al tipo di dati, è necessario identificare se la colonna può archiviare un valore NULL. Un valore NULL rappresenta un valore sconosciuto, non disponibile. Se non consenti valori NULL, devi fornire un valore per la colonna altrimenti non è possibile memorizzare la riga nella tabella. Puoi anche assegnare un valore predefinito a ciascuna colonna. Quindi, quel valore è assegnato alla colonna se non viene fornito un altro valore. Imparerai di più su come lavorare con valori NULL e valori predefiniti più avanti in questo corso. Ogni tabella può contenere anche una colonna numerica il cui valore viene generato automaticamente dal DBMS. In SQL Server, una colonna come questa è chiamata an colonna Identity e la stabilisci utilizzando Is Identity, Identity Seed e Proprietà di incremento identità. Imparerai di più su queste proprietà nella lezione 11. Per ora, tieni presente che la chiave primaria sia della tabelle Venditori e della tabella Fatture, VendorID e InvoiceID sono colonne di identità.
Tipo | Descrizione |
---|---|
bit | Un valore pari a 1 o 0 che rappresenta un valore True o False |
int, bigint, smallint, tinyint | Valori interi di varie dimensioni |
money, smallmoney | Valori monetari accurati fino a quattro cifre decimali |
decimal, numeric | Valori decimali accurati fino alla cifra meno significativa. Il valori può contenere una parte intera e una parte decimale |
float, real | Valori a virgola mobile che contengono un'approssimazione di un valore decimale |
datetime, smalldatetime | Data e tempo |
char, varchar | Una stringa di lettere, simboli e numeri nel set di caratteri ASCII |
nchar, nvarchar | Una stringa di lettere, simboli e numeri nel set di caratteri Unicode |
Ora che hai capito come è organizzato un database relazionale, sei pronto per apprendere in che modo i database relazionali differiscono da altri modelli di dati. Nello specifico, dovresti sapere come si confrontano i database relazionali con quelli convenzionali file system, database gerarchici e database di rete. La Figura 1-7 presenta le differenze più importanti. Per iniziare, dovresti rendertene conto perché la struttura fisica di un rapporto il database è definito e gestito dal DBMS, non è necessario definire la struttura all'interno dei programmi che utilizzano il database. Invece, puoi semplicemente fare riferimento alle tabelle e alle colonne che desideri utilizzare per nome e il DBMS si occuperà del resto. Al contrario, quando si utilizza un file system convenzionale, è necessario definire e controllare i file del sistema all'interno di ciascuna applicazione che li utilizza. Questo perché un file system convenzionale è solo una raccolta di file che contengono i dati. Inoltre, se modifichi la struttura di un file, tu devi modificare ogni programma che lo utilizza. Questo non è necessario con database relazionale. I modelli di database gerarchici e di rete erano i predecessori del modello di database relazionale. Il modello gerarchico del database è limitato in questo può rappresentare solo relazioni uno-a-molti, chiamate anche relazioni genitore/figlio. Il modello di database di rete è un'estensione del modello gerarchico che prevede tutti i tipi di relazioni. Sebbene i database gerarchici e di rete non presentino gli stessi inconvenienti come i file system convenzionali, non sono ancora così facili da usare come quelli relazionali. In particolare, ogni programma che utilizza un sistema gerarchico o di rete il database deve navigare attraverso il layout fisico delle tabelle che utilizza. Al contrario, questa navigazione è fornita automaticamente dal DBMS in modo relazionale. Inoltre, i programmi possono definire relazioni ad hoc tra le tabelle di un database relazionale. In altre parole, possono utilizzare le relazioni che non sono definiti dal DBMS. Ciò non è possibile con la database gerarchici e di rete. Un altro tipo di database non menzionato in questa figura è l'oggetto database. Questo tipo di database è progettato per archiviare e recuperare gli oggetti che sono utilizzati da applicazioni scritte in un linguaggio di programmazione orientato agli oggetti come C#, C++ o Java. Sebbene i database di oggetti presentino alcuni vantaggi rispetto ai database relazionali, presentano anche alcuni svantaggi. In generale, oggetto i database non sono ancora diventati ampiamente utilizzati. Tuttavia, hanno acquisito una media di nicchia in alcuni settori quali ingegneria, telecomunicazioni, servizi finanziari, fisica delle alte energie e biologia molecolare. Nell'odierno ambiente aziendale basato sui dati, comprendere come funzionano i diversi tipi di sistemi di gestione dei database è essenziale. Sapere cosa rende unico ogni tipo di database aiuta i decisori a scegliere la tecnologia giusta per le loro organizzazioni. Un tipo degno di nota è il database orientato agli oggetti (OODB), chiamato anche ODBMS (sistema di gestione del database a oggetti), come MongoDB che offre vantaggi unici come una migliore organizzazione dei dati e aggiornamenti più semplici. Questi vantaggi possono portare a operazioni più efficienti e a un migliore processo decisionale in tutta l'azienda.
Caratteristica | File system convenzionale | Database relazionale |
---|---|---|
Definizione | Ogni programma che utilizza il file deve definire il file e il layout del file record all'interno del file | Tabelle, righe e colonne sono definite all'interno del database e sono accessibili attraverso il nome |
Manutenzione | Se la definizione di un file cambia, ogni programma che utilizza il file deve essere modificato | I programmi possono essere utilizzati senza modifiche quando cambia la definizione di una tabella |
Controllo di validità | Ogni programma che aggiorna un file deve includere il codice per verificare la validità dei dati | Il database può includere controlli per validazione dei dati |
Relazioni | Ogni programma deve prevedere e imporre relazioni tra file | Il database può rafforzare le relazioni tra tabelle utilizzando chiavi esterne |
Accesso ai dati | Ogni operazione ha come target uno specifico record nel file in base alla relativa posizione nel file o al suo valore chiave | Un programmatore può utilizzare SQL per accedere ai dati selezionati in una o più tabelle di database |
Caratteristica | Database gerarchico | Database di rete | Database relazionale |
---|---|---|---|
Relazioni supportate | Solo uno-a-molti | Uno-a-molti, uno-a-uno, molti-a-molti | Uno-a-molti, uno-a-uno, molti-a-molti, relazioni personalizzate |
Accesso ai dati | I programmi devono includere il codice per navigare attraverso la struttura fisica del database | I programmi devono includere il codice per navigare attraverso la struttura fisica del database | I programmi possono accedere ai dati senza conoscere la struttura fisica del database |
Manutenzione | Può essere difficile implementare nuove relazioni o modificare quelle esistenti | Può essere difficile implementare nuove relazioni o modificare quelle esistenti | I programmi possono essere utilizzati senza modifiche quando cambia la definizione di una tabella |
Negli argomenti che seguono imparerai come utilizzare SQL e i database basati su sistemi evoluti di gestione SQL. Inoltre, imparerai come confrontare alcuni dei più diffusi sistemi basati su SQL.
Negli argomenti che seguono, leggerai alcune delle istruzioni SQL di SQL Server. Come vedrai, puoi utilizzare alcune di queste istruzioni per manipolare i dati in un database e puoi utilizzare altri per lavorare con gli oggetti di database.
La tabella in basso riassume alcune delle istruzioni SQL più comuni. Come puoi vedere, queste istruzioni possono essere divise in due categorie. Le dichiarazioni che funzionano con i dati in un database sono chiamati linguaggio di manipolazione dei dati (DML). Queste quattro istruzioni sono quelle utilizzate dai programmatori di applicazioni. Vedrai come funzionano queste istruzioni più avanti in questa lezione e imparerai i dettagli sul loro utilizzo nella seconda parte del corso. Le istruzioni che funzionano con gli oggetti in un database sono chiamate linguaggio di definizione dei dati (DDL). Sui sistemi di grandi dimensioni vengono utilizzate queste istruzioni esclusivamente da amministratori di database o DBA. È compito del DBA mantenere i database esistenti, ottimizzarli per prestazioni più veloci e creare nuovi database. Sui sistemi più piccoli, tuttavia, il programmatore SQL può essere anche il DBA. Guarda gli esempi di alcune di queste affermazioni nella figura successiva e imparerai come usarli più avanti.
Comando | Descrizione |
---|---|
SELECT | Recupera i dati da una o più tabelle |
INSERT | Aggiunge una o più nuove righe a una tabella |
UPDATE | Modifica una o più righe esistenti in una tabella |
DELETE | Elimina una o più righe esistenti da una tabella |
Comando | Descrizione |
---|---|
CREATE DATABASE | Crea un nuovo database |
CREATE TABLE | Crea una nuova tabella in un database |
CREATE INDEX | Crea un nuovo indice in una tabella |
ALTER TABLE | Modifica la struttura di una tabella esistente |
ALTER INDEX | Modifica la struttura di un indice esistente |
DROP DATABASE | Elimina un database esistente |
DROP TABLE | Elimina una tabella esistente |
DROP INDEX | Deletes an existing index |
Per darti un'idea di come usi le istruzioni DDL che hai visto nel nella figura precedente, la figura 1-11 presenta cinque esempi. La prima istruzione crea un database dei conti fornitori denominato AP. Questo è il database utilizzato in molti esempi presenti in questo corso. La seconda istruzione crea la tabella Fatture che hai visto in precedenza. Se non capisci tutto questo codice in questo momento, non preoccuparti. Imparerai come codificare istruzioni come questa più avanti in questo libro. Per ora, prendi conoscenza di questa istruzione che definisce ogni colonna nella tabella, incluso il tipo di dati, se consente valori nulli e il suo valore predefinito se ne ha uno. Inoltre, esso identifica le colonne di identità, le colonne di chiave primaria e le colonne di chiave esterna. La terza istruzione in questa figura modifica la tabella Fatture aggiungendo una colonna ad essa. Come l'istruzione che ha creato la tabella, questa istruzione specifica tutti gli attributi della nuova colonna. Quindi, la quarta istruzione elimina la colonna che è stata appena aggiunta. L'ultima istruzione crea un indice nella tabella Fatture. In questo caso, l'indice è per la colonna VendorID, che viene spesso utilizzata per accedere alla tabella. Notare il nome assegnato a questo indice. Questo segue la denominazione standard convenzioni per gli indici, che imparerai nella lezione 11.
USE master
GO
-- drop the AP database if it already exists
IF DB_ID('AP') IS NOT NULL
DROP DATABASE AP
GO
CREATE DATABASE AP
GO
USE AP
GO
-- create the Invoices table
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE Invoices (
InvoiceID int IDENTITY(1,1) NOT NULL,
VendorID int NOT NULL,
InvoiceNumber varchar(50) NOT NULL,
InvoiceDate date NOT NULL,
InvoiceTotal money NOT NULL,
PaymentTotal money NOT NULL DEFAULT 0,
CreditTotal money NOT NULL DEFAULT 0,
TermsID int NOT NULL,
InvoiceDueDate date NOT NULL,
PaymentDate date NULL,
CONSTRAINT PK_Invoices PRIMARY KEY CLUSTERED
(
InvoiceID ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
)
GO
USE AP
GO
ALTER TABLE Invoices
ADD BalanceDue MONEY NOT NULL;
GO
USE AP
GO
ALTER TABLE Invoices
DROP COLUMN BalanceDue;
GO
USE AP
GO
CREATE INDEX IX_Invoices_VendorID
ON Invoices (VendorID);
GO
USE AP
GO
-- insert Invoices
SET IDENTITY_INSERT Invoices ON
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (1, 122, N'989319-457', CAST(N'2022-10-08' AS Date), 3813.3300, 3813.3300, 0.0000, 3, CAST(N'2022-11-08' AS Date), CAST(N'2022-11-07' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (2, 123, N'263253241', CAST(N'2022-10-10' AS Date), 40.2000, 40.2000, 0.0000, 3, CAST(N'2022-11-10' AS Date), CAST(N'2022-11-14' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (3, 123, N'963253234', CAST(N'2022-10-13' AS Date), 138.7500, 138.7500, 0.0000, 3, CAST(N'2022-11-13' AS Date), CAST(N'2022-11-09' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (4, 123, N'2-000-2993', CAST(N'2022-10-16' AS Date), 144.7000, 144.7000, 0.0000, 3, CAST(N'2022-11-16' AS Date), CAST(N'2022-11-12' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (5, 123, N'963253251', CAST(N'2022-10-16' AS Date), 15.5000, 15.5000, 0.0000, 3, CAST(N'2022-11-16' AS Date), CAST(N'2022-11-11' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (6, 123, N'963253261', CAST(N'2022-10-16' AS Date), 42.7500, 42.7500, 0.0000, 3, CAST(N'2022-11-16' AS Date), CAST(N'2022-11-21' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (7, 123, N'963253237', CAST(N'2022-10-21' AS Date), 172.5000, 172.5000, 0.0000, 3, CAST(N'2022-11-21' AS Date), CAST(N'2022-11-22' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (8, 89, N'125520-1', CAST(N'2022-10-24' AS Date), 95.0000, 95.0000, 0.0000, 1, CAST(N'2022-11-04' AS Date), CAST(N'2022-11-01' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (9, 121, N'97/488', CAST(N'2022-10-24' AS Date), 601.9500, 601.9500, 0.0000, 3, CAST(N'2022-11-24' AS Date), CAST(N'2022-11-21' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (10, 123, N'263253250', CAST(N'2022-10-24' AS Date), 42.6700, 42.6700, 0.0000, 3, CAST(N'2022-11-24' AS Date), CAST(N'2022-11-22' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (11, 123, N'963253262', CAST(N'2022-10-25' AS Date), 42.5000, 42.5000, 0.0000, 3, CAST(N'2022-11-25' AS Date), CAST(N'2022-11-20' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (12, 96, N'I77271-O01', CAST(N'2022-10-26' AS Date), 662.0000, 662.0000, 0.0000, 2, CAST(N'2022-11-16' AS Date), CAST(N'2022-11-13' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (13, 95, N'111-92R-10096', CAST(N'2022-10-30' AS Date), 16.3300, 16.3300, 0.0000, 2, CAST(N'2022-11-20' AS Date), CAST(N'2022-11-23' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (14, 115, N'25022117', CAST(N'2022-11-01' AS Date), 6.0000, 6.0000, 0.0000, 4, CAST(N'2022-12-10' AS Date), CAST(N'2022-12-10' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (15, 48, N'P02-88D77S7', CAST(N'2022-11-03' AS Date), 856.9200, 856.9200, 0.0000, 3, CAST(N'2022-12-02' AS Date), CAST(N'2022-11-30' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (16, 97, N'21-4748363', CAST(N'2022-11-03' AS Date), 9.9500, 9.9500, 0.0000, 2, CAST(N'2022-11-23' AS Date), CAST(N'2022-11-22' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (17, 123, N'4-321-2596', CAST(N'2022-11-05' AS Date), 10.0000, 10.0000, 0.0000, 3, CAST(N'2022-12-04' AS Date), CAST(N'2022-12-05' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (18, 123, N'963253242', CAST(N'2022-11-06' AS Date), 104.0000, 104.0000, 0.0000, 3, CAST(N'2022-12-05' AS Date), CAST(N'2022-12-05' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (19, 34, N'QP58872', CAST(N'2022-11-07' AS Date), 116.5400, 116.5400, 0.0000, 1, CAST(N'2022-11-17' AS Date), CAST(N'2022-11-19' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (20, 115, N'24863706', CAST(N'2022-11-10' AS Date), 6.0000, 6.0000, 0.0000, 4, CAST(N'2022-12-19' AS Date), CAST(N'2022-12-15' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (21, 119, N'10843', CAST(N'2022-11-11' AS Date), 4901.2600, 4901.2600, 0.0000, 2, CAST(N'2022-11-30' AS Date), CAST(N'2022-11-29' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (22, 123, N'963253235', CAST(N'2022-11-11' AS Date), 108.2500, 108.2500, 0.0000, 3, CAST(N'2022-12-10' AS Date), CAST(N'2022-12-09' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (23, 97, N'21-4923721', CAST(N'2022-11-13' AS Date), 9.9500, 9.9500, 0.0000, 2, CAST(N'2022-12-02' AS Date), CAST(N'2022-11-28' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (24, 113, N'77290', CAST(N'2022-11-13' AS Date), 1750.0000, 1750.0000, 0.0000, 5, CAST(N'2023-01-02' AS Date), CAST(N'2023-01-05' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (25, 123, N'963253246', CAST(N'2022-11-13' AS Date), 129.0000, 129.0000, 0.0000, 3, CAST(N'2022-12-12' AS Date), CAST(N'2022-12-09' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (26, 123, N'4-342-8069', CAST(N'2022-11-14' AS Date), 10.0000, 10.0000, 0.0000, 3, CAST(N'2022-12-13' AS Date), CAST(N'2022-12-13' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (27, 88, N'972110', CAST(N'2022-11-15' AS Date), 207.7800, 207.7800, 0.0000, 1, CAST(N'2022-11-25' AS Date), CAST(N'2022-11-27' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (28, 123, N'963253263', CAST(N'2022-11-16' AS Date), 109.5000, 109.5000, 0.0000, 3, CAST(N'2022-12-15' AS Date), CAST(N'2022-12-10' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (29, 108, N'121897', CAST(N'2022-11-19' AS Date), 450.0000, 450.0000, 0.0000, 4, CAST(N'2022-12-28' AS Date), CAST(N'2023-01-03' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (30, 123, N'1-200-5164', CAST(N'2022-11-20' AS Date), 63.4000, 63.4000, 0.0000, 3, CAST(N'2022-12-19' AS Date), CAST(N'2022-12-24' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (31, 104, N'P02-3772', CAST(N'2022-11-21' AS Date), 7125.3400, 7125.3400, 0.0000, 3, CAST(N'2022-12-20' AS Date), CAST(N'2022-12-24' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (32, 121, N'97/486', CAST(N'2022-11-21' AS Date), 953.1000, 953.1000, 0.0000, 3, CAST(N'2022-12-20' AS Date), CAST(N'2022-12-22' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (33, 105, N'94007005', CAST(N'2022-11-23' AS Date), 220.0000, 220.0000, 0.0000, 3, CAST(N'2022-12-22' AS Date), CAST(N'2022-12-26' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (34, 123, N'963253232', CAST(N'2022-11-23' AS Date), 127.7500, 127.7500, 0.0000, 3, CAST(N'2022-12-22' AS Date), CAST(N'2022-12-18' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (35, 107, N'RTR-72-3662-X', CAST(N'2022-11-25' AS Date), 1600.0000, 1600.0000, 0.0000, 4, CAST(N'2023-01-04' AS Date), CAST(N'2023-01-09' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (36, 121, N'97/465', CAST(N'2022-11-25' AS Date), 565.1500, 565.1500, 0.0000, 3, CAST(N'2022-12-24' AS Date), CAST(N'2022-12-24' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (37, 123, N'963253260', CAST(N'2022-11-25' AS Date), 36.0000, 36.0000, 0.0000, 3, CAST(N'2022-12-24' AS Date), CAST(N'2022-12-26' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (38, 123, N'963253272', CAST(N'2022-11-26' AS Date), 61.5000, 61.5000, 0.0000, 3, CAST(N'2022-12-25' AS Date), CAST(N'2022-12-28' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (39, 110, N'0-2058', CAST(N'2022-11-28' AS Date), 37966.1900, 37966.1900, 0.0000, 3, CAST(N'2022-12-27' AS Date), CAST(N'2022-12-28' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (40, 121, N'97/503', CAST(N'2022-11-30' AS Date), 639.7700, 639.7700, 0.0000, 3, CAST(N'2022-12-28' AS Date), CAST(N'2022-12-25' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (41, 123, N'963253255', CAST(N'2022-11-30' AS Date), 53.7500, 53.7500, 0.0000, 3, CAST(N'2022-12-28' AS Date), CAST(N'2022-12-27' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (42, 123, N'94007069', CAST(N'2022-11-30' AS Date), 400.0000, 400.0000, 0.0000, 3, CAST(N'2022-12-28' AS Date), CAST(N'2023-01-01' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (43, 72, N'40318', CAST(N'2022-12-01' AS Date), 21842.0000, 21842.0000, 0.0000, 3, CAST(N'2023-01-01' AS Date), CAST(N'2022-12-28' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (44, 95, N'111-92R-10094', CAST(N'2022-12-01' AS Date), 19.6700, 19.6700, 0.0000, 2, CAST(N'2022-12-21' AS Date), CAST(N'2022-12-24' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (45, 122, N'989319-437', CAST(N'2022-12-01' AS Date), 2765.3600, 2765.3600, 0.0000, 3, CAST(N'2023-01-01' AS Date), CAST(N'2022-12-28' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (46, 37, N'547481328', CAST(N'2022-12-03' AS Date), 224.0000, 224.0000, 0.0000, 3, CAST(N'2023-01-03' AS Date), CAST(N'2023-01-04' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (47, 83, N'31359783', CAST(N'2022-12-03' AS Date), 1575.0000, 1575.0000, 0.0000, 2, CAST(N'2022-12-23' AS Date), CAST(N'2022-12-21' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (48, 123, N'1-202-2978', CAST(N'2022-12-03' AS Date), 33.0000, 33.0000, 0.0000, 3, CAST(N'2023-01-03' AS Date), CAST(N'2023-01-05' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (49, 95, N'111-92R-10097', CAST(N'2022-12-04' AS Date), 16.3300, 16.3300, 0.0000, 2, CAST(N'2022-12-24' AS Date), CAST(N'2022-12-26' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (50, 37, N'547479217', CAST(N'2022-12-07' AS Date), 116.0000, 116.0000, 0.0000, 3, CAST(N'2023-01-07' AS Date), CAST(N'2023-01-07' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (51, 122, N'989319-477', CAST(N'2022-12-08' AS Date), 2184.1100, 2184.1100, 0.0000, 3, CAST(N'2023-01-08' AS Date), CAST(N'2023-01-08' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (52, 34, N'Q545443', CAST(N'2022-12-09' AS Date), 1083.5800, 1083.5800, 0.0000, 1, CAST(N'2022-12-19' AS Date), CAST(N'2022-12-23' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (53, 95, N'111-92R-10092', CAST(N'2022-12-09' AS Date), 46.2100, 46.2100, 0.0000, 2, CAST(N'2022-12-28' AS Date), CAST(N'2023-01-02' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (54, 121, N'97/553B', CAST(N'2022-12-10' AS Date), 313.5500, 313.5500, 0.0000, 3, CAST(N'2023-01-10' AS Date), CAST(N'2023-01-09' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (55, 123, N'963253245', CAST(N'2022-12-10' AS Date), 40.7500, 40.7500, 0.0000, 3, CAST(N'2023-01-10' AS Date), CAST(N'2023-01-12' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (56, 86, N'367447', CAST(N'2022-12-11' AS Date), 2433.0000, 2433.0000, 0.0000, 1, CAST(N'2022-12-21' AS Date), CAST(N'2022-12-17' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (57, 103, N'75C-90227', CAST(N'2022-12-11' AS Date), 1367.5000, 1367.5000, 0.0000, 5, CAST(N'2023-01-31' AS Date), CAST(N'2023-01-31' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (58, 123, N'963253256', CAST(N'2022-12-11' AS Date), 53.2500, 53.2500, 0.0000, 3, CAST(N'2023-01-11' AS Date), CAST(N'2023-01-07' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (59, 123, N'4-314-3057', CAST(N'2022-12-11' AS Date), 13.7500, 13.7500, 0.0000, 3, CAST(N'2023-01-11' AS Date), CAST(N'2023-01-15' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (60, 122, N'989319-497', CAST(N'2022-12-12' AS Date), 2312.2000, 2312.2000, 0.0000, 3, CAST(N'2023-01-12' AS Date), CAST(N'2023-01-09' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (61, 115, N'24946731', CAST(N'2022-12-15' AS Date), 25.6700, 25.6700, 0.0000, 4, CAST(N'2023-01-25' AS Date), CAST(N'2023-01-26' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (62, 123, N'963253269', CAST(N'2022-12-15' AS Date), 26.7500, 26.7500, 0.0000, 3, CAST(N'2023-01-15' AS Date), CAST(N'2023-01-11' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (63, 122, N'989319-427', CAST(N'2022-12-16' AS Date), 2115.8100, 2115.8100, 0.0000, 3, CAST(N'2023-01-16' AS Date), CAST(N'2023-01-19' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (64, 123, N'963253267', CAST(N'2022-12-17' AS Date), 23.5000, 23.5000, 0.0000, 3, CAST(N'2023-01-17' AS Date), CAST(N'2023-01-19' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (65, 99, N'509786', CAST(N'2022-12-18' AS Date), 6940.2500, 6940.2500, 0.0000, 3, CAST(N'2023-01-18' AS Date), CAST(N'2023-01-15' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (66, 123, N'263253253', CAST(N'2022-12-18' AS Date), 31.9500, 31.9500, 0.0000, 3, CAST(N'2023-01-18' AS Date), CAST(N'2023-01-21' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (67, 122, N'989319-487', CAST(N'2022-12-20' AS Date), 1927.5400, 1927.5400, 0.0000, 3, CAST(N'2023-01-20' AS Date), CAST(N'2023-01-18' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (68, 81, N'MABO1489', CAST(N'2022-12-21' AS Date), 936.9300, 936.9300, 0.0000, 2, CAST(N'2023-01-11' AS Date), CAST(N'2023-01-10' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (69, 80, N'133560', CAST(N'2022-12-22' AS Date), 175.0000, 175.0000, 0.0000, 2, CAST(N'2023-01-12' AS Date), CAST(N'2023-01-16' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (70, 115, N'24780512', CAST(N'2022-12-22' AS Date), 6.0000, 6.0000, 0.0000, 4, CAST(N'2023-02-01' AS Date), CAST(N'2023-01-29' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (71, 123, N'963253254', CAST(N'2022-12-22' AS Date), 108.5000, 108.5000, 0.0000, 3, CAST(N'2023-01-22' AS Date), CAST(N'2023-01-20' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (72, 123, N'43966316', CAST(N'2022-12-22' AS Date), 10.0000, 10.0000, 0.0000, 3, CAST(N'2023-01-22' AS Date), CAST(N'2023-01-17' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (73, 114, N'CBM9920-M-T77109', CAST(N'2022-12-23' AS Date), 290.0000, 290.0000, 0.0000, 1, CAST(N'2023-01-03' AS Date), CAST(N'2022-12-28' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (74, 102, N'109596', CAST(N'2022-12-24' AS Date), 41.8000, 41.8000, 0.0000, 4, CAST(N'2023-02-03' AS Date), CAST(N'2023-02-04' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (75, 123, N'7548906-20', CAST(N'2022-12-24' AS Date), 27.0000, 27.0000, 0.0000, 3, CAST(N'2023-01-24' AS Date), CAST(N'2023-01-24' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (76, 123, N'963253248', CAST(N'2022-12-24' AS Date), 241.0000, 241.0000, 0.0000, 3, CAST(N'2023-01-24' AS Date), CAST(N'2023-01-25' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (77, 121, N'97/553', CAST(N'2022-12-25' AS Date), 904.1400, 904.1400, 0.0000, 3, CAST(N'2023-01-25' AS Date), CAST(N'2023-01-25' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (78, 121, N'97/522', CAST(N'2022-12-28' AS Date), 1962.1300, 1762.1300, 200.0000, 3, CAST(N'2023-01-28' AS Date), CAST(N'2023-01-30' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (79, 100, N'587056', CAST(N'2022-12-28' AS Date), 2184.5000, 2184.5000, 0.0000, 4, CAST(N'2023-02-09' AS Date), CAST(N'2023-02-07' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (80, 122, N'989319-467', CAST(N'2023-01-01' AS Date), 2318.0300, 2318.0300, 0.0000, 3, CAST(N'2023-01-31' AS Date), CAST(N'2023-01-29' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (81, 123, N'263253265', CAST(N'2023-01-02' AS Date), 26.2500, 26.2500, 0.0000, 3, CAST(N'2023-02-01' AS Date), CAST(N'2023-01-28' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (82, 94, N'203339-13', CAST(N'2023-01-05' AS Date), 17.5000, 17.5000, 0.0000, 2, CAST(N'2023-01-25' AS Date), CAST(N'2023-01-27' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (83, 95, N'111-92R-10093', CAST(N'2023-01-06' AS Date), 39.7700, 39.7700, 0.0000, 2, CAST(N'2023-01-26' AS Date), CAST(N'2023-01-22' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (84, 123, N'963253258', CAST(N'2023-01-06' AS Date), 111.0000, 111.0000, 0.0000, 3, CAST(N'2023-02-05' AS Date), CAST(N'2023-02-05' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (85, 123, N'963253271', CAST(N'2023-01-07' AS Date), 158.0000, 158.0000, 0.0000, 3, CAST(N'2023-02-06' AS Date), CAST(N'2023-02-11' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (86, 123, N'963253230', CAST(N'2023-01-07' AS Date), 739.2000, 739.2000, 0.0000, 3, CAST(N'2023-02-06' AS Date), CAST(N'2023-02-06' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (87, 123, N'963253244', CAST(N'2023-01-08' AS Date), 60.0000, 60.0000, 0.0000, 3, CAST(N'2023-02-07' AS Date), CAST(N'2023-02-09' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (88, 123, N'963253239', CAST(N'2023-01-08' AS Date), 147.2500, 147.2500, 0.0000, 3, CAST(N'2023-02-07' AS Date), CAST(N'2023-02-11' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (89, 72, N'39104', CAST(N'2023-01-10' AS Date), 85.3100, 0.0000, 0.0000, 3, CAST(N'2023-02-09' AS Date), NULL)
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (90, 123, N'963253252', CAST(N'2023-01-12' AS Date), 38.7500, 38.7500, 0.0000, 3, CAST(N'2023-02-11' AS Date), CAST(N'2023-02-11' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (91, 95, N'111-92R-10095', CAST(N'2023-01-15' AS Date), 32.7000, 32.7000, 0.0000, 2, CAST(N'2023-02-04' AS Date), CAST(N'2023-02-06' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (92, 117, N'111897', CAST(N'2023-01-15' AS Date), 16.6200, 16.6200, 0.0000, 3, CAST(N'2023-02-14' AS Date), CAST(N'2023-02-14' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (93, 123, N'4-327-7357', CAST(N'2023-01-16' AS Date), 162.7500, 162.7500, 0.0000, 3, CAST(N'2023-02-15' AS Date), CAST(N'2023-02-11' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (94, 123, N'963253264', CAST(N'2023-01-18' AS Date), 52.2500, 0.0000, 0.0000, 3, CAST(N'2023-02-17' AS Date), NULL)
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (95, 82, N'C73-24', CAST(N'2023-01-19' AS Date), 600.0000, 600.0000, 0.0000, 2, CAST(N'2023-02-08' AS Date), CAST(N'2023-02-13' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (96, 110, N'P-0259', CAST(N'2023-01-19' AS Date), 26881.4000, 26881.4000, 0.0000, 3, CAST(N'2023-02-18' AS Date), CAST(N'2023-02-20' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (97, 90, N'97-1024A', CAST(N'2023-01-20' AS Date), 356.4800, 356.4800, 0.0000, 2, CAST(N'2023-02-09' AS Date), CAST(N'2023-02-07' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (98, 83, N'31361833', CAST(N'2023-01-21' AS Date), 579.4200, 0.0000, 0.0000, 2, CAST(N'2023-02-10' AS Date), NULL)
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (99, 123, N'263253268', CAST(N'2023-01-21' AS Date), 59.9700, 0.0000, 0.0000, 3, CAST(N'2023-02-20' AS Date), NULL)
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (100, 123, N'263253270', CAST(N'2023-01-22' AS Date), 67.9200, 0.0000, 0.0000, 3, CAST(N'2023-02-21' AS Date), NULL)
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (101, 123, N'263253273', CAST(N'2023-01-22' AS Date), 30.7500, 0.0000, 0.0000, 3, CAST(N'2023-02-21' AS Date), NULL)
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (102, 110, N'P-0608', CAST(N'2023-01-23' AS Date), 20551.1800, 0.0000, 1200.0000, 3, CAST(N'2023-02-22' AS Date), NULL)
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (103, 122, N'989319-417', CAST(N'2023-01-23' AS Date), 2051.5900, 2051.5900, 0.0000, 3, CAST(N'2023-02-22' AS Date), CAST(N'2023-02-24' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (104, 123, N'263253243', CAST(N'2023-01-23' AS Date), 44.4400, 44.4400, 0.0000, 3, CAST(N'2023-02-22' AS Date), CAST(N'2023-02-24' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (105, 106, N'9982771', CAST(N'2023-01-24' AS Date), 503.2000, 0.0000, 0.0000, 3, CAST(N'2023-02-23' AS Date), NULL)
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (106, 110, N'0-2060', CAST(N'2023-01-24' AS Date), 23517.5800, 21221.6300, 2295.9500, 3, CAST(N'2023-02-23' AS Date), CAST(N'2023-02-27' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (107, 122, N'989319-447', CAST(N'2023-01-24' AS Date), 3689.9900, 3689.9900, 0.0000, 3, CAST(N'2023-02-23' AS Date), CAST(N'2023-02-19' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (108, 123, N'963253240', CAST(N'2023-01-24' AS Date), 67.0000, 67.0000, 0.0000, 3, CAST(N'2023-02-23' AS Date), CAST(N'2023-02-23' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (109, 121, N'97/222', CAST(N'2023-01-25' AS Date), 1000.4600, 1000.4600, 0.0000, 3, CAST(N'2023-02-24' AS Date), CAST(N'2023-02-22' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (110, 80, N'134116', CAST(N'2023-01-28' AS Date), 90.3600, 0.0000, 0.0000, 2, CAST(N'2023-02-17' AS Date), NULL)
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (111, 123, N'263253257', CAST(N'2023-01-30' AS Date), 22.5700, 22.5700, 0.0000, 3, CAST(N'2023-03-01' AS Date), CAST(N'2023-03-03' AS Date))
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (112, 110, N'0-2436', CAST(N'2023-01-31' AS Date), 10976.0600, 0.0000, 0.0000, 3, CAST(N'2023-03-01' AS Date), NULL)
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (113, 37, N'547480102', CAST(N'2023-02-01' AS Date), 224.0000, 0.0000, 0.0000, 3, CAST(N'2023-03-01' AS Date), NULL)
INSERT Invoices (InvoiceID, VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate, PaymentDate) VALUES (114, 123, N'963253249', CAST(N'2023-02-02' AS Date), 127.7500, 127.7500, 0.0000, 3, CAST(N'2023-03-01' AS Date), CAST(N'2023-03-04' AS Date))
SET IDENTITY_INSERT Invoices OFF
La Figura 1-07 mostra come utilizzare un'istruzione SELECT per interrogare una singola tabella del database. Nella parte superiore di questa figura puoi vedere alcune colonne e righe della tabella Fatture. Quindi, nell'istruzione SELECT che segue, la clausola SELECT nomina le colonne da recuperare e la clausola FROM nomina la tabella che contiene le colonne, detta tabella base. In questo caso, ci saranno sei colonne recuperate dalla tabella Fatture. Si noti che l'ultima colonna, BalanceDue, viene calcolata da altre tre colonne nella tabella. In altre parole, una colonna denominata BalanceDue in realtà non esiste nel database. Questo tipo di colonna è chiamata calcolata valore ed esiste solo nei risultati della query. Oltre alle clausole SELECT e FROM, questa istruzione SELECT include una clausola WHERE e una clausola ORDER BY. La clausola WHERE dà i criteri per le righe da selezionare. In questo caso, una riga viene selezionata solo se presente un saldo dovuto maggiore di zero. E le righe restituite vengono ordinate in base allColonna InvoiceDate. Questa figura mostra anche la tabella dei risultati, o set di risultati, restituita dall'istruzione SELECT. Un set di risultati è una tabella logica creata temporaneamente all'interno della banca dati. Quando un'applicazione richiede dati da un database, esso riceve un set di risultati.
USE AP
GO
SELECT *
FROM Invoices
ORDER BY InvoiceDate;
USE AP
GO
SELECT InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal,
InvoiceTotal - PaymentTotal - CreditTotal AS BalanceDue
FROM Invoices
WHERE (InvoiceTotal - PaymentTotal - CreditTotal) > 0
ORDER BY InvoiceDate;
La Figura 1-13 presenta un'istruzione SELECT che recupera i dati da due tavoli. Questo tipo di operazione è chiamato join perché i dati di due tabelle vengono unite in un unico set di risultati. Ad esempio, l'istruzione SELECT in questa figura unisce i dati delle tabelle Fatture e Fornitori. Un inner join è il tipo di join più comune. Quando usi un INNER JOIN, le righe delle due tabelle nell'unione sono incluse nella tabella dei risultati solo se sono presenti e corrispondono le colonne correlate. Queste colonne corrispondenti sono specificate nella clausola FROM dell'istruzione SELECT. Nell'istruzione SELECT in questa figura, ad esempio, le righe delle tabelle Fatture e Fornitori vengono incluse solo se il valore della colonna VendorID nella tabella Vendors corrisponde al valore della colonna VendorID in una o più righe nella tabella Fatture. Se non ci sono fatture per un particolare fornitore, quel fornitore non verrà incluso nel set di risultati. Sebbene questa figura mostri solo come unire i dati di due tabelle, tu dovresti sapere che puoi estendere questa idea per unire dati da tre o più tabelle. Se, ad esempio, desideri includere i dati degli elementi pubblicitari da una tabella denominata lnvoiceLineltems nei risultati mostrati in questa figura, è possibile codificare la clausola FROM dell'istruzione SELECT come questa:
FROM Vendors
INNER JOIN Invoices
ON Vendors.vendorID = Invoices.vendorID
INNER JOIN InvoiceLineitems
ON Invoices.InvoiceID = InvoiceLineitems.InvoiceID
Quindi, nella clausola SELECT, puoi includere una qualsiasi delle colonne della tabella lnvoiceLineltems. Oltre ai join interni, SQL Server supporta i join esterni e i cross join. Potrai leggere ulteriori informazioni sui diversi tipi di join nella lezione 4.
USE AP
GO
-- create the Vendors table
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE Vendors (
VendorID int IDENTITY(1,1) NOT NULL,
VendorName varchar(50) NOT NULL,
VendorAddress1 varchar(50) NULL,
VendorAddress2 varchar(50) NULL,
VendorCity varchar(50) NOT NULL,
VendorState char(2) NOT NULL,
VendorZipCode varchar(20) NOT NULL,
VendorPhone varchar(50) NULL,
VendorContactLName varchar(50) NULL,
VendorContactFName varchar(50) NULL,
DefaultTermsID int NOT NULL,
DefaultAccountNo int NOT NULL,
CONSTRAINT PK_Vendors PRIMARY KEY CLUSTERED
(
VendorID ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)
GO
USE AP
GO
-- insert Vendors
SET IDENTITY_INSERT Vendors ON
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (1, N'US Postal Service', N'Attn: Supt. Window Services', N'PO Box 7005', N'Madison', N'WI', N'53707', N'(800) 555-1205', N'Alberto', N'Francesco', 1, 552)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (2, N'National Information Data Ctr', N'PO Box 96621', NULL, N'Washington', N'DC', N'20090', N'(301) 555-8950', N'Irvin', N'Ania', 3, 540)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (3, N'Register of Copyrights', N'Library Of Congress', NULL, N'Washington', N'DC', N'20559', NULL, N'Liana', N'Lukas', 3, 403)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (4, N'Jobtrak', N'1990 Westwood Blvd Ste 260', NULL, N'Los Angeles', N'CA', N'90025', N'(800) 555-8725', N'Quinn', N'Kenzie', 3, 572)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (5, N'Newbrige Book Clubs', N'3000 Cindel Drive', NULL, N'Washington', N'NJ', N'07882', N'(800) 555-9980', N'Marks', N'Michelle', 4, 394)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (6, N'California Chamber Of Commerce', N'3255 Ramos Cir', NULL, N'Sacramento', N'CA', N'95827', N'(916) 555-6670', N'Mauro', N'Anton', 3, 572)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (7, N'Towne Advertiser''s Mailing Svcs', N'Kevin Minder', N'3441 W Macarthur Blvd', N'Santa Ana', N'CA', N'92704', NULL, N'Maegen', N'Ted', 3, 540)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (8, N'BFI Industries', N'PO Box 9369', NULL, N'Fresno', N'CA', N'93792', N'(559) 555-1551', N'Kaleigh', N'Erick', 3, 521)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (9, N'Pacific Gas & Electric', N'Box 52001', NULL, N'San Francisco', N'CA', N'94152', N'(800) 555-6081', N'Anthoni', N'Kaitlyn', 3, 521)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (10, N'Robbins Mobile Lock And Key', N'4669 N Fresno', NULL, N'Fresno', N'CA', N'93726', N'(559) 555-9375', N'Leigh', N'Bill', 2, 523)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (11, N'Bill Marvin Electric Inc', N'4583 E Home', NULL, N'Fresno', N'CA', N'93703', N'(559) 555-5106', N'Hostlery', N'Kaitlin', 2, 523)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (12, N'City Of Fresno', N'PO Box 2069', NULL, N'Fresno', N'CA', N'93718', N'(559) 555-9999', N'Mayte', N'Kendall', 3, 574)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (13, N'Golden Eagle Insurance Co', N'PO Box 85826', NULL, N'San Diego', N'CA', N'92186', NULL, N'Blanca', N'Korah', 3, 590)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (14, N'Expedata Inc', N'4420 N. First Street, Suite 108', NULL, N'Fresno', N'CA', N'93726', N'(559) 555-9586', N'Quintin', N'Marvin', 3, 589)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (15, N'ASC Signs', N'1528 N Sierra Vista', NULL, N'Fresno', N'CA', N'93703', NULL, N'Darien', N'Elisabeth', 1, 546)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (16, N'Internal Revenue Service', NULL, NULL, N'Fresno', N'CA', N'93888', NULL, N'Aileen', N'Joan', 1, 235)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (17, N'Blanchard & Johnson Associates', N'27371 Valderas', NULL, N'Mission Viejo', N'CA', N'92691', N'(214) 555-3647', N'Keeton', N'Gonzalo', 3, 540)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (18, N'Fresno Photoengraving Company', N'1952 "H" Street', N'P.O. Box 1952', N'Fresno', N'CA', N'93718', N'(559) 555-3005', N'Chaddick', N'Derek', 3, 403)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (19, N'Crown Printing', N'1730 "H" St', NULL, N'Fresno', N'CA', N'93721', N'(559) 555-7473', N'Randrup', N'Leann', 2, 400)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (20, N'Diversified Printing & Pub', N'2632 Saturn St', NULL, N'Brea', N'CA', N'92621', N'(714) 555-4541', N'Lane', N'Vanesa', 3, 400)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (21, N'The Library Ltd', N'7700 Forsyth', NULL, N'St Louis', N'MO', N'63105', N'(314) 555-8834', N'Marques', N'Malia', 3, 540)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (22, N'Micro Center', N'1555 W Lane Ave', NULL, N'Columbus', N'OH', N'43221', N'(614) 555-4435', N'Evan', N'Emily', 2, 160)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (23, N'Yale Industrial Trucks-Fresno', N'3711 W Franklin', NULL, N'Fresno', N'CA', N'93706', N'(559) 555-2993', N'Alexis', N'Alexandro', 3, 532)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (24, N'Zee Medical Service Co', N'4221 W Sierra Madre #104', NULL, N'Washington', N'IA', N'52353', NULL, N'Hallie', N'Juliana', 3, 570)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (25, N'California Data Marketing', N'2818 E Hamilton', NULL, N'Fresno', N'CA', N'93721', N'(559) 555-3801', N'Jonessen', N'Moises', 4, 540)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (26, N'Small Press', N'121 E Front St - 4th Floor', NULL, N'Traverse City', N'MI', N'49684', NULL, N'Colette', N'Dusty', 3, 540)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (27, N'Rich Advertising', N'12 Daniel Road', NULL, N'Fairfield', N'NJ', N'07004', N'(201) 555-9742', N'Neil', N'Ingrid', 3, 540)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (29, N'Vision Envelope & Printing', N'PO Box 3100', NULL, N'Gardena', N'CA', N'90247', N'(310) 555-7062', N'Raven', N'Jamari', 3, 551)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (30, N'Costco', N'Fresno Warehouse', N'4500 W Shaw', N'Fresno', N'CA', N'93711', NULL, N'Jaquan', N'Aaron', 3, 570)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (31, N'Enterprise Communications Inc', N'1483 Chain Bridge Rd, Ste 202', NULL, N'Mclean', N'VA', N'22101', N'(770) 555-9558', N'Lawrence', N'Eileen', 2, 536)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (32, N'RR Bowker', N'PO Box 31', NULL, N'East Brunswick', N'NJ', N'08810', N'(800) 555-8110', N'Essence', N'Marjorie', 3, 532)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (33, N'Nielson', N'Ohio Valley Litho Division', N'Location #0470', N'Cincinnati', N'OH', N'45264', NULL, N'Brooklynn', N'Keely', 2, 541)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (34, N'IBM', N'PO Box 61000', NULL, N'San Francisco', N'CA', N'94161', N'(800) 555-4426', N'Camron', N'Trentin', 1, 160)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (35, N'Cal State Termite', N'PO Box 956', NULL, N'Selma', N'CA', N'93662', N'(559) 555-1534', N'Hunter', N'Demetrius', 2, 523)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (36, N'Graylift', N'PO Box 2808', NULL, N'Fresno', N'CA', N'93745', N'(559) 555-6621', N'Sydney', N'Deangelo', 3, 532)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (37, N'Blue Cross', N'PO Box 9061', NULL, N'Oxnard', N'CA', N'93031', N'(800) 555-0912', N'Eliana', N'Nikolas', 3, 510)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (38, N'Venture Communications Int''l', N'60 Madison Ave', NULL, N'New York', N'NY', N'10010', N'(212) 555-4800', N'Neftaly', N'Thalia', 3, 540)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (39, N'Custom Printing Company', N'PO Box 7028', NULL, N'St Louis', N'MO', N'63177', N'(301) 555-1494', N'Myles', N'Harley', 3, 540)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (40, N'Nat Assoc of College Stores', N'500 East Lorain Street', NULL, N'Oberlin', N'OH', N'44074', NULL, N'Bernard', N'Lucy', 3, 572)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (41, N'Shields Design', N'415 E Olive Ave', NULL, N'Fresno', N'CA', N'93728', N'(559) 555-8060', N'Kerry', N'Rowan', 2, 403)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (42, N'Opamp Technical Books', N'1033 N Sycamore Ave.', NULL, N'Los Angeles', N'CA', N'90038', N'(213) 555-4322', N'Paris', N'Gideon', 3, 572)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (43, N'Capital Resource Credit', N'PO Box 39046', NULL, N'Minneapolis', N'MN', N'55439', N'(612) 555-0057', N'Maxwell', N'Jayda', 3, 589)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (44, N'Courier Companies, Inc', N'PO Box 5317', NULL, N'Boston', N'MA', N'02206', N'(508) 555-6351', N'Antavius', N'Troy', 4, 400)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (45, N'Naylor Publications Inc', N'PO Box 40513', NULL, N'Jacksonville', N'FL', N'32231', N'(800) 555-6041', N'Gerald', N'Kristofer', 3, 572)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (46, N'Open Horizons Publishing', N'Book Marketing Update', N'PO Box 205', N'Fairfield', N'IA', N'52556', N'(515) 555-6130', N'Damien', N'Deborah', 2, 540)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (47, N'Baker & Taylor Books', N'Five Lakepointe Plaza, Ste 500', N'2709 Water Ridge Parkway', N'Charlotte', N'NC', N'28217', N'(704) 555-3500', N'Bernardo', N'Brittnee', 3, 572)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (48, N'Fresno County Tax Collector', N'PO Box 1192', NULL, N'Fresno', N'CA', N'93715', N'(559) 555-3482', N'Brenton', N'Kila', 3, 574)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (49, N'Mcgraw Hill Companies', N'PO Box 87373', NULL, N'Chicago', N'IL', N'60680', N'(614) 555-3663', N'Holbrooke', N'Rashad', 3, 572)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (50, N'Publishers Weekly', N'Box 1979', NULL, N'Marion', N'OH', N'43305', N'(800) 555-1669', N'Carrollton', N'Priscilla', 3, 572)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (51, N'Blue Shield of California', N'PO Box 7021', NULL, N'Anaheim', N'CA', N'92850', N'(415) 555-5103', N'Smith', N'Kylie', 3, 510)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (52, N'Aztek Label', N'Accounts Payable', N'1150 N Tustin Ave', N'Anaheim', N'CA', N'92807', N'(714) 555-9000', N'Griffin', N'Brian', 3, 551)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (53, N'Gary McKeighan Insurance', N'3649 W Beechwood Ave #101', NULL, N'Fresno', N'CA', N'93711', N'(559) 555-2420', N'Jair', N'Caitlin', 3, 590)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (54, N'Ph Photographic Services', N'2384 E Gettysburg', NULL, N'Fresno', N'CA', N'93726', N'(559) 555-0765', N'Cheyenne', N'Kaylea', 3, 540)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (55, N'Quality Education Data', N'PO Box 95857', NULL, N'Chicago', N'IL', N'60694', N'(800) 555-5811', N'Misael', N'Kayle', 2, 540)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (56, N'Springhouse Corp', N'PO Box 7247-7051', NULL, N'Philadelphia', N'PA', N'19170', N'(215) 555-8700', N'Maeve', N'Clarence', 3, 523)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (57, N'The Windows Deck', N'117 W Micheltorena Top Floor', NULL, N'Santa Barbara', N'CA', N'93101', N'(800) 555-3353', N'Wood', N'Liam', 3, 536)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (58, N'Fresno Rack & Shelving Inc', N'4718 N Bendel Ave', NULL, N'Fresno', N'CA', N'93722', NULL, N'Baylee', N'Dakota', 2, 523)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (59, N'Publishers Marketing Assoc', N'627 Aviation Way', NULL, N'Manhatttan Beach', N'CA', N'90266', N'(310) 555-2732', N'Walker', N'Jovon', 3, 572)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (60, N'The Mailers Guide Co', N'PO Box 1550', NULL, N'New Rochelle', N'NY', N'10802', NULL, N'Lacy', N'Karina', 3, 540)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (61, N'American Booksellers Assoc', N'828 S Broadway', NULL, N'Tarrytown', N'NY', N'10591', N'(800) 555-0037', N'Angelica', N'Nashalie', 3, 574)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (62, N'Cmg Information Services', N'PO Box 2283', NULL, N'Boston', N'MA', N'02107', N'(508) 555-7000', N'Randall', N'Yash', 3, 540)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (63, N'Lou Gentile''s Flower Basket', N'722 E Olive Ave', NULL, N'Fresno', N'CA', N'93728', N'(559) 555-6643', N'Anum', N'Trisha', 1, 570)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (64, N'Texaco', N'PO Box 6070', NULL, N'Inglewood', N'CA', N'90312', NULL, N'Oren', N'Grace', 3, 582)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (65, N'The Drawing Board', N'PO Box 4758', NULL, N'Carol Stream', N'IL', N'60197', NULL, N'Mckayla', N'Jeffery', 2, 551)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (66, N'Ascom Hasler Mailing Systems', N'PO Box 895', NULL, N'Shelton', N'CT', N'06484', NULL, N'Lewis', N'Darnell', 3, 532)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (67, N'Bill Jones', N'Secretary Of State', N'PO Box 944230', N'Sacramento', N'CA', N'94244', NULL, N'Deasia', N'Tristin', 3, 589)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (68, N'Computer Library', N'3502 W Greenway #7', NULL, N'Phoenix', N'AZ', N'85023', N'(602) 547-0331', N'Aryn', N'Leroy', 3, 540)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (69, N'Frank E Wilber Co', N'2437 N Sunnyside', NULL, N'Fresno', N'CA', N'93727', N'(559) 555-1881', N'Millerton', N'Johnathon', 3, 532)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (70, N'Fresno Credit Bureau', N'PO Box 942', NULL, N'Fresno', N'CA', N'93714', N'(559) 555-7900', N'Braydon', N'Anne', 2, 555)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (71, N'The Fresno Bee', N'1626 E Street', NULL, N'Fresno', N'CA', N'93786', N'(559) 555-4442', N'Colton', N'Leah', 2, 572)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (72, N'Data Reproductions Corp', N'4545 Glenmeade Lane', NULL, N'Auburn Hills', N'MI', N'48326', N'(810) 555-3700', N'Arodondo', N'Cesar', 3, 400)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (73, N'Executive Office Products', N'353 E Shaw Ave', NULL, N'Fresno', N'CA', N'93710', N'(559) 555-1704', N'Danielson', N'Rachael', 2, 570)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (74, N'Leslie Company', N'PO Box 610', NULL, N'Olathe', N'KS', N'66061', N'(800) 255-6210', N'Alondra', N'Zev', 3, 570)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (75, N'Retirement Plan Consultants', N'6435 North Palm Ave, Ste 101', NULL, N'Fresno', N'CA', N'93704', N'(559) 555-7070', N'Edgardo', N'Salina', 3, 589)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (76, N'Simon Direct Inc', N'4 Cornwall Dr Ste 102', NULL, N'East Brunswick', N'NJ', N'08816', N'(908) 555-7222', N'Bradlee', N'Daniel', 2, 540)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (77, N'State Board Of Equalization', N'PO Box 942808', NULL, N'Sacramento', N'CA', N'94208', N'(916) 555-4911', N'Dean', N'Julissa', 1, 631)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (78, N'The Presort Center', N'1627 "E" Street', NULL, N'Fresno', N'CA', N'93706', N'(559) 555-6151', N'Marissa', N'Kyle', 3, 540)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (79, N'Valprint', N'PO Box 12332', NULL, N'Fresno', N'CA', N'93777', N'(559) 555-3112', N'Warren', N'Quentin', 3, 551)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (80, N'Cardinal Business Media, Inc.', N'P O Box 7247-7844', NULL, N'Philadelphia', N'PA', N'19170', N'(215) 555-1500', N'Eulalia', N'Kelsey', 2, 540)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (81, N'Wang Laboratories, Inc.', N'P.O. Box 21209', NULL, N'Pasadena', N'CA', N'91185', N'(800) 555-0344', N'Kapil', N'Robert', 2, 160)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (82, N'Reiter''s Scientific & Pro Books', N'2021 K Street Nw', NULL, N'Washington', N'DC', N'20006', N'(202) 555-5561', N'Rodolfo', N'Carlee', 2, 572)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (83, N'Ingram', N'PO Box 845361', NULL, N'Dallas', N'TX', N'75284', NULL, N'Yobani', N'Trey', 2, 541)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (84, N'Boucher Communications Inc', N'1300 Virginia Dr. Ste 400', NULL, N'Fort Washington', N'PA', N'19034', N'(215) 555-8000', N'Carson', N'Julian', 3, 540)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (85, N'Champion Printing Company', N'3250 Spring Grove Ave', NULL, N'Cincinnati', N'OH', N'45225', N'(800) 555-1957', N'Clifford', N'Jillian', 3, 540)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (86, N'Computerworld', N'Department #1872', N'PO Box 61000', N'San Francisco', N'CA', N'94161', N'(617) 555-0700', N'Lloyd', N'Angel', 1, 572)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (87, N'DMV Renewal', N'PO Box 942894', NULL, N'Sacramento', N'CA', N'94294', NULL, N'Josey', N'Lorena', 4, 568)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (88, N'Edward Data Services', N'4775 E Miami River Rd', NULL, N'Cleves', N'OH', N'45002', N'(513) 555-3043', N'Helena', N'Jeanette', 1, 540)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (89, N'Evans Executone Inc', N'4918 Taylor Ct', NULL, N'Turlock', N'CA', N'95380', NULL, N'Royce', N'Hannah', 1, 522)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (90, N'Wakefield Co', N'295 W Cromwell Ave Ste 106', NULL, N'Fresno', N'CA', N'93711', N'(559) 555-4744', N'Rothman', N'Nathanael', 2, 170)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (91, N'McKesson Water Products', N'P O Box 7126', NULL, N'Pasadena', N'CA', N'91109', N'(800) 555-7009', N'Destin', N'Luciano', 2, 570)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (92, N'Zip Print & Copy Center', N'PO Box 12332', NULL, N'Fresno', N'CA', N'93777', N'(233) 555-6400', N'Javen', N'Justin', 2, 540)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (93, N'AT&T', N'PO Box 78225', NULL, N'Phoenix', N'AZ', N'85062', NULL, N'Wesley', N'Alisha', 3, 522)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (94, N'Abbey Office Furnishings', N'4150 W Shaw Ave', NULL, N'Fresno', N'CA', N'93722', N'(559) 555-8300', N'Francis', N'Kyra', 2, 150)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (95, N'Pacific Bell', NULL, NULL, N'Sacramento', N'CA', N'95887', N'(209) 555-7500', N'Nickalus', N'Kurt', 2, 522)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (96, N'Wells Fargo Bank', N'Business Mastercard', N'P.O. Box 29479', N'Phoenix', N'AZ', N'85038', N'(947) 555-3900', N'Damion', N'Mikayla', 2, 160)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (97, N'Compuserve', N'Dept L-742', NULL, N'Columbus', N'OH', N'43260', N'(614) 555-8600', N'Armando', N'Jan', 2, 572)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (98, N'American Express', N'Box 0001', NULL, N'Los Angeles', N'CA', N'90096', N'(800) 555-3344', N'Story', N'Kirsten', 2, 160)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (99, N'Bertelsmann Industry Svcs. Inc', N'28210 N Avenue Stanford', NULL, N'Valencia', N'CA', N'91355', N'(805) 555-0584', N'Potter', N'Lance', 3, 400)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (100, N'Cahners Publishing Company', N'Citibank Lock Box 4026', N'8725 W Sahara Zone 1127', N'The Lake', N'NV', N'89163', N'(301) 555-2162', N'Jacobsen', N'Samuel', 4, 540)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (101, N'California Business Machines', N'Gallery Plz', N'5091 N Fresno', N'Fresno', N'CA', N'93710', N'(559) 555-5570', N'Rohansen', N'Anders', 2, 170)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (102, N'Coffee Break Service', N'PO Box 1091', NULL, N'Fresno', N'CA', N'93714', N'(559) 555-8700', N'Smitzen', N'Jeffrey', 4, 570)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (103, N'Dean Witter Reynolds', N'9 River Pk Pl E 400', NULL, N'Boston', N'MA', N'02134', N'(508) 555-8737', N'Johnson', N'Vance', 5, 589)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (104, N'Digital Dreamworks', N'5070 N Sixth Ste. 71', NULL, N'Fresno', N'CA', N'93711', NULL, N'Elmert', N'Ron', 3, 589)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (105, N'Dristas Groom & McCormick', N'7112 N Fresno St Ste 200', NULL, N'Fresno', N'CA', N'93720', N'(559) 555-8484', N'Aaronsen', N'Thom', 3, 591)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (106, N'Ford Motor Credit Company', N'Dept 0419', NULL, N'Los Angeles', N'CA', N'90084', N'(800) 555-7000', N'Snyder', N'Karen', 3, 582)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (107, N'Franchise Tax Board', N'PO Box 942857', NULL, N'Sacramento', N'CA', N'94257', NULL, N'Prado', N'Anita', 4, 507)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (108, N'Gostanian General Building', N'427 W Bedford #102', NULL, N'Fresno', N'CA', N'93711', N'(559) 555-5100', N'Bragg', N'Walter', 4, 523)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (109, N'Kent H Landsberg Co', N'File No 72686', N'PO Box 61000', N'San Francisco', N'CA', N'94160', N'(916) 555-8100', N'Stevens', N'Wendy', 3, 540)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (110, N'Malloy Lithographing Inc', N'5411 Jackson Road', N'PO Box 1124', N'Ann Arbor', N'MI', N'48106', N'(313) 555-6113', N'Regging', N'Abe', 3, 400)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (111, N'Net Asset, Llc', N'1315 Van Ness Ave Ste. 103', NULL, N'Fresno', N'CA', N'93721', NULL, N'Kraggin', N'Laura', 1, 572)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (112, N'Office Depot', N'File No 81901', NULL, N'Los Angeles', N'CA', N'90074', N'(800) 555-1711', N'Pinsippi', N'Val', 3, 570)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (113, N'Pollstar', N'4697 W Jacquelyn Ave', NULL, N'Fresno', N'CA', N'93722', N'(559) 555-2631', N'Aranovitch', N'Robert', 5, 520)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (114, N'Postmaster', N'Postage Due Technician', N'1900 E Street', N'Fresno', N'CA', N'93706', N'(559) 555-7785', N'Finklestein', N'Fyodor', 1, 552)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (115, N'Roadway Package System, Inc', N'Dept La 21095', NULL, N'Pasadena', N'CA', N'91185', NULL, N'Smith', N'Sam', 4, 553)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (116, N'State of California', N'Employment Development Dept', N'PO Box 826276', N'Sacramento', N'CA', N'94230', N'(209) 555-5132', N'Articunia', N'Mercedez', 1, 631)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (117, N'Suburban Propane', N'2874 S Cherry Ave', NULL, N'Fresno', N'CA', N'93706', N'(559) 555-2770', N'Spivak', N'Harold', 3, 521)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (118, N'Unocal', N'P.O. Box 860070', NULL, N'Pasadena', N'CA', N'91186', N'(415) 555-7600', N'Bluzinski', N'Rachael', 3, 582)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (119, N'Yesmed, Inc', N'PO Box 2061', NULL, N'Fresno', N'CA', N'93718', N'(559) 555-0600', N'Hernandez', N'Reba', 2, 589)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (120, N'Dataforms/West', N'1617 W. Shaw Avenue', N'Suite F', N'Fresno', N'CA', N'93711', NULL, N'Church', N'Charlie', 3, 551)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (121, N'Zylka Design', N'3467 W Shaw Ave #103', NULL, N'Fresno', N'CA', N'93711', N'(559) 555-8625', N'Ronaldsen', N'Jaime', 3, 403)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (122, N'United Parcel Service', N'P.O. Box 505820', NULL, N'Reno', N'NV', N'88905', N'(800) 555-0855', N'Beauregard', N'Violet', 3, 553)
INSERT Vendors (VendorID, VendorName, VendorAddress1, VendorAddress2, VendorCity, VendorState, VendorZipCode, VendorPhone, VendorContactLName, VendorContactFName, DefaultTermsID, DefaultAccountNo) VALUES (123, N'Federal Express Corporation', N'P.O. Box 1140', N'Dept A', N'Memphis', N'TN', N'38101', N'(800) 555-4091', N'Bucket', N'Charlie', 3, 553)
SET IDENTITY_INSERT Vendors OFF
USE AP
GO
IF EXISTS( SELECT 1 FROM SYS.OBJECTS WHERE name = 'FK_Invoices_Vendors')
BEGIN
ALTER TABLE Invoices DROP CONSTRAINT FK_Invoices_Vendors
END
ALTER TABLE Invoices WITH NOCHECK ADD CONSTRAINT FK_Invoices_Vendors FOREIGN KEY(VendorID)
REFERENCES Vendors (VendorID)
GO
ALTER TABLE Invoices CHECK CONSTRAINT FK_Invoices_Vendors
GO
USE AP
GO
SELECT VendorName, InvoiceNumber, InvoiceDate, InvoiceTotal
FROM Vendors
INNER JOIN Invoices ON Vendors.vendorID = Invoices.vendorID
WHERE InvoiceTotal >= 500
ORDER BY VendorName, InvoiceTotal DESC;
USE AP
GO
SELECT VendorName, InvoiceNumber, InvoiceDate, InvoiceTotal
FROM Invoices
INNER JOIN Vendors ON Invoices.vendorID = Vendors.vendorID
WHERE InvoiceTotal >= 500
ORDER BY VendorName, InvoiceDate DESC;
USE AP
GO
SELECT V.VendorName, I.InvoiceNumber, I.InvoiceDate, I.InvoiceTotal
FROM Invoices I
INNER JOIN Vendors V ON I.VendorID = V.VendorID
WHERE I.InvoiceTotal >= 500
ORDER BY V.VendorName, I.InvoiceDate DESC;
Impariamo come utilizzare le istruzioni INSERT, UPDATE e DELETE per modificare i dati in una tabella. L'istruzione INSERT è utilizzata per aggiungere una riga alla tabella Fatture. La clausola INSERT nomina le colonne i cui valori sono forniti nella clausola VALUES. Imparerai di più sulla specifica dei nomi e dei valori delle colonne nella lezione 7. Per ora, tieni presente che devi specificare un valore per una colonna a meno che non si tratti di una colonna Identity, di una colonna che consente valori null o di una colonna con un valore predefinito. Le due istruzioni UPDATE illustrano come modificare i dati in una o più righe di una tabella. La prima istruzione, ad esempio, assegna un valore di 35,89 nella colonna CreditTotal della fattura nella tabella Fatture con numero fattura 367447. La seconda fattura aggiunge 30 giorni a InvoiceDueDate per ogni riga nella tabella Fatture la cui colonna TermsID ha un valore pari a 4. Per eliminare righe da una tabella, utilizzare l'istruzione DELETE. La prima istruzione DELETE in questa figura, ad esempio, elimina la fattura con numero 4-342-8069 dalla tabella Fatture. La seconda istruzione DELETE elimina tutte le fatture con saldo in scadenza pari a zero. Prima di continuare, dovresti sapere che le istruzioni INSERT, UPDATE e DELETE vengono spesso chiamate query di azione o comandi perché eseguono un'azione sui dati. Al contrario, le istruzioni SELECT vengono chiamate query poiché leggono semplicemente i dati. Quando utilizzo il termine query in questo corso, allora, di solito mi riferisco a un'istruzione SELECT.
USE AP
GO
INSERT INTO Invoices (VendorID, InvoiceNumber, InvoiceDate, InvoiceTotal, PaymentTotal, CreditTotal, TermsID, InvoiceDueDate)
VALUES
(12, '3289175', CAST(N'2022-04-18' AS Date), 165, 0, 165, 3, CAST(N'2022-05-18' AS Date));
USE AP
GO
UPDATE Invoices
SET CreditTotal = 35.89
WHERE InvoiceNumber = '367447';
USE AP
GO
UPDATE Invoices
SET InvoiceDueDate = DATEADD (DAY , 30 , InvoiceDueDate )
WHERE TermsID = 4;
USE AP
GO
DELETE FROM Invoices
WHERE InvoiceNumber = '4-342-8069';
USE AP
GO
DELETE FROM Invoices
WHERE InvoiceTotal - PaymentTotal - CreditTotal = 0;
SQL è un linguaggio a forma libera. Ciò significa che puoi includere interruzioni di riga, spazi e rientro senza influenzare il modo in cui il database interpreta il codice. Inoltre, SQL non fa distinzione tra maiuscole e minuscole come alcuni linguaggi. Ciò significa che puoi utilizzare lettere maiuscole o minuscole o una combinazione delle due senza influenzare il modo in cui il database interpreta il codice. Sebbene sia possibile codificare le istruzioni SQL con uno stile a forma libera, suggeriamo di seguire le raccomandazioni di codifica presentate. Per prima cosa, tu dovresti iniziare ogni clausola di un'istruzione su una nuova riga. Inoltre, dovresti continue le clausole lunghe su più righe e dovresti rientrare il continuato linee. Dovresti anche scrivere in maiuscolo la prima lettera di ciascuna parola chiave in una istruzione per renderla più facile da identificare, dovresti scrivere in maiuscolo la prima lettera di ogni parola nome di tabella e colonna e dovresti terminare ogni istruzione con un punto e virgola. Sebbene il punto e virgola non sia attualmente richiesto nella maggior parte dei casi, sarà inserito in a versione futura di SQL Server. Quindi dovresti abituarti a codificarlo adesso. Finalmente, dovresti usare i commenti per documentare il codice difficile da capire. Gli esempi illustrano queste raccomandazioni di codifica. Il primo esempio presenta un'istruzione SELECT non formattata. Come vedi, questa istruzione è difficile da leggere. Al contrario, questa istruzione è molto più semplice da leggere dopo aver applicato i nostri consigli sulla codifica, come puoi vedere nel secondo esempio. Il terzo esempio è il tipo di codifica che preferisco con tutti i comandi SQL in maiuscolo. Il quarto esempio illustra come codificare un commento di blocco. Questo tipo di commento è tipicamente codificato all'inizio di un'istruzione e viene utilizzato per documentare l'intera istruzione. I commenti in blocco possono essere utilizzati anche all'interno di una istruzione per descrivere blocchi di codice, ma non è comune. Il quinto esempio in questa figura include un commento a riga singola. Questo tipo di commento viene in genere utilizzato per documentare una singola riga di codice. Una riga sola di commento può essere codificato su una riga separata come mostrato in questo esempio, oppure può esserlo codificato alla fine di una riga di codice. Sebbene molti programmatori cospargano il loro codice di commenti, questo non dovrebbe essere necessario se scrivi un codice facile da leggere e comprendere. Dovresti invece utilizzare i commenti solo per chiarire parti di codice difficili da capire. Quindi, se cambi il codice, dovresti essere sicuro di cambiare anche i commenti. In questo modo, i commenti rappresenteranno sempre accuratamente cosa il codice fa.
USE AP
GO
select invoicenumber, invoicedate, invoicetotal,
invoicetotal - paymenttotal - credittotal as balancedue
from invoices where invoicetotal - paymenttotal -
credittotal > 0 order by invoicedate
USE AP
GO
Select InvoiceNumber, InvoiceDate, InvoiceTotal,
InvoiceTotal - PaymentTotal - CreditTotal As BalanceDue
From Invoices
Where InvoiceTotal - PaymentTotal - CreditTotal > 0
Order By InvoiceDate;
USE AP
GO
SELECT InvoiceNumber, InvoiceDate, InvoiceTotal,
InvoiceTotal - PaymentTotal - CreditTotal AS BalanceDue
FROM Invoices
WHERE InvoiceTotal - PaymentTotal - CreditTotal > 0
ORDER BY InvoiceDate;
USE AP
GO
/*
Author: Carlo Mainardi
Date: 08/02/2025
*/
SELECT InvoiceNumber, InvoiceDate, InvoiceTotal,
InvoiceTotal - PaymentTotal - CreditTotal AS BalanceDue
FROM Invoices;
USE AP
GO
SELECT InvoiceNumber, InvoiceDate, InvoiceTotal,
InvoiceTotal - PaymentTotal - CreditTotal AS BalanceDue
-- The fourth column calculates the balance due for each invoice
FROM Invoices;
Oltre alle tabelle che hai già conosciuto, un database relazionale può contenere altri oggetti. Nei due argomenti che seguono ti verranno presentati quattro di questi oggetti: viste, procedure memorizzate, trigger e funzioni definite dall'utente. Quindi, nella lezione 4, imparerai di più su come codificare e utilizzare questi oggetti.
Una vista è una query predefinita archiviata in un database. Per creare una vista, si utilizza l'istruzione CREATE VIEW come mostrato qui sotto. Questa istruzione fa sì che l'istruzione SELECT specificata venga archiviata nel database. In in questo caso, l'istruzione CREATE VIEW crea una vista denominata VendorsMin che recupera tre colonne dalla tabella Fornitori. Una volta creata la vista, puoi fare riferimento ad essa invece che a una tabella nella maggior parte delle istruzioni SQL. Per questo motivo, una vista viene talvolta definita una tabella visualizzata. Ad esempio, l'istruzione SELECT in questo esempio si riferisce alla vista VendorsMin anziché nella tabella Vendors. Si noti che questa SELECT fa uso dell'operatore asterisco (*), che fa sì che tutte e tre le colonne definite siano restituite dalla vista. Se lo desideri, puoi consentire a un utente di eseguire query su determinate visualizzazioni ma non sulle tabelle su cui si basano le visualizzazioni. In questo modo, le visualizzazioni possono essere utilizzate per limitare il file colonne e righe di una tabella che l'utente può vedere. Inoltre, puoi semplificare l'accesso di un utente a una o più tabelle codificando query SELECT complesse come viste.
USE AP
GO
CREATE VIEW VendorsMin AS
SELECT VendorName, VendorState, VendorPhone
FROM Vendors;
GO
USE AP
GO
SELECT * FROM VendorsMin
WHERE VendorState = 'CA'
ORDER BY VendorName;
Una stored procedure è un insieme di una o più istruzioni SQL memorizzate insieme in un database. Per creare una stored procedure, utilizzare CREATE PROCEDURE come mostrato qui sotto. La procedura memorizzata contiene una singola istruzione SELECT. Per utilizzare la procedura memorizzata, inviare una richiesta per la sua esecuzione. Un modo per farlo è utilizzare l'istruzione Transact-SQL EXEC. È inoltre possibile eseguire una procedura memorizzata da un programma applicativo emettendo l'apposita dichiarazione. Come fare dipende dal linguaggio di programmazione e dall'API che stai utilizzando per accedere al database. Quando il server riceve la richiesta, esegue la procedura memorizzata. Se il la procedura memorizzata contiene un'istruzione SELECT come quella in questo esempio, il set di risultati viene inviato al programma chiamante. Se la procedura memorizzata contiene INSERT, UPDATE o DELETE, l'elaborazione appropriata è eseguita. Si noti che la procedura memorizzata in questo esempio accetta un parametro di input denominato @State dal programma chiamante. Il valore di questo parametro è quindi sostituito nella clausola WHERE in modo che solo i fornitori nello specifico stato siano inclusi nel set di risultati. Una volta terminata l'elaborazione, la procedura memorizzata può anche restituire i parametri di output al programma chiamante. Inoltre, le procedure memorizzate possono includere un linguaggio di controllo del flusso che determina l'elaborazione eseguita in base a condizioni specifiche. Imparerai di più su come codificare le stored procedures nella lezione 15. Un trigger è un tipo speciale di procedura memorizzata, che viene eseguita automaticamente quando viene eseguita un'operazione di inserimento, aggiornamento o eliminazione su una tabella o quando un'istruzione viene eseguita su un database. I trigger vengono utilizzati più spesso per la convalida dati prima che una riga venga aggiunta o aggiornata, ma possono anche essere utilizzati per mantenere le relazioni tra le tabelle o per fornire informazioni sulle modifiche alla definizione di tabelle nel database. Anche una funzione definita dall'utente, o UDF, è un tipo speciale di procedura. Dopo la sua elaborazione, una UDF può restituire un singolo valore o un'intera tabella al programma chiamante. Imparerai come codificare e utilizzare funzioni definite dall'utente e trigger nella lezione 15.
USE AP
GO
CREATE PROCEDURE spVendorsByState @Statevar char(2) AS
SELECT vendorName, VendorState, VendorPhone
FROM Vendors
WHERE vendorState = @Statevar
ORDER BY VendorName;
GO
USE AP
GO
EXEC spVendorsByState 'CA';
Questo corso ti insegna come utilizzare SQL dall'interno dell'ambiente SQL Server. Tuttavia, SQL è comunemente utilizzato anche dai programmi applicativi. Negli argomenti che seguono avrai un'idea generale di come funziona. Vedrai che è facile riconoscere le istruzioni SQL in un'applicazione perché sono codificate proprio come se fossero in esecuzione nell'ambiente SQL Server.
La Figura 1-18 mostra due modi comuni con cui un'applicazione accede a un database SQL Server. Innanzitutto, puoi accedere a un database SQL Server da un'applicazione .NET scritta utilizzando un linguaggio .NET come C# o Visual Basic. Per farlo puoi utilizzare ADO.NET. Questo è un modello di accesso ai dati sviluppato da Microsoft che può comunicare direttamente con SQL Server. Poiché ADO.NET utilizza un'architettura dati disconnessa, il suo utilizzo è molto diffuso, in particolare per le applicazioni basate sul web. Questo è perché le applicazioni basate sul Web funzionano necessariamente con dati disconnessi. Ciò significa che una volta che un'applicazione ha inviato una risposta al client, non mantiene connessione al database. Il secondo modello di accesso ai dati in questa figura è JDBC, utilizzato da applicazioni Java. A differenza di ADO.NET, JDBC richiede un software aggiuntivo, chiamato driver, per comunicare con SQL Server.
Per illustrare come utilizzare un modello di accesso ai dati, la Figura 1-19 presenta gli oggetti ADO.NET di base utilizzati in un'applicazione .NET. Poi, viene illustrato il codice reale che crea e utilizza questi oggetti. Tieni presente, tuttavia, che c'è molto di più che devi sapere su ADO.NET oltre a ciò che viene presentato qui. Quando sviluppi un'applicazione .NET, puoi sceglierne diversi linguaggi, ma il più popolare è C#. La scelta del linguaggio è in gran parte una questione di preferenze personali. Per accedere a un database utilizzando gli oggetti mostrati qui, dovete eseguire command objects. Quindi, viene utilizzato un oggetto di connessione per connettersi al database, eseguire l'operazione richiesta e restituire il risultato. Se esegui un comando che contiene un'istruzione SELECT, il risultato è un set di risultati che contiene le righe richieste. Quindi, puoi leggere le righe nel set di risultati utilizzando un oggetto data reader. Se esegui un comando che contiene INSERT, UPDATE o DELETE, il risultato è un valore che indica se l'operazione eseguita è riuscita. Sebbene questa sia una tecnica comune per lavorare con ADO.NET, dovrebbe sapere che ci sono altre tecniche. Ad esempio, un modo rapido per creare un'applicazione di database consiste nell'utilizzare la funzionalità delle origini dati di Visual Studio. Quando usi questa funzionalità, Visual Studio genera il codice ADO.NET per funzionare con il database. Questo è un modo semplice e veloce per sviluppare semplici applicazioni o per prototipare applicazioni più grandi.
L'esempio che segue presenta il codice C# che utilizza gli oggetti ADO.NET per recuperare i dati da un database SQL Server. Questa funzione proviene da una semplice applicazione che accetta un ID fornitore dall'utente, recupera le informazioni per il fornitore con quell'ID dalla tabella Fornitori, quindi visualizza tali informazioni. Sebbene non mi aspetto che tu capisca questo codice, spero che ti dia un'idea di come si utilizza SQL da un programma applicativo. Questa funzione inizia creando un nuovo oggetto Venditore. Anche se non è mostrato qui, questo oggetto contiene proprietà che corrispondono alle colonne nella tabella Fornitori. Quindi, questa funzione crea l'oggetto di connessione che sarà utilizzato per connettersi al database e imposta la stringa di connessione per quell'oggetto. La stringa di connessione fornisce ad ADO.NET le informazioni per connettersi al database. Una volta impostata la stringa di connessione, il successivo gruppo di istruzioni definisce il file l'oggetto command che verrà eseguito per recuperare i dati dal database. La prima istruzione in questo gruppo crea l'oggetto comand. Poi, l'istruzione assegna l'oggetto connessione all'oggetto comando. Ciò significa che quando viene eseguita l'istruzione questo oggetto conterrà, utilizzerà la stringa di connessione nell'oggetto connessione per connettersi al database. L'istruzione successiva in questo gruppo specifica quale sarà l'istruzione SELECT eseguita. Se rivedi questa istruzione, vedrai che la clausola WHERE include un parametro denominato @VendorID che conterrà il valore di ID del venditore. Questo valore è impostato dall'ultima istruzione in questo gruppo. L'istruzione successiva apre la connessione al database. Poi, il successivo gruppo di istruzioni recupera la riga del fornitore e la memorizza in un oggetto Vendor. Fatto ciò, inizia eseguendo il comando per creare un lettore di dati. Quindi, se viene trovato il fornitore, assegna alle proprietà i valori delle colonne della riga dell'oggetto Venditore. In caso contrario, l'oggetto Vendor è impostato su Null. Dopo che tutte le righe sono state elaborate, il lettore dati e la connessione vengono chiusi. Quindi, l'oggetto Vendor viene restituito alla procedura chiamante. Ora che hai esaminato questo codice, puoi vedere che c'è molto da fare nell'accesso a un database SQL Server da un programma applicativo. Tuttavia, si può anche notare che solo un'istruzione in questo esempio implica effettivamente l'utilizzo di SQL. Questa è l'istruzione che specifica l'istruzione SELECT da eseguire. Naturalmente, se il programma prevedesse anche l'aggiornamento dei dati nella tabella Fornitori, esso includerebbe le istruzioni INSERT, UPDATE e DELETE. Con le competenze che imparerai in questo corso non avrai problemi a codificare le istruzioni SQL necessarie per le vostre applicazioni.
public static Vendor Getvendor(int vendorID)
{
vendor vendor= new vendor();
// Create the connection object
SqlConnection connection =new SqlConnection();
connection.ConnectionString = "Server=SERVER2025;Database=AP;Persist Security Info=True;User ID=sa;Password=+++++++++++++;MultipleActiveResultSets=true;Encrypt=false";
// Create the command object and set the connection, SELECT statement, and parameter value
SqlCommand selectCommand = new SqlCommand();
selectCommand.Connection = connection;
selectCommand.CommandText = "SELECT VendorID, VendorName, VendorAddressl, VendorAddress2, VendorCity, VendorState, VendorZipCode FROM Vendors WHERE VendorID = @VendorID";
selectCommand.Parameters.AddWithValue("@VendorID", vendorID);
// Open the connection to the database
connection.Open();
// Retrieve the row specified by the SELECT statement and load it into the Vendor object
SqlDataReader reader = selectCommand.ExecuteReader();
if (reader.Read())
{
vendor.vendorID = (int)reader["VendorID"];
vendor.vendorName = reader["VendorName"].ToString();
vendor.vendorAddressl = reader["VendorAddressl"].ToString();
vendor.vendorAddress2 = reader["VendorAddress2"].ToString();
vendor.vendorCity = reader["VendorCity"].ToString();
vendor.vendorState = reader["VendorState"].ToString();
vendor.vendorZipCode = reader["VendorZipCode"] .ToString();
}
else
{
vendor = null;
}
reader.Close();
// Close the connection to the database
connection.Close();
return vendor;
}