Cómo crear una tabla de base de datos con SQL Script

Crear tablas de base de datos

En la variante más simple, para crear una tabla de base de datos, solo necesita definir las columnas en la definición de tabla de la CREATE TABLE declaración, por ejemplo, de la siguiente manera:

CREATE TABLE status (id INT ,

           text NVARCHAR(30) );

Todas las demás propiedades de la tabla corresponden a los valores predeterminados de la CREATE TABLE declaración. En las siguientes secciones, describimos cómo puede definir las propiedades más importantes de las tablas de la base de datos.

Definición de columna

Las columnas se definen después del nombre de la tabla entre paréntesis. Todas las definiciones de columna se enumeran una tras otra, separadas por comas. A continuación se muestran algunos ejemplos de definiciones.

<columnname>

   <datatype>

   [DEFAULT <defaultvalue>]

   [<constraint>]

Se utiliza un valor predeterminado cuando se inserta un nuevo registro, pero no se especifica ningún valor para esta columna. Además, también puede definir restricciones para cada columna, como se muestra a continuación, como las siguientes restricciones:

  • NOT NULL : el valor de la columna debe estar definido; de lo contrario, un registro de datos no se puede
  • ÚNICO : En esta columna, cada valor (excepto NULL) puede aparecer solo una vez.
  • CLAVE PRINCIPAL : La columna es la única clave primaria . Como resultado, esta columna tiene automáticamente las propiedades NOT NULL y UNIQUE.

CREATE TABLE status (id INT PRIMARY KEY,

           sort_nr INT NOT NULL UNIQUE,

                text NVARCHAR(30) );

Si las dos restricciones o se refieren a más de una columna, también puede especificar las restricciones respectivas después de las definiciones de columna relevantes, como se muestra en esta lista. UNIQUE PRIMARY KEY

CREATE TABLE test_unique (a INT,

                b INT,

                c INT,

           UNIQUE(a, b),

                UNIQUE(b, c));

En el ejemplo que se muestra arriba, los valores combinados de las columnas A / B y B / C deben ser únicos para cada fila. Tenga en cuenta que se permiten varios valores en este contexto. Una clave primaria compuesta es similar a una restricción y, además, la restricción es válida para cada columna, como se muestra aquí. NULL UNIQUE NOT NULL

CREATE TABLE test_composite_key (a INT,

   b INT,

   c INT,

   PRIMARY KEY(a, b));

Tipo de tablas

En el contexto de una base de datos SAP HANA, básicamente diferenciamos entre dos tipos y , para tablas. El tipo de tabla de una base de datos se determina opcionalmente durante el proceso de su creación utilizando la siguiente declaración: ROW COLUMN

CREATE [<type>] TABLE

El valor de un tipo significa que el contenido de la tabla se almacenará fila por fila en el almacén de filas . Por lo tanto, este tipo es especialmente adecuado si solo es necesario leer unos pocos registros de datos, pero su ancho completo es relevante. ROW

Por el contrario, el tipo de tabla almacena los datos columna por columna en el almacén de columnas . Este tipo puede parecer absurdo al principio, pero la ventaja es que, por ejemplo, con consultas SQL más complejas, solo se procesarán primero las columnas relevantes para determinar el conjunto de resultados. Se pueden agregar columnas adicionales más adelante. SAP recomienda utilizar tablas siempre que necesite procesar una gran cantidad de registros de datos, de los cuales solo necesita una cantidad relativamente pequeña de columnas. COLUMN 

Al seleccionar el tipo de almacenamiento apropiado, también debe tener en cuenta que el acceso de lectura y las tablas están controlados por diferentes motores . Una combinación que utiliza tablas de ambos tipos obliga a los motores a cambiar, lo que significa que los datos deben copiarse una vez. ROW COLUMN

Los siguientes cuatro tipos se pueden utilizar para crear tablas temporales.

  • GLOBAL TEMPORARY ROW
  • GLOBAL TEMPORARY COLUMN
  • LOCAL TEMPORARY ROW
  • LOCAL TEMPORARY COLUMN

Valor predeterminado para el tipo de tabla

Hasta e incluyendo SAP HANA 2.0 Support Package Stack (SPS) 02, el valor predeterminado para el tipo es ROW. Con el lanzamiento de SPS 03, el valor predeterminado se ha establecido en COLUMN. Si necesita revertir este cambio, puede definir el valor predeterminado usted mismo en el archivo de configuración indexserver.ini a través del default_table_type parámetro. Este parámetro estaba disponible antes de SPS 03 y no se sobrescribirá durante las actualizaciones.

Puede encontrar más información sobre este tema en la nota SAP 2551355.

Asignación automática de números

