DB2 - Tablolar

Tablolar, Veritabanı yöneticisi tarafından tutulan mantıksal yapıdır. Bir tabloda her dikey blok sütun (Tuple) ve her yatay blok satır (Varlık) olarak adlandırılır. Sütunlar ve satırlar şeklinde depolanan verilerin toplanması tablo olarak bilinir. Tablolarda her sütunun farklı veri türü vardır. Tablolar kalıcı verileri depolamak için kullanılır.

Tablo türleri

  • Base Tables: Kalıcı verileri tutarlar. Aşağıdakiler dahil farklı temel tablo türleri vardır:
    • Regular Tables: Genel amaçlı tablolar, İndeksli ortak tablolar genel amaçlı tablolardır.
    • Multidimensional Clustering Table (MDC): Bu tür bir tablo fiziksel olarak birden fazla anahtar üzerinde kümelenmiştir ve büyük veritabanı ortamlarını korumak için kullanılır. Bu tür tablolar DB2 pureScale'de desteklenmez.
    • Insert time clustering Table (ITC): MDC tablolarına benzer şekilde, satırlar tablolara eklendikleri zamana göre kümelenir. Bölümlenmiş tablolar olabilirler. Onlar da pureScale ortamını desteklemez.
    • Range-Clustered tables Table (RCT): Bu tür tablolar verilere hızlı ve doğrudan erişim sağlar. Bunlar sıralı kümeler olarak uygulanır. Tablodaki her kaydın bir kayıt kimliği vardır. Bu tür tablolar, verilerin tabloda bir veya daha fazla sütunla sıkı bir şekilde kümelendiği durumlarda kullanılır. Bu tür tablolar, DB2 pureScale'de de desteklenmez.
    • Partitioned Tables: Bu tür tablolar, tablo verilerinin birden çok depolama nesnesine bölündüğü veri organizasyon şemasında kullanılır. Veri bölümleri, bölümlenmiş bir tabloya eklenebilir, tabloya eklenebilir ve buradan çıkarılabilir. Bir tablodan birden çok veri bölümünü tek bir tablo alanında depolayabilirsiniz.
    • Temporal Tables: Veritabanındaki bir tablonun geçmişi, önceden yapılan değişikliklerin ayrıntıları gibi geçici tablolarda saklanır.
  • Temporary Tables: Farklı veritabanı işlemlerinin geçici çalışması için geçici tablolar kullanmanız gerekir. Geçici tablolar (DGTT'ler) sistem kataloğunda görünmez, XML sütunları oluşturulan geçici tablolarda kullanılamaz.
  • Materialized Query Tables: MQT, sorguların performansını artırmak için kullanılabilir. Bu tür tablolar, tablolardaki verileri belirlemek için kullanılan bir sorgu tarafından tanımlanır.

Tablolar Oluşturma

Aşağıdaki sözdizimi tablo oluşturur:

Syntax: [Yeni bir tablo oluşturmak için]

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

Example: “Çalışan” detaylarını “profesyonel” şemasında saklamak için bir tablo oluşturuyoruz. Bu tablo "id, name, jobrole, joindate, maaş" alanlarına sahiptir ve bu tablo verileri "ts1" tablo alanında saklanacaktır.

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 tablosu ayrıntıları

Tablo ayrıntılarını listelemek için aşağıdaki sözdizimi kullanılır:

Syntax: [Şemalarla oluşturulan tabloların listesini görmek için]

db2 select tabname, tabschema, tbspace from syscat.tables

Example: [Mevcut veri tabanındaki tabloların listesini görmek için]

db2 select tabname, tabschema, tbspace from syscat.tables

Output:

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


 1 record(s) selected.

Bir tablodaki sütunları listeleme

Aşağıdaki söz dizimi, bir tablodaki sütunları listeler:

Syntax: [Bir tablonun sütunlarını ve veri türlerini görmek için]

db2 describe table <table_name>

Example: ['Çalışan' tablosunun sütunlarını ve veri türlerini görmek için]

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.

Gizli Sütunlar

Bir tablonun tüm sütununu gizleyebilirsiniz. Sorgudan "* seçin" çağrısı yaparsanız, ortaya çıkan tabloda gizli sütunlar döndürülmez. Bir tabloya veri eklediğinizde, sütun listesi olmayan bir “INSERT” ifadesi, örtük olarak gizlenmiş herhangi bir sütun için değer beklemez. Bu tür sütunlara, somutlaştırılmış sorgu tablolarında yüksek oranda başvurulur. Bu tür sütunlar, geçici tablolar oluşturmayı desteklemez.

Gizli sütunlu tablo oluşturma

Aşağıdaki sözdizimi, gizli sütunlara sahip bir tablo oluşturur:

Syntax: [Gizli sütunlara sahip bir tablo oluşturmak için]

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

Example: [Gizli 'telefon' sütunlarıyla bir 'müşteri' tablosu oluşturmak için]

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

Veri değerlerini tabloya eklemek

Aşağıdaki sözdizimi, tabloya değerler ekler:

Syntax: [Bir tabloya değer eklemek için]

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

Example: ['Müşteri' tablosuna değer girmek için]

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.

Tablodan değerlerin alınması

Aşağıdaki sözdizimi, tablodan değerleri alır:

Syntax: [Bir tablodan değerleri almak için]

db2 select * from &lttab_name>

Example: ['Müşteri' tablosundan değerleri almak için]

db2 select * from professional.customer

Output:

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

Gizli sütunlar dahil bir tablodan değerleri alma

Aşağıdaki sözdizimi, seçili sütunlardan değerleri alır:

Syntax: [Bir tablodan seçili gizli sütun değerlerini almak için]

db2 select col1,col2,col3 from <tab_name>

Example: [Bir tablodan seçilen sütun değerlerini almak için]

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.

Verileri gizli sütunlarda görmek istiyorsanız, “DESCRIBE” komutunu uygulamanız gerekir.

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.

Tablo sütunlarının türünü değiştirme

Bu "değiştir" komutunu kullanarak tablo yapımızı aşağıdaki gibi değiştirebilirsiniz:

Syntax:

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

Example: [Çalışan tablosu için "id" sütununun "int" olan veri türünü "bigint" e değiştirmek için]

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

Output::

DB20000I The SQL command completed successfully.

Sütun adını değiştirme

Sütun adını aşağıda gösterildiği gibi değiştirebilirsiniz:

Syntax: [Sütun adını bir tablonun eski adından yeni adına değiştirmek için]

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

Example: ["Müşteriler" tablosundaki sütun adını "tam ad" dan "müşteri adı" na değiştirmek için.]

db2 alter table professional.customer rename column fullname to custname

Masaları düşürmek

Herhangi bir tabloyu silmek için, "DROP" komutunu aşağıdaki gibi kullanmanız gerekir:

Syntax:

db2 drop table <tab_name>

Example: [Müşteri tablosu form veritabanını bırakmak için]

db2 drop table professional.customers

Tablonun tüm hiyerarşisini (tetikleyiciler ve ilişki dahil) silmek için, “DROP TABLE HIERARCHY” komutunu kullanmanız gerekir.

Syntax:

db2 drop table hierarchy <tab_name>

Example: [Bir "müşteri" tablosunun tüm hiyerarşisini kaldırmak için]

db2 drop table hierarchy professional.customers