Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Creare una tabella in SQL Server 2017

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 caso Artists ), 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 e PRIMARY 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 su NOT 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 di date
);
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.