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