DB2 - Tables

Les tables sont une structure logique maintenue par le gestionnaire de base de données. Dans un tableau, chaque bloc vertical appelé en tant que colonne (Tuple) et chaque bloc horizontal appelé en tant que ligne (Entité). La collection de données stockées sous forme de colonnes et de lignes est appelée table. Dans les tableaux, chaque colonne a un type de données différent. Les tables sont utilisées pour stocker des données persistantes.

Type de tables

  • Base Tables: Ils contiennent des données persistantes. Il existe différents types de tables de base, notamment:
    • Regular Tables: Tables à usage général, Les tables communes avec index sont des tables à usage général.
    • Multidimensional Clustering Table (MDC): Ce type de table était physiquement regroupé sur plusieurs clés et utilisé pour maintenir de grands environnements de base de données. Ces types de tables ne sont pas pris en charge dans DB2 pureScale.
    • Insert time clustering Table (ITC): Comme pour les tables MDC, les lignes sont regroupées au moment où elles sont insérées dans les tables. Ils peuvent être des tables partitionnées. Eux aussi, ne prennent pas en charge l'environnement pureScale.
    • Range-Clustered tables Table (RCT): Ces types de tableaux permettent un accès rapide et direct aux données. Ceux-ci sont implémentés sous forme de clusters séquentiels. Chaque enregistrement de la table a un ID d'enregistrement. Ces types de tables sont utilisés lorsque les données sont regroupées étroitement avec une ou plusieurs colonnes dans la table. Ce type de tables n'est pas non plus pris en charge dans DB2 pureScale.
    • Partitioned Tables: Ces types de tables sont utilisés dans le schéma d'organisation des données, dans lequel les données de table sont divisées en plusieurs objets de stockage. Les partitions de données peuvent être ajoutées, attachées et détachées d'une table partitionnée. Vous pouvez stocker plusieurs partitions de données à partir d'une table dans un espace de table.
    • Temporal Tables: L'historique d'une table dans une base de données est stocké dans des tables temporelles telles que les détails des modifications effectuées précédemment.
  • Temporary Tables: Pour le travail temporaire de différentes opérations de base de données, vous devez utiliser des tables temporaires. Les tables temporaires (DGTT) n'apparaissent pas dans le catalogue système, les colonnes XML ne peuvent pas être utilisées dans les tables temporaires créées.
  • Materialized Query Tables: MQT peut être utilisé pour améliorer les performances des requêtes. Ces types de tables sont définis par une requête, qui est utilisée pour déterminer les données dans les tables.

Créer des tableaux

La syntaxe suivante crée une table:

Syntax: [Pour créer une nouvelle table]

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

Example: Nous créons une table pour stocker les détails «employé» dans le schéma de «professionnel». Cette table a des champs «id, nom, jobrole, joindate, salaire» et ces données de table seraient stockées dans le tablespace «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.

Liste des détails du tableau

La syntaxe suivante est utilisée pour répertorier les détails de la table:

Syntax: [Pour voir la liste des tables créées avec des schémas]

db2 select tabname, tabschema, tbspace from syscat.tables

Example: [Pour voir la liste des tables de la base de données courante]

db2 select tabname, tabschema, tbspace from syscat.tables

Output:

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


 1 record(s) selected.

Liste des colonnes dans un tableau

La syntaxe suivante répertorie les colonnes d'un tableau:

Syntax: [Pour afficher les colonnes et les types de données d'un tableau]

db2 describe table <table_name>

Example: [Pour voir les colonnes et les types de données de la table 'employé']

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.

Colonnes masquées

Vous pouvez masquer une colonne entière d'un tableau. Si vous appelez la requête «select * from», les colonnes masquées ne sont pas renvoyées dans la table résultante. Lorsque vous insérez des données dans une table, une instruction «INSERT» sans liste de colonnes n'attend pas de valeurs pour les colonnes masquées implicitement. Ces types de colonnes sont fortement référencés dans les tables de requêtes matérialisées. Ces types de colonnes ne prennent pas en charge la création de tables temporaires.

Créer un tableau avec une colonne masquée

La syntaxe suivante crée une table avec des colonnes masquées:

Syntax: [Pour créer une table avec des colonnes masquées]

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

Example: [Pour créer une table 'client' avec des colonnes masquées 'phone']

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

Insertion de valeurs de données dans un tableau

La syntaxe suivante insère des valeurs dans le tableau:

Syntax: [Pour insérer des valeurs dans un tableau]

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

Example: [Pour insérer des valeurs dans le tableau "client"]

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.

Récupération des valeurs de la table

La syntaxe suivante récupère les valeurs de la table:

Syntax: [Pour récupérer les valeurs d'un tableau]

db2 select * from &lttab_name>

Example: [Pour récupérer les valeurs de la table "client"]

db2 select * from professional.customer

Output:

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

Récupération des valeurs d'une table comprenant des colonnes masquées

La syntaxe suivante récupère les valeurs des colonnes sélectionnées:

Syntax: [Pour récupérer les valeurs des colonnes masquées sélectionnées à partir d'une table]

db2 select col1,col2,col3 from <tab_name>

Example: [Pour récupérer les valeurs des colonnes sélectionnées, le résultat d'une table]

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 vous voulez voir les données dans les colonnes cachées, vous devez exécuter la commande «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.

Modifier le type des colonnes de table

Vous pouvez modifier la structure de notre table en utilisant cette commande «alter» comme suit:

Syntax:

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

Example: [Pour modifier le type de données de la colonne «id» de «int» à «bigint» pour la table des employés]

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

Output::

DB20000I The SQL command completed successfully.

Modification du nom de la colonne

Vous pouvez modifier le nom de la colonne comme indiqué ci-dessous:

Syntax: [Pour modifier le nom de la colonne de l'ancien nom au nouveau nom d'une table]

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

Example: [Pour modifier le nom de la colonne de «fullname» à «custname» dans la table «customers».]

db2 alter table professional.customer rename column fullname to custname

Abandonner les tables

Pour supprimer une table, vous devez utiliser la commande «DROP» comme suit:

Syntax:

db2 drop table <tab_name>

Example: [Pour supprimer la base de données du formulaire de table client]

db2 drop table professional.customers

Pour supprimer toute la hiérarchie de la table (y compris les déclencheurs et la relation), vous devez utiliser la commande «DROP TABLE HIERARCHY».

Syntax:

db2 drop table hierarchy <tab_name>

Example: [Pour supprimer toute la hiérarchie d'une table "client"]

db2 drop table hierarchy professional.customers