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 <tab_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