Índice

En esta entrada vamos a ver la orden CREATE

CREATE sirve para crear objetos de la base de datos, entre estos objetos tenemos tablas, vistas etc.

Creación de una tabla

CREATE TABLE nombre tabla
(nombrecol1 tipocol1
  [CONSTRAINT nombre_restricción]
  [not NULL]
  [PRIMARY KEY]
  [UNIQUE]
  [DEFAULT valor]
  [check <condici>]
  [REFERENCES Nombre_tabla_ref (colref)[ON DELETE CASCADE]],...

  [Restricciones de la tabla]
)
[tablespace nombre-tablespace];


Donde:

Cuando almacenamos datos las tablas se ajustan a una serie de restricciones predefinidas, por ejemplo que una columna no pueda tomar valores negativos o que una columna tenga que almacenarse en mayúsculas.

La integridad hace referencia al hecho de que los datos de la BD han de ajustarse a restricciones antes de almacenarse en la BD y una restricción de integridad será una regla que restringe el rango de valores de una o más columnas de una tabla.

Existe otro tipo de integridad que es la integridad referencial, que garantiza que los valores de una o varias columnas de una tabla dependan de los valores de otro o otras columnas de otra tabla.

Las restricciones se definen dentro de la orden CREATE TABLE y pare ello se utiliza la cláusula CONSTRAINT. Una vez creadas las restricciones se pueden añadir, modificar o borrar a través de la orden ALTER TABLE.

Una cláusula CONSTRAINT puede restringir una sola columna, se habla en este caso de restricción de columna o puede restringir un grupo de columnas de una tabla, en este caso se llama restricción de tabla.

Notas

CREATE TABLE nombre tabla
(nombrecol1 tipocol1
  [CONSTRAINT nombre_restricción]
  [not NULL] [PRIMARY KEY][UNIQUE][DEFAULT valor][check <condici>]
  [REFERENCES Nombre_tabla_ref (colref)[ON DELETE CASCADE]],...
  [Restricciones de la tabla]
)
[tablespace nombre-tablespace]

AS Consulta_SQL;

Ejemplo 1: Restricciones sobre columnas

CREATE TABLE Emp1
   (empno     NUMBER        CONSTRAINT pk_emp1 PRIMARY KEY,
    ename     VARCHAR2(10)  CONSTRAINT nn_ename1 NOT NULL
                            CONSTRAINT upper_ename1 CHECK (ename = UPPER(ename)),
    job       VARCHAR2(9),
    mgr       NUMBER        CONSTRAINT fk_mgr1  REFERENCES scott.emp(empno),
    hiredate  DATE          DEFAULT SYSDATE,
    sal       NUMBER(10,2)  CONSTRAINT ck_sal1 CHECK (sal > 500),
    comm      NUMBER(9,0)   DEFAULT NULL,
    deptno    NUMBER(2)     CONSTRAINT nn_deptno1 NOT NULL
                            CONSTRAINT fk_deptno1 REFERENCES scott.dept(deptno) ) ;

Ejemplo 2: Restricciones sobre la tabla

CREATE TABLE docindex
  ( token CHAR(20),
    doc_oid INTEGER,
    token_frequency SMALLINT,
    token_occurrence_data VARCHAR(512),
    CONSTRAINT pk_docindex PRIMARY KEY (token, doc_oid) );
CREATE TABLE emp
  (empno     NUMBER(4),
   ename     VARCHAR2(10),
   job       VARCHAR2(9),
   deptno    VARCHAR2(9),
   CONSTRAINT fk_deptno FOREIGN KEY (deptno,job) REFERENCES  dept(deptno,job));

Descripción de la estructura de una tabla

DESCRIBE nombre_tabla;

Siguiente Tema: Data Definition Language(DDL) - DROP.