Todos los productos
Search
Centro de documentos

PolarDB:Create a table

Última actualización: Sep 05, 2026

CREATE TABLE crea una tabla nueva y vacía en la base de datos actual. El usuario que ejecuta la sentencia se convierte en el propietario de la tabla. Después de que cree una tabla, use INSERT para agregar filas y ALTER TABLE para modificar su estructura o agregar restricciones.

Sintaxis

CREATE [ GLOBAL TEMPORARY ] TABLE table_name (
  { column_name data_type [ DEFAULT default_expr ]
  [ column_constraint [ ... ] ] | table_constraint } [, ...]
  )
  [ ON COMMIT { PRESERVE ROWS | DELETE ROWS } ]
  [ TABLESPACE tablespace ]

Donde column_constraint es una de estas opciones:

[ CONSTRAINT constraint_name ]
{ NOT NULL
  | NULL
  | UNIQUE [ USING INDEX TABLESPACE tablespace ]
  | PRIMARY KEY [ USING INDEX TABLESPACE tablespace ]
  | CHECK (expression)
  | REFERENCES reftable [ ( refcolumn ) ]
      [ ON DELETE action ] }
[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]

Y table_constraint es una de estas opciones:

[ CONSTRAINT constraint_name ]
{ UNIQUE ( column_name [, ...] )
    [ USING INDEX TABLESPACE tablespace ]
  | PRIMARY KEY ( column_name [, ...] )
      [ USING INDEX TABLESPACE tablespace ]
  | CHECK ( expression )
  | FOREIGN KEY ( column_name [, ...] )
      REFERENCES reftable [ ( refcolumn [, ...] ) ]
      [ ON DELETE action ] }
[ DEFERRABLE | NOT DEFERRABLE ]
[ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]

Parámetros

Parámetro

Descripción

GLOBAL TEMPORARY

Crea una tabla temporal que se elimina automáticamente al final de la sesión actual. Los índices creados en una tabla temporal también son temporales. Si una tabla temporal comparte el mismo nombre que una tabla permanente, la tabla permanente no está visible en la sesión actual a menos que se haga referencia a ella mediante su nombre calificado por el esquema.

table_name

Nombre de la tabla. Use el nombre calificado por el esquema para hacer referencia a la tabla cuando sea necesario.

column_name

Nombre de una columna de la tabla.

data_type

Tipo de datos de la columna. El valor puede incluir especificadores de matriz.

DEFAULT default_expr

Expresión de valor predeterminado para la columna. La expresión no puede contener subconsultas ni referencias a otras columnas de la tabla, y su tipo de datos debe coincidir con el tipo de datos de la columna. Si no se inserta ningún valor y no se define un valor predeterminado, se usa NULL.

CONSTRAINT constraint_name

Nombre opcional para la restricción de columna o de tabla. Si se omite, el sistema genera un nombre automáticamente.

NOT NULL

Evita que la columna contenga valores NULL.

PRIMARY KEY (restricción de columna)

Requiere que los valores de la columna identifiquen de manera única cada fila y que no sean nulos. Una tabla solo puede tener una clave primaria. Las columnas de la clave primaria no pueden aparecer también en una restricción UNIQUE. PolarDB crea automáticamente un índice para aplicar la clave primaria.

PRIMARY KEY ( column_name [, ...] ) (restricción de tabla)

Define una clave primaria compuesta en varias columnas.

CHECK (expression)

Expresión booleana que debe evaluarse como true o desconocido para que una operación INSERT o UPDATE se realice correctamente. La expresión no puede contener subconsultas ni referencias a variables fuera de la fila actual.

REFERENCES reftable [ ( refcolumn ) ] [ ON DELETE action ] (restricción de columna)

Define una restricción de clave externa. Si se omite refcolumn, se usa la clave primaria de reftable. Las columnas referenciadas deben pertenecer a una restricción UNIQUE o PRIMARY KEY de la tabla referenciada. Si las columnas referenciadas cambian con frecuencia, agregue un índice en la columna de clave externa para mantener la eficiencia de las acciones referenciales.

