TabelleTables

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2016)sìDatabase SQL di AzuresìAzure SQL Data Warehouse sìParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Le tabelle sono oggetti di database che contengono tutti i dati presenti in un database.Tables are database objects that contain all the data in a database. Nelle tabelle, i dati sono organizzati in modo logico in righe e colonne in un formato simile a quello di un foglio di calcolo.In tables, data is logically organized in a row-and-column format similar to a spreadsheet. Ogni riga rappresenta un record univoco e ogni colonna rappresenta un campo all'interno del record.Each row represents a unique record, and each column represents a field in the record. Ad esempio, una tabella che include i dati dei dipendenti di un'azienda può contenere una riga per ogni dipendente e colonne che rappresentano i dettagli dei dipendenti quali l'ID, il nome, l'indirizzo, la posizione e il numero di telefono dell'abitazione.For example, a table that contains employee data for a company might contain a row for each employee and columns representing employee information such as employee number, name, address, job title, and home telephone number.

  • Il numero di tabelle presenti in un database è limitato solo dal numero di oggetti disponibili in un database (2,147,483,647).The number of tables in a database is limited only by the number of objects allowed in a database (2,147,483,647). Una tabella standard definita dall'utente può avere fino a 1.024 colonne.A standard user-defined table can have up to 1,024 columns. Il numero di righe nella tabella è limitato solo dalla capacità di archiviazione del server.The number of rows in the table is limited only by the storage capacity of the server.

  • È possibile assegnare proprietà alla tabella e a ogni colonna nella tabella per controllare i dati consentiti e le altre proprietà.You can assign properties to the table and to each column in the table to control the data that is allowed and other properties. Ad esempio, è possibile creare vincoli in una colonna per impedire valori null o fornire un valore predefinito se non è specificato un valore oppure è possibile assegnare un vincolo principale sulla tabella che applica l'univocità o definisce una relazione tra tabelle.For example, you can create constraints on a column to disallow null values or provide a default value if a value is not specified, or you can assign a key constraint on the table that enforces uniqueness or defines a relationship between tables.

  • I dati nella tabella possono essere compressi per riga o per pagina.The data in the table can be compressed either by row or by page. La compressione dei dati può consentire l'archiviazione di più righe su una pagina.Data compression can allow more rows to be stored on a page. Per altre informazioni, vedere Data Compression.For more information, see Data Compression.

Tipi di tabelleTypes of Tables

Oltre al ruolo standard delle tabelle di base definite dall'utente, in SQL ServerSQL Server sono disponibili i tipi di tabelle seguenti per scopi specifici in un database:Besides the standard role of basic user-defined tables, SQL ServerSQL Server provides the following types of tables that serve special purposes in a database.

Tabelle partizionatePartitioned Tables
Nelle tabelle partizionate, i dati vengono suddivisi orizzontalmente in unità che possono essere distribuite in più filegroup di un database.Partitioned tables are tables whose data is horizontally divided into units which may be spread across more than one filegroup in a database. Il partizionamento semplifica la gestione di tabelle o indici di grandi dimensioni in quanto consente di gestire o accedere a subset di dati in modo rapido ed efficace mantenendo l'integrità della raccolta.Partitioning makes large tables or indexes more manageable by letting you access or manage subsets of data quickly and efficiently, while maintaining the integrity of the overall collection. Per impostazione predefinita, SQL Server 2017SQL Server 2017 supporta fino a 15.000 partizioni.By default, SQL Server 2017SQL Server 2017 supports up to 15,000 partitions. Per ulteriori informazioni, vedere Partitioned Tables and Indexes.For more information, see Partitioned Tables and Indexes.

