DB2 - Tabele

Tabele są logiczną strukturą obsługiwaną przez Menedżera bazy danych. W tabeli każdy pionowy blok nazywany kolumną (krotka) i każdy poziomy blok nazywany wierszem (Entity). Zbiór danych przechowywanych w postaci kolumn i wierszy nazywany jest tabelą. W tabelach każda kolumna ma inny typ danych. Tabele służą do przechowywania trwałych danych.

Typ stołów

  • Base Tables: Przechowują trwałe dane. Istnieją różne rodzaje tabel podstawowych, w tym:
    • Regular Tables: Tabele ogólnego przeznaczenia, Typowe tabele z indeksami to tabele ogólnego przeznaczenia.
    • Multidimensional Clustering Table (MDC): Ten typ tabeli fizycznie skupiony na więcej niż jednym kluczu i używany do utrzymywania dużych środowisk baz danych. Tabele tego typu nie są obsługiwane w programie DB2 pureScale.
    • Insert time clustering Table (ITC): Podobnie jak w przypadku tabel MDC, wiersze są grupowane według czasu ich wstawienia do tabel. Mogą to być tabele podzielone na partycje. One również nie obsługują środowiska pureScale.
    • Range-Clustered tables Table (RCT): Tabele tego typu zapewniają szybki i bezpośredni dostęp do danych. Są one implementowane jako klastry sekwencyjne. Każdy rekord w tabeli ma identyfikator rekordu. Tabele tego typu są używane, gdy dane są ściśle zgrupowane z co najmniej jedną kolumną tabeli. Tabele tego typu również nie są obsługiwane w programie DB2 pureScale.
    • Partitioned Tables: Tabele tego typu są używane w schemacie organizacji danych, w którym dane tabeli są podzielone na wiele obiektów pamięci masowej. Partycje danych można dodawać, dołączać i odłączać od tabeli podzielonej na partycje. W jednym obszarze tabel można przechowywać wiele partycji danych z tabeli.
    • Temporal Tables: Historia tabeli w bazie danych jest przechowywana w tabelach czasowych, takich jak szczegóły wcześniej wykonanych modyfikacji.
  • Temporary Tables: Do tymczasowej pracy różnych operacji na bazie danych należy używać tabel tymczasowych. Tabele tymczasowe (DGTT) nie pojawiają się w katalogu systemowym, kolumn XML nie można używać w tworzonych tabelach tymczasowych.
  • Materialized Query Tables: MQT może służyć do poprawiania wydajności zapytań. Te typy tabel są definiowane przez zapytanie, które służy do określania danych w tabelach.

Tworzenie tabel

Poniższa składnia tworzy tabelę:

Syntax: [Aby utworzyć nową tabelę]

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

Example: Tworzymy tabelę do przechowywania danych „pracownika” w schemacie „profesjonalista”. Ta tabela zawiera pola „id, name, jobrole, joindate, salary”, a dane tej tabeli będą przechowywane w obszarze tabel „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.

Szczegóły tabeli aukcji

Poniższa składnia służy do wyświetlania szczegółów tabeli:

Syntax: [Aby zobaczyć listę tabel utworzonych za pomocą schematów]

db2 select tabname, tabschema, tbspace from syscat.tables

Example: [Aby zobaczyć listę tabel w bieżącej bazie danych]

db2 select tabname, tabschema, tbspace from syscat.tables

Output:

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


 1 record(s) selected.

Wyświetlanie kolumn w tabeli

Poniższa składnia wyświetla kolumny w tabeli:

Syntax: [Aby zobaczyć kolumny i typy danych tabeli]

db2 describe table <table_name>

Example: [Aby zobaczyć kolumny i typy danych w tabeli „pracownik”]

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.

Ukryte kolumny

Możesz ukryć całą kolumnę tabeli. Jeśli wywołasz zapytanie „wybierz * z”, ukryte kolumny nie zostaną zwrócone w wynikowej tabeli. Podczas wstawiania danych do tabeli instrukcja „INSERT” bez listy kolumn nie oczekuje wartości dla żadnych niejawnie ukrytych kolumn. Te typy kolumn są bardzo przywoływane w zmaterializowanych tabelach zapytań. Ten typ kolumn nie obsługuje tworzenia tabel tymczasowych.

Tworzenie tabeli z ukrytą kolumną

Poniższa składnia tworzy tabelę z ukrytymi kolumnami:

Syntax: [Aby utworzyć tabelę z ukrytymi kolumnami]

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

Example: [Aby utworzyć tabelę „klientów” z ukrytymi kolumnami „telefon”]

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

Wstawianie wartości danych do tabeli

Następująca składnia wstawia wartości do tabeli:

Syntax: [Aby wstawić wartości do tabeli]

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

Example: [Aby wstawić wartości w tabeli „klient”]

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.

Pobieranie wartości z tabeli

Następująca składnia pobiera wartości z tabeli:

Syntax: [Aby pobrać wartości z tabeli]

db2 select * from <tab_name>

Example: [Aby pobrać wartości z tabeli „customer”]

db2 select * from professional.customer

Output:

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

Pobieranie wartości z tabeli, w tym ukrytych kolumn

Poniższa składnia pobiera wartości z wybranych kolumn:

Syntax: [Aby pobrać wybrane ukryte wartości kolumn z tabeli]

db2 select col1,col2,col3 from <tab_name>

Example: [Aby pobrać wybrane wartości kolumn z tabeli]

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.

Jeśli chcesz zobaczyć dane w ukrytych kolumnach, musisz wykonać polecenie „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.

Zmiana typu kolumn tabeli

Możesz zmodyfikować strukturę naszej tabeli za pomocą tego polecenia „alter” w następujący sposób:

Syntax:

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

Example: [Aby zmodyfikować typ danych w kolumnie „id” z „int” na „bigint” dla tabeli pracowników]

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

Output::

DB20000I The SQL command completed successfully.

Zmieniam nazwę kolumny

Możesz zmienić nazwę kolumny, jak pokazano poniżej:

Syntax: [Aby zmienić nazwę kolumny ze starej nazwy na nową nazwę tabeli]

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

Example: [Aby zmienić nazwę kolumny z „pełna nazwa” na „nazwa klienta” w tabeli „klienci”.]

db2 alter table professional.customer rename column fullname to custname

Upuszczanie stołów

Aby usunąć dowolną tabelę, musisz użyć polecenia „DROP” w następujący sposób:

Syntax:

db2 drop table <tab_name>

Example: [Aby usunąć bazę danych tabeli klientów]

db2 drop table professional.customers

Aby usunąć całą hierarchię tabeli (w tym wyzwalacze i relację), musisz użyć polecenia „DROP TABLE HIERARCHY”.

Syntax:

db2 drop table hierarchy <tab_name>

Example: [Aby usunąć całą hierarchię tabeli „klient”]

db2 drop table hierarchy professional.customers