CREATE TABLE (SQL Server Compact)

Crea una nueva tabla de Microsoft SQL Server Compact.

Sintaxis

CREATE TABLE table_name 
   ( { < column_definition > | < table_constraint > } [ ,...n ] 
   ) 
< column_definition > ::= 
   { column_name data_type } 
   [ { DEFAULT constant_expression 
      | [ IDENTITY [ ( seed , increment ) ]
      ]
    } ] 
   [ ROWGUIDCOL ] 
   [ < column_constraint > [ ...n ] ]
< column_constraint > ::= 
   [ CONSTRAINT constraint_name ] 
   { [ NULL | NOT NULL ] 
      | [ PRIMARY KEY | UNIQUE ] 
      | REFERENCES ref_table [ ( ref_column ) ] 
      [ ON DELETE { CASCADE | NO ACTION } ] 
      [ ON UPDATE { CASCADE | NO ACTION } ] 
    }
< table_constraint > ::= 
   [ CONSTRAINT constraint_name ] 
   { [ { PRIMARY KEY | UNIQUE } 
      { ( column [ ,...n ] ) } 
      ]
   | FOREIGN KEY 
     ( column [ ,...n ] )
      REFERENCES ref_table [ ( ref_column [ ,...n ] ) ] 
      [ ON DELETE { CASCADE | NO ACTION } ]
      [ ON UPDATE { CASCADE | NO ACTION } ] 
   }

Argumentos

  • table_name
    Nombre de la nueva tabla. Los nombres de tabla deben cumplir las mismas reglas que los identificadores. El valor de table_name debe ser único dentro de la base de datos. Un valor de table_name puede contener un máximo de 128 caracteres.

  • column_name
    Nombre de una columna de la tabla Los nombres de columna deben cumplir las mismas reglas que los identificadores y deben ser exclusivos en la tabla.

    Nota

    Los nombres de columna de las bases de datos de SQL Server Compact no pueden empezar por "__sys". Por ejemplo, __sysobjects es un nombre de columna restringido.

  • data_type
    Especifica el tipo de datos de la columna. Para obtener información acerca de los tipos de datos, vea Tipos de datos y RDA.

  • DEFAULT
    Especifica el valor que se asigna a la columna cuando no se ha suministrado ningún valor de forma explícita durante una acción de inserción. Se pueden aplicar definiciones con el valor DEFAULT a cualquier columna, excepto las definidas por la propiedad IDENTITY. Las definiciones DEFAULT desaparecen cuando la tabla se elimina. Se puede utilizar como predeterminado un valor constante.

  • IDENTITY
    Indica que la nueva columna es una columna de identidad. Cuando se agrega una nueva fila a la tabla, SQL Server Compact proporciona un valor incremental único para la columna. Las columnas de identidad se suelen utilizar junto con restricciones PRIMARY KEY para servir como identificador de fila único de la tabla. La propiedad IDENTITY solo se puede asignar a las columnas int. Solo se puede crear una columna de identidad para cada tabla. Las restricciones DEFAULT y los valores predeterminados enlazados no se pueden utilizar en las columnas de identidad. Debe especificar tanto el valor de inicialización como el incremento, o bien ninguno de los dos. Si no se especifica ninguno, el valor predeterminado es (1,1).

  • seed
    Valor utilizado para la primera fila cargada en la tabla.

  • increment
    Valor del incremento agregado al valor de identidad de la fila cargada anteriormente.

  • ROWGUIDCOL
    Indica que la nueva columna es una columna de identificador único global de fila. Solo se puede designar una columna uniqueidentifier por tabla como columna ROWGUIDCOL. La propiedad ROWGUIDCOL solo se puede asignar a una columna uniqueidentifier.

    ROWGUIDCOL genera valores automáticamente para las nuevas filas que se insertan en la tabla.

  • CONSTRAINT
    Palabra clave opcional que indica el principio de una definición de restricción PRIMARY KEY, UNIQUE o FOREIGN KEY. Las restricciones son propiedades especiales que garantizan la integridad de los datos y crean tipos especiales de índices para la tabla y sus columnas.

  • constraint_name
    Nombre de una restricción. El valor de constraint_name es opcional y debe ser único dentro de la base de datos. Si no se especifica el valor de constraint_name, SQL Server Compact genera un nombre de restricción.

  • NULL | NOT NULL
    Palabras clave que especifican si se permite el uso de valores Null en la columna. NULL no es estrictamente una restricción, pero se puede especificar del mismo modo que NOT NULL.

  • PRIMARY KEY
    Restricción que impone exclusividad de entidad para una o varias columnas determinadas mediante un índice único. Solo se puede crear una restricción PRIMARY KEY por tabla.

  • UNIQUE
    Restricción que proporciona integridad a la entidad para una columna o columnas específicas mediante un índice exclusivo. Las columnas de una restricción UNIQUE pueden ser NULL, pero solo se permite un valor NULL por columna. Una tabla puede tener varias restricciones UNIQUE.

    Nota

    SQL Server Compact puede usar índices para imponer restricciones PRIMARY KEY y UNIQUE. No es recomendable confiar en este comportamiento ni intentar modificar ningún índice generado como parte de una restricción.

  • FOREIGN KEY...REFERENCES
    Restricción que proporciona integridad referencial para los datos de la columna. Las restricciones FOREIGN KEY requieren que cada valor de la columna exista en la columna especificada en la tabla referenciada.

  • ref_table
    Nombre de la tabla referenciada por la restricción FOREIGN KEY.

  • ( ref_column [ ,...n ] )
    Columna o lista de columnas de la tabla referenciada por la restricción FOREIGN KEY.

  • ON DELETE {CASCADE | NO ACTION}
    Especifica qué sucede con una fila de la tabla que se ha creado cuando dicha fila tiene una relación referencial y la fila a la que se hace referencia se elimina de la tabla primaria. El valor predeterminado es NO ACTION.

    Si se especifica CASCADE, se elimina una fila de la tabla que hace referencia cuando se elimina la fila referenciada correspondiente de la tabla primaria. Si se especifica NO ACTION, SQL Server Compact devuelve un error y se revierte la acción de eliminación de la fila a la que se hace referencia en la tabla primaria.

  • ON UPDATE {CASCADE | NO ACTION}
    Especifica qué sucede con una fila de la tabla que se ha creado cuando dicha fila tiene una relación referencial y la fila a la que se hace referencia se actualiza en la tabla primaria. El valor predeterminado es NO ACTION.

    Si se especifica CASCADE, se actualiza la fila de la tabla que hace referencia cuando se actualiza la fila referenciada correspondiente en la tabla primaria. Si se especifica NO ACTION, SQL Server Compact devuelve un error y se revierte la acción de actualización de la fila a la que se hace referencia en la tabla primaria.

  • column
    Columna o lista de columnas, entre paréntesis, que se utiliza en las restricciones de tabla para indicar las columnas que se utilizan en la definición de restricción.

