Qui creiamo tre tabelle in SQL Server, quindi analizziamo lo script che le ha create. Eseguiamo anche un altro script per verificare che la tabella sia stata creata.
In precedenza abbiamo creato un database da uno script. Tuttavia, il database è un database vuoto:non contiene tabelle o dati.
Ora creeremo alcune tabelle per il nostro database.
Innanzitutto, come aggiornamento, ecco cosa abbiamo fatto finora:
CREATE DATABASE Music;
Ciò ha creato un database vuoto. Se non l'hai ancora fatto, esegui lo script.
Ora esegui il seguente script:
USE Music; CREATE TABLE Artists ( ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY, ArtistName nvarchar(255) NOT NULL, ActiveFrom date ); GO CREATE TABLE Genres ( GenreId int IDENTITY(1,1) NOT NULL PRIMARY KEY, Genre nvarchar(50) NOT NULL ); CREATE TABLE Albums ( AlbumId int IDENTITY(1,1) NOT NULL PRIMARY KEY, AlbumName nvarchar(255) NOT NULL, ReleaseDate date NOT NULL, ArtistId int NOT NULL, GenreId int NOT NULL CONSTRAINT FK_Albums_Artists FOREIGN KEY (ArtistId) REFERENCES dbo.Artists (ArtistId) ON DELETE NO ACTION ON UPDATE NO ACTION );
Quello script aggiunge tre tabelle al database. Le tabelle si chiamano Artists
, Genres
e Albums
.
Ecco il risultato in SQL Operations Studio/Azure Data Studio:
Qualsiasi strumento GUI visualizzerà le tabelle più o meno allo stesso modo. Ogni tabella può essere espansa per rivelare le sue colonne, nonché eventuali indici, trigger, chiavi, ecc. Puoi anche espandere le Colonne nodo per rivelare l'elenco delle colonne e i relativi tipi di dati, nonché eventuali vincoli che sono stati specificati.
Spiegazione del CREATE TABLE
Dichiarazione
Lo script che abbiamo appena eseguito è composto da tre CREATE TABLE
dichiarazioni:ognuna crea una tabella diversa. Lo script aggiunge anche un vincolo di chiave esterna, ma lo vedremo più avanti.
Per ora analizziamo il primo CREATE TABLE
dichiarazione nel nostro script:
USE Music; CREATE TABLE Artists ( ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY, ArtistName nvarchar(255) NOT NULL, ActiveFrom date ); GO
Questa istruzione SQL crea una tabella chiamata Artists
con tre colonne, denominate ArtistId
, ArtistName
e ActiveFrom
. La definizione di ogni colonna inizia con il suo nome, seguito dal tipo di dati e da eventuali vincoli da applicare a quella colonna.
Ecco una descrizione più dettagliata "riga per riga":
USE Music;
- Questa parte non fa effettivamente parte di
CREATE TABLE
dichiarazione. È lì solo per passare a Music Banca dati. Potrebbero esserci molti database sul server e vogliamo essere sicuri di creare le tabelle sul database corretto. Non hai bisogno di questa riga se stai già lavorando nel database corretto. CREATE TABLE Artists (
- Questo è l'inizio di
CREATE TABLE
dichiarazione. È seguito dal nome della tabella (in questo casoArtists
), seguito dalla prima delle parentesi che racchiudono la definizione della tabella. ArtistId int IDENTITY(1,1) NOT NULL PRIMARY KEY,
- Definiamo quindi la prima colonna. In questo caso lo chiamiamo
ArtistId
, specifica il tipo di dati come intero (int
), impostalo come colonna di identità (questa colonna fornirà l'ID univoco per la tabella e il valore aumenterà ad ogni riga aggiunta), il(1,1)
significa che il valore inizia da 1 e aumenta di 1,NOT NULL
significa che il campo non può contenere valori nulli ePRIMARY KEY
imposta questa colonna come chiave primaria per la tabella. Una chiave primaria è una colonna che è stata configurata come campo identificativo univoco per la tabella. ArtistName nvarchar(255) NOT NULL,
- La colonna successiva si chiama
ArtistName
e il suo tipo di dati ènvarchar(255)
, il che significa che accetta dati stringa Unicode di lunghezza variabile, con una lunghezza massima di 255 caratteri. Impostiamo anche questa colonna suNOT NULL
in modo che non possa contenere voci nulle. ActiveFrom date
- L'ultima colonna si chiama
ActiveFrom
e lo impostiamo per accettare un tipo di dati didate
);
- Usiamo quindi
)
per chiudere la definizione e;
per terminare l'istruzione (il punto e virgola è un terminatore di istruzione). GO
- Segnala la fine di un batch di istruzioni Transact-SQL. Questa non è in realtà un'istruzione Transact-SQL. È un comando riconosciuto dalle utilità sqlcmd e osql e dall'editor di codice di SQL Server Management Studio per segnalare la fine di un batch di istruzioni Transact-SQL.
Come recuperare le informazioni sulla tabella quando si utilizza uno strumento da riga di comando
Quando si utilizza uno strumento da riga di comando, non si ha il lusso di vedere le tabelle del database nel pannello laterale in attesa di essere espanse con un solo clic. Ma ciò non significa che non puoi visualizzare informazioni sulle tue tabelle o altri oggetti del database.
Quando si utilizza uno strumento da riga di comando, è possibile eseguire la seguente istruzione per visualizzare le informazioni sulle tabelle nel database precedente:
USE Music; SELECT column_name, data_type, character_maximum_length, is_nullable FROM information_schema.columns;Risultato
column_name data_type character_maximum_length is_nullable ----------- --------- ------------------------ ----------- ArtistId int null NO ArtistName nvarchar 255 NO ActiveFrom date null YES GenreId int null NO Genre nvarchar 50 NO AlbumId int null NO AlbumName nvarchar 255 NO ReleaseDate date null NO ArtistId int null NO GenreId int null NO 10 row(s) returned Executed in 1 ms
La tabella in questione si trova nel database chiamato Music ecco perché passiamo prima ad esso.
Puoi anche restringere il campo a una tabella specifica usando un WHERE
clausola:
USE Music; SELECT column_name, data_type, character_maximum_length, is_nullable FROM information_schema.columns WHERE table_name = 'Artists';Risultato
column_name data_type character_maximum_length is_nullable ----------- --------- ------------------------ ----------- ArtistId int null NO ArtistName nvarchar 255 NO ActiveFrom date null YES 3 row(s) returned Executed in 1 ms
Ci sono molti altri campi che possono essere restituiti da information_schema.columns
. Puoi usare SELECT *
per restituirli tutti se lo desideri.
Il metodo della riga di comando per recuperare le informazioni sulla tabella funziona anche quando si utilizza uno strumento GUI (dopotutto, sono solo istruzioni SQL). Puoi inserire le stesse istruzioni SQL per recuperare gli stessi dati sia che usi sql-cli, sqlcmd, SSMS, Azure Data Studio, DBeaver o qualsiasi altro strumento di gestione di SQL Server:
Il GO
Comando
Potrebbe essere necessario aggiungere GO
alla fine dello script (quando si usa sqlcmd, ad esempio).
Righe multiple
Potresti scoprire di ricevere un errore se provi a distribuire gli script sopra su più righe con uno strumento da riga di comando.
In questo caso, prova ad aggiungere una barra rovesciata alla fine di ogni riga. In questo modo:
USE Music; \ SELECT column_name, data_type, character_maximum_length, is_nullable \ FROM information_schema.columns;
Se non ti piace l'idea di dover aggiungere barre inverse, un'altra opzione è salvare lo script multilinea in un file .sql, quindi eseguirlo dal prompt dei comandi.
Il metodo per eseguire uno script dal prompt dei comandi dipenderà dall'utilità della riga di comando in uso.
Ecco come utilizzare sqlcmd per eseguire un file salvato su un computer Windows:
sqlcmd -S myServer\instanceName -i C:\myScript.sql
Ed ecco come utilizzare sql-cli per eseguire un file salvato su un Mac:
.run /myScript.sql
Ovviamente, il percorso completo e i nomi dei file dipenderanno dal nome del file e da dove lo hai salvato.