Utilice el comando CREATE TABLE para crear una tabla nueva inicialmente vacía en la base de datos actual. El comando CREATE TABLE crea automáticamente un tipo de datos que representa el tipo de tupla (tipo de estructura) correspondiente a una fila de la tabla
Las cláusulas de restricción opcionales especifican restricciones (o pruebas) que deben cumplir las filas nuevas o actualizadas para que una operación de inserción o actualización tenga éxito. Una restricción es una regla especificada; es decir, un objeto SQL que ayuda a definir conjuntos de valores válidos limitando los resultados de las operaciones de inserción, actualización o supresión que se utilizan en una tabla. Netezza no da soporte a comprobaciones de restricción; si especifica restricciones, debe llevar a cabo la comprobación de restricción y la integridad referencial.)
También puede escribir cada restricción de columna como una restricción de tabla. Una restricción de columna es solo una conveniencia de notación si la restricción solo afecta a una columna.
CREATE TABLE <tablename> [ ( <col>[,<col>… ] ) ] AS
<select_clause> [ DISTRIBUTE ON [HASH] ( <col>[<col>,… ] ) ]
La frase distribute on especifica la clave de distribución, la palabra hash es opcional.
CREATE TABLE <tablename> (col1 int, col2 int, col3 int)
DISTRIBUTE ON RANDOM;
La frase distribute on random especifica la distribución en rueda.
CREATE TABLE <tablename> (col1 int, col2 int, col3 int);
El sistema Netezza elige una clave de distribución. No hay forma de asegurar qué es una clave y que puede variar dependiendo del release de software de Netezza.
CREATE [ TEMPORARY | TEMP ] TABLE <table>
( <col> <type> [<col_constraint>][,<col> <type> [<col_constraint>]…]
[<table_constraint>[,<table_constraint>… ] )
[ DISTRIBUTE ON { RANDOM | [HASH] (<col>[,<col>…]) } ]
[ ORGANIZE ON { (<col>) | NONE } ]
[ ROW SECURITY ]
[ CONSTRAINT <constraint_name> ]
{NOT NULL | NULL | UNIQUE | PRIMARY KEY | DEFAULT <value> | <ref>}
[ [ [ NOT ] DEFERRABLE ] { INITIALLY DEFERRED | INITIALLY IMMEDIATE } |
[ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] [ NOT ] DEFERRABLE ]
[ CONSTRAINT <constraint_name> ]
{UNIQUE (<col>[,<col>…] ) |
PRIMARY KEY (<pkcol_name>[,<pkcol_name>…] ) |
FOREIGN KEY (<fkcol_name>[,<fkcol_name>…] ) <ref>}
[ [ [ NOT ] DEFERRABLE ] { INITIALLY DEFERRED | INITIALLY IMMEDIATE } |
[ INITIALLY DEFERRED | INITIALLY IMMEDIATE ] [ NOT ] DEFERRABLE ]
REFERENCES <reftable> [ (<refcol_name>[,<refcol_name>…] ) ]
[ MATCH FULL ]
[ ON UPDATE {CASCADE | RESTRICT | SET NULL | SET DEFAULT | NO ACTION} ]
[ ON DELETE {CASCADE | RESTRICT | SET NULL | SET DEFAULT | NO ACTION} ]
El sistema permite y mantiene la clave primaria, predeterminada, la clave foránea, exclusiva y referencias. El sistema IBM® Netezza no da soporte a las comprobaciones de restricción y a la integridad referencial. El usuario debe asegurar las comprobaciones de restricción y la integridad referencial.
| Entrada | Descripción |
|---|---|
| TEMP[ORARY] | La tabla que se quiere crear debe ser una tabla temporal. |
| <table> | Nombre de la tabla que se quiere crear. |
| <col> | Nombre de una columna que se debe crear en la nueva tabla. |
| <type> | Tipo de datos de la columna. |
| DISTRIBUTE ON | Cada tabla de la base de datos debe tener una clave de distribución que conste de entre una y cuatro columnas. El valor predeterminado es RANDOM, que hace que el sistema seleccione una clave de distribución al azar. |
| HASH | Este parámetro se puede especificar con fines de clarificación, pero no tiene ningún efecto en el comando. |
| ORGANIZE ON | En qué columnas (de una a cuatro) se va a organizar la tabla. No se puede especificar para tablas externas. Si se especifican columnas, la tabla no puede tener ninguna vista materializada, y todos los tipos de datos de columna especificados se deben poder asignar a una zona. La reorganización de datos de la tabla surte efecto cuando se ejecuta GROOM TABLE. Para obtener más información, consulte "Using Clustered Base Tables" en la IBM Netezza System Administrator’s Guide. |
| ROW SECURITY | Cree la tabla con seguridad en el nivel de fila. |
| <constraint_name> | Nombre que desea dar a una restricción de columna o a una restricción de tabla. Si no se especifica ningún nombre, el sistema genera uno. |
| NOT DEFERRABLE | DEFERRABLE | Controla si la restricción se puede aplazar hasta el final de la transacción. NOT DEFERRABLE es el valor predeterminado. (Netezza no da soporte a la comprobación de restricciones y a la integridad referencia.) |
| INITIALLY | Especifica DEFERRED (al final de la transacción) o IMMEDIATE (al final de cada sentencia). |
| NOT NULL | NULL | Especifica si la columna tiene permitido contener valores nulos. El valor predeterminado es NULL. |
| UNIQUE (restricción de columna y de tabla) | Define si cada valor de la columna debe ser exclusivo. |
| PRIMARY KEY (restricción de columna y de tabla) | Define si si las columnas especificadas deben formar la
clave principal de la tabla. Esta restricción es fundamentalmente una combinación de las restricciones UNIQUE y NOT NULL, pero identificar un conjunto de columnas como clave primaria también proporciona metadatos sobre el diseño del esquema. Una clave primaria implica que otras tablas pueden confiar en este conjunto de columnas como identificador exclusivo para filas. Solo se puede especificar una restricción de clave primaria para una tabla, ya sea una restricción de columna o bien una restricción de tabla. El conjunto de columnas que conforma la clave primaria debe ser diferente de todos los demás conjuntos de columnas nombrados en cualquier restricción exclusiva que esté definida para esta tabla. |
| DEFAULT (restricción de columna) | El valor predeterminado que se colocará en cada fila de esta columna. |
| REFERENCES (restricción de columna) | Las columnas especificadas de la nueva tabla deben contener únicamente valores que coincidan con valores de las columna especificadas de la tabla especificada. |
| Tabla FOREIGN KEY y REFERENCES (restricción de tabla) | Las columnas especificadas de la nueva tabla deben contener únicamente valores que coincidan con valores de las columna especificadas de la tabla especificada. Si no se especifica ninguna columna, el valor debe coincidir con la clave primaria de la tabla. Las columnas especificadas de la tabla referenciada deben tener una restricción exclusiva o de clave primaria en dicha tabla. |
| MATCH FULL | MATCH FULL impide que una columna de clave foránea de varias columnas sea nula si otras partes de la clave foránea no son nulas. Este es el valor predeterminado. MATCH PARTIAL no se admite. |
| ON UPDATE | ON DELETE | La acción que se realiza cuando la tabla
o las columnas especificadas se actualicen o se supriman:
|
El comando tiene las siguientes salidas:
| Salida | Descripción |
|---|---|
| CREATE TABLE | El sistema devuelve este mensaje si el comando se completa correctamente. |
| ERROR | El sistema devuelve este mensaje si falla la creación de tabla. El mensaje de error proporciona texto descriptivo, como: ERROR: Relation 'table' already exists. |
Es necesario ser el usuario administrativo o el propietario de la base de datos o el esquema, o la cuenta debe tener el privilegio Create Table.
A continuación se proporciona el uso de muestra:
MYDB.SCH1(USER)=>
CREATE TABLE name (
code CHARACTER(5) CONSTRAINT firstkey PRIMARY KEY,
title CHARACTER VARYING(40) NOT NULL,
did DECIMAL(3) NOT NULL,
date_prod DATE,
kind CHAR(10),
len INTERVAL HOUR TO MINUTE
);
MYDB.SCH1(USER)=>
CREATE TABLE name (
code CHAR(5),
title VARCHAR(40),
did DECIMAL(3),
date_prod DATE,
kind VARCHAR(10),
len INTERVAL HOUR TO MINUTE,
CONSTRAINT code_title PRIMARY KEY(code,title)
);
MYDB.SCH1(USER)=> CREATE TABLE distributors (
did DECIMAL(3),
name CHAR VARYING(40),
PRIMARY KEY(did)
);
MYDB.SCH1(USER)=> CREATE TABLE distributors (
did DECIMAL(3) PRIMARY KEY,
name VARCHAR(40)
);
Los dos ejemplos son equivalentes. El primer ejemplo utiliza la sintaxis de restricción de tabla. El segundo ejemplo utiliza la notación de restricción de columna.
MYDB.SCH1(USER)=> CREATE TABLE distributors (
did DECIMAL(3) CONSTRAINT no_null NOT NULL,
name VARCHAR(40) NOT NULL
);