Puede especificar que una columna se llene automáticamente con números secuenciales, lo que es similar a usar una secuencia .

La adición GENERATED BY DEFAULT AS IDENTITY al final de una definición de columna provoca la asignación de un número secuencial si no se ha especificado ningún valor para la columna durante el proceso de inserción. Alternativamente, puede usar GENERATED ALWAYS AS IDENTITY para forzar constantemente la generación de un número secuencial, como se muestra aquí.

CREATE COLUMN TABLE test_identity (

a INT GENERATED BY DEFAULT AS IDENTITY,

b VARCHAR(10));

INSERT INTO test_identity (b) VALUES (‘One’);

INSERT INTO test_identity (b) VALUES (‘Two’);

INSERT INTO test_identity (a,b) VALUES (3, ‘Three’);

INSERT INTO test_identity (b) VALUES (‘Four’);

SELECT * FROM test_identity;

Para la asignación de números, también puede utilizar otras opciones como un valor inicial o un incremento por el cual se debe realizar un incremento.

Copiar una tabla

Si desea crear una tabla que deba definirse exactamente como una tabla existente, puede utilizar la siguiente declaración:

CREATE TABLE <tablename>

   LIKE <originaltable>

        [WITH DATA];

La adición WITH DATA asegura que todos los datos de la tabla original se copien en la nueva tabla. Especialmente para pruebas y análisis de errores, estas copias de tablas pueden ser bastante útiles.

Crear una tabla basada en una consulta SQL

También puede crear tablas de base de datos con una consulta SELECT , como se muestra a continuación. En este contexto, las columnas de la lista de campos se utilizan para la definición de la columna.

CREATE TABLE tmp_tasks AS (

         SELECT a.id,

                b.firstname,

                b.lastname,

                t.team_text

                FROM tasks AS a

                LEFT OUTER JOIN users AS b

                ON a.assignee = b.id

                LEFT OUTER JOIN team_text AS t

                ON b.team = t.id

                )

                WITH DATA;

Al igual que con CREATE TABLE … LIKE …, también puede usar la WITH DATA adición. Esta adición inserta los datos de la consulta directamente en la nueva tabla de la base de datos, lo que puede ser muy útil para las pruebas y el análisis de errores. Por ejemplo, si desea guardar el contenido de una tabla para una comparación posterior, esta variante de la CREATE TABLE declaración le permite almacenar el resultado como una nueva tabla.

Cambiar las tablas de la base de datos

Cuando se cambian las tablas de la base de datos, se cambian las propiedades individuales de la definición existente. Por esta razón, la declaración no contiene la definición completa de la tabla, solo las propiedades que realmente se van a cambiar. La siguiente lista contiene algunos ejemplos de cómo cambiar las propiedades de la tabla más importantes. ALTER

CREATE ROW TABLE demo_table(

col1 INT,

col2 INT

);

–Adding a column

ALTER TABLE demo_table ADD (col3 VARCHAR(20));

–Change column properties, e.g., set default value

ALTER TABLE demo_table ALTER (col1 INT DEFAULT 42);

–Add the primary key definition

ALTER TABLE demo_table

           ADD CONSTRAINT pk PRIMARY KEY (col1, col2);

–Changing the type

ALTER TABLE demo_table COLUMN;

En el catálogo de la base de datos , haga clic con el botón derecho en la tabla correspondiente y seleccione Abrir definición en el menú contextual para ver la definición de la tabla actual. Ahora, puede reproducir los cambios de la lista paso a paso. La siguiente figura muestra el estado de la definición de la tabla una vez que se han realizado todos los cambios.


Eliminar tablas de la base de datos

Al eliminar tablas de la base de datos, los detalles de la definición no son necesarios. La instrucción DROP TABLE <nombre de la tabla> provoca la eliminación permanente de una tabla que incluye todo su contenido.

Proceda con precaución al eliminar : la DROP TABLE declaración le permite eliminar tablas enteras, incluido su contenido. Ninguna pregunta de seguridad preguntará: «¿Está seguro de que desea eliminar la tabla y su contenido?» para confirmar la acción.

Por lo tanto, esta declaración es extremadamente peligrosa, especialmente en combinación con SQL dinámico. Solo debe ejecutar esta declaración para tablas de producción si está 100% seguro de que la eliminación no causará un problema importante.

Antes de eliminar una tabla, las personas cautelosas utilizarán CREATE TABLE … LIKE … WITH DATA para crear una copia de seguridad de la tabla, incluidos sus datos.

La adición RESTRICT garantiza que una tabla se elimine solo si no existen dependencias con otros objetos. Alternativamente, la CASCADE adición le permite determinar que los objetos dependientes también deben eliminarse.

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.