TablasTables

Se aplica a:Applies to: síSQL Server 2016 (13.x)SQL Server 2016 (13.x)yesSQL Server 2016 (13.x)SQL Server 2016 (13.x) y versiones posteriores SíAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database SíInstancia administrada de Azure SQLAzure SQL Managed InstanceYesInstancia administrada de Azure SQLAzure SQL Managed Instance síAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics síAlmacenamiento de datos paralelosParallel Data WarehouseyesAlmacenamiento de datos paralelosParallel Data WarehouseSe aplica a:Applies to: síSQL Server 2016 (13.x)SQL Server 2016 (13.x)yesSQL Server 2016 (13.x)SQL Server 2016 (13.x) and later SíAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database SíInstancia administrada de Azure SQLAzure SQL Managed InstanceYesInstancia administrada de Azure SQLAzure SQL Managed Instance síAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics síAlmacenamiento de datos paralelosParallel Data WarehouseyesAlmacenamiento de datos paralelosParallel Data Warehouse

Las tablas son objetos de base de datos que contienen todos sus datos.Tables are database objects that contain all the data in a database. En las tablas, los datos se organizan con arreglo a un formato de filas y columnas, similar al de una hoja de cálculo.In tables, data is logically organized in a row-and-column format similar to a spreadsheet. Cada fila representa un registro único y cada columna un campo dentro del registro.Each row represents a unique record, and each column represents a field in the record. Por ejemplo, en una tabla que contiene los datos de los empleados de una compañía puede haber una fila para cada empleado y distintas columnas en las que figuren detalles de los mismos, como el número de empleado, el nombre, la dirección, el puesto que ocupa y su número de teléfono particular.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.

  • El número de tablas de una base de datos se limita solo por el número de objetos admitidos en una base (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 tabla definida por el usuario estándar puede tener hasta 1.024 columnas.A standard user-defined table can have up to 1,024 columns. El número de filas de la tabla solo está limitado por la capacidad de almacenamiento del servidor.The number of rows in the table is limited only by the storage capacity of the server.

  • Puede asignar propiedades a la tabla y a cada columna de la tabla para controlar los datos admitidos y otras propiedades.You can assign properties to the table and to each column in the table to control the data that is allowed and other properties. Por ejemplo, puede crear restricciones en una columna para no permitir valores nulos o para proporcionar un valor predeterminado si no se especifica un valor, o puede asignar una restricción de clave en la tabla que exige la unicidad o definir una relación entre las tablas.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.

  • Los datos de la tabla se pueden comprimir por filas o por página.The data in the table can be compressed either by row or by page. La compresión de datos puede permitir que se almacenen más filas en una página.Data compression can allow more rows to be stored on a page. Para obtener más información, consulte Data Compression.For more information, see Data Compression.

Tipos de tablasTypes of Tables

Además del rol estándar de las tablas básicas definidas por el usuario, SQL ServerSQL Server proporciona los siguientes tipos de tabla que permiten llevar a cabo objetivos especiales en una base de datos: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.

Tablas con particionesPartitioned Tables

Las tablas con particiones son tablas cuyos datos se han dividido horizontalmente entre unidades que pueden repartirse por más de un grupo de archivos de una base de datos.Partitioned tables are tables whose data is horizontally divided into units which may be spread across more than one filegroup in a database. Las particiones facilitan la administración de índices y tablas grandes al permitir el acceso y la administración de subconjuntos de datos rápidamente y con eficacia, mientras se mantiene la integridad de la colección global.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. De forma predeterminada, SQL ServerSQL Server admite hasta 15.000 particiones.By default, SQL ServerSQL Server supports up to 15,000 partitions. Para obtener más información, vea Partitioned Tables and Indexes.For more information, see Partitioned Tables and Indexes.

Tablas temporalesTemporary Tables

Las tablas temporales se almacenan en tempdb.Temporary tables are stored in tempdb. Hay dos tipos de tablas temporales: locales y globales.There are two types of temporary tables: local and global. Se diferencian entre sí por los nombres, la visibilidad y la disponibilidad.They differ from each other in their names, their visibility, and their availability. Las tablas temporales locales tienen como primer carácter de sus nombres un solo signo de número (#); solo son visibles para el usuario de la conexión actual y se eliminan cuando el usuario se desconecta de la instancia de 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. Las tablas temporales globales presentan dos signos de número (##) antes del nombre; son visibles para cualquier usuario después de su creación y se eliminan cuando todos los usuarios que hacen referencia a la tabla se desconectan de la instancia de 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.

Recompilaciones reducidas para cargas de trabajo mediante tablas temporales en varios ámbitosReduced recompilations for workloads using temporary tables across multiple scopes

SQL Server 2019 (15.x)SQL Server 2019 (15.x), en todos los niveles de compatibilidad de la base de datos, reduce las recompilaciones para cargas de trabajo mediante tablas temporales en varios ámbitos.under all database compatibility levels reduces recompilations for workloads using temporary tables across multiple scopes. Esta característica también está habilitada en Azure SQL Database en el nivel de compatibilidad de la base de datos 150 para todos los modelos de implementación.This feature is also enabled in Azure SQL Database under database compatibility level 150 for all deployment models. Antes de esta característica, al hacer referencia a una tabla temporal con una instrucción de lenguaje de manipulación de datos DML (SELECT, INSERT, UPDATE o DELETE), si la tabla temporal se había creado mediante un lote de ámbito externo, el resultado era una recompilación de la instrucción DML en cada ejecución.Prior to this feature, when referencing a temporary table with a data manipulation language (DML) statement (SELECT, INSERT, UPDATE, DELETE), if the temporary table was created by an outer scope batch, this would result in a recompile of the DML statement each time it is executed. Con esta mejora, SQL Server realiza comprobaciones ligeras adicionales para evitar recompilaciones innecesarias:With this improvement, SQL Server performs additional lightweight checks to avoid unnecessary recompilations:

  • Se comprueba si el módulo de ámbito externo que se usa para crear la tabla temporal en tiempo de compilación es el mismo que el de las ejecuciones consecutivas.Check if the outer-scope module used for creating the temporary table at compile time is the same one used for consecutive executions.
  • Se realiza el seguimiento de los cambios de lenguaje de definición de datos (DDL) realizados en la compilación inicial y se comparan con las operaciones DDL para ejecuciones consecutivas.Keep track of any data definition language (DDL) changes made at initial compilation and compare them with DDL operations for consecutive executions.

El resultado final es una reducción de las recompilaciones extrañas y la sobrecarga de la CPU.The end result is a reduction in extraneous recompilations and CPU-overhead.

Tablas del sistemaSystem Tables

SQL ServerSQL Server almacena los datos que definen la configuración del servidor y de todas sus tablas en un conjunto de tablas especial, conocido como tablas del sistema.stores the data that defines the configuration of the server and all its tables in a special set of tables known as system tables. Los usuarios no pueden consultar o actualizar directamente las tablas del sistema.Users cannot directly query or update the system tables. La información de las tablas del sistema está disponible a través de las vistas del sistema.The information in the system tables is made available through the system views. Para obtener más información, vea Vistas del sistema (Transact-SQL).For more information, see System Views (Transact-SQL).

Tablas anchasWide Tables

Las tablas anchas usan las columnas dispersas para aumentar hasta 30 000 el número total de columnas permitidas.Wide tables use sparse columns to increase the total of columns that a table can have to 30,000. Las columnas dispersas son columnas normales que disponen de un almacenamiento optimizado para los valores NULL.Sparse columns are ordinary columns that have an optimized storage for null values. Este tipo de columnas reducen los requisitos de espacio de los valores NULL a costa de una mayor sobrecarga a la hora de recuperar valores no NULL.Sparse columns reduce the space requirements for null values at the cost of more overhead to retrieve nonnull values. Una tabla ancha ha definido un conjunto de columnas, que es una representación XML sin tipo que combina todas las columnas dispersas de una tabla en una salida estructurada.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. El número de índices y estadísticas también se aumenta hasta 1.000 y 30.000, respectivamente.The number of indexes and statistics is also increased to 1,000 and 30,000, respectively. El tamaño máximo de una fila de una tabla ancha es de 8.019 bytes.The maximum size of a wide table row is 8,019 bytes. Por consiguiente, la mayoría de los datos de cualquier fila deben ser NULL.Therefore, most of the data in any particular row should be NULL. El número máximo de columnas no dispersas más las columnas calculadas de una tabla ancha sigue siendo 1.024.The maximum number of nonsparse columns plus computed columns in a wide table remains 1,024.

Las tablas anchas tienen las siguientes implicaciones de rendimiento.Wide tables have the following performance implications.

  • Las tablas anchas pueden aumentar el costo de mantenimiento de los índices de la tabla.Wide tables can increase the cost to maintain indexes on the table. Se recomienda que el número de índices de una tabla ancha se limite a los índices necesarios para la lógica de negocios.We recommend that the number of indexes on a wide table be limited to the indexes that are required by the business logic. Si el número de índices aumenta, también lo harán el tiempo de compilación de DML y los requisitos de memoria.As the number of indexes increases, so does the DML compile-time and memory requirement. Los índices no clúster deben ser índices filtrados que se aplican a subconjuntos de datos.Nonclustered indexes should be filtered indexes that are applied to data subsets. Para obtener más información, consulte Create Filtered Indexes.For more information, see Create Filtered Indexes.

  • Las aplicaciones pueden agregar y quitar columnas de las tablas anchas de forma dinámica.Applications can dynamically add and remove columns from wide tables. Cuando se agregan o se quitan columnas, también se invalidan los planes de consulta compilados.When columns are added or removed, compiled query plans are also invalidated. Se recomienda diseñar una aplicación que se corresponda con la carga de trabajo prevista para minimizar los cambios de esquema.We recommend that you design an application to match the projected workload so that schema changes are minimized.

  • Cuando se agregan y se quitan datos de una tabla ancha, el rendimiento puede verse afectado.When data is added and removed from a wide table, performance can be affected. El diseño de las aplicaciones debe corresponderse con la carga de trabajo prevista para minimizar los cambios llevados a cabo en los datos de la tabla.Applications must be designed for the projected workload so that changes to the table data is minimized.

  • Limite la ejecución de instrucciones DML en una tabla ancha destinadas a actualizar varias filas de una clave de agrupación en clústeres.Limit the execution of DML statements on a wide table that update multiple rows of a clustering key. La compilación y la ejecución de estas instrucciones pueden requerir recursos de memoria considerables.These statements can require significant memory resources to compile and execute.

  • Las operaciones de cambio de partición en las tablas anchas pueden resultar lentas, y su procesamiento podría requerir grandes cantidades de memoria.Switch partition operations on wide tables can be slow and might require large amounts of memory to process. Los requisitos de rendimiento y de memoria son proporcionales al número total de columnas existentes en las particiones de origen y de destino.The performance and memory requirements are proportional to the total number of columns in both the source and target partitions.

  • Los cursores de actualización que actualizan columnas concretas de una tabla ancha deben enumerar las columnas de manera explícita en la cláusula FOR UPDATE.Update cursors that update specific columns in a wide table should list the columns explicitly in the FOR UPDATE clause. Esto ayudará a optimizar el rendimiento mientras se usan cursores.This will help optimize performance when you use cursors.

Tareas de tabla comunesCommon Table Tasks

En la tabla siguiente se proporcionan vínculos a las tareas comunes asociadas con la creación o modificación de una tabla.The following table provides links to common tasks associated with creating or modifying a table.

Tareas de tablaTable Tasks TemaTopic
Describe cómo crear una tabla.Describes how to create a table. Crear tablas (motor de base de datos)Create Tables (Database Engine)
Describe cómo eliminar una tabla.Describes how to delete a table. Eliminar tablas (motor de base de datos)Delete Tables (Database Engine)
Describe cómo crear una nueva tabla que contenga algunas o todas las columnas de una tabla existente.Describes how to create a new table that contains some or all of the columns in an existing table. Duplicar tablasDuplicate Tables
Describe cómo cambiar el nombre de una tabla.Describes how to rename a table. Cambiar el nombre a las tablas (motor de base de datos)Rename Tables (Database Engine)
Describe cómo ver las propiedades de la tabla.Describes how to view the properties of the table. Ver la definición de tablaView the Table Definition
Describe cómo determinar si otros objetos como una vista o un procedimiento almacenado dependen de una tabla.Describes how to determine whether other objects such as a view or stored procedure depend on a table. Ver las dependencias de una tablaView the Dependencies of a Table

En la tabla siguiente se proporcionan vínculos a las tareas comunes asociadas con la creación o modificación de columnas en una tabla.The following table provides links to common tasks associated with creating or modifying columns in a table.

Tareas de columnaColumn Tasks TemaTopic
Describe cómo agregar columnas a una tabla existente.Describes how to add columns to an existing table. Agregar columnas a una tabla (motor de base de datos)Add Columns to a Table (Database Engine)
Describe cómo eliminar columnas de una tabla.Describes how to delete columns from a table. Eliminar columnas de una tablaDelete Columns from a Table
Describe cómo cambiar el nombre de una columna.Describes how to change the name of a column. Cambiar el nombre a las columnas (motor de base de datos)Rename Columns (Database Engine)
Describe cómo copiar columnas de una tabla a otra, copiar solo la definición de la columna o copiar la definición y los datos.Describes how to copy columns from one table to another, copying either just the column definition, or the definition and data. Copiar columnas de una tabla a otra (motor de base de datos)Copy Columns from One Table to Another (Database Engine)
Describe cómo modificar una definición de columna mediante el cambio del tipo de datos u otra propiedad.Describes how to modify a column definition, by changing the data type or other property. Modificar columnas (motor de base de datos)Modify Columns (Database Engine)
Describe cómo cambiar el orden en el que aparecen las columnas.Describes how to change the order in which the columns appear. Cambiar el orden de las columnas de una tablaChange Column Order in a Table
Describe cómo crear una columna calculada en una tabla.Describes how to create a computed column in a table. Especificar columnas calculadas en una tablaSpecify Computed Columns in a Table
Describe cómo especificar un valor predeterminado de una columna.Describes how to specify a default value for a column. Este valor se usa si no se proporciona otro.This value is used if another value is not supplied. Especificar valores predeterminados para las columnasSpecify Default Values for Columns

Vea tambiénSee Also

Restricciones entre claves principales y claves externas Restricciones UNIQUE y restricciones CHECKPrimary and Foreign Key Constraints Unique Constraints and Check Constraints