ORACLE DDL - CREATE TABLE

google bookmarks delicious yahoo digg technorati meneame live IExplorer bookmarks rss
Más vistos:
  1. CREATE INDEX
  2. DECODE
  3. TO_CHAR
  4. TO_DATE
  5. SELECT
  6. GRANT
  7. INSERT
  8. TUNNING
  9. UPDATE
  10. CREATE USER

Create Table

La estructura de la sentencia de creación de tablas es:
CREATE [GLOBAL TEMPORARY] TABLE [esquema.]tabla
     columna datatype [DEFAULT expr] [column_constraint(s)]
   [,columna datatype [,...]]
    table_constraint
    table_ref_constraint
   [ON COMMIT {DELETE|PRESERVE} ROWS]
    storage_options  [COMPRESS int|NOCOMPRESS]
   [LOB_storage_clause][varray_clause][nested_storage_clause] [XML_type_clause]
    Partitioning_clause
   [[NO]CACHE] [[NO]ROWDEPENDENCIES] [[NO]MONITORING] [PARALLEL parallel_clause]
   [ENABLE enable_clause | DISABLE disable_clause]
   {ENABLE|DISABLE} ROW MOVEMENT
   [AS subquery]
Queda mas claro con unos ejemplos:
create table T_PRODUCTOS (
  numproduct number,
  desproduct varchar2(10)
)
Es posible definir restricciones (constraint) con la sentencia CREATE.
create table T_PEDIDOS(
  numpedido   number primary key
  fecpedido   date,
  numclient  references T_CLIENTES
)
Una clave primaria (primary key) necesita tener asociado un indice unico (unique index). Es posible especificar el tablespace donde queremos crear el indice.
create table T_PEDIDOS(
  numpedido   number primary key
  fecpedido   date,
  numclient  references T_CLIENTES
  constraint pk_pedidos (numpedido) using index tablespace ts_idx
)

Index organized tables (IOT)

create table iot_ (
  a number,
  b varchar2(10),
constraint pk_iot_ primary key (a, b)
)
organization index;
Organization external The following create table statement creates an external table.
create table (....)
organization external (
  type              oracle_loader
  default directory some_dir
  access parameters (
    records delimited  by newline
    fields  terminated by ','
    missing field are values null
  )
  location ('some_file.csv')
)
reject limit unlimited;

Nested tables

create or replace type item as object (
  item_id Number  ( 6  ),
  descr   varchar2(30  ),
  quant   Number  ( 4,2)
);
/

create or replace type items as table of item;
/

create table bag_with_items (
  bag_id                   number(7)     primary key,
  bag_name                 varchar2(30)  not null,
  the_items_in_the_bag     items         
)
nested table the_items_in_the_bag store as bag_items_nt;

Adding a unique constraint for item_id:

alter table bag_items_nt add constraint uq_item_id unique(item_id);

Explicación de la sintaxis utilizada para los comandos:
Las palabras en mayusculas son comandos de oracle.
Las palabras en minusculas son opiones modificables
Las partes enmarcadas con [] son opcionales
Las palabras en negrita son las opciones por defecto
Las partes enmarcadas con {} son alternativas (una u otra).
El simbolo | indica OR