DB2 - Tablas

Las tablas son una estructura lógica mantenida por el administrador de la base de datos. En una tabla, cada bloque vertical se llama columna (Tupla) y cada bloque horizontal se llama fila (Entidad). La recopilación de datos almacenados en forma de columnas y filas se conoce como tabla. En las tablas, cada columna tiene un tipo de datos diferente. Las tablas se utilizan para almacenar datos persistentes.

Tipo de tablas

  • Base Tables: Contienen datos persistentes. Hay diferentes tipos de tablas base, que incluyen:
    • Regular Tables: Tablas de propósito general, las tablas comunes con índices son tablas de propósito general.
    • Multidimensional Clustering Table (MDC): Este tipo de tabla se agrupa físicamente en más de una clave y se utiliza para mantener grandes entornos de base de datos. Este tipo de tablas no se admiten en DB2 pureScale.
    • Insert time clustering Table (ITC): Similar a las tablas MDC, las filas se agrupan en el momento en que se insertan en las tablas. Pueden ser tablas particionadas. Ellos tampoco son compatibles con el entorno pureScale.
    • Range-Clustered tables Table (RCT): Este tipo de tablas proporcionan un acceso rápido y directo a los datos. Estos se implementan como clústeres secuenciales. Cada registro de la tabla tiene un ID de registro. Este tipo de tablas se utilizan cuando los datos se agrupan estrechamente con una o más columnas en la tabla. Este tipo de tablas tampoco son compatibles con DB2 pureScale.
    • Partitioned Tables: Este tipo de tablas se utilizan en el esquema de organización de datos, en el que los datos de la tabla se dividen en varios objetos de almacenamiento. Las particiones de datos se pueden agregar, adjuntar y separar de una tabla particionada. Puede almacenar varias particiones de datos de una tabla en un espacio de tabla.
    • Temporal Tables: El historial de una tabla en una base de datos se almacena en tablas temporales como detalles de las modificaciones realizadas anteriormente.
  • Temporary Tables: Para el trabajo temporal de diferentes operaciones de base de datos, es necesario utilizar tablas temporales. Las tablas temporales (DGTT) no aparecen en el catálogo del sistema, las columnas XML no se pueden utilizar en tablas temporales creadas.
  • Materialized Query Tables: MQT se puede utilizar para mejorar el rendimiento de las consultas. Estos tipos de tablas se definen mediante una consulta, que se utiliza para determinar los datos en las tablas.

Crear tablas

La siguiente sintaxis crea una tabla:

Syntax: [Para crear una nueva tabla]

db2 create table <schema_name>.<table_name>
(column_name column_type....) in <tablespace_name>

Example: Creamos una tabla para almacenar los detalles del “empleado” en el esquema de “profesional”. Esta tabla tiene campos "id, nombre, puesto de trabajo, fecha de unión, salario" y los datos de esta tabla se almacenarían en el espacio de tabla "ts1".

db2 create table professional.employee(id int, name 
varchar(50),jobrole varchar(30),joindate date, 
salary double) in ts1

Output:

DB20000I The SQL command completed successfully.

Listado de detalles de la tabla

La siguiente sintaxis se utiliza para enumerar los detalles de la tabla:

Syntax: [Para ver la lista de tablas creadas con esquemas]

db2 select tabname, tabschema, tbspace from syscat.tables

Example: [Para ver la lista de tablas en la base de datos actual]

db2 select tabname, tabschema, tbspace from syscat.tables

Output:

TABNAME      TABSCHEMA     TBSPACE 
------------ ------------- -------- 
EMPLOYEE     PROFESSIONAL    TS1  


 1 record(s) selected.

Listado de columnas en una tabla

La siguiente sintaxis enumera las columnas en una tabla:

Syntax: [Para ver columnas y tipos de datos de una tabla]

db2 describe table <table_name>

Example: [Para ver las columnas y los tipos de datos de la tabla 'empleado']

db2 describe table professional.employee

Output:

Data type                   Column 
Column name  schema    Data type name    Length    Scale Nulls 
------ ----- --------- ----------------- --------- ----- ------ 
ID           SYSIBM    INTEGER             4         0     Yes 
NAME         SYSIBM    VARCHAR             50        0     Yes 
JOBROLE      SYSIBM    VARCHAR             30        0     Yes 
JOINDATE     SYSIBM    DATE                4         0     Yes 
SALARY       SYSIBM    DOUBLE              8         0     Yes  

  5 record(s) selected.

Columnas ocultas

