Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Database SQL di
AzureIstanza gestita di SQL di
AzurePiattaforma di analisi (PDW)
Database SQL in Microsoft Fabric
Note
Il percorso di apprendimentoIntroduzione all'esecuzione di query con Transact-SQL offre contenuti più approfonditi, oltre a esempi pratici.
In questa lezione vengono illustrate le procedure per creare un database, creare in quest'ultimo una tabella, nonché come accedere ai dati della tabella e modificarli. Poiché l'obiettivo di questa lezione è offrire un'introduzione all'uso di Transact-SQL, non verranno usate né descritte le numerose opzioni disponibili per le istruzioni.
Le istruzioni Transact-SQL possono essere scritte e inviate al motore di database nei modi seguenti:
Mediante SQL Server Management Studio. Questa esercitazione presuppone che si stia usando Management Studio, ma è anche possibile usare Management Studio Express, disponibile come download gratuito dall'Area download Microsoft.
Tramite l'utilità sqlcmd .
Mediante la connessione da un'applicazione creata dall'utente.
Il codice viene eseguito nel motore di database nello stesso modo e con le stesse autorizzazioni, indipendentemente da come vengono inviate le istruzioni.
Per eseguire istruzioni Transact-SQL in Management Studio, aprire Management Studio e connettersi a un'istanza del motore di database di SQL Server.
Prerequisites
Per completare questa esercitazione è necessario avere SQL Server Management Studio e l'accesso a un'istanza di SQL Server.
- Installare SQL Server Management Studio.
Se non è disponibile un'istanza di SQL Server, crearne una. Per crearne una, selezionare la piattaforma nei collegamenti seguenti. Se si sceglie Autenticazione SQL, usare le credenziali di accesso di SQL Server.
- Windows: scaricare SQL Server 2022 Developer Edition.
- Linux: Guida introduttiva: Eseguire immagini del contenitore Linux di SQL Server con Docker.
Creare un database
Analogamente a numerose altre istruzioni, l'istruzione CREATE DATABASE ha un parametro obbligatorio, ovvero il nome del database.
CREATE DATABASE include anche molti parametri facoltativi, ad esempio il percorso su disco in cui inserire i file del database. Quando si esegue CREATE DATABASE senza parametri facoltativi, SQL Server usa i valori predefiniti per molti di tali parametri.
In una finestra dell'editor di query digitare ma non eseguire il codice seguente:
CREATE DATABASE TestData GOUsare il puntatore per selezionare le parole
CREATE DATABASEe quindi premere F1. L'articoloCREATE DATABASEdovrebbe essere aperto. È possibile usare questa tecnica per trovare la sintassi completa diCREATE DATABASEe delle altre istruzioni usate in questa esercitazione.Nell'editor di query premere F5 per eseguire l'istruzione e creare un database denominato
TestData.
Quando si crea un database, SQL Server esegue una copia del database model a cui assegna il nome del database specificato. L'operazione dovrebbe richiedere solo alcuni secondi a meno che non si specifichi una dimensione iniziale per il database particolarmente grande come parametro facoltativo.
Note
La parola chiave GO separa le istruzioni quando più di un'istruzione viene inviata in un singolo batch.
GO è facoltativo quando il batch contiene una sola istruzione.
Crea una tabella
Si applica a:SQL Server
Database SQL di Azure
Azure Synapse Analytics
Piattaforma di strumenti analitici (PDW)
Per creare una tabella, è necessario specificare un nome per la tabella e i nomi e i tipi di dati di ogni colonna di quest'ultima. È anche consigliabile indicare se in ogni colonna sono consentiti valori Null. Per creare una tabella è necessario avere l'autorizzazione CREATE TABLE e l'autorizzazione ALTER SCHEMA per lo schema che conterrà la tabella. Il ruolo predefinito del database db_ddladmin dispone di tali autorizzazioni.
La maggior parte delle tabelle dispone di una chiave primaria costituita da una o più colonne. La chiave primaria è sempre univoca. Nel motore di database è applicata la limitazione per cui nessun valore di chiave primaria può essere ripetuto nella tabella.
Per un elenco di tipi di dati e collegamenti per una descrizione di ognuno, vedere Tipi di dati.
Note
È possibile installare il motore di database in modo che venga fatta o meno distinzione tra maiuscole e minuscole. Se nel motore di database tale distinzione è rilevante, i nomi degli oggetti devono sempre avere la stessa combinazione di maiuscole/minuscole. Una tabella denominata OrderData è ad esempio diversa da una tabella denominata ORDERDATA. Se nel motore di database non viene fatta distinzione tra maiuscole e minuscole, i nomi delle due tabelle sono considerati equivalenti e quindi ogni nome può essere usato una sola volta.
Connessione dell'editor di query al database TestData
Nella finestra dell'editor di query digitare ed eseguire il codice seguente per connettersi al database TestData .
USE TestData
GO
Creare la tabella
Nella finestra dell'editor di query digitare ed eseguire il codice seguente per creare una tabella denominata Products. Le colonne nella tabella vengono denominate ProductID, ProductName, Pricee ProductDescription. La colonna ProductID rappresenta la chiave primaria della tabella.
int, varchar(25), moneye varchar(max) sono tutti tipi di dati. Le uniche colonne che possono non contenere dati quando viene inserita o modificata un riga sono Price e ProductionDescription . Questa istruzione contiene un elemento facoltativo (dbo.) che corrisponde a uno schema. Lo schema rappresenta l'oggetto di database a cui appartiene la tabella. Se si è un amministratore, dbo è lo schema predefinito.
dbo corrisponde al proprietario del database.
CREATE TABLE dbo.Products
(ProductID int PRIMARY KEY NOT NULL,
ProductName varchar(25) NOT NULL,
Price money NULL,
ProductDescription varchar(max) NULL)
GO
Inserire e aggiornare dati in una tabella
Dopo aver creato la Products tabella, è possibile inserire i dati nella tabella usando l'istruzione INSERT . Dopo l'inserimento dei dati, si modificherà il contenuto di una riga usando un'istruzione UPDATE . Utilizzare la WHERE clausola dell'istruzione per limitare l'aggiornamento UPDATE a una singola riga. Le quattro istruzioni immettono i dati seguenti.
| ProductID | ProductName | Price | ProductDescription |
|---|---|---|---|
| 1 | Clamp | 12.48 | Blocco workbench |
| 50 | Screwdriver | 3.17 | Testa piatta |
| 75 | Barra pneumatici | Strumento per cambiare pneumatici. | |
| 3000 | 3 mm staffa | 0.52 |
La sintassi di base è: INSERT, nome tabella, elenco di colonne, VALUESe quindi un elenco dei valori da inserire. I due trattini davanti a una riga indicano che si tratta di un commento il cui testo viene ignorato dal compilatore. In questo caso il commento descrive una variazione consentita della sintassi.
Inserire dati in una tabella
Eseguire l'istruzione seguente per inserire una riga nella tabella
Productscreata nell'attività precedente.-- Standard syntax INSERT dbo.Products (ProductID, ProductName, Price, ProductDescription) VALUES (1, 'Clamp', 12.48, 'Workbench clamp') GOSe l'inserimento ha esito positivo, procedere con il passaggio successivo.
Se l'inserimento non riesce, potrebbe essere dovuto al fatto che la
Producttabella contiene già una riga con tale ID prodotto. Per continuare, eliminare tutte le righe della tabella e ripetere il passaggio precedente. TRUNCATE TABLE elimina tutte le righe nella tabella.Eseguire il comando seguente per eliminare tutte le righe nella tabella:
TRUNCATE TABLE TestData.dbo.Products; GODopo aver troncato la tabella, ripetere il comando
INSERTin questo passaggio.L'istruzione seguente illustra come modificare l'ordine in cui vengono specificati i parametri scambiando la posizione di
ProductIDeProductNamein entrambi gli elenchi di campi (tra parentesi) e nell'elenco dei valori.-- Changing the order of the columns INSERT dbo.Products (ProductName, ProductID, Price, ProductDescription) VALUES ('Screwdriver', 50, 3.17, 'Flat head') GOL'istruzione seguente illustra che i nomi delle colonne sono facoltativi a condizione che i valori siano elencati nell'ordine corretto. Questa sintassi comune non è tuttavia consigliata poiché potrebbe rendere il codice di difficile comprensione per gli altri utenti.
NULLviene specificato per la colonnaPriceperché il prezzo del prodotto corrispondente non è ancora noto.-- Skipping the column list, but keeping the values in order INSERT dbo.Products VALUES (75, 'Tire Bar', NULL, 'Tool for changing tires.') GOIl nome dello schema è facoltativo, purché si acceda a una tabella nello schema predefinito. Poiché la colonna
ProductDescriptionsupporta valori Null e non viene specificato alcun valore, il nome e il valore della colonnaProductDescriptionverranno eliminati completamente dall'istruzione.-- Dropping the optional dbo and dropping the ProductDescription column INSERT Products (ProductID, ProductName, Price) VALUES (3000, '3 mm Bracket', 0.52) GO
Aggiornare la tabella dei prodotti
Digitare ed eseguire l'istruzione UPDATE seguente per modificare il valore ProductName del secondo prodotto da Screwdriverin Flat Head Screwdriver.
UPDATE dbo.Products
SET ProductName = 'Flat Head Screwdriver'
WHERE ProductID = 50
GO
Leggere dati da una tabella
Usare l'istruzione SELECT per leggere i dati in una tabella. L'istruzione SELECT è una delle istruzioni Transact-SQL più importanti e la sintassi presenta molte varianti. Per questa esercitazione si useranno cinque versioni di base.
Leggere i dati di una tabella
Per leggere i dati archiviati nella tabella
Products, digitare ed eseguire le istruzioni seguenti.-- The basic syntax for reading data from a single table SELECT ProductID, ProductName, Price, ProductDescription FROM dbo.Products GOÈ possibile usare un asterisco (
*) per selezionare tutte le colonne nella tabella. L'asterisco è per le query ad hoc. Specificare l'elenco delle colonne nel codice permanente in modo che l'istruzione restituisca le colonne previste anche se viene successivamente aggiunta una nuova colonna alla tabella.-- Returns all columns in the table -- Does not use the optional schema, dbo SELECT * FROM Products GOÈ possibile omettere le colonne che non si desidera vengano restituite. Le colonne vengono restituite nell'ordine in cui sono elencate.
-- Returns only two of the columns from the table SELECT ProductName, Price FROM dbo.Products GOUtilizzare una clausola
WHEREper limitare le righe restituite.-- Returns only two of the records in the table SELECT ProductID, ProductName, Price, ProductDescription FROM dbo.Products WHERE ProductID < 60 GOÈ possibile utilizzare i valori nelle colonne quando vengono restituiti. L'esempio seguente esegue un'operazione matematica sulla colonna
Price. Alle colonne modificate in questo modo non viene assegnato un nome a meno che non se ne specifichi uno utilizzando la parola chiaveAS.-- Returns ProductName and the Price including a 7% tax -- Provides the name CustomerPays for the calculated column SELECT ProductName, Price * 1.07 AS CustomerPays FROM dbo.Products GO
Funzioni utili in un'istruzione SELECT
Per informazioni su alcune funzioni che è possibile usare per usare i dati nelle SELECT istruzioni, vedere gli articoli seguenti:
Creare viste e stored procedure
Una vista è un'istruzione archiviata SELECT e una stored procedure è una o più istruzioni Transact-SQL eseguite come batch.
Sulle viste è possibile eseguire query come con le tabelle, ad eccezione del fatto che le viste non accettano parametri. Le stored procedure sono più complesse delle viste Le stored procedure possono avere parametri di input e output e possono contenere istruzioni per controllare il flusso del codice, ad esempio IF le istruzioni e WHILE . È consigliabile usare stored procedure per tutte le azioni ripetitive nel database.
Per questo esempio, si usa CREATE VIEW per creare una vista che seleziona solo due delle colonne della Products tabella. Si usa CREATE PROCEDURE quindi per creare una stored procedure che accetta un parametro price e restituisce solo i prodotti che costano meno del valore del parametro specificato.
Crea una visualizzazione
Eseguire l'istruzione seguente per creare un vista che esegue un'istruzione SELECT e restituisce i nomi e i prezzi dei prodotti.
CREATE VIEW vw_Names
AS
SELECT ProductName, Price FROM Products;
GO
Test della vista
Le viste vengono utilizzate in modo analogo alle tabelle. Utilizzare un'istruzione SELECT per accedere a una vista.
SELECT * FROM vw_Names;
GO
Creare una stored procedure
L'istruzione seguente crea una stored procedure denominata pr_Namesche accetta un parametro di input denominato @VarPrice con tipo di dati money. La stored procedure visualizza il testo Products less than concatenata al parametro di input modificato da tipo di dati money in tipo di dati carattere varchar(10) . La procedura esegue quindi un'istruzione SELECT sulla vista, passando il parametro di input come parte della clausola WHERE . Ciò restituisce tutti i prodotti il cui costo è inferiore al valore del parametro di input.
CREATE PROCEDURE pr_Names @VarPrice money
AS
BEGIN
-- The print statement returns text to the user
PRINT 'Products less than ' + CAST(@VarPrice AS varchar(10));
-- A second statement starts here
SELECT ProductName, Price FROM vw_Names
WHERE Price < @VarPrice;
END
GO
Test della stored procedure
Per testare la stored procedure, digitare ed eseguire l'istruzione seguente. La procedura restituirà i nomi di due prodotti immessi nella tabella Products nella lezione 1 con prezzo inferiore a 10.00.
EXECUTE pr_Names 10.00;
GO