CREATE TABLE - SQL (Comando)

Crea una tabla que tiene los campos especificados.

CREATE TABLE | DBF TableName1 [NAME LongTableName] [FREE]   
(FieldName1FieldType [(nFieldWidth [, nPrecision])]      
[NULL | NOT NULL]       [CHECK lExpression1 [ERROR cMessageText1]]      
[DEFAULT eExpression1]      [PRIMARY KEY | UNIQUE]      
[REFERENCES TableName2 [TAG TagName1]]      [NOCPTRANS]   
[, FieldName2 ...]      [, PRIMARY KEY eExpression2 TAG TagName2      
|, UNIQUE eExpression3 TAG TagName3]      
[, FOREIGN KEY eExpression4 TAG TagName4 [NODUP]         REFERENCES TableName3 [TAG TagName5]]      
[, CHECK lExpression2 [ERROR cMessageText2]])| FROM ARRAY ArrayName

Parámetros

  • TableName1
    Especifica el nombre de la tabla que desea crear. Las opciones TABLE y DBF son idénticas.

  • NAME LongTableName
    Especifica un nombre largo para la tabla. Este nombre largo solamente se puede especificar cuando hay una base de datos abierta, porque los nombres largos de tabla se almacenan en bases de datos.

    Los nombres largos pueden contener un máximo de 128 caracteres y se pueden utilizar en lugar de nombres de archivo cortos en la base de datos.

  • FREE
    Especifica que la tabla no se agregará a ninguna base de datos abierta. No es necesario incluir FREE si no hay ninguna base de datos abierta.

  • (FieldName1 FieldType [(nFieldWidth [, nPrecision])]
    Especifica el nombre, el tipo, el ancho y la precisión del campo (el número de lugares decimales), respectivamente.

    Una tabla puede contener hasta 255 campos. Si uno o más de los campos permiten valores nulos, el límite se reduce en uno, a 254 campos.

    FieldType es una sola letra que indica el tipo de datos del campo. Algunos tipos de datos de campo necesitan que especifique nFieldWidth o nPrecision, o ambos.

    La siguiente tabla enumera los valores para FieldType y si se necesita indicar nFieldWidth y nPrecision.

    FieldType nFieldWidth nPrecision Descripción
    C n Campo Character de ancho n
    D Fecha
    T DateTime
    N n d Campo Numeric de ancho n con d posiciones decimales
    F n d Campo Numeric flotante de ancho n con d posiciones decimales
    I Integer
    B d Double
    Y Currency
    L Lógicas
    M Memo
    G General

    nFieldWidth y nPrecision se pasan por alto para los tipos D, T, I, Y, L, M, G y P. nPrecision tiene como valor predeterminado cero (ninguna posición decimal) si no se incluye nPrecision para los tipos N o F. nPrecision tiene, de forma predeterminada, el número de posiciones decimales especificado por el valor SET DECIMAL si no está incluida nPrecision para el tipo B.

  • NULL
    Admite valores nulos en el campo. Si uno o más campos pueden contener valores NULL, el número máximo de campos que la tabla puede contener se reduce en una unidad, de 255 a 254.

  • NOT NULL
    Impide escribir valores nulos en el campo.

    Si omite NULL y NOT NULL, la configuración actual de SET NULL determinará si se admiten valores nulos en el campo. No obstante, si omite NULL y NOT NULL, e incluye la cláusula PRIMARY KEY o UNIQUE, se pasará por alto la configuración actual de SET NULL y el campo tomará el valor predeterminado NOT NULL.

  • CHECK lExpression1
    Especifica una regla de validación para el campo. lExpression1 puede ser una función definida por el usuario. Observe que cuando se agrega un registro en blanco, se comprueba la regla de validación. Se generará un error si la regla de validación no permite un valor de campo en blanco en un registro anexado.

  • ERROR cMessageText1
    Especifica el mensaje de error que Visual FoxPro mostrará cuando la regla de validación especificada con CHECK genere un error. El mensaje solamente se muestra cuando se modifican los datos en una ventana Examinar o en una ventana Editar.

  • DEFAULT eExpression1
    Especifica un valor predeterminado para el campo. El tipo de datos de eExpression1 debe ser el mismo que el del campo.

  • PRIMARY KEY
    Crea un índice principal para el campo. La etiqueta de índice principal tiene el mismo nombre que el campo.

  • UNIQUE
    Crea un índice candidato para el campo. La etiqueta de índice candidato tiene el mismo nombre que el campo. Si desea obtener más información acerca de los índices candidatos, vea Establecer un índice principal o candidato.

    Nota   Los índices candidatos (que se crean al incluir la opción UNIQUE en CREATE TABLE o ALTER TABLE - SQL) no son iguales que los índices creados con la opción UNIQUE del comando INDEX. Un índice creado con la opción UNIQUE del comando INDEX admite claves de índice duplicadas, mientras que los índices candidatos no las admiten. Vea INDEX para obtener información adicional acerca de su opción UNIQUE.

    Los valores nulos y los registros duplicados no se permiten en un campo utilizado para un índice principal o candidato. No obstante, Visual FoxPro no generará ningún error si crea un índice principal o candidato para un campo que admita valores nulos. Visual FoxPro generará un error si intenta introducir un valor nulo o duplicado en un campo utilizado para un índice principal o candidato.

  • REFERENCES TableName2 [TAG TagName1]
    Especifica la tabla primaria con la cual se establece una relación permanente. Si omite TAG TagName1, la relación se establecerá mediante la clave de índice principal de la tabla primaria. Si la tabla primaria no tiene ningún índice principal, Visual FoxPro generará un error.

    Incluya TAG TagName1 para establecer una relación basada en una etiqueta de índice existente para la tabla primaria. Los nombres de etiqueta de índice pueden contener hasta 10 caracteres.

    La tabla primaria no puede ser una tabla libre.

  • NOCPTRANS
    Impide la conversión a otra página de códigos distinta para los campos de tipo carácter y memo. Si la tabla se convierte a otra página de códigos, los campos para los que se haya especificado NOCPTRANS no se convertirán. NOCPTRANS solamente se puede especificar para los campos de tipo carácter y memo. Esto creará lo que aparece en el Diseñador de tablas como tipos de datos Character (binario) y Memo (binario).

    El ejemplo siguiente crea una tabla denominada MYTABLE con dos campos de caracteres y dos campos memo. El segundo campo de caracteres, CHAR2, y el segundo campo memo, MEMO2, incluyen NOCPTRANS para impedir la conversión.

    CREATE TABLE mytable (char1 C(10), char2 C(10) NOCPTRANS,;
       memo1 M, memo2 M NOCPTRANS)
    
  • PRIMARY KEY eExpression2 TAG TagName2
    Especifica un índice principal que se desea crear. eExpression2 especifica cualquier campo o combinación de campos de la tabla. TAG TagName2 especifica el nombre de la etiqueta de índice principal que se desea crear. Los nombres de etiqueta de índice pueden contener hasta 10 caracteres.

    Puesto que una tabla solamente puede tener un índice principal, no es posible incluir esta cláusula si ya ha creado un índice principal para un campo. Visual FoxPro generará un error si incluye dos o más cláusulas PRIMARY KEY en CREATE TABLE.

  • UNIQUE eExpression3 TAG TagName3
    Crea un índice candidato. eExpression3 especifica cualquier campo o combinación de campos de la tabla. No obstante, si ha creado un índice principal con una de las opciones de PRIMARY KEY, no podrá incluir el campo especificado para el índice principal. TAG TagName3 especifica un nombre de etiqueta para la etiqueta de índice candidato que se desea crear. Los nombres de etiqueta de índice pueden contener hasta 10 caracteres.

    Una tabla puede tener múltiples índices candidatos.

  • FOREIGN KEY eExpression4 TAG TagName4 [NODUP]
    Crea un índice externo (no principal) y establece una relación con una tabla primaria. eExpression4 especifica la expresión de clave de índice externo y TagName4 especifica el nombre de la etiqueta de clave de índice externo que se desea crear*.* Los nombres de etiqueta de índice pueden contener hasta 10 caracteres. Incluya NODUP para crear un índice externo candidato.

    Puede crear múltiples índices externos para la tabla, pero sus expresiones deben especificar campos distintos de la tabla.

  • REFERENCES TagName3 [TAG TagName5]
    Especifica la tabla primaria con la cual se establece una relación permanente. Incluya TAG TagName5 para establecer una relación basada en una etiqueta de índice para la tabla primaria. Los nombres de etiqueta de índice pueden contener hasta 10 caracteres. Si omite TAG TagName5, la relación se establecerá, de forma predeterminada, mediante la clave de índice principal de la tabla primaria.

  • CHECK eExpression2 [ERROR cMessageText2]
    Especifica la regla de validación de tabla. ERROR cMessageText2 especifica el mensaje de error que Visual FoxPro mostrará cuando se ejecute la regla de validación de tabla. El mensaje solamente se muestra cuando se modifican los datos en una ventana Examinar o en una ventana Editar.

  • FROM ARRAY ArrayName
    Especifica el nombre de una matriz existente cuyo contenido es el nombre, el tipo, la precisión y la escala para cada campo de la tabla. El contenido de la matriz se puede definir con la función AFIELDS( ).

Observaciones

La nueva tabla se abre en la menor área de trabajo disponible y se puede tener acceso a ella por su alias. La nueva tabla se abre de forma exclusiva, cualquiera que sea la configuración actual de SET EXCLUSIVE.

Si hay una base de datos abierta y no incluye la cláusula FREE, la nueva tabla se agregará a la base de datos. No puede crear una tabla nueva con el mismo nombre que otra ya existente en la base de datos.

Si no hay ninguna base de datos abierta al crear la nueva tabla, se generará un error si se incluyen las cláusulas NAME, CHECK, DEFAULT, FOREIGN KEY, PRIMARY KEY o REFERENCES.

Observe que la sintaxis de CREATE TABLE utiliza comas para separar determinadas opciones de CREATE TABLE. Además, las cláusulas NULL, NOT NULL, CHECK, DEFAULT, PRIMARY KEY y UNIQUE deben estar incluidas entre los paréntesis que contienen las definiciones de columnas.

Ejemplo

El ejemplo siguiente crea una nueva base de datos llamada Mydata1. CREATE TABLE se usa para crear tres tablas llamadas Salesman, Customer y Orders. Las cláusulas FOREIGN KEY y REFERENCES del segundo comando CREATE TABLE crean una relación persistente uno a varios entre las tablas Salesman y Customer. Las cláusulas DEFAULT del tercer comando CREATE TABLE establecen valores predeterminados, y las cláusulas CHECK y ERROR establecen reglas de empresa para escribir datos en campos específicos. MODIFY DATABASE se usa para mostrar la relación entre las tres tablas.

CLOSE DATABASES
CLEAR

* Create mydata database in the current directory or folder
CREATE DATABASE mydata1

* Create a salesman table with a primary key
CREATE TABLE salesman ;
   (SalesID c(6) PRIMARY KEY, ;
   SaleName C(20))

* Create a customer table and relate it to the salesman table.
CREATE TABLE customer ;
   (SalesID c(6), ;
   CustId i PRIMARY KEY, ;
   CustName c(20) UNIQUE,   ;
   SalesBranch c(3), ;
   FOREIGN KEY SalesId TAG SalesId REFERENCES salesman)

* Create an orders table related to customer with its own primary
* key and some business rules such as defaults & checks.
CREATE TABLE orders ;
   (OrderId i PRIMARY KEY, ;
      CustId i REFERENCES customer TAG CustId, ;
      OrderAmt y(4), ;
      OrderQty i ;
      DEFAULT 10 ;
      CHECK (OrderQty > 9) ;
      ERROR "Order Quantity must be at least 10", ;
         DiscPercent n(6,2) NULL ;
      DEFAULT .NULL., ;
      CHECK (OrderAmt > 0) ERROR "Order Amount Must be > 0" )

* Display new database, tables, and relationships
MODIFY DATABASE

* Delete example files
SET SAFETY OFF && To suppress verification message
CLOSE DATABASES     && Close database before deleting
DELETE DATABASE mydata1 DELETETABLES

Vea también

AFIELDS( ) | ALTER TABLE – SQL | CREATE | CREATE QUERY | INSERT – SQL | MODIFY QUERY | MODIFY STRUCTURE | OPEN DATABASE | SELECT – SQL | SET NOCPTRANS | Introducción a los comandos SQL