FOREIGN KEY ( column [, ...] ) REFERENCES reftable [ ( refcolumn [, ...] ) ] [ ON DELETE action ] (restricción de tabla)

Define una restricción de clave externa en varias columnas.

ON DELETE action

Acción que se debe ejecutar cuando se elimina una fila referenciada. Las acciones referenciales no pueden diferirse incluso si la restricción es diferible. Acciones compatibles: CASCADE (elimina o actualiza las filas que hacen referencia a la fila eliminada) y SET NULL (establece los valores de la columna de referencia en NULL).

DEFERRABLE / NOT DEFERRABLE

Indica si la comprobación de la restricción puede diferirse hasta el final de una transacción. Use SET CONSTRAINTS para diferir una restricción diferible. Solo las restricciones de clave externa admiten esta opción; todas las demás restricciones no son diferibles. Valor predeterminado: NOT DEFERRABLE.

INITIALLY IMMEDIATE / INITIALLY DEFERRED

Indica cuándo se comprueba una restricción diferible. INITIALLY IMMEDIATE comprueba la restricción después de cada sentencia (valor predeterminado). INITIALLY DEFERRED la comprueba al final de la transacción. Use SET CONSTRAINTS para anular este valor en tiempo de ejecución.

ON COMMIT

Acción que se debe aplicar a una tabla temporal al final de un bloque de transacción. PRESERVE ROWS (valor predeterminado) conserva todas las filas. DELETE ROWS elimina todas las filas, lo que equivale a ejecutar TRUNCATE en cada confirmación.

TABLESPACE tablespace

El tablespace en el que se creará la tabla.

Notas de uso

  • Si se incluye un nombre de esquema (por ejemplo, CREATE TABLE myschema.mytable), la tabla se crea en ese esquema; de lo contrario, se crea en el esquema actual.

  • Las tablas temporales siempre existen en un esquema dedicado; no especifique un esquema cuando cree una.

  • El nombre de la tabla debe ser único dentro del esquema; no puede duplicar el nombre de ninguna tabla, secuencia, índice o vista existente.

  • CREATE TABLE también crea un tipo de datos compuesto que representa una fila de la tabla. El nombre de la tabla no puede coincidir con el nombre de un tipo de datos existente en el mismo esquema.

  • Una tabla puede tener hasta 1,600 columnas. En la práctica, el límite efectivo puede ser menor debido a las restricciones de longitud de tupla.

  • Una restricción de columna se aplica a una sola columna. Una restricción de tabla se aplica a varias columnas. Para facilitar la administración, una restricción de una sola columna puede escribirse en cualquiera de las dos formas.

  • PolarDB crea automáticamente un índice para cada restricción UNIQUE y PRIMARY KEY; no es necesario crear un índice explícito.

Notas de compatibilidad

El comportamiento de CREATE TABLE en PolarDB for Oracle es diferente al de las bases de datos Oracle. A continuación se indican las diferencias:

  • Temporary table visibility: Las tablas temporales están visibles solo en la sesión actual. Este mecanismo es diferente del mecanismo de tablas temporales globales de las bases de datos Oracle.

  • **ON COMMIT predeterminado**: El comportamiento predeterminado es PRESERVE ROWS. En Oracle, el valor predeterminado es DELETE ROWS.

Ejemplos

Cree dos tablas relacionadas

A continuación se muestra un ejemplo que crea una tabla dept y una tabla emp con una clave externa que hace referencia a dept.

CREATE TABLE dept (
    deptno          NUMBER(2) NOT NULL CONSTRAINT dept_pk PRIMARY KEY,
    dname           VARCHAR2(14),
    loc             VARCHAR2(13)
);

