Nozioni fondamentali sulla creazione e la modifica di tabelle

Dopo avere progettato un database, è possibile creare le tabelle in cui verranno archiviati i dati del database. Benché i dati vengano in genere archiviati in tabelle permanenti, è anche possibile creare tabelle temporanee. Le tabelle sono archiviate in file di database fino a quando non vengono eliminate e sono disponibili per gli utenti che dispongono delle autorizzazioni necessarie.

Proprietà delle tabelle

È possibile definire fino a 1.024 colonne per tabella. I nomi di tabelle e colonne devono essere conformi alle regole per gli identificatori e devono essere univoci all'interno di ogni tabella, ma è possibile utilizzare lo stesso nome di colonna in tabelle diverse dello stesso database. Per ulteriori informazioni, vedere Identificatori e Utilizzo degli identificatori come nomi di oggetti. È inoltre necessario definire un tipo di dati per ogni colonna. Per ulteriori informazioni, vedere Assegnazione di un tipo di dati a una colonna.

Benché i nomi delle tabelle debbano essere univoci per ogni schema all'interno di un database, è possibile creare più tabelle con lo stesso nome se si specificano schemi diversi per ogni tabella. È possibile creare due tabelle denominate employees e designare Jonah come schema di una tabella e Sally come schema dell'altra. Quando è necessario utilizzare una delle due tabelle employees, è possibile distinguerle una dall'altra specificando lo schema con il nome della tabella.

Per creare una tabella

CREATE TABLE (Transact-SQL)

Procedura: Creazione di tabelle (Visual Database Tools)

Tabelle temporanee

Le tabelle temporanee sono simili alle tabelle permanenti, eccetto che per il fatto che vengono archiviate nel database tempdb ed eliminate automaticamente quando non sono più utilizzate.

Esistono due tipi di tabelle temporanee, le tabelle locali e le tabelle globali. I due tipi differiscono per i nomi, la visibilità e la disponibilità. Le tabelle temporanee locali contengono un solo simbolo di cancelletto (#) come primo carattere del nome, sono visibili solo durante la connessione utente corrente e vengono eliminate quando l'utente chiude la connessione all'istanza di SQL Server. Le tabelle temporanee globali contengono due simboli di cancelletto (##) come primi caratteri del nome, sono visibili per tutti gli utenti in seguito alla creazione e vengono eliminate quando tutti gli utenti che fanno riferimento alla tabella chiudono la connessione all'istanza di SQL Server.

Se, ad esempio, si crea la tabella employees, questa può essere utilizzata da chiunque disponga delle autorizzazioni di sicurezza nel database necessarie per utilizzarla fino a quando non viene eliminata. Se una sessione di database crea la tabella temporanea locale #employees, questa tabella può essere utilizzata solo dalla sessione e viene eliminata quando la sessione viene chiusa. Se si crea la tabella temporanea globale ##employees, tutti gli utenti del database possono utilizzare tale tabella. Se la tabella non viene utilizzata da altri utenti dopo che è stata creata, verrà eliminata alla chiusura della connessione dell'utente che l'ha creata. Se un altro utente utilizza la tabella dopo che è stata creata, la tabella viene eliminata in SQL Server dopo che l'utente che l'ha creata chiude la connessione e dopo che tutte le altre sessioni non la utilizzano più attivamente.

Se una tabella temporanea viene creata con un vincolo denominato e all'interno dell'ambito di una transazione definita dall'utente, l'istruzione utilizzata per la creazione di tale tabella può essere eseguita da un solo utente alla volta. Se ad esempio una tabella temporanea con un vincolo di chiave primaria denominato viene creata tramite una stored procedure, quest'ultima non può essere eseguita da più utenti contemporaneamente.

Molti utilizzi delle tabelle temporanee possono essere sostituiti da variabili con tipo di dati table. Per ulteriori informazioni sull'utilizzo delle variabili table, vedere table (Transact-SQL).

Modifica di tabelle

Dopo avere creato una tabella, è possibile modificarne molte delle opzioni definite inizialmente. Di seguito vengono descritte alcune di tali opzioni:

  • È possibile aggiungere, modificare o eliminare colonne. È possibile, ad esempio, modificare il nome, la lunghezza, il tipo di dati, la precisione, la scala e l'impostazione del supporto di valori Null della colonna, sebbene esistano alcune limitazioni. Per ulteriori informazioni, vedere Modifica delle proprietà delle colonne.

  • Se si tratta di una tabella partizionata, è possibile ripartizionare la tabella o aggiungere o rimuovere singole partizioni. Per ulteriori informazioni, vedere Modifica di tabelle e indici partizionati e Trasferimento efficiente dei dati mediante lo spostamento di partizioni.

  • È possibile aggiungere o eliminare vincoli PRIMARY KEY e FOREIGN KEY.

  • È possibile aggiungere o eliminare vincoli UNIQUE e CHECK e definizioni e oggetti DEFAULT.

  • È possibile aggiungere o eliminare una colonna identificatore utilizzando la proprietà IDENTITY o ROWGUIDCOL. È inoltre possibile aggiungere o rimuovere la proprietà ROWGUIDCOL da una colonna esistente, sebbene sia possibile includere la proprietà ROWGUIDCOL in una sola colonna della tabella per volta.

  • Una tabella e le colonne selezionate della tabella possono essere registrate per l'indicizzazione full-text.

Per ulteriori informazioni sulle modifiche che è possibile apportare a una tabella, vedere ALTER TABLE (Transact-SQL).

È inoltre possibile modificare il nome o lo schema di una tabella. Quando si esegue questa operazione, è inoltre necessario modificare il nome della tabella in qualsiasi trigger, stored procedure, script Transact-SQL o altro codice di programmazione che utilizza il nome o lo schema precedente della tabella.

Per rinominare una tabella

sp_rename (Transact-SQL)

Proprietà delle tabelle (Visual Database Tools)

Per modificare lo schema di una tabella

ALTER SCHEMA (Transact-SQL)