Bases de datos

Crear tabla SQL

cotejo y SQL

¿Qué es una sentencia SQL Create Table?

Un esquema de base de datos relacional se compone de un conjunto relacionado de objetos que incluyen tablas, vistas e índices. La base de datos suele estar formada por objetos creados por el usuario y objetos del sistema que se utilizan para catalogar los objetos del usuario y gestionar la instancia de la base de datos. Muchas bases de datos, como Actian Data Platform, tienen un único esquema para todas las aplicaciones, mientras que otras, como DB2, tienen tablespaces o DB Spaces para alojar esquemas de usuario. La sentencia CREATE es una forma de sentencia DML (Database Manipulation Language), un subconjunto de la especificación del lenguaje SQL utilizado para crear objetos de base de datos.

La sentencia CREATE TABLE se utiliza para crear una nueva tabla en una base de datos relacional. La sintaxis suele tener extensiones no estándar para especificar criterios de almacenamiento.

Ejemplo de creación de tabla SQL

A continuación se muestra un sencillo ejemplo de creación de tabla SQL que crea una tabla para contener datos sobre los departamentos de una empresa:

CREAR TABLA DEPARTAMENTOS (
    Departamento-ID int,
    Nombre-Departamento varchar(255),
    Departamento-Centro de Coste int );

Puede crear tablas utilizando otra tabla como plantilla. Por ejemplo, la tabla siguiente sólo contiene filas relacionadas con el Departamento-ID 10:

CREAR TABLA DEPARTAMENTO-10 COMO 
    SELECT * FROM DEPARTAMENTOS WHERE
    Departamento-ID = 10;

Ejemplos de Actian SQL

Las siguientes son específicas de las bases de datos Actian.

Esta declaración tiene el siguiente formato:

CREAR TABLA [SI NO EXISTE] [esquema.]nombre_tabla

       (especificación_columna {, especificación_columna })

       [restricción_tabla {, restricción_tabla}]

       [con_cláusula]

nombre_tabla

Define el nombre de la nueva tabla. Debe ser un nombre de objeto válido.

especificación_columna

Define las características de la columna.

restricción_tabla

Especifica la restricción a nivel de tabla como se describe en Restricciones a nivel de tabla y de columna.

con_clausa

Especifica las opciones de la cláusula WITH separadas por una coma. Para obtener más información, consulte Cláusula WITH.

Especificación de columna

La especificación de columna en una sentencia CREATE TABLE define las características de una columna de la tabla.

La especificación_columna tiene el siguiente formato:

nombre_columna tipo_dato