CREATE TABLE emp (
    empno           NUMBER(4) NOT NULL CONSTRAINT emp_pk PRIMARY KEY,
    ename           VARCHAR2(10),
    job             VARCHAR2(9),
    mgr             NUMBER(4),
    hiredate        DATE,
    sal             NUMBER(7,2),
    comm            NUMBER(7,2),
    deptno          NUMBER(2) CONSTRAINT emp_ref_dept_fk
                        REFERENCES dept(deptno)
);

Agregue una restricción UNIQUE

CREATE TABLE dept (
    deptno          NUMBER(2) NOT NULL CONSTRAINT dept_pk PRIMARY KEY,
    dname           VARCHAR2(14) CONSTRAINT dept_dname_uq UNIQUE,
    loc             VARCHAR2(13)
);

Agregue una restricción CHECK de nivel de columna

CREATE TABLE emp (
    empno           NUMBER(4) NOT NULL CONSTRAINT emp_pk PRIMARY KEY,
    ename           VARCHAR2(10),
    job             VARCHAR2(9),
    mgr             NUMBER(4),
    hiredate        DATE,
    sal             NUMBER(7,2) CONSTRAINT emp_sal_ck CHECK (sal > 0),
    comm            NUMBER(7,2),
    deptno          NUMBER(2) CONSTRAINT emp_ref_dept_fk
                        REFERENCES dept(deptno)
);

Agregue una restricción CHECK de nivel de tabla

CREATE TABLE emp (
    empno           NUMBER(4) NOT NULL CONSTRAINT emp_pk PRIMARY KEY,
    ename           VARCHAR2(10),
    job             VARCHAR2(9),
    mgr             NUMBER(4),
    hiredate        DATE,
    sal             NUMBER(7,2),
    comm            NUMBER(7,2),
    deptno          NUMBER(2) CONSTRAINT emp_ref_dept_fk
                        REFERENCES dept(deptno),
    CONSTRAINT new_emp_ck CHECK (ename IS NOT NULL AND empno > 7000)
);

Defina una clave primaria compuesta

A continuación se muestra un ejemplo que crea una tabla jobhist con una clave primaria compuesta en empno y startdate.

CREATE TABLE jobhist (
    empno           NUMBER(4) NOT NULL,
    startdate       DATE NOT NULL,
    enddate         DATE,
    job             VARCHAR2(9),
    sal             NUMBER(7,2),
    comm            NUMBER(7,2),
    deptno          NUMBER(2),
    chgdesc         VARCHAR2(80),
    CONSTRAINT jobhist_pk PRIMARY KEY (empno, startdate)
);

Establezca valores predeterminados para las columnas

La columna job tiene como valor predeterminado 'SALESMAN'. La columna hiredate tiene como valor predeterminado la fecha en que se inserta la fila.

CREATE TABLE emp (
    empno           NUMBER(4) NOT NULL CONSTRAINT emp_pk PRIMARY KEY,
    ename           VARCHAR2(10),
    job             VARCHAR2(9) DEFAULT 'SALESMAN',
    mgr             NUMBER(4),
    hiredate        DATE DEFAULT SYSDATE,
    sal             NUMBER(7,2),
    comm            NUMBER(7,2),
    deptno          NUMBER(2) CONSTRAINT emp_ref_dept_fk
                        REFERENCES dept(deptno)
);

Cree una tabla en un tablespace específico

CREATE TABLE dept (
    deptno          NUMBER(2) NOT NULL CONSTRAINT dept_pk PRIMARY KEY,
    dname           VARCHAR2(14),
    loc             VARCHAR2(13)
) TABLESPACE diskvol1;

Pasos siguientes

  • Para modificar la estructura o las restricciones de una tabla existente, use ALTER TABLE.

  • Para eliminar una tabla, use DROP TABLE.

  • Para agregar índices además de los que se crean automáticamente para las claves primarias y las restricciones UNIQUE, use CREATE INDEX.

  • Para insertar datos en la tabla, use INSERT.