Comentarios

Definiciones de columnas

Debe especificar al menos una definición de columna al crear una tabla.

Restricciones

  • Restricciones PRIMARY KEY

    • Una tabla solo puede incluir una restricción PRIMARY KEY.

    • Cada PRIMARY KEY genera un índice.

    • Todas las columnas definidas en una restricción PRIMARY KEY se deben definir como NOT NULL. Si no se especifica la nulabilidad, se establece la nulabilidad de todas las columnas que participen en una restricción PRIMARY KEY en NOT NULL.

  • Restricciones UNIQUE

    • Cada restricción UNIQUE genera un índice.
  • Restricciones FOREIGN KEY

    • Si se especifica un valor distinto de NULL en la columna de una restricción FOREIGN KEY, el valor debe existir en la columna referenciada; de lo contrario, se devolverá un error de infracción de clave externa.

    • Las restricciones FOREIGN KEY pueden hacer referencia a otra columna de la misma tabla, lo que se denomina autoreferencia. Sin embargo, no se pueden utilizar restricciones FOREIGN KEY para crear una restricción FOREIGN KEY de autoreferencia o circular.

    • La cláusula REFERENCES de una restricción FOREIGN KEY de nivel de columna solo puede listar una columna de referencia. Debe tener el mismo tipo de datos que la columna en la que se defina la restricción.

    • La cláusula REFERENCES de una restricción FOREIGN KEY de nivel de tabla debe tener el mismo número de columnas de referencia que el número de columnas de la lista de columnas de la restricción. El tipo de datos de cada columna de referencia también debe ser igual al de la columna correspondiente de la lista de columnas.

    • Las restricciones FOREIGN KEY solo pueden hacer referencia a columnas de las restricciones PRIMARY KEY o UNIQUE de la tabla referenciada. Las restricciones FOREIGN KEY no pueden hacer referencia a índices únicos.

  • Información adicional sobre las restricciones

    • Un índice creado para una restricción no se puede quitar con la instrucción DROP INDEX. La restricción se debe quitar con la instrucción ALTER TABLE DROP CONSTRAINT.

    • Los nombres de restricción deben cumplir las reglas de los identificadores, excepto la que indica que el nombre no puede empezar con una almohadilla (#). Si no se indica la palabra clave CONSTRAINT y constraint_name, se asignará a la restricción un nombre generado por el sistema.

    • Si se infringe una restricción en una instrucción INSERT, UPDATE o DELETE, se detendrá la instrucción.

Definiciones DEFAULT

Una tabla solo puede incluir una definición DEFAULT. Esta definición puede incluir valores o funciones constantes.

Reglas de nulabilidad en una definición de tabla

La nulabilidad de una columna determina si esa columna puede permitir un valor nulo (NULL) para sus datos. NULL es un valor distinto de cero o en blanco. Significa que no se ha especificado ninguna entrada o que se ha proporcionado un valor NULL explícito, y suele significar que se desconoce el valor o que no es aplicable.

Ejemplo

Los ejemplos siguientes muestran cómo:

  1. Crear una tabla con dos columnas y una columna de identidad como PRIMARY KEY.

  2. Crear una tabla con una columna y una restricción PRIMARY KEY.

  3. Crear una tabla con una columna que haga referencia a una columna de otra tabla.

CREATE TABLE MyCustomers (CustID int IDENTITY (100,1) PRIMARY KEY, CompanyName nvarchar (50))

CREATE TABLE MyCustomers2 (CustID int CONSTRAINT pkCustId PRIMARY KEY)

CREATE TABLE MyOrders (OrderID int, CustID int REFERENCES MyCustomers(CustID))