[[CON] DEFAULT default_spec | CON DEFAULT | NO DEFAULT] [CON NULL | NOT NULL]
ENMASCARADO [AS {BASIC | NULL | 0 | ' ' }] [GENERADO SIEMPRE COMO [SEQ_NAME] IDENTIDAD
[GENERADO SIEMPRE COMO [seq_name] IDENTITY [(seq_options)]

| GENERATED BY DEFAULT AS [seq_name] IDENTITY [(seq_options)]]
[[CONSTRAINT nombre_restricción] columna_restricción

{[CONSTRAINT nombre_restricción] columna_restricción}]

 

nombre_columna

Asigna un nombre válido (ver Reglas de denominación de objetos) a la columna.

tipo de datos

Asigna un tipo de datos válido a la columna. Si se especifica CREATE TABLE...AS SELECT, la nueva tabla toma sus nombres de columna y formatos de los resultados de la cláusula SELECT de la subselección especificada en la cláusula AS (a menos que se especifiquen nombres de columna diferentes).

Nota: Para las columnas char y varchar, la especificación de la columna es el número de bytes (no el número de caracteres).

Cláusula DEFAULT

Especifica si la columna es obligatoria.

CON NULL | NO NULL

Especifica si la columna acepta nulos:

CON NULO

(Por defecto) Indica que la columna acepta nulos. Si el usuario no proporciona ningún valor, se insertará null.

NOT NULL

Indica que la columna no acepta nulos.

[ENMASCARADO [COMO {BASIC | NULL | 0 | ' ' }]

Muestra la columna con la característica de máscara especificada a menos que el usuario tenga el privilegio UNMASK. La característica de máscara define cómo mostrar los datos enmascarados:

BASIC - Rellena el ancho de la columna con asteriscos

NULL - NULL

0 - 0

' ' - en blanco

GENERATED ALWAYS AS [seq_name] IDENTITY [(seq_options)] | GENERATED BY DEFAULT AS [seq_name] IDENTITY [(seq_options)]

Indica que la columna es una columna IDENTITY. La columna debe definirse como integer o bigint.

[CONSTRAINT nombre_restricción] restricción_columna

Especifica las comprobaciones que deben realizarse en el contenido de la columna para garantizar que los valores de los datos son adecuados.

Cláusula DEFAULT

La cláusula WITH|NOT DEFAULT de la especificación de columna especifica si una columna requiere una entrada.

Esta cláusula tiene el siguiente formato:

[WITH] DEFAULT default_spec | WITH DEFAULT | NOT DEFAULT

[WITH] DEFAULT default_spec

Indica que si no se proporciona ningún valor (porque no se requiere ninguno), Actian Data Platform inserta el valor predeterminado. El valor predeterminado debe ser compatible con el tipo de datos de la columna.

Para las columnas de caracteres, los valores por defecto válidos incluyen las constantes USER, CURRENT_USER y SYSTEM_USER.

Para las columnas booleanas, los valores por defecto válidos incluyen FALSE o TRUE.

CON DEFAULT

Indica que si no se proporciona ningún valor, Actian Data Platform inserta 0 para las columnas numéricas y monetarias, una cadena vacía para las columnas de caracteres, la fecha actual para las columnas de fecha ANSI y la marca de tiempo actual para las columnas de marca de tiempo.

NO DEFAULT

Indica que la columna es obligatoria (requiere una entrada).

A continuación se muestra un ejemplo de utilización de la cláusula DEFAULT:

CREAR TABLA DEPT(dnombre CHAR(10),

    location CHAR(10) DEFAULT 'NY',

    creación FECHA DEFAULT '01/01/20',

    presupuesto MONEY DEFAULT 10000);

Una columna de identidad es una columna entera o bigint cuyos valores se generan automáticamente a partir de una secuencia definida por el sistema.

Una columna de identidad es una forma de generar automáticamente un valor numérico único para cada fila de una tabla. Una tabla sólo puede tener una columna definida con el atributo de identidad.

La cláusula IDENTITY tiene el siguiente formato:

[GENERADO SIEMPRE COMO [seq_name] IDENTITY [(seq_options)]

| GENERATED BY DEFAULT AS [seq_name] IDENTITY [(seq_options)]]

donde:

GENERATED ALWAYS AS [seq_name] IDENTITY [(seq_options)]

Indica que el valor de la columna viene determinado por la secuencia correspondiente. El usuario no puede especificar un valor explícito para la columna en una sentencia INSERT o UPDATE.

Las sentencias INSERT que contienen columnas de identidad SIEMPRE en su lista de columnas deben especificar DEFAULT como valor correspondiente. Para anular este comportamiento, utilice las cláusulas OVERRIDING SYSTEM VALUE y OVERRIDING USER VALUE de la sentencia INSERT.

El tipo de datos de la secuencia coincide con el tipo de datos de la columna de identidad.

GENERATED BY DEFAULT AS [seq_name] IDENTITY [(seq_options)]

Indica que el usuario puede proporcionar opcionalmente un valor explícito para la columna.

nombre_secuencia

Define el nombre de la secuencia.

seq_options

Controlan el modo en que la secuencia suministra los datos cuando los solicita una aplicación. Las opciones de secuencia pueden especificarse en cualquier orden, y ninguna es obligatoria.

Se puede especificar cualquiera de las siguientes seq_options en una lista separada por espacios en blanco:

COMENZAR CON el número

Especifica el inicio de la secuencia como una constante entera. El valor por defecto es 1 para secuencias positivas (incremento positivo) y -1 para secuencias negativas (incremento negativo). (Esta opción sólo es válida con la sentencia CREAR SECUENCIA).

REINICIAR CON número

Especifica un nuevo valor de inicio para la secuencia. (Esta opción sólo es válida con la sentencia ALTER SEQUENCE).

INCREMENTO POR número

Especifica el valor de incremento (positivo o negativo) que produce los valores sucesivos de la secuencia.

Predeterminado: 1

Número MAXVALUE

NO MAXVALUE / NOMAXVALUE

Especifica que las secuencias pueden generar valores con un límite superior equivalente al del tipo de datos elegido para contener la secuencia (por ejemplo, 2**31-1 para números enteros).

Número MINVALOR

Especifica el valor mínimo permitido para la secuencia.

NO MINVALUE / NOMINVALUE

Especifica que las secuencias pueden generar valores con un límite inferior equivalente al del tipo de datos elegido para contener la secuencia (por ejemplo, -2**31 para números enteros).

Número CACHE

Especifica el número de valores de secuencia almacenados en la memoria del servidor. Cuando se agota el suministro de números, Actian Data Platform requiere un acceso al catálogo para adquirir el siguiente conjunto.

Predeterminado: 20

SIN CACHÉ / NOCACHE

Especifica que el servidor no debe almacenar en caché los valores de secuencia. Cuando se selecciona esta opción, se requiere un acceso al catálogo para cada solicitud de un valor de secuencia. Esto puede degradar gravemente el rendimiento de la aplicación.

Predeterminado: CACHE 20 (cuando no se especifica ni CACHE ni NOCACHE), lo que garantiza una baja sobrecarga del catálogo.

CICLO

Especifica que la secuencia se reinicia en el valor inicial una vez que alcanza el valor mínimo (incremento negativo) o el valor máximo (incremento positivo).

Por defecto: NO CICLO

NO CYCLE / NOCICLO

Especifica que la secuencia no se cicla cuando se genera el último valor válido. Se emite un error a la transacción solicitante.

Por defecto: SECUENCIAL

La secuencia creada para gestionar los valores de la columna de identidad es accesible por su nombre generado. Sin embargo, la secuencia generada no se puede eliminar explícitamente; en su lugar, se debe eliminar la columna o tabla de identidad, o se debe utilizar la sentencia ALTER USER ... ALTER COLUMN ... DROP IDENTITY.

Restricciones

Para garantizar que el contenido de las columnas cumple los requisitos de la base de datos, especifique restricciones.

Las restricciones pueden especificarse para columnas individuales o para toda la tabla. Para obtener más información, consulte Restricciones a nivel de tabla y a nivel de columna.

Los tipos de restricciones son:

  • Restricción única - Garantiza que un valor aparezca en una columna sólo una vez. Las restricciones únicas se especifican con la opción UNIQUE.
  • Restricción referencial - Garantiza que un valor asignado a una columna aparezca en una columna correspondiente de otra tabla. Las restricciones referenciales se especifican mediante la opción REFERENCIAS.
  • Restricción de clave primaria - Declara una o más columnas para su uso en restricciones referenciales en otras tablas. Las claves primarias deben ser únicas.

Restricciones a nivel de tabla y de columna

Las restricciones pueden especificarse para grupos de columnas como parte de la definición de la tabla (restricciones a nivel de tabla) o para columnas individuales como parte de la especificación de la columna (restricciones a nivel de columna).

La restricción tiene la siguiente sintaxis:

[CONSTRAINT nombre_restricción] restricción

nombre_restricción

Define un nombre para la restricción. Si se omite el nombre, Actian Data Platform asigna uno. El nombre de la restricción se utiliza cuando se elimina la restricción mediante la sentencia ALTER TABLE.

Nota: Se recomienda definir un nombre al crear una restricción; de lo contrario, habrá que consultar los catálogos del sistema para determinar el nombre definido por el sistema.

restricción

Es una restricción a nivel de tabla (table_constraint) o a nivel de columna (column_constraint).

table_constraint es una o más de las siguientes:

UNIQUE (nombre_columna {, nombre_columna})

PRIMARY KEY (nombre_columna {, nombre_columna})

REFERENCIAS [esquema.]nombre_tabla [(nombre_columna {, nombre_columna})] [enforce_option] [referential_actions]

restricción_columna es una o más de las siguientes:

ÚNICO

PRIMARY KEY

FOREIGN KEY (nombre_columna {, nombre_columna})

REFERENCIAS [esquema.]nombre_tabla[(nombre_columna)] [enforce_option] [acciones_referenciales]

donde:

aplicar_opción

Especifica si se aplican las restricciones. Los valores válidos son:

NO APLICADA

No aplica la restricción cuando se define o cuando se actualiza la tabla. La restricción se define en los catálogos de la base de datos. Las restricciones NO APLICADAS pueden utilizarse para generar sentencias SQL o planes de consulta mejorados.

No se crean índices para las restricciones NOT ENFORCED.

ENFORCED

(Predeterminado) Aplica la restricción.

Existen opciones adicionales para especificar acciones referenciales y particionamiento que se describen en el sitio web docs.actian.com.

En resumen

Actian Zen proporciona una API basada en SQL y No-SQL o Key-index para dar a los desarrolladores una elección de métodos de acceso. Actian Zen es un DBMS que está diseñado con baja administración. Es hora de hacer que sus datos sean fáciles; visite nuestro sitio web para descubrir cómo.