Tabelle temporaneeTemporary Tables
Le tabelle temporanee vengono archiviate in tempdb.Temporary tables are stored in tempdb. Esistono due tipi di tabelle temporanee, ovvero le tabelle locali e le tabelle globali.There are two types of temporary tables: local and global. I due tipi differiscono per i nomi, la visibilità e la disponibilità.They differ from each other in their names, their visibility, and their availability. 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 ServerSQL Server.Local temporary tables have a single number sign (#) as the first character of their names; they are visible only to the current connection for the user, and they are deleted when the user disconnects from the instance of SQL ServerSQL Server. Le tabelle temporanee globali contengono due simboli di cancelletto (##) come primi caratteri del nome, una volta create sono visibili per tutti gli utenti e vengono eliminate quando tutti gli utenti che fanno riferimento alla tabella chiudono la connessione all'istanza di SQL ServerSQL Server.Global temporary tables have two number signs (##) as the first characters of their names; they are visible to any user after they are created, and they are deleted when all users referencing the table disconnect from the instance of SQL ServerSQL Server.

Tabelle di sistemaSystem Tables
SQL ServerSQL Server archivia i dati che definiscono la configurazione del server e di tutte le relative tabelle in un set di tabelle speciale noto come tabelle di sistema. SQL ServerSQL Server stores the data that defines the configuration of the server and all its tables in a special set of tables known as system tables. Gli utenti non possono eseguire una query direttamente o aggiornare le tabelle di sistema.Users cannot directly query or update the system tables. Le informazioni delle tabelle di sistema vengono rese disponibili tramite le viste di sistema.The information in the system tables is made available through the system views. Per altre informazioni, vedere Viste di sistema (Transact-SQL).For more information, see System Views (Transact-SQL).

Tabelle estese in larghezzaWide Tables
Le tabelle estese in larghezza usano le colonne di tipo sparse per aumentare a 30.000 il numero totale di colonne che una tabella può contenere.Wide tables use sparse columns to increase the total of columns that a table can have to 30,000. Le colonne di tipo sparse sono colonne comuni che dispongono di archiviazione ottimizzata per i valori Null.Sparse columns are ordinary columns that have an optimized storage for null values. Tali colonne consentono di ridurre i requisiti di spazio per i valori Null aumentando tuttavia l'overhead per il recupero dei valori non Null.Sparse columns reduce the space requirements for null values at the cost of more overhead to retrieve nonnull values. Una colonna estesa ha definito un set di colonne, ovvero una rappresentazione XML non tipizzata che combina tutte le colonne di tipo sparse di una tabella in un output strutturato.A wide table has defined a column set, which is an untyped XML representation that combines all the sparse columns of a table into a structured output. Anche il numero degli indici e delle statistiche viene portato rispettivamente a 1.000 e 30.000.The number of indexes and statistics is also increased to 1,000 and 30,000, respectively. Le dimensioni di una riga di tabella estesa in larghezza non possono superare 8.019 byte.The maximum size of a wide table row is 8,019 bytes. Pertanto, la maggior parte dei dati di qualsiasi riga deve essere NULL.Therefore, most of the data in any particular row should be NULL. Il numero massimo di colonne di tipo nonsparse più le colonne calcolate di una tabella estesa in larghezza rimane 1.024.The maximum number of nonsparse columns plus computed columns in a wide table remains 1,024.

Le tabelle estese in larghezza hanno le seguenti implicazioni sulle prestazioni.Wide tables have the following performance implications.

  • Le tabelle estese in larghezza possono aumentare i costi di gestione degli indici nella tabella.Wide tables can increase the cost to maintain indexes on the table. È consigliabile limitare il numero di indici di una tabella estesa in larghezza agli indici richiesti dalla logica di business.We recommend that the number of indexes on a wide table be limited to the indexes that are required by the business logic. All'aumento del numero di indici corrisponde infatti un aumento dei requisiti di memoria e dei tempi di compilazione DML.As the number of indexes increases, so does the DML compile-time and memory requirement. Gli indici non cluster devono essere indici filtrati applicati a subset di dati.Nonclustered indexes should be filtered indexes that are applied to data subsets. Per altre informazioni, vedere Create Filtered Indexes.For more information, see Create Filtered Indexes.

  • Tramite applicazioni è possibile aggiungere e rimuovere in modo dinamico le colonne dalle tabelle estese in larghezza.Applications can dynamically add and remove columns from wide tables. Quando si aggiungono o rimuovono colonne, i piani di query compilati perdono validità.When columns are added or removed, compiled query plans are also invalidated. È pertanto consigliabile progettare un'applicazione in base al carico di lavoro previsto in modo che le modifiche allo schema siano minime.We recommend that you design an application to match the projected workload so that schema changes are minimized.

  • L'aggiunta e la rimozione di dati da una tabella estesa in larghezza possono incidere negativamente sulle prestazioni.When data is added and removed from a wide table, performance can be affected. È necessario progettare le applicazioni per il carico di lavoro previsto in modo che le modifiche ai dati della tabella siano minime.Applications must be designed for the projected workload so that changes to the table data is minimized.

  • Limitare l'esecuzione di istruzioni DML in una tabella estesa in larghezza che comportino l'aggiornamento di più righe di una chiave di clustering.Limit the execution of DML statements on a wide table that update multiple rows of a clustering key. La compilazione e l'esecuzione di queste istruzioni possono richiedere una notevole quantità di memoria.These statements can require significant memory resources to compile and execute.

  • Il passaggio tra partizioni nelle tabelle estese in larghezza può essere lento e richiedere grandi quantità di memoria di elaborazione.Switch partition operations on wide tables can be slow and might require large amounts of memory to process. Le prestazioni e i requisiti di memoria sono proporzionali al numero totale di colonne sia nella partizione di origine sia in quella di destinazione.The performance and memory requirements are proportional to the total number of columns in both the source and target partitions.

  • I cursori di aggiornamento di colonne specifiche di una tabella estesa in larghezza dovrebbero elencare le colonne in modo esplicito per la clausola FOR UPDATE.Update cursors that update specific columns in a wide table should list the columns explicitly in the FOR UPDATE clause. In questo modo, è possibile ottimizzare le prestazioni quando si utilizzano i cursori.This will help optimize performance when you use cursors.

Attività comuni della tabellaCommon Table Tasks

Nella tabella riportata di seguito vengono forniti i collegamenti a attività comuni associate alla creazione o alla modifica di una tabella.The following table provides links to common tasks associated with creating or modifying a table.

Attività tabellaTable Tasks ArgomentoTopic
Viene illustrato come creare una tabella.Describes how to create a table. Creare tabelle (motore di database)Create Tables (Database Engine)
Viene illustrato come eliminare una tabella.Describes how to delete a table. Eliminare tabelle (motore di database)Delete Tables (Database Engine)
Viene illustrato come creare una nuova tabella che contiene alcune o tutte le colonne in una tabella esistente.Describes how to create a new table that contains some or all of the columns in an existing table. Duplicare le tabelleDuplicate Tables
Viene illustrato come ridenominare una tabella.Describes how to rename a table. Rinominare tabelle (motore di database)Rename Tables (Database Engine)
Viene illustrata la procedura per visualizzare le proprietà della tabella.Describes how to view the properties of the table. Visualizzare la definizione di una tabellaView the Table Definition
Viene illustrato come determinare se altri oggetti quali una vista o una stored procedure dipende da una tabella.Describes how to determine whether other objects such as a view or stored procedure depend on a table. Visualizzare le dipendenze di una tabellaView the Dependencies of a Table

Nella tabella riportata di seguito vengono forniti i collegamenti a attività comuni associate alla creazione o alla modifica di colonne in una tabella.The following table provides links to common tasks associated with creating or modifying columns in a table.

Attività colonneColumn Tasks ArgomentoTopic
Viene illustrato come aggiungere colonne a una tabella esistente.Describes how to add columns to an existing table. Aggiungere colonne a una tabella (motore di database)Add Columns to a Table (Database Engine)
Viene illustrato come eliminare colonne da una tabella.Describes how to delete columns from a table. Eliminare le colonne da una tabellaDelete Columns from a Table
Viene illustrato come modificare il nome di una colonna.Describes how to change the name of a column. Rinominare colonne (motore di database)Rename Columns (Database Engine)
Viene illustrato come copiare colonne da una tabella a un'altra copiando solo la definizione di colonna oppure la definizione e i dati.Describes how to copy columns from one table to another, copying either just the column definition, or the definition and data. Copiare colonne da una tabella a un'altra (motore di database)Copy Columns from One Table to Another (Database Engine)
Viene illustrato come modificare una definizione di colonna, modificando il tipo di dati o altre proprietà.Describes how to modify a column definition, by changing the data type or other property. Modificare colonne (motore di database)Modify Columns (Database Engine)
Viene illustrato come modificare l'ordine di visualizzazione delle colonne.Describes how to change the order in which the columns appear. Modificare l'ordine delle colonne in una tabellaChange Column Order in a Table
Viene illustrato come creare una colonna calcolata in una tabella.Describes how to create a computed column in a table. Specificare le colonne calcolate in una tabellaSpecify Computed Columns in a Table
Viene illustrato come specificare un valore predefinito per una colonna.Describes how to specify a default value for a column. Questo valore viene utilizzato nel caso non venga fornito alcun altro valore.This value is used if another value is not supplied. Specificare valori predefiniti per le colonneSpecify Default Values for Columns

Vedere ancheSee Also

Vincoli di chiavi primarie ed esterne Primary and Foreign Key Constraints
Vincoli UNIQUE e CHECK Unique Constraints and Check Constraints