Unidad 8. El DDL, Lenguaje de Definición de Datos (VI)


8.5. Crear una tabla CREATE TABLE

Para crear una nueva tabla se emplea la sentencia CREATE TABLE.
Se necesita el permiso CREATE TABLE en la base de datos y el permiso ALTER en el esquema en que se crea la tabla.
Si las columnas de la instrucción CREATE TABLE se definen como un tipo definido por el usuario CLR, se necesita la propiedad del tipo o el permiso REFERENCES.
Si las columnas de la instrucción CREATE TABLE tienen una colección de esquemas XML asociada, se necesita la propiedad de la colección de esquemas XML o el permiso REFERENCES.

Empezaremos por una sintaxis reducida:


    CREATE TABLE 

          [ nbBaseDatos.[nbEsquema].| nbEsquema.]nbTabla 

              ( { <definicion_columna> | < definicion_colCalc > } [ ,...n ]

              [ <restriccion_tabla> ] [ ,...n ] ) 

       [ ; ]  

nbBaseDatos Es el nombre de la base de datos en la que se crea la tabla. Debe ser el nombre de una base de datos existente. Si no se especifica nbBaseDatos, se utiliza de manera predeterminada la base de datos actual. El inicio de sesión de la conexión actual debe estar asociado a un Id. de usuario existente en la base de datos especificada por nbBaseDatos, y ese Id. de usuario debe tener permisos CREATE TABLE.
nbEsquema Es el nombre del esquema al que pertenece la nueva tabla.
nbTabla Es el nombre de la nueva tabla. Los nombres de tablas deben seguir las reglas de los identificadores. nbTabla  puede contener un máximo de 128 caracteres excepto para los nombres de tablas temporales locales (nombres precedidos por un único signo de número (#)) que no pueden superar los 116 caracteres.
Después de indicar el nombre de la tabla,  entre paréntesis definimos, separadas por una coma, cada una de las columnas de la tabla y al final las restricciones a nivel de tabla si las hay.

Definir columnas físicas


    < definicion_columna > ::=

      nbCol <tipo_dato>

          [ COLLATE nbIntercalacion ] 

          [ NULL | NOT NULL ]

          [ 

             [ CONSTRAINT nbRestriccion ] DEFAULT exp_constante ] 

           | [ IDENTITY [( semilla, incremento )] [NOT FOR REPLICATION] ]

          ]

          [ ROWGUIDCOL ] 

      [  <restriccion_columna> [ ...n ] ]   

Como mínimo debemos indicar el nombre de la columna nbCol y su tipo de datos.

Los nombres de columnas deben seguir las reglas de los identificadores y deben ser únicos en la tabla. nbCol puede contener de 1 a 128 caracteres. nbCol se puede omitir en las columnas creadas con un tipo de datos timestamp, en tal caso, si no se especifica nbCol, el nombre de la columna timestamp será de manera predeterminada timestamp.
En cuanto al tipo de dato, esta es la sintaxis:


    <tipo_dato> ::= 

      [nbEsquema_tipo. ] nbtipo 

          [  ( precision [ , escala ] | max | 

               [  { CONTENT | DOCUMENT } ] xml_schema_collection ) ]   

[ nbEsquema_tipo. ] nbtipo
nbtipo Especifica el tipo de datos de la columna y nbEsquema_tipo el esquema al que pertenece el tipo. El tipo de datos puede ser uno de los siguientes:

  • Un tipo de datos del sistema de SQL Server 2005 como los que ya conocemos.
  • Un tipo de alias basado en un tipo de datos del sistema de SQL Server. Los tipos de datos de alias se crean con la instrucción CREATE TYPE para poder utilizarlos en una definición de tabla. La asignación NULL o NOT NULL de un tipo de datos de alias puede anularse durante la instrucción CREATE TABLE. No obstante, la especificación de longitud no se puede cambiar; la longitud del tipo de datos de alias no se puede especificar en una instrucción CREATE TABLE.
  • Un tipo definido por el usuario CLR. Los tipos definidos por el usuario CLR se crean con la instrucción CREATE TYPE para poder utilizarlos en una definición de tabla.

Si no se especifica el parámetro nbEsquema_tipo, el SQL Server Database Engine (Motor de base de datos de SQL Server) hace referencia a nbtipo en el siguiente orden:

  • El tipo de datos del sistema de SQL Server.
  • El esquema predeterminado del usuario actual en la base de datos actual.
  • El esquema de dbo de la base de datos actual.

Precision es la precisión del tipo de datos especificado.

Escala es la escala del tipo de datos especificado.

Max sólo se aplica a los tipos de datos varchar, nvarchar y varbinary para almacenar 231 bytes de datos de caracteres y binarios, y 230 bytes de datos Unicode.

También podemos definir tipos de datos XML.

Para obtener más información acerca de los valores de precisión y de escala válidos, visita el siguiente avanzado. Avanzado

Febrero-2010
Pág. 8.6

Atrás  Inicio  Adelante






.