DB2 - Tabelle

Le tabelle sono strutture logiche gestite da Database manager. In una tabella ogni blocco verticale chiamato come colonna (Tupla) e ogni blocco orizzontale chiamato come riga (Entità). La raccolta di dati archiviati sotto forma di colonne e righe è nota come tabella. Nelle tabelle, ogni colonna ha un tipo di dati diverso. Le tabelle vengono utilizzate per archiviare dati persistenti.

Tipo di tabelle

  • Base Tables: Contengono dati persistenti. Esistono diversi tipi di tabelle di base, tra cui:
    • Regular Tables: Tabelle di uso generale, tabelle comuni con indici sono tabelle di uso generale.
    • Multidimensional Clustering Table (MDC): Questo tipo di tabella era fisicamente raggruppato su più di una chiave e veniva utilizzato per mantenere ambienti di database di grandi dimensioni. Questi tipi di tabelle non sono supportati in DB2 pureScale.
    • Insert time clustering Table (ITC): In modo simile alle tabelle MDC, le righe vengono raggruppate nel momento in cui vengono inserite nelle tabelle. Possono essere tabelle partizionate. Anche loro non supportano l'ambiente pureScale.
    • Range-Clustered tables Table (RCT): Questo tipo di tabelle fornisce un accesso rapido e diretto ai dati. Questi sono implementati come cluster sequenziali. Ogni record nella tabella ha un ID record. Questi tipi di tabelle vengono utilizzati quando i dati sono raggruppati strettamente con una o più colonne nella tabella. Anche questo tipo di tabelle non supporta in DB2 pureScale.
    • Partitioned Tables: Questo tipo di tabelle viene utilizzato nello schema di organizzazione dei dati, in cui i dati della tabella sono suddivisi in più oggetti di archiviazione. Le partizioni di dati possono essere aggiunte, collegate e scollegate da una tabella partizionata. È possibile memorizzare più partizioni dati da una tabella in un tablespace.
    • Temporal Tables: La cronologia di una tabella in un database viene memorizzata in tabelle temporali come i dettagli delle modifiche effettuate in precedenza.
  • Temporary Tables: Per il lavoro temporaneo di diverse operazioni di database, è necessario utilizzare tabelle temporanee. Le tabelle temporanee (DGTT) non vengono visualizzate nel catalogo di sistema, le colonne XML non possono essere utilizzate nelle tabelle temporanee create.
  • Materialized Query Tables: MQT può essere utilizzato per migliorare le prestazioni delle query. Questi tipi di tabelle sono definiti da una query, che viene utilizzata per determinare i dati nelle tabelle.

Creazione di tabelle

La seguente sintassi crea la tabella:

Syntax: [Per creare una nuova tabella]

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

Example: Creiamo una tabella per memorizzare i dettagli di "dipendente" nello schema di "professionale". Questa tabella ha i campi "id, name, jobrole, joindate, salary" e i dati della tabella sarebbero memorizzati nel 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.

Dettagli della tabella di elenco

La seguente sintassi viene utilizzata per elencare i dettagli della tabella:

Syntax: [Per vedere l'elenco delle tabelle create con gli schemi]

db2 select tabname, tabschema, tbspace from syscat.tables

Example: [Per vedere l'elenco delle tabelle nel database corrente]

db2 select tabname, tabschema, tbspace from syscat.tables

Output:

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


 1 record(s) selected.

Elenco delle colonne in una tabella

La sintassi seguente elenca le colonne in una tabella:

Syntax: [Per vedere colonne e tipi di dati di una tabella]

db2 describe table <table_name>

Example: [Per vedere le colonne e i tipi di dati della tabella "dipendente"]

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.

Colonne nascoste

Puoi nascondere un'intera colonna di una tabella. Se chiami la query "seleziona * da", le colonne nascoste non vengono restituite nella tabella risultante. Quando si inseriscono dati in una tabella, un'istruzione "INSERT" senza un elenco di colonne non prevede valori per le colonne implicitamente nascoste. Questi tipi di colonne sono altamente referenziati nelle tabelle di query materializzate. Questo tipo di colonne non supporta la creazione di tabelle temporanee.

Creazione tabella con colonna nascosta

La seguente sintassi crea una tabella con colonne nascoste:

Syntax: [Per creare una tabella con colonne nascoste]

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

Example: [Per creare una tabella "cliente" con colonne nascoste "telefono"]

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

Inserimento dei valori dei dati nella tabella

La seguente sintassi inserisce i valori nella tabella:

Syntax: [Per inserire valori in una tabella]

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

Example: [Per inserire valori nella tabella "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.

Recupero dei valori dalla tabella

La sintassi seguente recupera i valori dalla tabella:

Syntax: [Per recuperare i valori da una tabella]

db2 select * from &lttab_name>

Example: [Per recuperare i valori dalla tabella "cliente"]

db2 select * from professional.customer

Output:

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

Recupero di valori da una tabella comprese le colonne nascoste

La sintassi seguente recupera i valori dalle colonne selezionate:

Syntax: [Per recuperare i valori delle colonne nascoste selezionate da una tabella]

db2 select col1,col2,col3 from <tab_name>

Example: [Per recuperare il risultato dei valori delle colonne selezionate da una tabella]

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.

Se vuoi vedere i dati nelle colonne nascoste, devi eseguire il 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.

Modifica del tipo di colonne della tabella

È possibile modificare la struttura della nostra tabella utilizzando questo comando "alter" come segue:

Syntax:

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

Example: [Per modificare il tipo di dati per la colonna "id" da "int" a "bigint" per la tabella dei dipendenti]

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

Output::

DB20000I The SQL command completed successfully.

Modifica del nome della colonna

È possibile modificare il nome della colonna come mostrato di seguito:

Syntax: [Per modificare il nome della colonna dal vecchio nome al nuovo nome di una tabella]

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

Example: [Per modificare il nome della colonna da "fullname" a "custname" nella tabella "customers".]

db2 alter table professional.customer rename column fullname to custname

Far cadere i tavoli

Per eliminare qualsiasi tabella, è necessario utilizzare il comando "DROP" come segue:

Syntax:

db2 drop table <tab_name>

Example: [Per eliminare il database del modulo della tabella dei clienti]

db2 drop table professional.customers

Per eliminare l'intera gerarchia della tabella (inclusi i trigger e la relazione), è necessario utilizzare il comando "DROP TABLE HIERARCHY".

Syntax:

db2 drop table hierarchy <tab_name>

Example: [Per eliminare l'intera gerarchia di una tabella "cliente"]

db2 drop table hierarchy professional.customers