Puede ocultar una columna completa de una tabla. Si llama a la consulta "seleccionar * de", las columnas ocultas no se devuelven en la tabla resultante. Cuando inserta datos en una tabla, una instrucción "INSERT" sin una lista de columnas no espera valores para ninguna columna implícitamente oculta. Este tipo de columnas están muy referenciadas en tablas de consultas materializadas. Este tipo de columnas no admiten la creación de tablas temporales.

Creando tabla con columna oculta

La siguiente sintaxis crea una tabla con columnas ocultas:

Syntax: [Para crear una tabla con columnas ocultas]

db2 create table <tab_name> (col1 datatype,col2 datatype 
implicitly hidden)

Example: [Para crear una tabla 'cliente' con columnas ocultas 'teléfono']

db2 create table professional.customer(custid integer not 
null, fullname varchar(100), phone char(10) 
implicitly hidden)

Insertar valores de datos en la tabla

La siguiente sintaxis inserta valores en la tabla:

Syntax: [Para insertar valores en una tabla]

db2 insert into <tab_name>(col1,col2,...)
 values(val1,val2,..)

Example: [Para insertar valores en la tabla 'cliente']

db2 insert into professional.customer(custid, fullname, phone) 
values(100,'ravi','9898989')


db2 insert into professional.customer(custid, fullname, phone) 
values(101,'krathi','87996659')


db2 insert into professional.customer(custid, fullname, phone) 
values(102,'gopal','768678687')

Output:

DB20000I  The SQL command completed successfully.

Recuperando valores de la tabla

La siguiente sintaxis recupera valores de la tabla:

Syntax: [Para recuperar valores de una tabla]

db2 select * from <tab_name>

Example: [Para recuperar valores de la tabla 'cliente']

db2 select * from professional.customer

Output:

CUSTID      FULLNAME 
----------- ------------------------ 
        100 ravi
		
        101 krathi
		
        102 gopal  
		
  3 record(s) selected.

Recuperar valores de una tabla que incluye columnas ocultas

La siguiente sintaxis recupera valores de las columnas seleccionadas:

Syntax: [Para recuperar valores de columnas ocultas seleccionadas de una tabla]

db2 select col1,col2,col3 from <tab_name>

Example: [Para recuperar el resultado de los valores de las columnas seleccionadas de una tabla]

db2 select custid,fullname,phone from professional.customer

Output:

CUSTID  FULLNAME    PHONE 
------- ---------   ------------ 
100     ravi        9898989
 
101     krathi      87996659 

102     gopal       768678687 

  3 record(s) selected.

Si desea ver los datos en las columnas ocultas, debe ejecutar el comando "DESCRIBE".

Syntax:

db2 describe table <table_name> show detail

Example:

db2 describe table professional.customer show detail

Output:

Column name     Data type schema     Data type name  Column
           column    Partitionkey  code 
                                       Length   Scale    Nulls     
number     sequence      page     Hidden      Default 
--------------- -------------------- --------------- -------- ----
---- -------- ---------- ------------- -------- ----------- ------ 
---  
CUSTID          SYSIBM               INTEGER         4        0 
No       0          0         0        No 
FULLNAME        SYSIBM               VARCHAR         100      0
Yes      1          0        1208     No     

PHONE           SYSIBM               CHARACTER       10       0     
Yes      2          0             1208     Implicitly  
  
3 record(s) selected.

Modificar el tipo de columnas de la tabla

Puede modificar la estructura de nuestra tabla usando este comando "alterar" de la siguiente manera:

Syntax:

db2 alter table <tab_name> alter column <col_name> set data type <data_type>

Example: [Para modificar el tipo de datos de la columna "id" de "int" a "bigint" para la tabla de empleados]

db2 alter table professional.employee alter column id set data type bigint

Output::

DB20000I The SQL command completed successfully.

Modificar el nombre de la columna

Puede cambiar el nombre de la columna como se muestra a continuación:

Syntax: [Para modificar el nombre de la columna del nombre antiguo al nuevo nombre de una tabla]

db2 alter table <tab_name> rename column <old_name> to <new_name>

Example: [Para modificar el nombre de la columna de "fullname" a "custname" en la tabla "clientes".]

db2 alter table professional.customer rename column fullname to custname

Dejando caer las mesas

Para eliminar cualquier tabla, debe usar el comando "DROP" de la siguiente manera:

Syntax:

db2 drop table <tab_name>

Example: [Para eliminar la base de datos del formulario de tabla de clientes]

db2 drop table professional.customers

Para eliminar toda la jerarquía de la tabla (incluidos los disparadores y la relación), debe utilizar el comando "DROP TABLE HIERARCHY".

Syntax:

db2 drop table hierarchy <tab_name>

Example: [Para eliminar toda la jerarquía de una tabla "cliente"]

db2 drop table hierarchy professional.customers